mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
improve fpointbl / fpointbj emulation (nw)
This commit is contained in:
parent
8acf3bacc8
commit
65134b2b42
@ -1780,6 +1780,41 @@ static ADDRESS_MAP_START( lockonph_map, AS_PROGRAM, 16, segas16b_state )
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("workram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( fpointbl_map, AS_PROGRAM, 16, segas16b_state )
|
||||
AM_RANGE(0x000000, 0x0bffff) AM_ROM
|
||||
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram")
|
||||
AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
|
||||
|
||||
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_w16)
|
||||
AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
|
||||
AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1")
|
||||
|
||||
AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x843000, 0x843001) AM_WRITENOP
|
||||
|
||||
AM_RANGE(0xC46000, 0xC4601f) AM_RAM AM_SHARE("bootleg_scroll")
|
||||
AM_RANGE(0xC46020, 0xC46027) AM_RAM AM_SHARE("bootleg_page")
|
||||
|
||||
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram")
|
||||
ADDRESS_MAP_END
|
||||
/*
|
||||
Flash Point (Datsu bootlegs = fpointbl, fpointbj)
|
||||
Has sound latch at $E000 instead of I/O ports $C0-FF
|
||||
*/
|
||||
static ADDRESS_MAP_START( fpointbl_sound_map, AS_PROGRAM, 8, segas16b_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
READ16_MEMBER(segas16b_state::bootleg_custom_io_r)
|
||||
{
|
||||
return m_custom_io_r(space, offset, mem_mask);
|
||||
@ -2434,6 +2469,96 @@ static INPUT_PORTS_START( fpoint )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
static INPUT_PORTS_START( fpointbl )
|
||||
PORT_START("SERVICE")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" ) /* Listed as "Unused" */
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" ) /* Listed as "Unused" */
|
||||
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Clear Round Allowed" ) PORT_DIPLOCATION("SW2:7") /* Use button 3 */
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
PORT_DIPSETTING( 0x40, "2" )
|
||||
/* SW2:8 The mode in which a block falls at twice [ usual ] speed as this when playing 25 minutes or more on one coin. */
|
||||
PORT_DIPNAME( 0x80, 0x80, "2 Cell Move" ) PORT_DIPLOCATION("SW2:8")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
|
||||
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x05, "2 Coins/1 Credit 5/3 6/4" )
|
||||
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit 4/3" )
|
||||
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit 2/3" )
|
||||
PORT_DIPSETTING( 0x02, "1 Coin/1 Credit 4/5" )
|
||||
PORT_DIPSETTING( 0x03, "1 Coin/1 Credit 5/6" )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
|
||||
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPSETTING( 0x00, "Free Play (if Coin B too) or 1/1" )
|
||||
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
|
||||
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x50, "2 Coins/1 Credit 5/3 6/4" )
|
||||
PORT_DIPSETTING( 0x40, "2 Coins/1 Credit 4/3" )
|
||||
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x10, "1 Coin/1 Credit 2/3" )
|
||||
PORT_DIPSETTING( 0x20, "1 Coin/1 Credit 4/5" )
|
||||
PORT_DIPSETTING( 0x30, "1 Coin/1 Credit 5/6" )
|
||||
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )
|
||||
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( goldnaxe )
|
||||
PORT_INCLUDE( system16b_generic )
|
||||
|
||||
@ -3551,6 +3676,52 @@ static MACHINE_CONFIG_DERIVED( system16b_split, system16b )
|
||||
MCFG_DEVICE_REMOVE("mapper")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
void segas16b_state::tilemap_16b_fpointbl_fill_latch(int i, UINT16* latched_pageselect, UINT16* latched_yscroll, UINT16* latched_xscroll, UINT16* textram)
|
||||
{
|
||||
// grab the page regsisters from where the bootleg stores them instead, then convert them to the format the original video emulation code expects
|
||||
if (i == 0)
|
||||
{
|
||||
latched_pageselect[i] = m_bootleg_page[1];
|
||||
latched_yscroll[i] = m_bootleg_scroll[0x00/2];
|
||||
latched_xscroll[i] = -m_bootleg_scroll[0x08/2]-1;
|
||||
|
||||
}
|
||||
else if (i == 1)
|
||||
{
|
||||
// 6661 vs 1666
|
||||
latched_pageselect[i] = BITSWAP16(m_bootleg_page[3] ,3, 2, 1, 0 , 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 ) ;
|
||||
latched_yscroll[i] = m_bootleg_scroll[0x10/2]+2;
|
||||
latched_xscroll[i] = -m_bootleg_scroll[0x18/2]-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
latched_pageselect[i] = 0x0000;
|
||||
latched_yscroll[i] = 0;
|
||||
latched_xscroll[i] = 0;
|
||||
}
|
||||
// printf("%02x returning latched page select %04x scrollx %04x scrolly %04x\n", i, latched_pageselect[i], latched_xscroll[i], latched_yscroll[i]);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( fpointbl, system16b )
|
||||
|
||||
MCFG_DEVICE_REMOVE("mapper")
|
||||
MCFG_DEVICE_REMOVE("sprites")
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(fpointbl_map)
|
||||
|
||||
MCFG_CPU_MODIFY("soundcpu")
|
||||
MCFG_CPU_PROGRAM_MAP(fpointbl_sound_map)
|
||||
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites")
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(75) // these align the pieces with the playfield
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_YORIGIN(-2) // some other gfx don't have identical alignment to original tho (flickey character over 'good luck')
|
||||
|
||||
MCFG_DEVICE_MODIFY("segaic16vid")
|
||||
MCFG_SEGAIC16_VIDEO_SET_PAGELATCH_CB(segas16b_state, tilemap_16b_fpointbl_fill_latch)
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( lockonph, segas16b_state )
|
||||
|
||||
@ -5854,6 +6025,53 @@ ROM_START( fpointd )
|
||||
ROM_LOAD( "epr-12592.a10", 0x0000, 0x8000, CRC(9a8c11bb) SHA1(399f8e9bdd7aaa4d25817fa9cd4bbf413e5baebe) )
|
||||
ROM_END
|
||||
|
||||
// Datsu bootlegs
|
||||
ROM_START( fpointbl )
|
||||
ROM_REGION( 0x0c0000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "flpoint.003", 0x000000, 0x10000, CRC(4d6df514) SHA1(168aa1629ab7152ba1984605155406b236954a2c) )
|
||||
ROM_LOAD16_BYTE( "flpoint.002", 0x000001, 0x10000, CRC(4dff2ee8) SHA1(bd157d8c168d45e7490a05d5e1e901d9bdda9599) )
|
||||
|
||||
ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) /* tiles */
|
||||
ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
|
||||
ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
|
||||
ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
|
||||
|
||||
ROM_REGION16_BE( 0x20000, "sprites", 0 ) /* sprites */
|
||||
ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
|
||||
ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
|
||||
|
||||
ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */
|
||||
ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( fpointbj )
|
||||
ROM_REGION( 0x0c0000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "boot2.003", 0x000000, 0x10000, CRC(6c00d1b0) SHA1(fd0c47b8ca010a64d3ef91980f93854ebc98fbda) )
|
||||
ROM_LOAD16_BYTE( "boot2.002", 0x000001, 0x10000, CRC(c1fcd704) SHA1(697bef464e53fb9891ed15ee2d6210107b693b20) )
|
||||
|
||||
ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) /* tiles */
|
||||
ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
|
||||
ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
|
||||
ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
|
||||
|
||||
ROM_REGION16_BE( 0x20000, "sprites", 0 ) /* sprites */
|
||||
ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
|
||||
ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
|
||||
|
||||
ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */
|
||||
ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) )
|
||||
|
||||
/* stuff below isn't used but loaded because it was on the board .. */
|
||||
ROM_REGION( 0x0120, "proms", 0 )
|
||||
ROM_LOAD( "82s129.1", 0x0000, 0x0100, CRC(a7c22d96) SHA1(160deae8053b09c09328325246598b3518c7e20b) )
|
||||
ROM_LOAD( "82s123.2", 0x0100, 0x0020, CRC(58bcf8bd) SHA1(e4d3d179b08c0f3424a6bec0f15058fb1b56f8d8) )
|
||||
|
||||
ROM_REGION( 0x0600, "plds", 0 )
|
||||
ROM_LOAD( "fpointbj_gal16v8_1.bin", 0x0000, 0x0117, CRC(ba7f292c) SHA1(c383700d05663c9c5f29d5d04d16b05cd6adceb8) )
|
||||
ROM_LOAD( "fpointbj_gal16v8_3.bin", 0x0200, 0x0117, CRC(ce1ab1e1) SHA1(dcfc0015d8595ee6cb6bb02c95655161a7f3b017) )
|
||||
ROM_LOAD( "fpointbj_gal20v8.bin", 0x0400, 0x019d, NO_DUMP ) /* Protected */
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
// Flash Point, Sega System 16B
|
||||
// CPU: FD1094 (317-0127A)
|
||||
@ -8355,6 +8573,13 @@ DRIVER_INIT_MEMBER(segas16b_state, lockonph)
|
||||
|
||||
m_spritepalbase = 0x800; // tiles are 4bpp so sprite base is 0x800 instead of 0x400
|
||||
}
|
||||
DRIVER_INIT_MEMBER(segas16b_state, generic_bootleg)
|
||||
{
|
||||
init_generic(ROM_BOARD_KOREAN);
|
||||
m_disable_screen_blanking = true;
|
||||
m_segaic16vid->m_display_enable = 1;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// init_* - game-specific initialization
|
||||
@ -8715,6 +8940,11 @@ GAME( 1987, sdibl4, sdi, system16b_split, sdi, segas16b
|
||||
GAME( 1987, sdibl5, sdi, system16b_split, sdi, segas16b_state,sdi_5358_small, ROT0, "bootleg", "SDI - Strategic Defense Initiative (bootleg, set 4)", 0 )
|
||||
GAME( 1987, sdibl6, sdi, system16b_split, sdi, segas16b_state,sdi_5358_small, ROT0, "bootleg", "SDI - Strategic Defense Initiative (bootleg, set 5)", 0 )
|
||||
|
||||
// bootlegs with modified hardware
|
||||
GAME( 1989, fpointbl, fpoint, fpointbl, fpointbl, segas16b_state, generic_bootleg, ROT0, "bootleg (Datsu)", "Flash Point (World, bootleg)", 0 )
|
||||
GAME( 1989, fpointbj, fpoint, fpointbl, fpointbl, segas16b_state, generic_bootleg, ROT0, "bootleg (Datsu)", "Flash Point (Japan, bootleg)", 0 )
|
||||
|
||||
|
||||
|
||||
// ISG 'Selection Master' Type 2006 hardware
|
||||
|
||||
@ -9232,3 +9462,9 @@ GAME( 2006, isgsm, 0, isgsm, isgsm, isgsm_state,isgsm, ROT0,
|
||||
/* 01 */ // ?? unknown
|
||||
/* 02 */ GAME( 2006, tetrbx, isgsm, isgsm, tetrbx, isgsm_state,tetrbx, ROT0, "bootleg (ISG)", "Tetris / Bloxeed (Korean System 16 bootleg) (ISG Selection Master Type 2006)", 0 )
|
||||
/* 03 */ GAME( 2008, shinfz, isgsm, isgsm, shinfz, isgsm_state,shinfz, ROT0, "bootleg (ISG)", "Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006)", 0 ) // claims it's released in 2006, but set includes the PS2/S16 remake of Fantasy Zone II which is clearly from 2008
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -531,17 +531,7 @@ static ADDRESS_MAP_START( bayroute_map, AS_PROGRAM, 16, segas1x_bootleg_state )
|
||||
ADDRESS_MAP_END
|
||||
#endif
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
Flash Point (Datsu bootlegs = fpointbl, fpointbj)
|
||||
Has sound latch at $E000 instead of I/O ports $C0-FF
|
||||
*/
|
||||
static ADDRESS_MAP_START( fpointbl_sound_map, AS_PROGRAM, 8, segas1x_bootleg_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
@ -840,37 +830,6 @@ ADDRESS_MAP_END
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( fpointbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
|
||||
AM_RANGE(0x000000, 0x0bffff) AM_ROM
|
||||
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram")
|
||||
AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
|
||||
|
||||
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_irq_w)
|
||||
AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
|
||||
AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1")
|
||||
|
||||
AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x843000, 0x843001) AM_WRITENOP
|
||||
|
||||
AM_RANGE(0xC46000, 0xC46001) AM_WRITE(s16bl_fgscrolly_w)
|
||||
AM_RANGE(0xC46008, 0xC46009) AM_WRITE(s16bl_fgscrollx_w)
|
||||
AM_RANGE(0xC46010, 0xC46011) AM_WRITE(s16bl_bgscrolly_w)
|
||||
AM_RANGE(0xC46018, 0xC46019) AM_WRITE(s16bl_bgscrollx_w)
|
||||
|
||||
AM_RANGE(0xC46020, 0xC46021) AM_WRITE(datsu_page0_w)
|
||||
AM_RANGE(0xc46022, 0xc46023) AM_WRITE(datsu_page1_w)
|
||||
AM_RANGE(0xC46024, 0xC46025) AM_WRITE(datsu_page2_w)
|
||||
AM_RANGE(0xC46026, 0xC46027) AM_WRITE(datsu_page3_w)
|
||||
|
||||
AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
WRITE16_MEMBER(segas1x_bootleg_state::eswat_tilebank0_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
@ -1770,93 +1729,6 @@ static INPUT_PORTS_START( eswat )
|
||||
PORT_DIPSETTING( 0x80, "4" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( fpointbl )
|
||||
PORT_START("SERVICE")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" ) /* Listed as "Unused" */
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" ) /* Listed as "Unused" */
|
||||
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Clear Round Allowed" ) PORT_DIPLOCATION("SW2:7") /* Use button 3 */
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
PORT_DIPSETTING( 0x40, "2" )
|
||||
/* SW2:8 The mode in which a block falls at twice [ usual ] speed as this when playing 25 minutes or more on one coin. */
|
||||
PORT_DIPNAME( 0x80, 0x80, "2 Cell Move" ) PORT_DIPLOCATION("SW2:8")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
|
||||
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x05, "2 Coins/1 Credit 5/3 6/4" )
|
||||
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit 4/3" )
|
||||
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit 2/3" )
|
||||
PORT_DIPSETTING( 0x02, "1 Coin/1 Credit 4/5" )
|
||||
PORT_DIPSETTING( 0x03, "1 Coin/1 Credit 5/6" )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
|
||||
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPSETTING( 0x00, "Free Play (if Coin B too) or 1/1" )
|
||||
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
|
||||
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x50, "2 Coins/1 Credit 5/3 6/4" )
|
||||
PORT_DIPSETTING( 0x40, "2 Coins/1 Credit 4/3" )
|
||||
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x10, "1 Coin/1 Credit 2/3" )
|
||||
PORT_DIPSETTING( 0x20, "1 Coin/1 Credit 4/5" )
|
||||
PORT_DIPSETTING( 0x30, "1 Coin/1 Credit 5/6" )
|
||||
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )
|
||||
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tetris )
|
||||
PORT_INCLUDE( sys16_common ) /* unconfirmed coinage dip */
|
||||
@ -2366,18 +2238,7 @@ static MACHINE_CONFIG_DERIVED( eswatbl, system16_7759 )
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-124)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( fpointbl, system16 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(fpointbl_map)
|
||||
|
||||
MCFG_CPU_MODIFY("soundcpu")
|
||||
MCFG_CPU_PROGRAM_MAP(fpointbl_sound_map)
|
||||
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites")
|
||||
MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-112)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tetrisbl, system16 )
|
||||
|
||||
@ -3147,51 +3008,6 @@ ROM_START( eswatbl )
|
||||
ROM_LOAD( "ic6", 0x10000, 0x40000, CRC(254347c2) SHA1(bf2d83a69a5be375c7e42e9f7d6e65c1095a354c) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( fpointbl )
|
||||
ROM_REGION( 0x0c0000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "flpoint.003", 0x000000, 0x10000, CRC(4d6df514) SHA1(168aa1629ab7152ba1984605155406b236954a2c) )
|
||||
ROM_LOAD16_BYTE( "flpoint.002", 0x000001, 0x10000, CRC(4dff2ee8) SHA1(bd157d8c168d45e7490a05d5e1e901d9bdda9599) )
|
||||
|
||||
ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) /* tiles */
|
||||
ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
|
||||
ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
|
||||
ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
|
||||
|
||||
ROM_REGION16_BE( 0x20000, "sprites", 0 ) /* sprites */
|
||||
ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
|
||||
ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
|
||||
|
||||
ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */
|
||||
ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) ) // bootleg rom doesn't work, but should be correct!
|
||||
ROM_END
|
||||
|
||||
ROM_START( fpointbj )
|
||||
ROM_REGION( 0x0c0000, "maincpu", 0 ) /* 68000 code */
|
||||
ROM_LOAD16_BYTE( "boot2.003", 0x000000, 0x10000, CRC(6c00d1b0) SHA1(fd0c47b8ca010a64d3ef91980f93854ebc98fbda) )
|
||||
ROM_LOAD16_BYTE( "boot2.002", 0x000001, 0x10000, CRC(c1fcd704) SHA1(697bef464e53fb9891ed15ee2d6210107b693b20) )
|
||||
|
||||
ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) /* tiles */
|
||||
ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
|
||||
ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
|
||||
ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
|
||||
|
||||
ROM_REGION16_BE( 0x20000, "sprites", 0 ) /* sprites */
|
||||
ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
|
||||
ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
|
||||
|
||||
ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */
|
||||
ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) ) // bootleg rom doesn't work, but should be correct!
|
||||
|
||||
/* stuff below isn't used but loaded because it was on the board .. */
|
||||
ROM_REGION( 0x0120, "proms", 0 )
|
||||
ROM_LOAD( "82s129.1", 0x0000, 0x0100, CRC(a7c22d96) SHA1(160deae8053b09c09328325246598b3518c7e20b) )
|
||||
ROM_LOAD( "82s123.2", 0x0100, 0x0020, CRC(58bcf8bd) SHA1(e4d3d179b08c0f3424a6bec0f15058fb1b56f8d8) )
|
||||
|
||||
ROM_REGION( 0x0600, "plds", 0 )
|
||||
ROM_LOAD( "fpointbj_gal16v8_1.bin", 0x0000, 0x0117, CRC(ba7f292c) SHA1(c383700d05663c9c5f29d5d04d16b05cd6adceb8) )
|
||||
ROM_LOAD( "fpointbj_gal16v8_3.bin", 0x0200, 0x0117, CRC(ce1ab1e1) SHA1(dcfc0015d8595ee6cb6bb02c95655161a7f3b017) )
|
||||
ROM_LOAD( "fpointbj_gal20v8.bin", 0x0400, 0x019d, NO_DUMP ) /* Protected */
|
||||
ROM_END
|
||||
|
||||
ROM_START( tetrisbl )
|
||||
ROM_REGION( 0x040000, "maincpu", ROMREGION_ERASEFF ) /* 68000 code */
|
||||
@ -3773,14 +3589,7 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,eswatbl)
|
||||
m_spritebank_type = 1;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(segas1x_bootleg_state,fpointbl)
|
||||
{
|
||||
DRIVER_INIT_CALL(common);
|
||||
//sys16_video_config(fpoint_update_proc, -0xb8, NULL);
|
||||
|
||||
m_back_yscroll = 2;
|
||||
m_fore_yscroll = 2;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(segas1x_bootleg_state,ddcrewbl)
|
||||
{
|
||||
@ -3945,8 +3754,6 @@ GAME( 1989, tturfbl, tturf, tturfbl, tturf, segas1x_bootleg_state,
|
||||
GAME( 1989, dduxbl, ddux, dduxbl, ddux, segas1x_bootleg_state, dduxbl, ROT0, "bootleg (Datsu)", "Dynamite Dux (Datsu bootleg)", MACHINE_NOT_WORKING )
|
||||
GAME( 1988, altbeastbl, altbeast, tetrisbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Altered Beast (Datsu bootleg)", MACHINE_NOT_WORKING )
|
||||
GAME( 1989, eswatbl, eswat, eswatbl, eswat, segas1x_bootleg_state, eswatbl, ROT0, "bootleg", "E-Swat - Cyber Police (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1989, fpointbl, fpoint, fpointbl, fpointbl, segas1x_bootleg_state, fpointbl, ROT0, "bootleg (Datsu)", "Flash Point (World, bootleg)", MACHINE_NOT_WORKING )
|
||||
GAME( 1989, fpointbj, fpoint, fpointbl, fpointbl, segas1x_bootleg_state, fpointbl, ROT0, "bootleg (Datsu)", "Flash Point (Japan, bootleg)", MACHINE_NOT_WORKING )
|
||||
GAME( 1988, tetrisbl, tetris, tetrisbl, tetris, segas1x_bootleg_state, dduxbl, ROT0, "bootleg", "Tetris (bootleg)", 0 )
|
||||
|
||||
/* Tetris-based hardware */
|
||||
|
@ -52,7 +52,9 @@ public:
|
||||
m_spritepalbase(0x400),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_sound_decrypted_opcodes(*this, "sound_decrypted_opcodes"),
|
||||
m_decrypted_opcodes(*this, "decrypted_opcodes")
|
||||
m_decrypted_opcodes(*this, "decrypted_opcodes"),
|
||||
m_bootleg_scroll(*this, "bootleg_scroll"),
|
||||
m_bootleg_page(*this, "bootleg_page")
|
||||
{ }
|
||||
|
||||
// memory mapping
|
||||
@ -89,6 +91,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(generic_5358_small);
|
||||
DECLARE_DRIVER_INIT(generic_5797);
|
||||
DECLARE_DRIVER_INIT(generic_korean);
|
||||
DECLARE_DRIVER_INIT(generic_bootleg);
|
||||
DECLARE_DRIVER_INIT(lockonph);
|
||||
// game-specific driver init
|
||||
DECLARE_DRIVER_INIT(isgsm);
|
||||
@ -124,6 +127,9 @@ public:
|
||||
DECLARE_WRITE16_MEMBER( tileram_w ) { m_segaic16vid->tileram_w(space,offset,data,mem_mask); };
|
||||
DECLARE_WRITE16_MEMBER( textram_w ) { m_segaic16vid->textram_w(space,offset,data,mem_mask); };
|
||||
|
||||
// bootleg stuff
|
||||
void tilemap_16b_fpointbl_fill_latch(int i, UINT16* latched_pageselect, UINT16* latched_yscroll, UINT16* latched_xscroll, UINT16* textram);
|
||||
|
||||
protected:
|
||||
// internal types
|
||||
typedef delegate<void ()> i8751_sim_delegate;
|
||||
@ -214,6 +220,10 @@ protected:
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
optional_shared_ptr<UINT8> m_sound_decrypted_opcodes;
|
||||
optional_shared_ptr<UINT16> m_decrypted_opcodes;
|
||||
optional_shared_ptr<UINT16> m_bootleg_scroll;
|
||||
optional_shared_ptr<UINT16> m_bootleg_page;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -50,6 +50,8 @@
|
||||
MCFG_DEVICE_ADD(_tag, SEGA_SYS16B_SPRITES, 0)
|
||||
#define MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(_xorigin) \
|
||||
sega_sys16b_sprite_device::set_local_originx(*device, _xorigin);
|
||||
#define MCFG_BOOTLEG_SYS16B_SPRITES_YORIGIN(_yorigin) \
|
||||
sega_sys16b_sprite_device::set_local_originy(*device, _yorigin);
|
||||
|
||||
|
||||
|
||||
|
@ -1029,6 +1029,7 @@ void segaic16_video_device::tilemap_16b_fill_latch(int i, UINT16* latched_pagese
|
||||
latched_pageselect[i] = textram[0xe80 / 2 + i];
|
||||
latched_yscroll[i] = textram[0xe90/2 + i];
|
||||
latched_xscroll[i] = textram[0xe98/2 + i];
|
||||
// printf("%02x returning latched page select %04x scrollx %04x scrolly %04x\n", i, latched_pageselect[i], latched_xscroll[i], latched_yscroll[i]);
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER( segaic16_video_device::tilemap_16b_latch_values )
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
typedef device_delegate<void (int, UINT16*, UINT16*, UINT16*, UINT16*)> segaic16_video_pagelatch_delegate;
|
||||
|
||||
#define MCFG_segaic16_video_SET_TILE_INDIRECT( _class, _method) \
|
||||
#define MCFG_SEGAIC16_VIDEO_SET_PAGELATCH_CB( _class, _method) \
|
||||
segaic16_video_device::set_pagelatch_cb(*device, segaic16_video_pagelatch_delegate(&_class::_method, #_class "::" #_method, NULL, (_class *)0));
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user