add driver for snk6502/rockola games

This commit is contained in:
dinkc64 2018-01-10 13:53:01 +00:00
parent 54f46923d5
commit e554cdd579
4 changed files with 2536 additions and 37 deletions

View File

@ -54,7 +54,7 @@ drvsrc = d_dodonpachi.o d_donpachi.o d_esprade.o d_feversos.o d_gaia.o d_guwang
d_mappy.o d_marineb.o d_mario.o d_markham.o d_megasys1.o d_meijinsn.o d_metlfrzr.o d_millipede.o d_mirax.o d_mitchell.o d_mole.o d_momoko.o d_mouser.o \
d_mrdo.o d_mrflea.o d_mrjong.o d_munchmo.o d_mustache.o d_mystston.o d_namcos1.o d_namcos86.o d_ninjakd2.o d_naughtyb.o d_pacland.o d_pacman.o d_pac2650.o \
d_pengadvb.o d_phoenix.o d_pitnrun.o d_pkunwar.o d_popeye.o d_popper.o d_prehisle.o d_psychic5.o d_pturn.o d_punchout.o d_qbert.o d_quizo.o d_rallyx.o d_renegade.o \
d_route16.o d_rpunch.o d_safarir.o d_sauro.o d_scregg.o d_seicross.o d_sf.o d_sidearms.o d_skyarmy.o d_skyfox.o d_skykid.o d_snk.o \
d_route16.o d_rpunch.o d_safarir.o d_sauro.o d_scregg.o d_seicross.o d_sf.o d_sidearms.o d_skyarmy.o d_skyfox.o d_skykid.o d_snk.o d_snk6502.o \
d_snk68.o d_solomon.o d_sonson.o d_srumbler.o d_ssozumo.o d_sub.o d_suna8.o d_tail2nose.o d_tbowl.o d_tecmo.o d_terracre.o d_thedeep.o d_thepit.o \
d_tigeroad.o d_timelimt.o d_toki.o d_toypop.o d_travrusa.o d_tsamurai.o d_twincobr.o d_usgames.o d_vastar.o d_vulgus.o d_wallc.o d_warpwarp.o d_wc90.o \
d_wc90b.o d_wiping.o d_wiz.o d_wrally.o d_wwfsstar.o d_xain.o d_xxmissio.o d_zodiack.o \

File diff suppressed because it is too large Load Diff

View File

@ -28,10 +28,10 @@
struct TONE
{
int mute;
int offset;
int base;
int mask;
INT32 mute;
INT32 offset;
INT32 base;
INT32 mask;
INT32 sample_rate;
INT32 sample_step;
INT32 sample_cur;
@ -46,12 +46,12 @@ static INT32 last_music_freq;
static double last_clock_time;
static UINT8 *m_ROM;
static int m_Sound0StopOnRollover;
static INT32 m_Sound0StopOnRollover;
static UINT8 m_LastPort1;
static int m_hd38880_cmd;
static INT32 m_hd38880_cmd;
static UINT32 m_hd38880_addr;
static int m_hd38880_data_bytes;
static INT32 m_hd38880_data_bytes;
static double m_hd38880_speed;
static INT32 speechnum_playing;
@ -82,7 +82,7 @@ void snk6502_sound_init(UINT8 *soundrom)
snk6502_set_music_clock(M_LN2 * (RES_K(18) * 2 + RES_K(1)) * CAP_U(1));
}
static void validate_tone_channel(int channel)
static void validate_tone_channel(INT32 channel)
{
if (!m_tone_channels[channel].mute)
{
@ -95,11 +95,11 @@ static void validate_tone_channel(int channel)
}
}
static void sasuke_build_waveform(int mask)
static void sasuke_build_waveform(INT32 mask)
{
int bit0, bit1, bit2, bit3;
int base;
int i;
INT32 bit0, bit1, bit2, bit3;
INT32 base;
INT32 i;
mask &= 7;
@ -118,7 +118,7 @@ static void sasuke_build_waveform(int mask)
for (i = 0; i < 16; i++)
{
int data = 0;
INT32 data = 0;
if (i & 1)
data += bit0;
@ -137,11 +137,11 @@ static void sasuke_build_waveform(int mask)
m_tone_channels[0].form[i] *= 65535 / 16;
}
static void satansat_build_waveform(int mask)
static void satansat_build_waveform(INT32 mask)
{
int bit0, bit1, bit2, bit3;
int base;
int i;
INT32 bit0, bit1, bit2, bit3;
INT32 base;
INT32 i;
mask &= 7;
@ -156,7 +156,7 @@ static void satansat_build_waveform(int mask)
for (i = 0; i < 16; i++)
{
int data = 0;
INT32 data = 0;
if (i & 1)
data += bit0;
@ -175,11 +175,11 @@ static void satansat_build_waveform(int mask)
m_tone_channels[1].form[i] *= 65535 / 16;
}
static void build_waveform(int channel, int mask)
static void build_waveform(INT32 channel, INT32 mask)
{
int bit0, bit1, bit2, bit3;
int base;
int i;
INT32 bit0, bit1, bit2, bit3;
INT32 base;
INT32 i;
mask &= 15;
@ -230,7 +230,7 @@ static void build_waveform(int channel, int mask)
}
else
{
int data = 0;
INT32 data = 0;
if (i & 1)
data += bit0;
@ -250,12 +250,12 @@ static void build_waveform(int channel, int mask)
m_tone_channels[channel].form[i] *= 65535 / 160;
}
void snk6502_set_music_freq(int freq)
void snk6502_set_music_freq(INT32 freq)
{
if (freq == -1) freq = last_music_freq;
last_music_freq = freq;
int i;
INT32 i;
for (i = 0; i < CHANNELS; i++)
{
@ -280,7 +280,7 @@ void snk6502_set_music_clock(double clock_time)
m_tone_clock = 0;
}
int snk6502_music0_playing()
INT32 snk6502_music0_playing()
{
return m_tone_channels[0].mute;
}
@ -550,8 +550,6 @@ void fantasy_sound_w(UINT16 offset, UINT8 data)
}
/* BOMB */
//machine().device<discrete_device>("discrete")->write(space, FANTASY_BOMB_EN, data & 0x80);
if (data & 0x80) bprintf(0, _T("bomb! %x\n"), data);
SN76477_enable_w(0, (data & 0x80) ? 0 : 1);
m_LastPort1 = data;
@ -647,7 +645,7 @@ void fantasy_sound_w(UINT16 offset, UINT8 data)
#define HD38880_CMV 0x20
#define HD68880_SYBS 0x0f
static int samples_playing()
static INT32 samples_playing()
{
for (INT32 i = 0; i < 16; i++) {
if (BurnSampleGetStatus(i) == 1)
@ -665,7 +663,7 @@ static void samples_stopall()
}
#endif
static void speech_w(UINT8 data, const UINT16 *table, int start)
static void speech_w(UINT8 data, const UINT16 *table, INT32 start)
{
/*
bit description
@ -693,7 +691,7 @@ static void speech_w(UINT8 data, const UINT16 *table, int start)
if (m_hd38880_data_bytes == 5 && !samples_playing())
{
int i;
INT32 i;
for (i = 0; i < 16; i++)
{
@ -882,9 +880,9 @@ void snk_sound_update(INT16 *buffer, INT32 samples)
if (!voice->mute && voice->sample_step)
{
int cur_pos = voice->sample_cur + voice->sample_step;
int prev = form[(voice->sample_cur >> FRAC_BITS) & 15];
int cur = form[(cur_pos >> FRAC_BITS) & 15];
INT32 cur_pos = voice->sample_cur + voice->sample_step;
INT32 prev = form[(voice->sample_cur >> FRAC_BITS) & 15];
INT32 cur = form[(cur_pos >> FRAC_BITS) & 15];
/* interpolate */
data += ((INT32)prev * (FRAC_ONE - (cur_pos & FRAC_MASK))

View File

@ -4,9 +4,9 @@
void snk6502_sound_reset();
void snk6502_sound_init(UINT8 *soundrom);
void snk6502_set_music_freq(int freq);
void snk6502_set_music_freq(INT32 freq);
void snk6502_set_music_clock(double clock_time);
int snk6502_music0_playing();
INT32 snk6502_music0_playing();
void sasuke_sound_w(UINT16 offset, UINT8 data);
void satansat_sound_w(UINT16 offset, UINT8 data);
void vanguard_sound_w(UINT16 offset, UINT8 data);