update notes 2

This commit is contained in:
Michaël Banaan Ananas 2012-09-09 18:24:17 +00:00
parent f91d58a9b9
commit db910043a6
3 changed files with 38 additions and 14 deletions

View File

@ -4,6 +4,13 @@
by: Juergen Buchmueller, Mike Balfour, Howie Cohen,
Olivier Galibert, and Aaron Giles
TODO:
- is there a doable method to dump the internal maskrom? :(
- low-level emulation
- watchdog? - according to uPD775x datasheet, the chip goes into standy mode
if CS/ST/RESET have not been accessed for more than 3 seconds
- convert to MAME modern device
*************************************************************
uPD7759 Description:
@ -684,16 +691,18 @@ static DEVICE_START( upd7759 )
assert(device->type() == UPD7759); // other chips do not support slave mode
chip->timer = device->machine().scheduler().timer_alloc(FUNC(upd7759_slave_update), chip);
chip->rommask = 0;
/* set the DRQ callback */
chip->drqcallback = intf->drqcallback;
}
else
{
UINT32 romsize = device->region()->bytes();
if (romsize >= 0x20000) chip->rommask = 0x1ffff;
else chip->rommask = romsize - 1;
}
/* set the DRQ callback */
chip->drqcallback = intf->drqcallback;
chip->drqcallback = NULL;
}
/* assume /RESET and /START are both high */
chip->reset = 1;

View File

@ -9,8 +9,8 @@
sprites in NES format etc)
Todo :
- voice ( unemulated D7756C )
- controls/dips
- dump remaining sample roms
- improve controls/dips
- better emulation of gfx bank switching (problematic in ganjaja)
- is there 2 player mode ?
@ -60,6 +60,9 @@ Notes:
WRITE8_MEMBER(homerun_state::homerun_d7756c_control_w)
{
// d4: start pin
// d5: reset pin(?)
// other bits: unused?
device_t *device = machine().device("d7756c");
upd7759_reset_w(device, ~data & 0x20);
upd7759_start_w(device, ~data & 0x10);
@ -110,18 +113,22 @@ static INPUT_PORTS_START( homerun )
PORT_START("IN0")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_40_r, NULL)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // ?
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // ?
PORT_BIT( 0x37, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_START("IN2")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("DSW")
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1,2")
@ -143,21 +150,21 @@ static INPUT_PORTS_START( dynashot )
PORT_START("IN0")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, homerun_40_r, NULL)
PORT_BIT( 0xb7, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0xb7, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_START("IN2")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("DSW")
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:1,2")
@ -188,7 +195,8 @@ static INPUT_PORTS_START( ganjaja )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Right / Scissors")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // unused?
PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, homerun_state, ganjaja_hopper_status_r, NULL)
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN2")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // bit masked with IN0 IPT_COIN1, maybe coin lockout?
@ -201,7 +209,7 @@ static INPUT_PORTS_START( ganjaja )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:2")
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) // game will boot with 1 credit inserted
PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" )
PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" )
PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" )

View File

@ -10,6 +10,8 @@
#define half_screen 116
/**************************************************************************/
WRITE8_MEMBER(homerun_state::homerun_scrollhi_w)
{
// d0: scroll y high bit
@ -68,6 +70,9 @@ WRITE8_MEMBER(homerun_state::homerun_color_w)
palette_set_color(machine(), offset, MAKE_RGB(r,g,b));
}
/**************************************************************************/
TILE_GET_INFO_MEMBER(homerun_state::get_homerun_tile_info)
{
int tileno = (m_videoram[tile_index]) + ((m_videoram[tile_index + 0x1000] & 0x38) << 5) + ((m_gfx_ctrl & 1) << 11);
@ -76,12 +81,14 @@ TILE_GET_INFO_MEMBER(homerun_state::get_homerun_tile_info)
SET_TILE_INFO_MEMBER(0, tileno, palno, 0);
}
VIDEO_START( homerun )
{
homerun_state *state = machine.driver_data<homerun_state>();
state->m_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(homerun_state::get_homerun_tile_info),state), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
}
static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
homerun_state *state = machine.driver_data<homerun_state>();