📄 system16.c
字号:
{ 0x440000, 0x44ffff, MRA_SPRITERAM },
{ 0x840000, 0x84ffff, MRA_PALETTERAM },
{ 0xc41002, 0xc41003, io_player1_r },
{ 0xc41006, 0xc41007, io_player2_r },
{ 0xc41000, 0xc41001, io_service_r },
{ 0xc42000, 0xc42001, io_dip1_r },
{ 0xc42002, 0xc42003, io_dip2_r },
{ 0xff0000, 0xffffff, MRA_WORKINGRAM },
{-1}
};
static struct MemoryWriteAddress fantzone_writemem[] =
{
{ 0x000000, 0x02ffff, MWA_ROM },
{ 0x400000, 0x40ffff, MWA_TILERAM },
{ 0x410000, 0x41ffff, MWA_TEXTRAM },
{ 0x440000, 0x44ffff, MWA_SPRITERAM },
{ 0x840000, 0x84ffff, MWA_PALETTERAM },
{ 0xfe0006, 0xfe0007, sound_command_w },
{ 0xff0000, 0xffffff, MWA_WORKINGRAM },
{-1}
};
/***************************************************************************/
void fantzone_update_proc( void ){
sys16_fg_scrollx = READ_WORD( &sys16_textram[0x0ff8] );
sys16_bg_scrollx = READ_WORD( &sys16_textram[0x0ffa] );
sys16_fg_scrolly = READ_WORD( &sys16_textram[0x0f24] );
sys16_bg_scrolly = READ_WORD( &sys16_textram[0x0f26] );
set_fg_page( READ_WORD( &sys16_textram[0x0e9e] ) );
set_bg_page( READ_WORD( &sys16_textram[0x0e9c] ) );
}
void fantzone_init_machine( void ){
static int bank[16] = { 00,01,02,03,00,01,02,03,00,01,02,03,00,01,02,03};
sys16_obj_bank = bank;
patch_code( 0x20e7, 0x16 );
patch_code( 0x30ef, 0x16 );
sys16_update_proc = fantzone_update_proc;
}
void fantzone_sprite_decode( void ){
sys16_sprite_decode( 3,0x010000 );
}
/***************************************************************************/
INPUT_PORTS_START( fantzone_input_ports )
SYS16_JOY1
SYS16_JOY2
SYS16_SERVICE
SYS16_COINAGE
SYS16_OPTIONS
INPUT_PORTS_END
/***************************************************************************/
MACHINE_DRIVER( fantzone_machine_driver, \
fantzone_readmem,fantzone_writemem,fantzone_init_machine, gfx8 )
struct GameDriver fantzone_driver =
{
__FILE__,
0,
"fantzone",
"Fantasy Zone",
"????",
"Sega",
SYS16_CREDITS,
GAME_NOT_WORKING,
&fantzone_machine_driver,
0,
fantzone_rom,
fantzone_sprite_decode, 0,
0,
0,
fantzone_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
0, 0
};
/***************************************************************************/
ROM_START( fpointbl_rom )
ROM_REGION( 0x020000 ) /* 68000 code */
ROM_LOAD_ODD ( "flpoint.002", 0x000000, 0x10000, 0x4dff2ee8 )
ROM_LOAD_EVEN( "flpoint.003", 0x000000, 0x10000, 0x4d6df514 )
ROM_REGION( 0x30000 ) /* tiles */
ROM_LOAD( "flpoint.006", 0x00000, 0x10000, 0xc539727d )
ROM_LOAD( "flpoint.005", 0x10000, 0x10000, 0x82c0b8b0 )
ROM_LOAD( "flpoint.004", 0x20000, 0x10000, 0x522426ae )
ROM_REGION( 0x020000*2 ) /* sprites */
ROM_LOAD( "flpoint.007", 0x000000, 0x010000, 0x4a4041f3 )
ROM_LOAD( "flpoint.008", 0x010000, 0x010000, 0x6961e676 )
ROM_REGION( 0x10000 ) /* sound CPU */
ROM_LOAD( "EPR12592.BIN", 0x0000, 0x8000, 0x9a8c11bb )
ROM_END
/***************************************************************************/
static struct MemoryReadAddress fpointbl_readmem[] =
{
{ 0x601002, 0x601003, io_player1_r },
{ 0x601004, 0x601005, io_player2_r },
{ 0x601000, 0x601001, io_service_r },
{ 0x602002, 0x602003, io_dip1_r },
{ 0x602000, 0x602001, io_dip2_r },
{ 0x410000, 0x410fff, MRA_TEXTRAM },
{ 0x400000, 0x40ffff, MRA_TILERAM },
{ 0x440000, 0x440fff, MRA_SPRITERAM },
{ 0x840000, 0x840fff, MRA_PALETTERAM },
{ 0xff0000, 0xffffff, MRA_WORKINGRAM },
{ 0x000000, 0x01ffff, MRA_ROM },
{-1}
};
static struct MemoryWriteAddress fpointbl_writemem[] =
{
{ 0x000000, 0x01ffff, MWA_ROM },
{ 0xfe0006, 0xfe0007, sound_command_w },
{ 0x410000, 0x410fff, MWA_TEXTRAM },
{ 0x400000, 0x40ffff, MWA_TILERAM },
{ 0x440000, 0x44ffff, MWA_SPRITERAM },
{ 0x840000, 0x84ffff, MWA_PALETTERAM },
{ 0xff0000, 0xffffff, MWA_WORKINGRAM },
{-1}
};
/***************************************************************************/
void fpointbl_update_proc( void ){
sys16_fg_scrollx = READ_WORD( &sys16_textram[0x0e98] );
sys16_bg_scrollx = READ_WORD( &sys16_textram[0x0e9a] );
sys16_fg_scrolly = READ_WORD( &sys16_textram[0x0e90] );
sys16_bg_scrolly = READ_WORD( &sys16_textram[0x0e92] );
set_fg_page( READ_WORD( &sys16_textram[0x0e80] ) );
set_bg_page( READ_WORD( &sys16_textram[0x0e82] ) );
}
void fpointbl_init_machine( void ){
static int bank[16] = {00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00};
sys16_obj_bank = bank;
patch_code( 0x454, 0x33 );
patch_code( 0x455, 0xf8 );
patch_code( 0x456, 0xe0 );
patch_code( 0x457, 0xe2 );
patch_code( 0x8ce8, 0x16 );
patch_code( 0x8ce9, 0x66 );
patch_code( 0x17687, 0x00 );
patch_code( 0x7bed, 0x04 );
patch_code( 0x7ea8, 0x61 );
patch_code( 0x7ea9, 0x00 );
patch_code( 0x7eaa, 0x84 );
patch_code( 0x7eab, 0x16 );
patch_code( 0x2c0, 0xe7 );
patch_code( 0x2c1, 0x48 );
patch_code( 0x2c2, 0xe7 );
patch_code( 0x2c3, 0x49 );
patch_code( 0x2c4, 0x04 );
patch_code( 0x2c5, 0x40 );
patch_code( 0x2c6, 0x00 );
patch_code( 0x2c7, 0x10 );
patch_code( 0x2c8, 0x4e );
patch_code( 0x2c9, 0x75 );
sys16_update_proc = fpointbl_update_proc;
}
void fpointbl_sprite_decode (void)
{
int i;
/* invert the graphics bits on the tiles */
for (i = 0; i < 0x30000; i++)
Machine->memory_region[1][i] ^= 0xff;
sys16_sprite_decode( 1,0x020000 );
}
/***************************************************************************/
INPUT_PORTS_START( fpointbl_input_ports )
SYS16_JOY1
SYS16_JOY2
SYS16_SERVICE
SYS16_COINAGE
SYS16_OPTIONS
INPUT_PORTS_END
/***************************************************************************/
MACHINE_DRIVER( fpointbl_machine_driver, \
fpointbl_readmem,fpointbl_writemem,fpointbl_init_machine, gfx1 )
struct GameDriver fpointbl_driver =
{
__FILE__,
0,
"fpointbl",
"Flash Point (bootleg)",
"1989",
"bootleg",
SYS16_CREDITS,
GAME_NOT_WORKING,
&fpointbl_machine_driver,
0,
fpointbl_rom,
fpointbl_sprite_decode, 0,
0,
0,
fpointbl_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
0, 0
};
/***************************************************************************/
ROM_START( goldnaxe_rom )
ROM_REGION( 0x0c0000 ) /* 68000 code */
ROM_LOAD_ODD ( "ga12522.bin", 0x00000, 0x20000, 0xb6c35160 )
ROM_LOAD_EVEN( "ga12523.bin", 0x00000, 0x20000, 0x8e6128d7 )
ROM_LOAD_ODD ( "ga12544.bin", 0x40000, 0x40000, 0x5e38f668 )
ROM_LOAD_EVEN( "ga12545.bin", 0x40000, 0x40000, 0xa97c4e4d )
ROM_REGION( 0x60000 ) /* tiles */
ROM_LOAD( "ga12385.bin", 0x00000, 0x20000, 0xb8a4e7e0 )
ROM_LOAD( "ga12386.bin", 0x20000, 0x20000, 0x25d7d779 )
ROM_LOAD( "ga12387.bin", 0x40000, 0x20000, 0xc7fcadf3 )
ROM_REGION( 0x180000*2 ) /* sprites */
ROM_LOAD( "ga12378.bin", 0x000000, 0x40000, 0x119e5a82 )
ROM_LOAD( "ga12379.bin", 0x040000, 0x40000, 0x1a0e8c57 )
ROM_LOAD( "ga12380.bin", 0x080000, 0x40000, 0xbb2c0853 )
ROM_LOAD( "ga12381.bin", 0x0c0000, 0x40000, 0x81ba6ecc )
ROM_LOAD( "ga12382.bin", 0x100000, 0x40000, 0x81601c6f )
ROM_LOAD( "ga12383.bin", 0x140000, 0x40000, 0x5dbacf7a )
ROM_REGION( 0x10000 ) /* sound CPU */
ROM_LOAD( "ga12390.bin", 0x0000, 0x8000, 0x399fc5f5 )
ROM_END
/***************************************************************************/
static struct MemoryReadAddress goldnaxe_readmem[] =
{
{ 0xc41002, 0xc41003, io_player1_r },
{ 0xc41006, 0xc41007, io_player2_r },
{ 0xc41000, 0xc41001, io_service_r },
{ 0xc42002, 0xc42003, io_dip1_r },
{ 0xc42000, 0xc42001, io_dip2_r },
{ 0x110000, 0x110fff, MRA_TEXTRAM },
{ 0x100000, 0x10ffff, MRA_TILERAM },
{ 0x200000, 0x200fff, MRA_SPRITERAM },
{ 0x140000, 0x140fff, MRA_PALETTERAM },
{ 0x1f0000, 0x1fffff, MRA_EXTRAM },
{ 0xc40000, 0xc40fff, MRA_EXTRAM2 },
{ 0xffecd0, 0xffecd1, mirror1_r },
{ 0xffec96, 0xffec97, mirror2_r },
{ 0xffecfc, 0xffecfd, mirror3_r },
{ 0xff0000, 0xffffff, MRA_WORKINGRAM },
{ 0x000000, 0x0bffff, MRA_ROM },
{-1}
};
static struct MemoryWriteAddress goldnaxe_writemem[] =
{
{ 0x000000, 0x0bffff, MWA_ROM },
{ 0xfe0006, 0xfe0007, sound_command_w },
{ 0x110000, 0x110fff, MWA_TEXTRAM },
{ 0x100000, 0x10ffff, MWA_TILERAM },
{ 0x200000, 0x20ffff, MWA_SPRITERAM },
{ 0x140000, 0x14ffff, MWA_PALETTERAM },
{ 0x1f0000, 0x1fffff, MWA_EXTRAM },
{ 0xc40000, 0xc40fff, MWA_EXTRAM2 },
{ 0xffecd0, 0xffecd1, mirror1_w },
{ 0xffec96, 0xffec97, mirror2_w },
{ 0xffecfc, 0xffecfd, mirror3_w },
{ 0xff0000, 0xffffff, MWA_WORKINGRAM },
{-1}
};
/***************************************************************************/
void goldnaxe_update_proc( void ){
sys16_fg_scrollx = READ_WORD( &sys16_textram[0x0e98] );
sys16_bg_scrollx = READ_WORD( &sys16_textram[0x0e9a] );
sys16_fg_scrolly = READ_WORD( &sys16_textram[0x0e90] );
sys16_bg_scrolly = READ_WORD( &sys16_textram[0x0e92] );
set_fg_page( READ_WORD( &sys16_textram[0x0e80] ) );
set_bg_page( READ_WORD( &sys16_textram[0x0e82] ) );
set_tile_bank( READ_WORD( &sys16_workingram[0xec94] ) );
set_refresh( READ_WORD( &sys16_extraram2[0] ) );
}
void goldnaxe_init_machine( void ){
static int bank[16] = { 0,2,8,10,16,18,0,0,4,6,12,14,20,22,0,0 };
sys16_obj_bank = bank;
copy_rom64k( 0x6, 0xA );
copy_rom64k( 0x7, 0xB );
patch_code( 0x3CB2, 0x4E );
patch_code( 0x3CB3, 0x75 );
define_mirror1( 0xc41003, 0xc41007 );
define_mirror2( 0xc41001, 0 );
define_mirror3( 0xfe0007,0 );
sys16_sprxoffset = -0xb8;
sys16_update_proc = goldnaxe_update_proc;
}
void goldnaxe_sprite_decode( void ){
sys16_sprite_decode( 3,0x80000 );
}
/***************************************************************************/
INPUT_PORTS_START( goldnaxe_input_ports )
SYS16_JOY1
SYS16_JOY2
SYS16_SERVICE
SYS16_COINAGE
PORT_START /* DSW1 */
PORT_DIPNAME( 0x01, 0x01, "Credits needed", IP_KEY_NONE )
PORT_DIPSETTING( 0x01, "1 to start, 1 to continue")
PORT_DIPSETTING( 0x00, "2 to start, 1 to continue")
PORT_DIPNAME( 0x02, 0x02, "Attract Mode Sound", IP_KEY_NONE )
PORT_DIPSETTING( 0x02, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x0c, 0x0c, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x30, 0x30, "Energy Meter", IP_KEY_NONE )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x30, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
/***************************************************************************/
MACHINE_DRIVER( goldnaxe_machine_driver, \
goldnaxe_readmem,goldnaxe_writemem,goldnaxe_init_machine, gfx2 )
struct GameDriver goldnaxe_driver =
{
__FILE__,
0,
"goldnaxe",
"Golden Axe",
"1989",
"Sega",
SYS16_CREDITS,
0,
&goldnaxe_machine_driver,
0,
goldnaxe_rom,
goldnaxe_sprite_decode, 0,
0,
0,
goldnaxe_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
0, 0
};
/***************************************************************************/
ROM_START( hwchamp_rom )
ROM_REGION( 0x040000 ) /* 68000 code */
ROM_LOAD_ODD ( "rom0-o.bin", 0x000000, 0x20000, 0x25180124 )
ROM_LOAD_EVEN( "rom0-e.bin", 0x000000, 0x20000, 0xe5abfed7 )
ROM_REGION( 0x60000 ) /* tiles */
ROM_LOAD( "scr11.bin", 0x00000, 0x20000, 0xaeaaa9d8 )
ROM_LOAD( "scr12.bin", 0x20000, 0x20000, 0x63a82afa )
ROM_LOAD( "scr13.bin", 0x40000, 0x20000, 0x5b8494a8 )
ROM_REGION( 0x100000*2 ) /* sprites */
ROM_LOAD( "obj0-o.bin", 0x000000, 0x020000, 0xfc098a13 )
ROM_LOAD( "obj0-e.bin", 0x020000, 0x020000, 0x5db934a8 )
ROM_LOAD( "obj1-o.bin", 0x040000, 0x020000, 0x1f27ee74 )
ROM_LOAD( "obj1-e.bin", 0x060000, 0x020000, 0x8a6a5cf1 )
ROM_LOAD( "obj2-o.bin", 0x080000, 0x020000, 0xc0b2ba82 )
ROM_LOAD( "obj2-e.bin", 0x0a0000, 0x020000, 0xd6c7917b )
ROM_LOAD( "obj3-o.bin", 0x0c0000, 0x020000, 0x52fa3a49 )
ROM_LOAD( "obj3-e.bin", 0x0e0000, 0x020000, 0x57e8f9d2 )
ROM_REGION( 0x10000 ) /* sound CPU */
ROM_LOAD( "s-prog.bin", 0x0000, 0x8000, 0x96a12d9d )
ROM_END
/***************************************************************************/
static struct MemoryReadAddress hwchamp_readmem[] =
{
{ 0x000000, 0x03ffff, MRA_ROM },
{ 0x3f0000, 0x3fffff, MRA_EXTRAM },
{ 0x400000, 0x40ffff, MRA_TILERAM },
{ 0x410000, 0x41ffff, MRA_TEXTRAM },
{ 0x440000, 0x44ffff, MRA_SPRITERAM },
{ 0x840000, 0x84ffff, MRA_PALETTERAM },
{ 0xc43ffd, 0xc43ffe, io_player1_r },
{ 0xc43ffd, 0xc43ffe, io_player2_r },
{ 0xc41000, 0xc41001, io_service_r },
{ 0xc42002, 0xc42003, io_dip1_r },
{ 0xc42000,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -