Preliminary ADPCM hook-up to Jantotsu,it plays something but it's not yet right. [Angelo Salese]

This commit is contained in:
Angelo Salese 2009-01-18 16:22:13 +00:00
parent 0fd71e350a
commit 0335419d51

View File

@ -5,25 +5,26 @@
driver by David Haywood and Angelo Salese driver by David Haywood and Angelo Salese
Notes: Notes:
-The 1-2 Player tiles on hand are actually shown on different screen sides.The Service Mode -The 1st/2nd Player tiles on hand are actually shown on different screen sides.The Service
is for adjusting these screens (to not let the human opponent to read your tiles). Mode is for adjusting these screens (to not let the human opponent to read your tiles).
TODO: TODO:
-MSM5205 samples are wrongly played i.e. plays chi when it's clearly a pon.ADPCM index issue;
-MSM5205 sample stop is wrong;
-Video buffering? If you coin up,you can see the "credit 1" msg that gets build into the -Video buffering? If you coin up,you can see the "credit 1" msg that gets build into the
video bitmaps... video bitmaps...
-According to the flyer,color bitplanes might be wrong on the A-N mahjong charset,might be a -According to the flyer,color bitplanes might be wrong on the A-N mahjong charset,might be a
BTANB however... BTANB however...
-I need schematics / pcb photos (component + solder sides) to understand if the background -I need schematics / pcb photos (component + solder sides) to understand if the background
color is hard-wired to the DIP-Switches or there's something else wrong. color is hard-wired to the DIP-Switches or there's something else wrong.
-Missing MSM5205 samples;
============================================================================================ ============================================================================================
Debug cheats: Debug cheats:
c01b-c028 player-1 tiles c01b-c028 player-1 tiles
c02b-c038 right computer tiles c02b-c038 "right" computer tiles
c03b-c048 up computer tiles / player-2 tiles c03b-c048 "up" computer tiles / player-2 tiles
c04b-c058 left computer tiles c04b-c058 "left" computer tiles
============================================================================================ ============================================================================================
@ -64,6 +65,7 @@ dumped by sayu
#include "driver.h" #include "driver.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/sn76496.h" #include "sound/sn76496.h"
#include "sound/msm5205.h"
static UINT8 *jan_bitmap_1,*jan_bitmap_2,*jan_bitmap_3,*jan_bitmap_4; static UINT8 *jan_bitmap_1,*jan_bitmap_2,*jan_bitmap_3,*jan_bitmap_4;
static UINT8 vram_bank,col_bank; static UINT8 vram_bank,col_bank;
@ -210,6 +212,56 @@ static READ8_HANDLER( jantotsu_dsw2_r )
return (input_port_read(space->machine, "DSW2") & 0x3f) | 0x80; return (input_port_read(space->machine, "DSW2") & 0x3f) | 0x80;
} }
static UINT32 adpcm_pos;
static UINT8 adpcm_idle;
static int adpcm_data;
static WRITE8_HANDLER( jan_adpcm_w )
{
switch (offset)
{
case 0:
adpcm_pos = (data & 0xff) * 0x80;
adpcm_idle = 0;
msm5205_reset_w(0,0);
// printf("%02x 0\n",data);
break;
/*same write as port 2?*/
case 1:
// adpcm_idle = 1;
// msm5205_reset_w(0,1);
// printf("%02x 1\n",data);
break;
}
}
static void jan_adpcm_int(const device_config *device)
{
static UINT8 trigger;
if (adpcm_pos >= 0x8000 || adpcm_idle)
{
//adpcm_idle = 1;
msm5205_reset_w(0,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(0,adpcm_data & 0xf);
trigger^=1;
if(trigger == 0)
{
adpcm_pos++;
if((ROM[adpcm_pos] & 0xff) == 0xff)
adpcm_idle = 1;
}
}
}
static ADDRESS_MAP_START( jantotsu_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( jantotsu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc000, 0xc7ff) AM_RAM
@ -220,7 +272,7 @@ static ADDRESS_MAP_START( jantotsu_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(sn76496_0_w) AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(sn76496_0_w)
AM_RANGE(0x01, 0x01) AM_READ(jantotsu_dsw2_r) AM_WRITE(sn76496_1_w) AM_RANGE(0x01, 0x01) AM_READ(jantotsu_dsw2_r) AM_WRITE(sn76496_1_w)
//02-03 MSM samples AM_RANGE(0x02, 0x03) AM_WRITE(jan_adpcm_w)
AM_RANGE(0x04, 0x04) AM_READWRITE(jantotsu_mux_r,jantotsu_mux_w) AM_RANGE(0x04, 0x04) AM_READWRITE(jantotsu_mux_r,jantotsu_mux_w)
AM_RANGE(0x07, 0x07) AM_WRITE(bankaddr_w) AM_RANGE(0x07, 0x07) AM_WRITE(bankaddr_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -336,8 +388,16 @@ static MACHINE_RESET( jantotsu )
mux_data = 0; mux_data = 0;
/*Load hard-wired background color.*/ /*Load hard-wired background color.*/
col_bank = (input_port_read(machine, "DSW2") & 0xc0)>>3; col_bank = (input_port_read(machine, "DSW2") & 0xc0)>>3;
adpcm_pos = 0;
adpcm_idle = 1;
} }
static const msm5205_interface msm5205_config =
{
jan_adpcm_int, /* interrupt function */
MSM5205_S48_4B /* 8kHz */
};
static MACHINE_DRIVER_START( jantotsu ) static MACHINE_DRIVER_START( jantotsu )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("main", Z80,18432000/4) MDRV_CPU_ADD("main", Z80,18432000/4)
@ -368,6 +428,10 @@ static MACHINE_DRIVER_START( jantotsu )
MDRV_SOUND_ADD("sn2", SN76489A, 18432000/4) MDRV_SOUND_ADD("sn2", SN76489A, 18432000/4)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MDRV_SOUND_ADD("adpcm", MSM5205, 288000)
MDRV_SOUND_CONFIG(msm5205_config)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_DRIVER_END MACHINE_DRIVER_END
@ -381,7 +445,7 @@ ROM_START( jantotsu )
ROM_LOAD( "jat-04.3e", 0x08000, 0x02000, CRC(734e029f) SHA1(75aa13397847b4db32c41aaa6ff2ac82f16bd7a2) ) ROM_LOAD( "jat-04.3e", 0x08000, 0x02000, CRC(734e029f) SHA1(75aa13397847b4db32c41aaa6ff2ac82f16bd7a2) )
ROM_LOAD( "jat-05.4e", 0x0a000, 0x02000, CRC(1a725e1a) SHA1(1d39d607850f47b9389f41147d4570da8814f639) ) ROM_LOAD( "jat-05.4e", 0x0a000, 0x02000, CRC(1a725e1a) SHA1(1d39d607850f47b9389f41147d4570da8814f639) )
ROM_REGION( 0x8000, "gfx1", 0 ) ROM_REGION( 0x8000, "adpcm", 0 )
ROM_LOAD( "jat-40.6b", 0x00000, 0x02000, CRC(2275253e) SHA1(64e9415faf2775c6b9ab497dce7fda8c4775192e) ) ROM_LOAD( "jat-40.6b", 0x00000, 0x02000, CRC(2275253e) SHA1(64e9415faf2775c6b9ab497dce7fda8c4775192e) )
ROM_LOAD( "jat-41.7b", 0x02000, 0x02000, CRC(ce08ed71) SHA1(8554e5e7ec178f57bed5fbdd5937e3a35f72c454) ) ROM_LOAD( "jat-41.7b", 0x02000, 0x02000, CRC(ce08ed71) SHA1(8554e5e7ec178f57bed5fbdd5937e3a35f72c454) )
ROM_LOAD( "jat-42.8b", 0x04000, 0x02000, CRC(3ac3efbf) SHA1(846faea7c7c01fb7500aa33a70d4b54e878c0e41) ) ROM_LOAD( "jat-42.8b", 0x04000, 0x02000, CRC(3ac3efbf) SHA1(846faea7c7c01fb7500aa33a70d4b54e878c0e41) )