mirror of
https://github.com/holub/mame
synced 2025-05-25 15:25:33 +03:00
Added the AY8910 sound part to King Derby.
This commit is contained in:
parent
3296bbf9e9
commit
65b38dccda
@ -9,6 +9,7 @@ TODO:
|
|||||||
- inputs;
|
- inputs;
|
||||||
- "Hopper timeout" msg if you win;
|
- "Hopper timeout" msg if you win;
|
||||||
- colors (probably needs a color prom);
|
- colors (probably needs a color prom);
|
||||||
|
- Discrete sound part? (there's a Rossini's "William Tell" bgm on the Chinese bootlegs)
|
||||||
- add backup ram emulation;
|
- add backup ram emulation;
|
||||||
- unknown memories;
|
- unknown memories;
|
||||||
- the name "King Derby" is a raw guess, there's a chance that it uses a different name
|
- the name "King Derby" is a raw guess, there's a chance that it uses a different name
|
||||||
@ -228,10 +229,11 @@ static WRITE8_DEVICE_HANDLER( outport0_w )
|
|||||||
|
|
||||||
static WRITE8_DEVICE_HANDLER( outport1_w )
|
static WRITE8_DEVICE_HANDLER( outport1_w )
|
||||||
{
|
{
|
||||||
// const address_space *space = cpu_get_address_space(device->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
|
const address_space *space = cpu_get_address_space(device->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
|
||||||
|
|
||||||
// cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
|
cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
|
||||||
// soundlatch_w(space,0, data);
|
soundlatch_w(space,0, data);
|
||||||
|
// printf("%02x\n",data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT8 mux_data;
|
static UINT8 mux_data;
|
||||||
@ -302,6 +304,13 @@ static READ8_DEVICE_HANDLER( key_matrix_r )
|
|||||||
return p1_res | (p2_res<<4);
|
return p1_res | (p2_res<<4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static READ8_DEVICE_HANDLER( sound_cmd_r )
|
||||||
|
{
|
||||||
|
const address_space *space = cpu_get_address_space(device->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
|
||||||
|
|
||||||
|
return soundlatch_r(space, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Memory Map
|
* Memory Map
|
||||||
@ -317,7 +326,7 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( master_io_map, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( master_io_map, ADDRESS_SPACE_IO, 8 )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
// AM_RANGE(0x00, 0x00) AM_READ_PORT("UNK")
|
AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
@ -330,13 +339,14 @@ static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0x7400, 0x75ff) AM_RAM AM_BASE(&spriteram)
|
AM_RANGE(0x7400, 0x75ff) AM_RAM AM_BASE(&spriteram)
|
||||||
AM_RANGE(0x7600, 0x7600) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
|
AM_RANGE(0x7600, 0x7600) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
|
||||||
AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
|
AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
|
||||||
|
AM_RANGE(0x7800, 0x780f) AM_WRITENOP // discrete sound writes?
|
||||||
AM_RANGE(0x7a00, 0x7a00) AM_RAM //buffer for the key matrix
|
AM_RANGE(0x7a00, 0x7a00) AM_RAM //buffer for the key matrix
|
||||||
AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW")
|
AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( slave_io_map, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( slave_io_map, ADDRESS_SPACE_IO, 8 )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
// AM_RANGE(0x00, 0x00) AM_READ_PORT("UNK")
|
AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
@ -346,8 +356,8 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
AM_RANGE(0x40, 0x40) AM_READ(soundlatch_r)
|
AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "ay", ay8910_r)
|
||||||
AM_RANGE(0x40, 0x41) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w)
|
AM_RANGE(0x40, 0x41) AM_DEVWRITE(SOUND, "ay", ay8910_data_address_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
@ -605,7 +615,7 @@ static const mc6845_interface mc6845_intf =
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Sound HW Config (TODO)
|
* Sound HW Config
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -613,10 +623,7 @@ static const ay8910_interface ay8910_config =
|
|||||||
{
|
{
|
||||||
AY8910_LEGACY_OUTPUT,
|
AY8910_LEGACY_OUTPUT,
|
||||||
AY8910_DEFAULT_LOADS,
|
AY8910_DEFAULT_LOADS,
|
||||||
DEVCB_NULL,
|
DEVCB_HANDLER(sound_cmd_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* mame default palette doesn't suit well with this game, so we add a dummy color_prom initialization.*/
|
/* mame default palette doesn't suit well with this game, so we add a dummy color_prom initialization.*/
|
||||||
@ -659,7 +666,7 @@ static MACHINE_DRIVER_START( kingdrby )
|
|||||||
MDRV_CPU_ADD("sound", Z80, CLK_2)
|
MDRV_CPU_ADD("sound", Z80, CLK_2)
|
||||||
MDRV_CPU_PROGRAM_MAP(sound_map,0)
|
MDRV_CPU_PROGRAM_MAP(sound_map,0)
|
||||||
MDRV_CPU_IO_MAP(sound_io_map,0)
|
MDRV_CPU_IO_MAP(sound_io_map,0)
|
||||||
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
MDRV_CPU_PERIODIC_INT(irq0_line_hold,1000) /* guess, controls ay8910 tempo.*/
|
||||||
|
|
||||||
MDRV_QUANTUM_PERFECT_CPU("master")
|
MDRV_QUANTUM_PERFECT_CPU("master")
|
||||||
|
|
||||||
@ -684,7 +691,7 @@ static MACHINE_DRIVER_START( kingdrby )
|
|||||||
|
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
MDRV_SOUND_ADD("ay", AY8910, CLK_1/16) /* guess */
|
MDRV_SOUND_ADD("ay", AY8910, CLK_1/8) /* guess */
|
||||||
MDRV_SOUND_CONFIG(ay8910_config)
|
MDRV_SOUND_CONFIG(ay8910_config)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
@ -726,4 +733,4 @@ ROM_START( kingdrby )
|
|||||||
ROM_LOAD( "prom.x", 0x0000, 0x0200, NO_DUMP )
|
ROM_LOAD( "prom.x", 0x0000, 0x0200, NO_DUMP )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
GAME( 1981, kingdrby, 0, kingdrby, kingdrby, 0, ROT0, "Tazmi", "King Derby", GAME_NOT_WORKING | GAME_NO_SOUND )
|
GAME( 1981, kingdrby, 0, kingdrby, kingdrby, 0, ROT0, "Tazmi", "King Derby", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND )
|
||||||
|
Loading…
Reference in New Issue
Block a user