Added driver_data struct to 4enraya.c

This commit is contained in:
Fabio Priuli 2009-11-18 12:51:25 +00:00
parent 2aa28ef3d9
commit 1a9e28c419
4 changed files with 72 additions and 26 deletions

1
.gitattributes vendored
View File

@ -2290,6 +2290,7 @@ src/mame/drivers/zr107.c svneol=native#text/plain
src/mame/etc/fd1094dp.c svneol=native#text/plain src/mame/etc/fd1094dp.c svneol=native#text/plain
src/mame/etc/jrcrypt.c svneol=native#text/plain src/mame/etc/jrcrypt.c svneol=native#text/plain
src/mame/includes/20pacgal.h svneol=native#text/plain src/mame/includes/20pacgal.h svneol=native#text/plain
src/mame/includes/4enraya.h svneol=native#text/plain
src/mame/includes/8080bw.h svneol=native#text/plain src/mame/includes/8080bw.h svneol=native#text/plain
src/mame/includes/aerofgt.h svneol=native#text/plain src/mame/includes/aerofgt.h svneol=native#text/plain
src/mame/includes/ajax.h svneol=native#text/plain src/mame/includes/ajax.h svneol=native#text/plain

View File

@ -52,31 +52,28 @@ Sound :
#include "deprecat.h" #include "deprecat.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "includes/4enraya.h"
VIDEO_START( 4enraya );
VIDEO_UPDATE( 4enraya );
WRITE8_HANDLER( fenraya_videoram_w );
static int soundlatch;
static WRITE8_HANDLER( sound_data_w ) static WRITE8_HANDLER( sound_data_w )
{ {
soundlatch = data; _4enraya_state *state = (_4enraya_state *)space->machine->driver_data;
state->soundlatch = data;
} }
static WRITE8_DEVICE_HANDLER( sound_control_w ) static WRITE8_DEVICE_HANDLER( sound_control_w )
{ {
static int last; _4enraya_state *state = (_4enraya_state *)device->machine->driver_data;
if ((last & 0x04) == 0x04 && (data & 0x4) == 0x00)
ay8910_data_address_w(device, last, soundlatch); if ((state->last_snd_ctrl & 0x04) == 0x04 && (data & 0x4) == 0x00)
last=data; ay8910_data_address_w(device, state->last_snd_ctrl, state->soundlatch);
state->last_snd_ctrl = data;
} }
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE_MEMBER(_4enraya_state, videoram) AM_SIZE(&videoram_size)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
@ -152,17 +149,33 @@ GFXDECODE_END
static MACHINE_START( 4enraya ) static MACHINE_START( 4enraya )
{ {
state_save_register_global(machine, soundlatch); _4enraya_state *state = (_4enraya_state *)machine->driver_data;
state_save_register_global(machine, state->soundlatch);
state_save_register_global(machine, state->last_snd_ctrl);
}
static MACHINE_RESET( 4enraya )
{
_4enraya_state *state = (_4enraya_state *)machine->driver_data;
state->soundlatch = 0;
state->last_snd_ctrl = 0;
} }
static MACHINE_DRIVER_START( 4enraya ) static MACHINE_DRIVER_START( 4enraya )
MDRV_DRIVER_DATA(_4enraya_state)
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("maincpu",Z80,8000000/2) MDRV_CPU_ADD("maincpu",Z80,8000000/2)
MDRV_CPU_PROGRAM_MAP(main_map) MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_CPU_IO_MAP(main_portmap) MDRV_CPU_IO_MAP(main_portmap)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
MDRV_MACHINE_START(4enraya)
MDRV_MACHINE_RESET(4enraya)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_REFRESH_RATE(60)
@ -176,8 +189,6 @@ static MACHINE_DRIVER_START( 4enraya )
MDRV_VIDEO_START(4enraya) MDRV_VIDEO_START(4enraya)
MDRV_VIDEO_UPDATE(4enraya) MDRV_VIDEO_UPDATE(4enraya)
MDRV_MACHINE_START(4enraya)
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */) MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */)
@ -204,4 +215,4 @@ ROM_START( 4enraya )
ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) ) /* not used */ ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) ) /* not used */
ROM_END ROM_END
GAME( 1990, 4enraya, 0, 4enraya, 4enraya, 0, ROT0, "IDSA", "4 En Raya", GAME_SUPPORTS_SAVE ) GAME( 1990, 4enraya, 0, 4enraya, 4enraya, 0, ROT0, "IDSA", "4 En Raya", GAME_SUPPORTS_SAVE )

View File

@ -0,0 +1,27 @@
/*************************************************************************
4enraya
*************************************************************************/
typedef struct __4enraya_state _4enraya_state;
struct __4enraya_state
{
/* memory pointers */
UINT8 * videoram;
/* video-related */
tilemap *bg_tilemap;
/* sound-related */
int soundlatch;
int last_snd_ctrl;
};
/*----------- defined in video/4enraya.c -----------*/
WRITE8_HANDLER( fenraya_videoram_w );
VIDEO_START( 4enraya );
VIDEO_UPDATE( 4enraya );

View File

@ -7,19 +7,22 @@
***************************************************************************/ ***************************************************************************/
#include "driver.h" #include "driver.h"
#include "includes/4enraya.h"
static tilemap *bg_tilemap;
WRITE8_HANDLER( fenraya_videoram_w ) WRITE8_HANDLER( fenraya_videoram_w )
{ {
videoram[(offset&0x3ff)*2]=data; _4enraya_state *state = (_4enraya_state *)space->machine->driver_data;
videoram[(offset&0x3ff)*2+1]=(offset&0xc00)>>10;
tilemap_mark_tile_dirty(bg_tilemap,offset&0x3ff); state->videoram[(offset & 0x3ff) * 2] = data;
state->videoram[(offset & 0x3ff) * 2 + 1] = (offset & 0xc00) >> 10;
tilemap_mark_tile_dirty(state->bg_tilemap, offset & 0x3ff);
} }
static TILE_GET_INFO( get_tile_info ) static TILE_GET_INFO( get_tile_info )
{ {
int code = videoram[tile_index*2]+(videoram[tile_index*2+1]<<8); _4enraya_state *state = (_4enraya_state *)machine->driver_data;
int code = state->videoram[tile_index * 2] + (state->videoram[tile_index * 2 + 1] << 8);
SET_TILE_INFO( SET_TILE_INFO(
0, 0,
code, code,
@ -29,11 +32,15 @@ static TILE_GET_INFO( get_tile_info )
VIDEO_START( 4enraya ) VIDEO_START( 4enraya )
{ {
bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 ); _4enraya_state *state = (_4enraya_state *)machine->driver_data;
state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
} }
VIDEO_UPDATE( 4enraya) VIDEO_UPDATE( 4enraya )
{ {
tilemap_draw(bitmap,cliprect,bg_tilemap, 0,0); _4enraya_state *state = (_4enraya_state *)screen->machine->driver_data;
tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
return 0; return 0;
} }