/***************************************************************************

PACHI FEVER / SANKI DENSHI KOGYO

DORE GA CPU ? <- where's the CPU?

GEN6480830 (TEXAS INSTRUMENTS)
XTAL:12.000MHZ
RY050012   (TEXAS INSTRUMENTS)
XTAL:10.738MHZ

SOUND   :MSM5205 & ?

DIP SWITCH:8BIT x 3

============================================================================

Skeleton driver, the main issue is to decrypt/identify the main CPU.
ADPCM & remaining ROM space is pretty much identical to Jantotsu, maybe
there's a correlation? Or the dump is bad/missing something?

***************************************************************************/

#include "driver.h"
#include "cpu/z80/z80.h"
#include "sound/msm5205.h"

static VIDEO_START( pachifev )
{

}

static VIDEO_UPDATE( pachifev )
{
	return 0;
}

static ADDRESS_MAP_START( pachifev_map, ADDRESS_SPACE_PROGRAM, 8 )
	AM_RANGE(0x0000, 0xbfff) AM_ROM
ADDRESS_MAP_END

static ADDRESS_MAP_START( pachifev_io, ADDRESS_SPACE_IO, 8 )
	ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_END


static INPUT_PORTS_START( pachifev )
INPUT_PORTS_END

static UINT32 adpcm_pos;
//static UINT8 adpcm_idle;

static void pf_adpcm_int(const device_config *device)
{
	static UINT8 trigger,adpcm_data;

	if (adpcm_pos >= 0x4000/* || adpcm_idle*/)
	{
		//adpcm_idle = 1;
		msm5205_reset_w(device,1);
		trigger = 0;
	}
	else
	{
		UINT8 *ROM = memory_region(device->machine, "adpcm");

		adpcm_data = ((trigger ? (ROM[adpcm_pos] & 0x0f) : (ROM[adpcm_pos] & 0xf0)>>4) );
		msm5205_data_w(device,adpcm_data & 0xf);
		trigger^=1;
		if(trigger == 0)
		{
			adpcm_pos++;
			//if((ROM[adpcm_pos] & 0xff) == 0xff)
			//  adpcm_idle = 1;
		}
	}
}

static const msm5205_interface msm5205_config =
{
	pf_adpcm_int,	/* interrupt function */
	MSM5205_S48_4B	/* 8kHz */
};

static MACHINE_RESET( pachifev )
{
	adpcm_pos = 0;
}

static MACHINE_DRIVER_START( pachifev )

	/* basic machine hardware */
	MDRV_CPU_ADD("maincpu",Z80,8000000/2)
	MDRV_CPU_PROGRAM_MAP(pachifev_map,0)
	MDRV_CPU_IO_MAP(pachifev_io,0)
//  MDRV_CPU_FLAGS(CPU_DISABLE)
//  MDRV_CPU_VBLANK_INT("screen",irq0_line_hold)

	/* video hardware */
	MDRV_SCREEN_ADD("screen", RASTER)
	MDRV_SCREEN_REFRESH_RATE(60)
	MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
	MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
	MDRV_SCREEN_SIZE(32*8, 32*8)
	MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
	MDRV_PALETTE_LENGTH(512)
	MDRV_MACHINE_RESET(pachifev)

	MDRV_VIDEO_START(pachifev)
	MDRV_VIDEO_UPDATE(pachifev)

	/* sound hardware */
	MDRV_SPEAKER_STANDARD_MONO("mono")
	MDRV_SOUND_ADD("adpcm", MSM5205, 288000)
	MDRV_SOUND_CONFIG(msm5205_config)
	MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_DRIVER_END

/***************************************************************************

  Game driver(s)

***************************************************************************/

ROM_START( pachifev )
	ROM_REGION( 0xc000, "maincpu", 0 )
	ROM_LOAD( "ic42.00",   0x0000, 0x2000, CRC(9653546e) SHA1(0836d01118241d38bbf61732275afe3ae47d0622) )
	ROM_LOAD( "ic43.01",   0x2000, 0x2000, CRC(5572dce5) SHA1(fad45b33e095ac6e3ed3d7cdc3d8678c153a1b38) )
	ROM_LOAD( "ic44.02",   0x4000, 0x2000, CRC(98b3841f) SHA1(0563139877bf01e1673767ee1798bbcf68adadea) )
	ROM_LOAD( "ic45.03",   0x6000, 0x2000, CRC(6b76e6fa) SHA1(5be10ab0b76e2061fc7e9c77649572955bee7661) )
	ROM_LOAD( "ic46.04",   0x8000, 0x2000, CRC(1c8c66d7) SHA1(3b9b05f35b20d798651c7d5fdb35e6af956615a1) )
	ROM_LOAD( "ic48.50",   0xa000, 0x2000, CRC(1c8c66d7) SHA1(3b9b05f35b20d798651c7d5fdb35e6af956615a1) )

	ROM_REGION( 0x4000, "adpcm", 0 ) //msm code
	ROM_LOAD( "ic66.10",   0x0000, 0x2000, CRC(217c573e) SHA1(6fb90865d1d81f5ea00fa7916d0ccb6756ef5ce5) )
ROM_END

GAME( 1983, pachifev,  0,       pachifev,  pachifev,  0, ROT0, "Sanki Denshi Kogyo", "Pachi Fever", GAME_NOT_WORKING )
