mirror of
https://github.com/holub/mame
synced 2025-05-18 11:39:29 +03:00
Added 'buzzer' sound to Filetto and Tetris KR [Angelo Salese]
This commit is contained in:
parent
7456bb6a4b
commit
2828e0a001
@ -64,7 +64,7 @@ the main program is 9th October 1990.
|
|||||||
#include "machine/pic8259.h"
|
#include "machine/pic8259.h"
|
||||||
#include "machine/mc146818.h"
|
#include "machine/mc146818.h"
|
||||||
#include "sound/hc55516.h"
|
#include "sound/hc55516.h"
|
||||||
#include "sound/beep.h"
|
#include "sound/speaker.h"
|
||||||
#include "video/pc_cga.h"
|
#include "video/pc_cga.h"
|
||||||
|
|
||||||
|
|
||||||
@ -86,6 +86,7 @@ public:
|
|||||||
int m_dma_channel;
|
int m_dma_channel;
|
||||||
UINT8 m_dma_offset[2][4];
|
UINT8 m_dma_offset[2][4];
|
||||||
UINT8 m_at_pages[0x10];
|
UINT8 m_at_pages[0x10];
|
||||||
|
UINT8 m_pc_spkrdata, m_pc_input;
|
||||||
|
|
||||||
device_t *m_pit8253;
|
device_t *m_pit8253;
|
||||||
device_t *m_pic8259_1;
|
device_t *m_pic8259_1;
|
||||||
@ -203,6 +204,37 @@ static WRITE8_HANDLER( disk_iobank_w )
|
|||||||
Pit8253
|
Pit8253
|
||||||
*********************************/
|
*********************************/
|
||||||
|
|
||||||
|
UINT8 pc_speaker_get_spk(running_machine &machine)
|
||||||
|
{
|
||||||
|
pcxt_state *state = machine.driver_data<pcxt_state>();
|
||||||
|
return state->m_pc_spkrdata & state->m_pc_input;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void pc_speaker_set_spkrdata(running_machine &machine, UINT8 data)
|
||||||
|
{
|
||||||
|
device_t *speaker = machine.device("speaker");
|
||||||
|
pcxt_state *state = machine.driver_data<pcxt_state>();
|
||||||
|
state->m_pc_spkrdata = data ? 1 : 0;
|
||||||
|
speaker_level_w( speaker, pc_speaker_get_spk(machine) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void pc_speaker_set_input(running_machine &machine, UINT8 data)
|
||||||
|
{
|
||||||
|
device_t *speaker = machine.device("speaker");
|
||||||
|
pcxt_state *state = machine.driver_data<pcxt_state>();
|
||||||
|
state->m_pc_input = data ? 1 : 0;
|
||||||
|
speaker_level_w( speaker, pc_speaker_get_spk(machine) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static WRITE_LINE_DEVICE_HANDLER( ibm5150_pit8253_out2_changed )
|
||||||
|
{
|
||||||
|
pc_speaker_set_input( device->machine(), state );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct pit8253_config pc_pit8253_config =
|
static const struct pit8253_config pc_pit8253_config =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@ -217,7 +249,7 @@ static const struct pit8253_config pc_pit8253_config =
|
|||||||
}, {
|
}, {
|
||||||
4772720/4, /* pio port c pin 4, and speaker polling enough */
|
4772720/4, /* pio port c pin 4, and speaker polling enough */
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL
|
DEVCB_LINE(ibm5150_pit8253_out2_changed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -255,7 +287,14 @@ static READ8_DEVICE_HANDLER( port_b_r )
|
|||||||
static READ8_DEVICE_HANDLER( port_c_r )
|
static READ8_DEVICE_HANDLER( port_c_r )
|
||||||
{
|
{
|
||||||
pcxt_state *state = device->machine().driver_data<pcxt_state>();
|
pcxt_state *state = device->machine().driver_data<pcxt_state>();
|
||||||
return state->m_wss2_data;//???
|
int timer2_output = pit8253_get_output( state->m_pit8253, 2 );
|
||||||
|
if ( state->m_port_b_data & 0x01 )
|
||||||
|
{
|
||||||
|
state->m_wss2_data = ( state->m_wss2_data & ~0x10 ) | ( timer2_output ? 0x10 : 0x00 );
|
||||||
|
}
|
||||||
|
state->m_wss2_data = ( state->m_wss2_data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 );
|
||||||
|
|
||||||
|
return state->m_wss2_data;//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
/*'buzzer' sound routes here*/
|
/*'buzzer' sound routes here*/
|
||||||
@ -264,6 +303,10 @@ static READ8_DEVICE_HANDLER( port_c_r )
|
|||||||
static WRITE8_DEVICE_HANDLER( port_b_w )
|
static WRITE8_DEVICE_HANDLER( port_b_w )
|
||||||
{
|
{
|
||||||
pcxt_state *state = device->machine().driver_data<pcxt_state>();
|
pcxt_state *state = device->machine().driver_data<pcxt_state>();
|
||||||
|
|
||||||
|
/* PPI controller port B*/
|
||||||
|
pit8253_gate2_w(state->m_pit8253, BIT(data, 0));
|
||||||
|
pc_speaker_set_spkrdata( device->machine(), data & 0x02 );
|
||||||
state->m_port_b_data = data;
|
state->m_port_b_data = data;
|
||||||
// device_t *beep = device->machine().device("beep");
|
// device_t *beep = device->machine().device("beep");
|
||||||
// device_t *cvsd = device->machine().device("cvsd");
|
// device_t *cvsd = device->machine().device("cvsd");
|
||||||
@ -585,7 +628,7 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
static INPUT_PORTS_START( tetriskr )
|
static INPUT_PORTS_START( tetriskr )
|
||||||
PORT_START("IN0")
|
PORT_START("IN0")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
|
||||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) //probably unused
|
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) //probably unused
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
@ -663,6 +706,7 @@ GFXDECODE_END
|
|||||||
static MACHINE_RESET( filetto )
|
static MACHINE_RESET( filetto )
|
||||||
{
|
{
|
||||||
pcxt_state *state = machine.driver_data<pcxt_state>();
|
pcxt_state *state = machine.driver_data<pcxt_state>();
|
||||||
|
device_t *speaker = machine.device("speaker");
|
||||||
state->m_bank = -1;
|
state->m_bank = -1;
|
||||||
state->m_lastvalue = -1;
|
state->m_lastvalue = -1;
|
||||||
device_set_irq_callback(machine.device("maincpu"), irq_callback);
|
device_set_irq_callback(machine.device("maincpu"), irq_callback);
|
||||||
@ -671,6 +715,11 @@ static MACHINE_RESET( filetto )
|
|||||||
state->m_pic8259_2 = machine.device( "pic8259_2" );
|
state->m_pic8259_2 = machine.device( "pic8259_2" );
|
||||||
state->m_dma8237_1 = machine.device( "dma8237_1" );
|
state->m_dma8237_1 = machine.device( "dma8237_1" );
|
||||||
state->m_dma8237_2 = machine.device( "dma8237_2" );
|
state->m_dma8237_2 = machine.device( "dma8237_2" );
|
||||||
|
|
||||||
|
state->m_pc_spkrdata = 0;
|
||||||
|
state->m_pc_input = 0;
|
||||||
|
|
||||||
|
speaker_level_w( speaker, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( filetto, pcxt_state )
|
static MACHINE_CONFIG_START( filetto, pcxt_state )
|
||||||
@ -703,8 +752,8 @@ static MACHINE_CONFIG_START( filetto, pcxt_state )
|
|||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
||||||
|
|
||||||
// PC "buzzer" sound
|
// PC "buzzer" sound
|
||||||
MCFG_SOUND_ADD("beep", BEEP, 0)
|
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( tetriskr, filetto )
|
static MACHINE_CONFIG_DERIVED( tetriskr, filetto )
|
||||||
@ -772,5 +821,5 @@ static DRIVER_INIT( tetriskr )
|
|||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
|
||||||
GAME( 1990, filetto, 0, filetto, filetto, filetto, ROT0, "Novarmatic", "Filetto (v1.05 901009)",GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
|
GAME( 1990, filetto, 0, filetto, filetto, filetto, ROT0, "Novarmatic", "Filetto (v1.05 901009)",GAME_IMPERFECT_SOUND )
|
||||||
GAME( 1988?,tetriskr, 0, tetriskr, tetriskr, tetriskr, ROT0, "bootleg", "Tetris (bootleg of Mirrorsoft PC-XT Tetris version)", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
|
GAME( 1988?,tetriskr, 0, tetriskr, tetriskr, tetriskr, ROT0, "bootleg", "Tetris (bootleg of Mirrorsoft PC-XT Tetris version)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
|
||||||
|
Loading…
Reference in New Issue
Block a user