mirror of
https://github.com/holub/mame
synced 2025-05-19 03:59:35 +03:00
Cleanups and version bump.
This commit is contained in:
parent
55480e3ce9
commit
e3f1f454f8
@ -142,10 +142,10 @@ static int8 apu_square(nesapu_state *info, square_t *chan)
|
|||||||
int8 output;
|
int8 output;
|
||||||
|
|
||||||
/* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle
|
/* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle
|
||||||
** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on
|
** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on
|
||||||
** reg2: 8 bits of freq
|
** reg2: 8 bits of freq
|
||||||
** reg3: 0-2=high freq, 7-4=vbl length counter
|
** reg3: 0-2=high freq, 7-4=vbl length counter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (FALSE == chan->enabled)
|
if (FALSE == chan->enabled)
|
||||||
return 0;
|
return 0;
|
||||||
@ -215,9 +215,9 @@ static int8 apu_triangle(nesapu_state *info, triangle_t *chan)
|
|||||||
int freq;
|
int freq;
|
||||||
int8 output;
|
int8 output;
|
||||||
/* reg0: 7=holdnote, 6-0=linear length counter
|
/* reg0: 7=holdnote, 6-0=linear length counter
|
||||||
** reg2: low 8 bits of frequency
|
** reg2: low 8 bits of frequency
|
||||||
** reg3: 7-3=length counter, 2-0=high 3 bits of frequency
|
** reg3: 7-3=length counter, 2-0=high 3 bits of frequency
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (FALSE == chan->enabled)
|
if (FALSE == chan->enabled)
|
||||||
return 0;
|
return 0;
|
||||||
@ -275,9 +275,9 @@ static int8 apu_noise(nesapu_state *info, noise_t *chan)
|
|||||||
uint8 output;
|
uint8 output;
|
||||||
|
|
||||||
/* reg0: 0-3=volume, 4=envelope, 5=hold
|
/* reg0: 0-3=volume, 4=envelope, 5=hold
|
||||||
** reg2: 7=small(93 byte) sample,3-0=freq lookup
|
** reg2: 7=small(93 byte) sample,3-0=freq lookup
|
||||||
** reg3: 7-4=vbl length counter
|
** reg3: 7-4=vbl length counter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (FALSE == chan->enabled)
|
if (FALSE == chan->enabled)
|
||||||
return 0;
|
return 0;
|
||||||
@ -352,10 +352,10 @@ static int8 apu_dpcm(nesapu_state *info, dpcm_t *chan)
|
|||||||
int freq, bit_pos;
|
int freq, bit_pos;
|
||||||
|
|
||||||
/* reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table
|
/* reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table
|
||||||
** reg1: output dc level, 7 bits unsigned
|
** reg1: output dc level, 7 bits unsigned
|
||||||
** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64)
|
** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64)
|
||||||
** reg3: length, (value * 16) + 1
|
** reg3: length, (value * 16) + 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (chan->enabled)
|
if (chan->enabled)
|
||||||
{
|
{
|
||||||
@ -394,10 +394,10 @@ static int8 apu_dpcm(nesapu_state *info, dpcm_t *chan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (chan->cur_byte & (1 << bit_pos))
|
if (chan->cur_byte & (1 << bit_pos))
|
||||||
// chan->regs[1]++;
|
// chan->regs[1]++;
|
||||||
chan->vol+=2; /* FIXED * DPCM channel only uses the upper 6 bits of the DAC */
|
chan->vol+=2; /* FIXED * DPCM channel only uses the upper 6 bits of the DAC */
|
||||||
else
|
else
|
||||||
// chan->regs[1]--;
|
// chan->regs[1]--;
|
||||||
chan->vol-=2;
|
chan->vol-=2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -473,19 +473,19 @@ INLINE void apu_regwrite(nesapu_state *info,int address, uint8 value)
|
|||||||
info->APU.tri.regs[3] = value;
|
info->APU.tri.regs[3] = value;
|
||||||
|
|
||||||
/* this is somewhat of a hack. there is some latency on the Real
|
/* this is somewhat of a hack. there is some latency on the Real
|
||||||
** Thing between when trireg0 is written to and when the linear
|
** Thing between when trireg0 is written to and when the linear
|
||||||
** length counter actually begins its countdown. we want to prevent
|
** length counter actually begins its countdown. we want to prevent
|
||||||
** the case where the program writes to the freq regs first, then
|
** the case where the program writes to the freq regs first, then
|
||||||
** to reg 0, and the counter accidentally starts running because of
|
** to reg 0, and the counter accidentally starts running because of
|
||||||
** the sound queue's timestamp processing.
|
** the sound queue's timestamp processing.
|
||||||
**
|
**
|
||||||
** set to a few NES sample -- should be sufficient
|
** set to a few NES sample -- should be sufficient
|
||||||
**
|
**
|
||||||
** 3 * (1789772.727 / 44100) = ~122 cycles, just around one scanline
|
** 3 * (1789772.727 / 44100) = ~122 cycles, just around one scanline
|
||||||
**
|
**
|
||||||
** should be plenty of time for the 6502 code to do a couple of table
|
** should be plenty of time for the 6502 code to do a couple of table
|
||||||
** dereferences and load up the other triregs
|
** dereferences and load up the other triregs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* used to be 3, but now we run the clock faster, so base it on samples/sync */
|
/* used to be 3, but now we run the clock faster, so base it on samples/sync */
|
||||||
info->APU.tri.write_latency = (info->samps_per_sync + 239) / 240;
|
info->APU.tri.write_latency = (info->samps_per_sync + 239) / 240;
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
driven by one or more output bits
|
driven by one or more output bits
|
||||||
|
|
||||||
Original author: (unsigned)
|
Original author: (unsigned)
|
||||||
Filtering: Anders Hallström
|
Filtering: Anders Hallstr?m
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* Discussion of oversampling and anti-alias filtering: (Anders Hallström)
|
/* Discussion of oversampling and anti-alias filtering: (Anders Hallstr?m)
|
||||||
*
|
*
|
||||||
* This driver is for machines that directly control
|
* This driver is for machines that directly control
|
||||||
* one or more simple digital-to-analog converters (DAC)
|
* one or more simple digital-to-analog converters (DAC)
|
||||||
@ -94,9 +94,9 @@ struct _speaker_state
|
|||||||
int level;
|
int level;
|
||||||
|
|
||||||
/* The volume of a composed sample grows incrementally each time the speaker is over-sampled.
|
/* The volume of a composed sample grows incrementally each time the speaker is over-sampled.
|
||||||
* That is in effect a basic average filter.
|
* That is in effect a basic average filter.
|
||||||
* Another filter can and will be applied to the array of composed samples.
|
* Another filter can and will be applied to the array of composed samples.
|
||||||
*/
|
*/
|
||||||
double composed_volume[FILTER_LENGTH]; /* integrator(s) */
|
double composed_volume[FILTER_LENGTH]; /* integrator(s) */
|
||||||
int composed_sample_index; /* array index for composed_volume */
|
int composed_sample_index; /* array index for composed_volume */
|
||||||
attoseconds_t channel_sample_period; /* in as */
|
attoseconds_t channel_sample_period; /* in as */
|
||||||
@ -159,25 +159,25 @@ static DEVICE_START( speaker )
|
|||||||
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
|
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
|
||||||
sp->interm_sample_index = 0;
|
sp->interm_sample_index = 0;
|
||||||
/* Note: To avoid time drift due to floating point inaccuracies,
|
/* Note: To avoid time drift due to floating point inaccuracies,
|
||||||
* it is good if the speaker time synchronizes itself with the stream timing regularly.
|
* it is good if the speaker time synchronizes itself with the stream timing regularly.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Compute filter kernel; */
|
/* Compute filter kernel; */
|
||||||
/* (Done for each device though the data is shared...
|
/* (Done for each device though the data is shared...
|
||||||
* No problem really, but should be done as part of system init if I knew how)
|
* No problem really, but should be done as part of system init if I knew how)
|
||||||
*/
|
*/
|
||||||
#if 1
|
#if 1
|
||||||
/* This is an approximated sinc (a perfect sinc makes an ideal low-pass filter).
|
/* This is an approximated sinc (a perfect sinc makes an ideal low-pass filter).
|
||||||
* FILTER_STEP determines the cutoff frequency,
|
* FILTER_STEP determines the cutoff frequency,
|
||||||
* which should be below the Nyquist freq, i.e. half the sample rate.
|
* which should be below the Nyquist freq, i.e. half the sample rate.
|
||||||
* Smaller step => kernel extends in time domain => lower cutoff freq
|
* Smaller step => kernel extends in time domain => lower cutoff freq
|
||||||
* In this case, with sinc, filter step PI corresponds to the Nyq. freq.
|
* In this case, with sinc, filter step PI corresponds to the Nyq. freq.
|
||||||
* Since we do not get a perfect filter => must lower the cutoff freq some more.
|
* Since we do not get a perfect filter => must lower the cutoff freq some more.
|
||||||
* For example, step PI/(2*RATE_MULTIPLIER) corresponds to cutoff freq = sample rate / 4;
|
* For example, step PI/(2*RATE_MULTIPLIER) corresponds to cutoff freq = sample rate / 4;
|
||||||
* With -samplerate 48000, cutoff freq is ca 12kHz while the Nyq. freq is 24kHz.
|
* With -samplerate 48000, cutoff freq is ca 12kHz while the Nyq. freq is 24kHz.
|
||||||
* With -samplerate 96000, cutoff freq is ca 24kHz while the Nyq. freq is 48kHz.
|
* With -samplerate 96000, cutoff freq is ca 24kHz while the Nyq. freq is 48kHz.
|
||||||
* For a steeper, more efficient filter, increase FILTER_LENGTH at the expense of CPU usage.
|
* For a steeper, more efficient filter, increase FILTER_LENGTH at the expense of CPU usage.
|
||||||
*/
|
*/
|
||||||
#define FILTER_STEP (M_PI / 2 / RATE_MULTIPLIER)
|
#define FILTER_STEP (M_PI / 2 / RATE_MULTIPLIER)
|
||||||
/* Distribute symmetrically on x axis; center has x=0 if length is odd */
|
/* Distribute symmetrically on x axis; center has x=0 if length is odd */
|
||||||
for (i = 0, x = (0.5 - FILTER_LENGTH / 2.) * FILTER_STEP;
|
for (i = 0, x = (0.5 - FILTER_LENGTH / 2.) * FILTER_STEP;
|
||||||
@ -191,9 +191,9 @@ static DEVICE_START( speaker )
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* Trivial average filter with poor frequency cutoff properties;
|
/* Trivial average filter with poor frequency cutoff properties;
|
||||||
* First zero (frequency where amplification=0) = sample rate / filter length
|
* First zero (frequency where amplification=0) = sample rate / filter length
|
||||||
* Cutoff frequency approx <= first zero / 2
|
* Cutoff frequency approx <= first zero / 2
|
||||||
*/
|
*/
|
||||||
for (i = 0, i < FILTER_LENGTH; i++)
|
for (i = 0, i < FILTER_LENGTH; i++)
|
||||||
ampl[i] = 1;
|
ampl[i] = 1;
|
||||||
#endif
|
#endif
|
||||||
@ -219,9 +219,9 @@ static STREAM_UPDATE( speaker_sound_update )
|
|||||||
sampled_time = attotime_mul(sampled_time, samples);
|
sampled_time = attotime_mul(sampled_time, samples);
|
||||||
|
|
||||||
/* Note: since the stream is in the process of being updated,
|
/* Note: since the stream is in the process of being updated,
|
||||||
* stream_get_time() will return the time before the update! (MAME 0.130)
|
* stream_get_time() will return the time before the update! (MAME 0.130)
|
||||||
* Avoid using it here in order to avoid a subtle dependence on the stream implementation.
|
* Avoid using it here in order to avoid a subtle dependence on the stream implementation.
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (samples-- > 0)
|
if (samples-- > 0)
|
||||||
@ -277,16 +277,16 @@ void speaker_level_w(const device_config *device, int new_level)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* Reaching here means such time has passed since last stream update
|
/* Reaching here means such time has passed since last stream update
|
||||||
* that we can add at least one complete sample to the stream.
|
* that we can add at least one complete sample to the stream.
|
||||||
* The details have to be handled by speaker_sound_update()
|
* The details have to be handled by speaker_sound_update()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Force streams.c to update sound until this point in time now */
|
/* Force streams.c to update sound until this point in time now */
|
||||||
stream_update(sp->channel);
|
stream_update(sp->channel);
|
||||||
|
|
||||||
/* This is redundant because time update has to be done within speaker_sound_update() anyway,
|
/* This is redundant because time update has to be done within speaker_sound_update() anyway,
|
||||||
* however this ensures synchronization between the speaker and stream timing:
|
* however this ensures synchronization between the speaker and stream timing:
|
||||||
*/
|
*/
|
||||||
sp->channel_last_sample_time = stream_get_time(sp->channel);
|
sp->channel_last_sample_time = stream_get_time(sp->channel);
|
||||||
sp->channel_next_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->channel_sample_period);
|
sp->channel_next_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->channel_sample_period);
|
||||||
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
|
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
|
||||||
@ -316,9 +316,9 @@ static void update_interm_samples(speaker_state *sp, attotime time, int volume)
|
|||||||
init_next_interm_sample(sp);
|
init_next_interm_sample(sp);
|
||||||
}
|
}
|
||||||
/* Depending on status above:
|
/* Depending on status above:
|
||||||
* a) Add latest fraction to unfinished composed sample
|
* a) Add latest fraction to unfinished composed sample
|
||||||
* b) The overshooting fraction of time will start a new composed sample
|
* b) The overshooting fraction of time will start a new composed sample
|
||||||
*/
|
*/
|
||||||
fraction = make_fraction(time, sp->last_update_time, sp->interm_sample_period_secfrac);
|
fraction = make_fraction(time, sp->last_update_time, sp->interm_sample_period_secfrac);
|
||||||
sp->composed_volume[sp->composed_sample_index] += volume * fraction;
|
sp->composed_volume[sp->composed_sample_index] += volume * fraction;
|
||||||
sp->last_update_time = time;
|
sp->last_update_time = time;
|
||||||
|
@ -592,7 +592,7 @@ MACHINE_DRIVER_END
|
|||||||
#define GAL_INP_FS2 NODE_21 /* FS2 9L Q1 */
|
#define GAL_INP_FS2 NODE_21 /* FS2 9L Q1 */
|
||||||
#define GAL_INP_FS3 NODE_22 /* FS3 9L Q2 */
|
#define GAL_INP_FS3 NODE_22 /* FS3 9L Q2 */
|
||||||
#define GAL_INP_HIT NODE_23 /* HIT 9L Q3 */
|
#define GAL_INP_HIT NODE_23 /* HIT 9L Q3 */
|
||||||
//#define GAL_9L_Q4 NODE_24
|
//#define GAL_9L_Q4 NODE_24
|
||||||
#define GAL_INP_FIRE NODE_25 /* FIRE 9L Q5 */
|
#define GAL_INP_FIRE NODE_25 /* FIRE 9L Q5 */
|
||||||
#define GAL_INP_VOL1 NODE_26 /* VOL1 9L Q6 */
|
#define GAL_INP_VOL1 NODE_26 /* VOL1 9L Q6 */
|
||||||
#define GAL_INP_VOL2 NODE_27 /* VOL2 9L Q7 */
|
#define GAL_INP_VOL2 NODE_27 /* VOL2 9L Q7 */
|
||||||
@ -900,7 +900,7 @@ static TIMER_CALLBACK( pitch_callback )
|
|||||||
if (pitch_l < 255)
|
if (pitch_l < 255)
|
||||||
{
|
{
|
||||||
/* performance tweak: The counter is always running, but
|
/* performance tweak: The counter is always running, but
|
||||||
* most of the time with a very (unaudible) frequency */
|
* most of the time with a very (unaudible) frequency */
|
||||||
discrete_sound_w(device, GAL_INP_PITCH_HIGH, pitch_h );
|
discrete_sound_w(device, GAL_INP_PITCH_HIGH, pitch_h );
|
||||||
timer_adjust_oneshot(pitch_timer, ATTOTIME_IN_HZ(SOUND_CLOCK / (256 - pitch_l)), 0);
|
timer_adjust_oneshot(pitch_timer, ATTOTIME_IN_HZ(SOUND_CLOCK / (256 - pitch_l)), 0);
|
||||||
}
|
}
|
||||||
|
@ -129,19 +129,19 @@ static READ32_HANDLER( pxa255_i2s_r )
|
|||||||
static WRITE32_HANDLER( pxa255_i2s_w )
|
static WRITE32_HANDLER( pxa255_i2s_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
if(!audio_dump)
|
if(!audio_dump)
|
||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
char filename[256];
|
char filename[256];
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
sprintf(filename, "39in1_%04d.raw", count++);
|
sprintf(filename, "39in1_%04d.raw", count++);
|
||||||
audio_dump = fopen(filename, "rb");
|
audio_dump = fopen(filename, "rb");
|
||||||
}while(audio_dump != NULL);
|
}while(audio_dump != NULL);
|
||||||
count--;
|
count--;
|
||||||
sprintf(filename, "39in1_%04d.raw", count);
|
sprintf(filename, "39in1_%04d.raw", count);
|
||||||
audio_dump = fopen(filename, "wb");
|
audio_dump = fopen(filename, "wb");
|
||||||
}*/
|
}*/
|
||||||
switch(PXA255_I2S_BASE_ADDR | (offset << 2))
|
switch(PXA255_I2S_BASE_ADDR | (offset << 2))
|
||||||
{
|
{
|
||||||
case PXA255_SACR0:
|
case PXA255_SACR0:
|
||||||
@ -183,9 +183,9 @@ static WRITE32_HANDLER( pxa255_i2s_w )
|
|||||||
verboselog( space->machine, 4, "pxa255_i2s_w: Serial Audio Data Register: %08x & %08x\n", data, mem_mask );
|
verboselog( space->machine, 4, "pxa255_i2s_w: Serial Audio Data Register: %08x & %08x\n", data, mem_mask );
|
||||||
i2s_regs.sadr = data;
|
i2s_regs.sadr = data;
|
||||||
/*if(audio_dump)
|
/*if(audio_dump)
|
||||||
{
|
{
|
||||||
fwrite(&data, 4, 1, audio_dump);
|
fwrite(&data, 4, 1, audio_dump);
|
||||||
}*/
|
}*/
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
verboselog( space->machine, 0, "pxa255_i2s_w: Unknown address: %08x = %08x & %08x\n", PXA255_I2S_BASE_ADDR | (offset << 2), data, mem_mask);
|
verboselog( space->machine, 0, "pxa255_i2s_w: Unknown address: %08x = %08x & %08x\n", PXA255_I2S_BASE_ADDR | (offset << 2), data, mem_mask);
|
||||||
@ -1274,7 +1274,7 @@ static UINT32 seed, magic;
|
|||||||
static UINT32 state = 0;
|
static UINT32 state = 0;
|
||||||
static READ32_HANDLER( cpld_r )
|
static READ32_HANDLER( cpld_r )
|
||||||
{
|
{
|
||||||
// if (cpu_get_pc(space->cpu) != 0xe3af4) printf("CPLD read @ %x (PC %x state %d)\n", offset, cpu_get_pc(space->cpu), state);
|
// if (cpu_get_pc(space->cpu) != 0xe3af4) printf("CPLD read @ %x (PC %x state %d)\n", offset, cpu_get_pc(space->cpu), state);
|
||||||
|
|
||||||
if (cpu_get_pc(space->cpu) == 0x3f04)
|
if (cpu_get_pc(space->cpu) == 0x3f04)
|
||||||
{
|
{
|
||||||
|
@ -1218,15 +1218,15 @@ static ADDRESS_MAP_START( mooncrst_map_base, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
|
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
|
||||||
AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
|
AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
|
||||||
AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
|
AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
|
||||||
// AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_lfo_freq_w)
|
// AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_lfo_freq_w)
|
||||||
AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
|
AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
|
||||||
// AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_sound_w)
|
// AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_sound_w)
|
||||||
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
|
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
|
||||||
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
|
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
|
||||||
AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
|
AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
|
||||||
AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
|
AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
|
||||||
AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
|
AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
|
||||||
// AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE(GAL_AUDIO, galaxian_pitch_w)
|
// AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE(GAL_AUDIO, galaxian_pitch_w)
|
||||||
AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
|
AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
@ -185,38 +185,38 @@ ROM usage - CRC (from ROM test
|
|||||||
Game Sega Part No. ROM Type Byte Word
|
Game Sega Part No. ROM Type Byte Word
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
Star Wars Racer Arcade
|
Star Wars Racer Arcade
|
||||||
MPR-23086.IC37 64M SOP44 MASKROM 7993 8E18
|
MPR-23086.IC37 64M SOP44 MASKROM 7993 8E18
|
||||||
MPR-23087.IC38 " 4D44 D239
|
MPR-23087.IC38 " 4D44 D239
|
||||||
MPR-23088.IC39 " 4135 BEAB
|
MPR-23088.IC39 " 4135 BEAB
|
||||||
MPR-23089.IC40 " F0C8 04E2
|
MPR-23089.IC40 " F0C8 04E2
|
||||||
MPR-23090.IC41 " 9532 4C1C
|
MPR-23090.IC41 " 9532 4C1C
|
||||||
MPR-23091.IC42 " 925D 02FB
|
MPR-23091.IC42 " 925D 02FB
|
||||||
MPR-23092.IC43 " 0809 7050
|
MPR-23092.IC43 " 0809 7050
|
||||||
MPR-23093.IC44 " 72BC 9311
|
MPR-23093.IC44 " 72BC 9311
|
||||||
MPR-23094.IC45 " DE84 9D8A
|
MPR-23094.IC45 " DE84 9D8A
|
||||||
MPR-23095.IC46 " 7A5C E7FC
|
MPR-23095.IC46 " 7A5C E7FC
|
||||||
MPR-23096.IC47 " 6806 1392
|
MPR-23096.IC47 " 6806 1392
|
||||||
MPR-23097.IC48 " EDF1 7BD1
|
MPR-23097.IC48 " EDF1 7BD1
|
||||||
MPR-23098.IC49 " B82D E114
|
MPR-23098.IC49 " B82D E114
|
||||||
MPR-23099.IC50 " 5792 E5E5
|
MPR-23099.IC50 " 5792 E5E5
|
||||||
MPR-23100.IC51 " 3AF3 A97C
|
MPR-23100.IC51 " 3AF3 A97C
|
||||||
MPR-23101.IC52 " A8CC 721D
|
MPR-23101.IC52 " A8CC 721D
|
||||||
MPR-23102.IC53 " CED7 D3CF
|
MPR-23102.IC53 " CED7 D3CF
|
||||||
MPR-23103.IC54 " 6B67 FC76
|
MPR-23103.IC54 " 6B67 FC76
|
||||||
MPR-23104.IC55 " 586C 6954
|
MPR-23104.IC55 " 586C 6954
|
||||||
MPR-23105.IC56 " 13A0 DB38
|
MPR-23105.IC56 " 13A0 DB38
|
||||||
MPR-23106.IC57 " 4F03 42BF
|
MPR-23106.IC57 " 4F03 42BF
|
||||||
MPR-23107.IC58 " 8EA6 ADB6
|
MPR-23107.IC58 " 8EA6 ADB6
|
||||||
MPR-23108.IC59 " 8645 FC30
|
MPR-23108.IC59 " 8645 FC30
|
||||||
MPR-23109.IC60 " 3847 CA6B
|
MPR-23109.IC60 " 3847 CA6B
|
||||||
MPR-23110.IC61 " 4140 01C4
|
MPR-23110.IC61 " 4140 01C4
|
||||||
MPR-23111.IC62 " EBE6 8085
|
MPR-23111.IC62 " EBE6 8085
|
||||||
MPR-23112.IC63 " B68B 7467
|
MPR-23112.IC63 " B68B 7467
|
||||||
MPR-23113.IC64 " 4715 4787
|
MPR-23113.IC64 " 4715 4787
|
||||||
MPR-23114.IC65 " 3CD6 144A
|
MPR-23114.IC65 " 3CD6 144A
|
||||||
MPR-23115.IC66 " E5D3 BA35
|
MPR-23115.IC66 " E5D3 BA35
|
||||||
MPR-23116.IC67 " E668 08ED
|
MPR-23116.IC67 " E668 08ED
|
||||||
MPR-23117.IC68 " 1FE8 C4A1
|
MPR-23117.IC68 " 1FE8 C4A1
|
||||||
|
|
||||||
EPR-23174.IC29 27C322 EPROM 3B2E
|
EPR-23174.IC29 27C322 EPROM 3B2E
|
||||||
EPR-23175.IC30 " F377
|
EPR-23175.IC30 " F377
|
||||||
|
@ -890,7 +890,7 @@ static MACHINE_DRIVER_START( prosport )
|
|||||||
MDRV_CPU_PROGRAM_MAP(liberate_sound_map)
|
MDRV_CPU_PROGRAM_MAP(liberate_sound_map)
|
||||||
MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */
|
MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */
|
||||||
|
|
||||||
// MDRV_QUANTUM_TIME(HZ(12000))
|
// MDRV_QUANTUM_TIME(HZ(12000))
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MDRV_SCREEN_ADD("screen", RASTER)
|
MDRV_SCREEN_ADD("screen", RASTER)
|
||||||
|
@ -736,10 +736,10 @@ ROM_START( looping )
|
|||||||
|
|
||||||
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
||||||
/*
|
/*
|
||||||
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
*/
|
*/
|
||||||
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
||||||
ROM_CONTINUE( 0x0000, 0x00c2)
|
ROM_CONTINUE( 0x0000, 0x00c2)
|
||||||
@ -773,10 +773,10 @@ ROM_START( loopinga )
|
|||||||
|
|
||||||
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
||||||
/*
|
/*
|
||||||
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
*/
|
*/
|
||||||
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
||||||
ROM_CONTINUE( 0x0000, 0x00c2)
|
ROM_CONTINUE( 0x0000, 0x00c2)
|
||||||
@ -809,10 +809,10 @@ ROM_START( skybump )
|
|||||||
|
|
||||||
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
|
||||||
/*
|
/*
|
||||||
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
ROM_CONTINUE( 0x0000, 0x0400)
|
ROM_CONTINUE( 0x0000, 0x0400)
|
||||||
*/
|
*/
|
||||||
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
|
||||||
ROM_CONTINUE( 0x0000, 0x00c2)
|
ROM_CONTINUE( 0x0000, 0x00c2)
|
||||||
|
@ -629,107 +629,107 @@ Notes:
|
|||||||
|
|
||||||
ROM_START( spacefev )
|
ROM_START( spacefev )
|
||||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1ロ"
|
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1??"
|
||||||
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2ロ"
|
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2??"
|
||||||
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1ロ"
|
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1??"
|
||||||
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2ロ"
|
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2??"
|
||||||
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1ロ"
|
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1??"
|
||||||
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2ロ"
|
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2??"
|
||||||
ROM_LOAD( "i1-ro-p.bin", 0x1800, 0x0400, CRC(756b5582) SHA1(b7f3d218b7f4267ce6128624306396bcacb9b44e) ) // "I1ロP"
|
ROM_LOAD( "i1-ro-p.bin", 0x1800, 0x0400, CRC(756b5582) SHA1(b7f3d218b7f4267ce6128624306396bcacb9b44e) ) // "I1??P"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( spacefevo )
|
ROM_START( spacefevo )
|
||||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1ロ"
|
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1??"
|
||||||
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2ロ"
|
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2??"
|
||||||
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1ロ"
|
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1??"
|
||||||
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2ロ"
|
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2??"
|
||||||
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1ロ"
|
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1??"
|
||||||
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2ロ"
|
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2??"
|
||||||
ROM_LOAD( "i1-ro-.bin", 0x1800, 0x0400, CRC(00027be2) SHA1(551a779a2e5a6455b7a348d246731c094e0ec709) ) // "I1ロ"
|
ROM_LOAD( "i1-ro-.bin", 0x1800, 0x0400, CRC(00027be2) SHA1(551a779a2e5a6455b7a348d246731c094e0ec709) ) // "I1??"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( spacefevo2 )
|
ROM_START( spacefevo2 )
|
||||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-i-.bin", 0x0000, 0x0400, CRC(7fa305e8) SHA1(cda9fc9c76f57800de25ddf65f69fef19fd28481) ) // "F1イ"
|
ROM_LOAD( "f1-i-.bin", 0x0000, 0x0400, CRC(7fa305e8) SHA1(cda9fc9c76f57800de25ddf65f69fef19fd28481) ) // "F1?C"
|
||||||
ROM_LOAD( "f2-i-.bin", 0x0400, 0x0400, CRC(7c1429aa) SHA1(8d8e0a4fc09fb1ecbfb86c67c20000ef30ab3fac) ) // "F2イ"
|
ROM_LOAD( "f2-i-.bin", 0x0400, 0x0400, CRC(7c1429aa) SHA1(8d8e0a4fc09fb1ecbfb86c67c20000ef30ab3fac) ) // "F2?C"
|
||||||
ROM_LOAD( "g1-i-.bin", 0x0800, 0x0400, CRC(75f6efc1) SHA1(286bc75e35e8ad6277e9db7377e90731b9c2ec97) ) // "G1イ"
|
ROM_LOAD( "g1-i-.bin", 0x0800, 0x0400, CRC(75f6efc1) SHA1(286bc75e35e8ad6277e9db7377e90731b9c2ec97) ) // "G1?C"
|
||||||
ROM_LOAD( "g2-i-.bin", 0x0c00, 0x0400, CRC(fb6bcf4a) SHA1(3edea04d67c2f3b1a6a73adadea83ddda0be3842) ) // "G2イ"
|
ROM_LOAD( "g2-i-.bin", 0x0c00, 0x0400, CRC(fb6bcf4a) SHA1(3edea04d67c2f3b1a6a73adadea83ddda0be3842) ) // "G2?C"
|
||||||
ROM_LOAD( "h1-i-.bin", 0x1000, 0x0400, CRC(3beef037) SHA1(4bcc157e7d721b3a9e16e7a2efa807303d4be8ac) ) // "H1イ"
|
ROM_LOAD( "h1-i-.bin", 0x1000, 0x0400, CRC(3beef037) SHA1(4bcc157e7d721b3a9e16e7a2efa807303d4be8ac) ) // "H1?C"
|
||||||
ROM_LOAD( "h2-i-.bin", 0x1400, 0x0400, CRC(bddbc94f) SHA1(f90cbc3cd0f695cbb9ae03b608f4bf5a4a000c64) ) // "H2イ"
|
ROM_LOAD( "h2-i-.bin", 0x1400, 0x0400, CRC(bddbc94f) SHA1(f90cbc3cd0f695cbb9ae03b608f4bf5a4a000c64) ) // "H2?C"
|
||||||
ROM_LOAD( "i1-i-.bin", 0x1800, 0x0400, CRC(437786c5) SHA1(2ccdb0d48dbbfe47ae82e970ca37970602405cf6) ) // "I1イ"
|
ROM_LOAD( "i1-i-.bin", 0x1800, 0x0400, CRC(437786c5) SHA1(2ccdb0d48dbbfe47ae82e970ca37970602405cf6) ) // "I1?C"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( highsplt )
|
ROM_START( highsplt )
|
||||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1ハ"
|
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
|
||||||
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2ハ"
|
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
|
||||||
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1ハ"
|
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
|
||||||
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2ハ"
|
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
|
||||||
ROM_LOAD( "hs.h1", 0x1000, 0x0400, CRC(eefb4273) SHA1(853a62976a406516f10ac68dc2859399b8b7aae8) )
|
ROM_LOAD( "hs.h1", 0x1000, 0x0400, CRC(eefb4273) SHA1(853a62976a406516f10ac68dc2859399b8b7aae8) )
|
||||||
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2ハ"
|
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
|
||||||
ROM_LOAD( "hs.i1", 0x1800, 0x0400, CRC(41e18df9) SHA1(2212c836313775e7c507a875672c0b3635825e02) )
|
ROM_LOAD( "hs.i1", 0x1800, 0x0400, CRC(41e18df9) SHA1(2212c836313775e7c507a875672c0b3635825e02) )
|
||||||
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2ハ"
|
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
|
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( highsplta )
|
ROM_START( highsplta )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1ハ"
|
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
|
||||||
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2ハ"
|
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
|
||||||
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1ハ"
|
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
|
||||||
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2ハ"
|
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
|
||||||
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1ハ"
|
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1?n"
|
||||||
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2ハ"
|
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
|
||||||
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1ハ"
|
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1?n"
|
||||||
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2ハ"
|
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
|
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( highspltb )
|
ROM_START( highspltb )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1ハ"
|
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
|
||||||
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2ハ"
|
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
|
||||||
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1ハ"
|
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
|
||||||
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2ハ"
|
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
|
||||||
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1ハ"
|
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1?n"
|
||||||
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2ハ"
|
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
|
||||||
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1ハ"
|
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1?n"
|
||||||
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2ハ"
|
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
|
||||||
|
|
||||||
ROM_REGION( 0x0400, "audiocpu", 0 )
|
ROM_REGION( 0x0400, "audiocpu", 0 )
|
||||||
ROM_LOAD( "ss4.ic2", 0x0000, 0x0400, CRC(ce95dc5f) SHA1(20f7b8c565c408439dcfae240b7d1aa42c29651b) )
|
ROM_LOAD( "ss4.ic2", 0x0000, 0x0400, CRC(ce95dc5f) SHA1(20f7b8c565c408439dcfae240b7d1aa42c29651b) )
|
||||||
|
|
||||||
ROM_REGION( 0x0020, "proms", 0 )
|
ROM_REGION( 0x0020, "proms", 0 )
|
||||||
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5イ"
|
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( spacelnc )
|
ROM_START( spacelnc )
|
||||||
|
@ -244,9 +244,9 @@ ROM_END
|
|||||||
Dump was made using custom adaptor, hence it is marked as bad dump.
|
Dump was made using custom adaptor, hence it is marked as bad dump.
|
||||||
The real machine has following roms:
|
The real machine has following roms:
|
||||||
|
|
||||||
0000...07FFh - ROM1 (D41)
|
0000...07FFh - ROM1 (D41)
|
||||||
0800...0FFFh - ROM2 (D42)
|
0800...0FFFh - ROM2 (D42)
|
||||||
1000...17FFh - ROM3 (D43)
|
1000...17FFh - ROM3 (D43)
|
||||||
*/
|
*/
|
||||||
ROM_START( phpython )
|
ROM_START( phpython )
|
||||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||||
|
@ -10,32 +10,32 @@ OSC. : 3.579545MHz 18432.00KHz
|
|||||||
Main processors are a pair of 68000 CPUs
|
Main processors are a pair of 68000 CPUs
|
||||||
Sounds are generated by a Z80, a Yamaha 2151 and 3012, a Konami custom IC and a uPD7759C
|
Sounds are generated by a Z80, a Yamaha 2151 and 3012, a Konami custom IC and a uPD7759C
|
||||||
|
|
||||||
Dark Adventure / Devil World / Majuu no Ohkoku
|
Dark Adventure / Devil World / Majuu no Ohkoku
|
||||||
Vulcan Venture / Gradius II
|
Vulcan Venture / Gradius II
|
||||||
Cuebrick
|
Cuebrick
|
||||||
MIA (Japan)
|
MIA (Japan)
|
||||||
Final Round / Hard Puncher (Japan)
|
Final Round / Hard Puncher (Japan)
|
||||||
|
|
||||||
68000 Memory Map for Konami Twin System
|
68000 Memory Map for Konami Twin System
|
||||||
|
|
||||||
CPUA CPUB
|
CPUA CPUB
|
||||||
0x000000..0x03ffff ROM 0x000000..0x03ffff
|
0x000000..0x03ffff ROM 0x000000..0x03ffff
|
||||||
0x040000..0x043fff communication RAM 0x040000..0x043fff (shared)
|
0x040000..0x043fff communication RAM 0x040000..0x043fff (shared)
|
||||||
0x060000..0x063fff work RAM 0x060000..0x063fff
|
0x060000..0x063fff work RAM 0x060000..0x063fff
|
||||||
0x080000..0x080fff palette
|
0x080000..0x080fff palette
|
||||||
0x080000..0x09ffff ROM (extra tile data)
|
0x080000..0x09ffff ROM (extra tile data)
|
||||||
0x0a0000..0x0a0001 IRQ control 0x0a0000..0x0a0001
|
0x0a0000..0x0a0001 IRQ control 0x0a0000..0x0a0001
|
||||||
0x0a0008..0x0a0009 sound command
|
0x0a0008..0x0a0009 sound command
|
||||||
0x0a0010..0xa00011 watchdog
|
0x0a0010..0xa00011 watchdog
|
||||||
0x0c0000..0x0c0001 screenflip
|
0x0c0000..0x0c0001 screenflip
|
||||||
0x0c0002..0x0c000f scroll registers
|
0x0c0002..0x0c000f scroll registers
|
||||||
|
|
||||||
0x100000..0x103fff FIXRAM (text layer)
|
0x100000..0x103fff FIXRAM (text layer)
|
||||||
0x120000..0x123fff VIDRAM (tilemaps) 0x480000..0x483fff (shared)
|
0x120000..0x123fff VIDRAM (tilemaps) 0x480000..0x483fff (shared)
|
||||||
0x140000..0x143fff OBJRAM (sprites) 0x400000..0x403fff (shared)
|
0x140000..0x143fff OBJRAM (sprites) 0x400000..0x403fff (shared)
|
||||||
ZIP RAM (tiles) 0x500000..0x53ffff
|
ZIP RAM (tiles) 0x500000..0x53ffff
|
||||||
gfx ROM (banked) 0x600000..0x77ffff
|
gfx ROM (banked) 0x600000..0x77ffff
|
||||||
sprite gfx RAM 0x780000..0x79ffff
|
sprite gfx RAM 0x780000..0x79ffff
|
||||||
|
|
||||||
Known Issues:
|
Known Issues:
|
||||||
- repeated uPD7759C samples in fround, disconnecting reset helps but doesn't fix it
|
- repeated uPD7759C samples in fround, disconnecting reset helps but doesn't fix it
|
||||||
@ -115,13 +115,13 @@ static WRITE16_HANDLER( sound_command_w )
|
|||||||
static WRITE16_HANDLER( twin16_CPUA_register_w )
|
static WRITE16_HANDLER( twin16_CPUA_register_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
7 6 5 4 3 2 1 0
|
7 6 5 4 3 2 1 0
|
||||||
X sprite processing disable
|
X sprite processing disable
|
||||||
X IRQ5 enable (CPUA)
|
X IRQ5 enable (CPUA)
|
||||||
X 0->1 trigger IRQ6 on CPUB
|
X 0->1 trigger IRQ6 on CPUB
|
||||||
X 0->1 trigger IRQ on sound CPU
|
X 0->1 trigger IRQ on sound CPU
|
||||||
x x x coin counters
|
x x x coin counters
|
||||||
*/
|
*/
|
||||||
UINT16 old = twin16_CPUA_register;
|
UINT16 old = twin16_CPUA_register;
|
||||||
COMBINE_DATA(&twin16_CPUA_register);
|
COMBINE_DATA(&twin16_CPUA_register);
|
||||||
if (twin16_CPUA_register != old)
|
if (twin16_CPUA_register != old)
|
||||||
@ -144,11 +144,11 @@ static WRITE16_HANDLER( twin16_CPUA_register_w )
|
|||||||
static WRITE16_HANDLER( twin16_CPUB_register_w )
|
static WRITE16_HANDLER( twin16_CPUB_register_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
7 6 5 4 3 2 1 0
|
7 6 5 4 3 2 1 0
|
||||||
X gfx bank select
|
X gfx bank select
|
||||||
X IRQ5 enable
|
X IRQ5 enable
|
||||||
X 0->1 trigger IRQ6 on CPUA
|
X 0->1 trigger IRQ6 on CPUA
|
||||||
*/
|
*/
|
||||||
UINT16 old = twin16_CPUB_register;
|
UINT16 old = twin16_CPUB_register;
|
||||||
COMBINE_DATA(&twin16_CPUB_register);
|
COMBINE_DATA(&twin16_CPUB_register);
|
||||||
if( twin16_CPUB_register!=old )
|
if( twin16_CPUB_register!=old )
|
||||||
@ -161,10 +161,10 @@ static WRITE16_HANDLER( twin16_CPUB_register_w )
|
|||||||
static WRITE16_HANDLER( fround_CPU_register_w )
|
static WRITE16_HANDLER( fround_CPU_register_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
7 6 5 4 3 2 1 0
|
7 6 5 4 3 2 1 0
|
||||||
X 0->1 trigger IRQ on sound CPU
|
X 0->1 trigger IRQ on sound CPU
|
||||||
x x coin counters
|
x x coin counters
|
||||||
*/
|
*/
|
||||||
UINT16 old = twin16_CPUA_register;
|
UINT16 old = twin16_CPUA_register;
|
||||||
COMBINE_DATA(&twin16_CPUA_register);
|
COMBINE_DATA(&twin16_CPUA_register);
|
||||||
if (twin16_CPUA_register != old)
|
if (twin16_CPUA_register != old)
|
||||||
@ -240,7 +240,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
|
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
|
||||||
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
|
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
|
||||||
AM_RANGE(0x060000, 0x063fff) AM_RAM
|
AM_RANGE(0x060000, 0x063fff) AM_RAM
|
||||||
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
|
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
|
||||||
AM_RANGE(0x081000, 0x081fff) AM_WRITENOP
|
AM_RANGE(0x081000, 0x081fff) AM_WRITENOP
|
||||||
@ -253,7 +253,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
|
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
|
||||||
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
|
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
|
||||||
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram)
|
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram)
|
||||||
// AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj
|
// AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj
|
||||||
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16)
|
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16)
|
||||||
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
|
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -261,7 +261,7 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
|
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
|
||||||
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
|
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
|
||||||
AM_RANGE(0x060000, 0x063fff) AM_RAM
|
AM_RANGE(0x060000, 0x063fff) AM_RAM
|
||||||
AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r)
|
AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r)
|
||||||
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w)
|
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w)
|
||||||
|
@ -1851,11 +1851,11 @@ MACHINE_DRIVER_END
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
/* correct label format. revision number is stamped(red), other letters are printed(black)
|
/* correct label format. revision number is stamped(red), other letters are printed(black)
|
||||||
game code in line 1, ROM position in line 2
|
game code in line 1, ROM position in line 2
|
||||||
i.e.
|
i.e.
|
||||||
MDS-DH3
|
MDS-DH3
|
||||||
1B or 6B e
|
1B or 6B e
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -493,7 +493,7 @@ struct SNES_PPU_STRUCT /* once all the regs are saved in this structure, it woul
|
|||||||
UINT8 bg3_priority_bit;
|
UINT8 bg3_priority_bit;
|
||||||
UINT8 direct_color;
|
UINT8 direct_color;
|
||||||
UINT8 ppu_last_scroll; /* as per Anomie's doc and Theme Park, all scroll regs shares (but mode 7 ones) the same
|
UINT8 ppu_last_scroll; /* as per Anomie's doc and Theme Park, all scroll regs shares (but mode 7 ones) the same
|
||||||
'previous' scroll value */
|
'previous' scroll value */
|
||||||
UINT8 mode7_last_scroll; /* as per Anomie's doc mode 7 scroll regs use a different value, shared with mode 7 matrix! */
|
UINT8 mode7_last_scroll; /* as per Anomie's doc mode 7 scroll regs use a different value, shared with mode 7 matrix! */
|
||||||
|
|
||||||
UINT8 main_bg_enabled[5]; // these would probably better fit the layer struct, but it would make worse the code in snes_update_mode_X()
|
UINT8 main_bg_enabled[5]; // these would probably better fit the layer struct, but it would make worse the code in snes_update_mode_X()
|
||||||
|
@ -950,7 +950,7 @@ WRITE64_HANDLER( dc_g1_ctrl_w )
|
|||||||
mame_printf_verbose("G1CTRL: unsupported transfer\n");
|
mame_printf_verbose("G1CTRL: unsupported transfer\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// printf("ROM board DMA to %x (PC %x)\n", g1bus_regs[SB_GDSTAR], cpu_get_pc(space->cpu));
|
// printf("ROM board DMA to %x (PC %x)\n", g1bus_regs[SB_GDSTAR], cpu_get_pc(space->cpu));
|
||||||
ROM = (UINT8 *)devtag_get_info_ptr(space->machine, "rom_board", DEVINFO_PTR_MEMORY);
|
ROM = (UINT8 *)devtag_get_info_ptr(space->machine, "rom_board", DEVINFO_PTR_MEMORY);
|
||||||
dmaoffset = (UINT32)devtag_get_info_int(space->machine, "rom_board", DEVINFO_INT_DMAOFFSET);
|
dmaoffset = (UINT32)devtag_get_info_int(space->machine, "rom_board", DEVINFO_INT_DMAOFFSET);
|
||||||
ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address
|
ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address
|
||||||
|
@ -72,7 +72,7 @@ static void snes_latch_counters(running_machine *machine)
|
|||||||
snes_ppu.beam.latch_vert = video_screen_get_vpos(machine->primary_screen);
|
snes_ppu.beam.latch_vert = video_screen_get_vpos(machine->primary_screen);
|
||||||
snes_ppu.beam.latch_horz = snes_ppu.beam.current_horz;
|
snes_ppu.beam.latch_horz = snes_ppu.beam.current_horz;
|
||||||
snes_ram[STAT78] |= 0x40; // indicate we latched
|
snes_ram[STAT78] |= 0x40; // indicate we latched
|
||||||
// read_ophct = read_opvct = 0; // clear read flags - 2009-08: I think we must clear these when STAT78 is read...
|
// read_ophct = read_opvct = 0; // clear read flags - 2009-08: I think we must clear these when STAT78 is read...
|
||||||
|
|
||||||
// printf("latched @ H %d V %d\n", snes_ppu.beam.latch_horz, snes_ppu.beam.latch_vert);
|
// printf("latched @ H %d V %d\n", snes_ppu.beam.latch_horz, snes_ppu.beam.latch_vert);
|
||||||
}
|
}
|
||||||
@ -359,12 +359,12 @@ READ8_HANDLER( snes_r_io )
|
|||||||
return snes_ppu.ppu1_open_bus;
|
return snes_ppu.ppu1_open_bus;
|
||||||
|
|
||||||
// According to BSNES, these should return snes_open_bus_r!
|
// According to BSNES, these should return snes_open_bus_r!
|
||||||
// case OAMADDL:
|
// case OAMADDL:
|
||||||
// case OAMADDH:
|
// case OAMADDH:
|
||||||
// case VMADDH:
|
// case VMADDH:
|
||||||
// case CGADD:
|
// case CGADD:
|
||||||
// case CGDATA:
|
// case CGDATA:
|
||||||
// return snes_ram[offset];
|
// return snes_ram[offset];
|
||||||
case MPYL: /* Multiplication result (low) */
|
case MPYL: /* Multiplication result (low) */
|
||||||
{
|
{
|
||||||
/* Perform 16bit * 8bit multiply */
|
/* Perform 16bit * 8bit multiply */
|
||||||
@ -560,7 +560,7 @@ READ8_HANDLER( snes_r_io )
|
|||||||
value = ((joypad[1].low | (joypad[1].high << 8) | 0x10000) >> (15 - (joypad[1].oldrol++ % 16))) & 0x1;
|
value = ((joypad[1].low | (joypad[1].high << 8) | 0x10000) >> (15 - (joypad[1].oldrol++ % 16))) & 0x1;
|
||||||
if( !(joypad[1].oldrol % 17) )
|
if( !(joypad[1].oldrol % 17) )
|
||||||
value = 0x1;
|
value = 0x1;
|
||||||
//value |= 0x1c; // bits 4, 3, and 2 are always set
|
//value |= 0x1c; // bits 4, 3, and 2 are always set
|
||||||
return value | 0x1c | (snes_open_bus_r(space,0) & 0xe0); //correct?
|
return value | 0x1c | (snes_open_bus_r(space,0) & 0xe0); //correct?
|
||||||
}
|
}
|
||||||
case HTIMEL:
|
case HTIMEL:
|
||||||
@ -649,7 +649,7 @@ READ8_HANDLER( snes_r_io )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Unsupported reads returns open bus */
|
/* Unsupported reads returns open bus */
|
||||||
// printf("%02x %02x\n",offset,snes_open_bus_r(space,0));
|
// printf("%02x %02x\n",offset,snes_open_bus_r(space,0));
|
||||||
return snes_open_bus_r(space,0);
|
return snes_open_bus_r(space,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9475,8 +9475,8 @@ Other Sun games
|
|||||||
DRIVER( moneymacv1 )/* (c) 200? Amcoe */
|
DRIVER( moneymacv1 )/* (c) 200? Amcoe */
|
||||||
DRIVER( moneymacd2 )/* (c) 200? Amcoe */
|
DRIVER( moneymacd2 )/* (c) 200? Amcoe */
|
||||||
DRIVER( moneymacv2 )/* (c) 200? Amcoe */
|
DRIVER( moneymacv2 )/* (c) 200? Amcoe */
|
||||||
//DRIVER( atworld ) /* (c) 2007 Amcoe - Around The World (year listed on Amcoe web site) */
|
//DRIVER( atworld ) /* (c) 2007 Amcoe - Around The World (year listed on Amcoe web site) */
|
||||||
//DRIVER( atworldd1 ) /* (c) 2007 Amcoe (year listed on Amcoe web site) */
|
//DRIVER( atworldd1 ) /* (c) 2007 Amcoe (year listed on Amcoe web site) */
|
||||||
|
|
||||||
|
|
||||||
DRIVER( chsuper3 ) /* unknown */
|
DRIVER( chsuper3 ) /* unknown */
|
||||||
|
@ -83,10 +83,10 @@ static TILE_GET_INFO( prosport_get_back_tile_info )
|
|||||||
int tile;
|
int tile;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
robiza notes:
|
robiza notes:
|
||||||
- flip y (handled with a +0x10 tile banking) depends only by position of the tile in the screen
|
- flip y (handled with a +0x10 tile banking) depends only by position of the tile in the screen
|
||||||
- bits 0-3 are not used by gfx hardware; the value is the color of the pixel in the map (golf)
|
- bits 0-3 are not used by gfx hardware; the value is the color of the pixel in the map (golf)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
tile = (prosport_bg_vram[tile_index] & 0xf0)>>4;
|
tile = (prosport_bg_vram[tile_index] & 0xf0)>>4;
|
||||||
|
|
||||||
|
@ -404,8 +404,8 @@ INLINE void snes_update_line( UINT8 screen, UINT8 color_depth, UINT8 hires, UINT
|
|||||||
/* scrolling */
|
/* scrolling */
|
||||||
UINT32 basevmap;
|
UINT32 basevmap;
|
||||||
UINT16 vscroll, hscroll, vtilescroll;
|
UINT16 vscroll, hscroll, vtilescroll;
|
||||||
// UINT16 offset_per_tile_valid;
|
// UINT16 offset_per_tile_valid;
|
||||||
// UINT8 offset_per_tile_mode;
|
// UINT8 offset_per_tile_mode;
|
||||||
UINT8 vshift, hshift, tile_size;
|
UINT8 vshift, hshift, tile_size;
|
||||||
/* variables depending on color_depth */
|
/* variables depending on color_depth */
|
||||||
UINT8 color_shift = 0;
|
UINT8 color_shift = 0;
|
||||||
@ -491,7 +491,7 @@ INLINE void snes_update_line( UINT8 screen, UINT8 color_depth, UINT8 hires, UINT
|
|||||||
wrap_around_x = 0; /* Make sure we don't do this again */
|
wrap_around_x = 0; /* Make sure we don't do this again */
|
||||||
}
|
}
|
||||||
//if (tmap > 0x10000) //<- causes corrupt tiles in places, needed?
|
//if (tmap > 0x10000) //<- causes corrupt tiles in places, needed?
|
||||||
// tmap %= 0x10000;
|
// tmap %= 0x10000;
|
||||||
|
|
||||||
vflip = snes_vram[tmap + ii + 1] & 0x80;
|
vflip = snes_vram[tmap + ii + 1] & 0x80;
|
||||||
hflip = snes_vram[tmap + ii + 1] & 0x40;
|
hflip = snes_vram[tmap + ii + 1] & 0x40;
|
||||||
|
@ -130,9 +130,9 @@ WRITE16_HANDLER( twin16_video_register_w )
|
|||||||
* 2 | -------xxxxxxxxx | xpos
|
* 2 | -------xxxxxxxxx | xpos
|
||||||
* -----+------------------+
|
* -----+------------------+
|
||||||
* 3 | x--------------- | enable
|
* 3 | x--------------- | enable
|
||||||
* 3 | -x-------------- | priority ?
|
* 3 | -x-------------- | priority ?
|
||||||
* 3 | -----x---------- | no shadow ?
|
* 3 | -----x---------- | no shadow ?
|
||||||
* 3 | ------x--------- | yflip ?
|
* 3 | ------x--------- | yflip ?
|
||||||
* 3 | -------x-------- | xflip
|
* 3 | -------x-------- | xflip
|
||||||
* 3 | --------xx------ | height
|
* 3 | --------xx------ | height
|
||||||
* 3 | ----------xx---- | width
|
* 3 | ----------xx---- | width
|
||||||
@ -183,29 +183,29 @@ void twin16_spriteram_process( running_machine *machine )
|
|||||||
UINT32 ypos = (0x10000*source[6])|source[7];
|
UINT32 ypos = (0x10000*source[6])|source[7];
|
||||||
|
|
||||||
/* notes on uncertain attributes:
|
/* notes on uncertain attributes:
|
||||||
shadows: pen $F only (like other Konami hw), used in devilw, fround,
|
shadows: pen $F only (like other Konami hw), used in devilw, fround,
|
||||||
miaj? (shadows are solid in tmnt hw version),
|
miaj? (shadows are solid in tmnt hw version),
|
||||||
gradius2? (ship exhaust)
|
gradius2? (ship exhaust)
|
||||||
|
|
||||||
sprite-background priority: in devilw, most sprites look best at high priority,
|
sprite-background priority: in devilw, most sprites look best at high priority,
|
||||||
in gradius2, most sprites look best at low priority. exceptions:
|
in gradius2, most sprites look best at low priority. exceptions:
|
||||||
- devilw prologue: sprites behind crowd (maybe more, haven't completed the game)
|
- devilw prologue: sprites behind crowd (maybe more, haven't completed the game)
|
||||||
- gradius2 intro showing earlier games: sprites above layers
|
- gradius2 intro showing earlier games: sprites above layers
|
||||||
|
|
||||||
currently using (priority&0x200), broken:
|
currently using (priority&0x200), broken:
|
||||||
- devilw prologue: sprites should be behind crowd
|
- devilw prologue: sprites should be behind crowd
|
||||||
- gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss)
|
- gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss)
|
||||||
- gradius2 ending: sun should be behind planet
|
- gradius2 ending: sun should be behind planet
|
||||||
|
|
||||||
does TWIN16_PLANE_ORDER affect it?
|
does TWIN16_PLANE_ORDER affect it?
|
||||||
|
|
||||||
more?
|
more?
|
||||||
devilw monster dens exploding monochrome, players fading to white in prologue, and trees in
|
devilw monster dens exploding monochrome, players fading to white in prologue, and trees in
|
||||||
the 1st level shrinking with a solid green color look odd, maybe alpha blended?
|
the 1st level shrinking with a solid green color look odd, maybe alpha blended?
|
||||||
|
|
||||||
fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected
|
fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected
|
||||||
to be high priority, and shadows are enabled
|
to be high priority, and shadows are enabled
|
||||||
*/
|
*/
|
||||||
UINT16 attributes = 0x8000| // enabled
|
UINT16 attributes = 0x8000| // enabled
|
||||||
(source[2]&0x03ff)| // scale,size,color
|
(source[2]&0x03ff)| // scale,size,color
|
||||||
(source[2]&0x4000)>>4| // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid)
|
(source[2]&0x4000)>>4| // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid)
|
||||||
@ -421,10 +421,10 @@ static void draw_layer( running_machine *machine, bitmap_t *bitmap, int opaque )
|
|||||||
{
|
{
|
||||||
int code = source[i];
|
int code = source[i];
|
||||||
/* fedcba9876543210
|
/* fedcba9876543210
|
||||||
xxx------------- color
|
xxx------------- color
|
||||||
---xx----------- tile bank
|
---xx----------- tile bank
|
||||||
-----xxxxxxxxxxx tile number
|
-----xxxxxxxxxxx tile number
|
||||||
*/
|
*/
|
||||||
const UINT16 *gfx_data = gfx_base + (code&0x7ff)*16 + bank_table[(code>>11)&0x3]*0x8000;
|
const UINT16 *gfx_data = gfx_base + (code&0x7ff)*16 + bank_table[(code>>11)&0x3]*0x8000;
|
||||||
int color = (code>>13);
|
int color = (code>>13);
|
||||||
int pal_base = 16*(0x20+color+8*palette);
|
int pal_base = 16*(0x20+color+8*palette);
|
||||||
@ -477,11 +477,11 @@ static TILE_GET_INFO( get_text_tile_info )
|
|||||||
const UINT16 *source = twin16_text_ram;
|
const UINT16 *source = twin16_text_ram;
|
||||||
int attr = source[tile_index];
|
int attr = source[tile_index];
|
||||||
/* fedcba9876543210
|
/* fedcba9876543210
|
||||||
-x-------------- yflip
|
-x-------------- yflip
|
||||||
--x------------- xflip
|
--x------------- xflip
|
||||||
---xxxx--------- color
|
---xxxx--------- color
|
||||||
-------xxxxxxxxx tile number
|
-------xxxxxxxxx tile number
|
||||||
*/
|
*/
|
||||||
int code = attr & 0x1ff;
|
int code = attr & 0x1ff;
|
||||||
int color = (attr >> 9) & 0x0f;
|
int color = (attr >> 9) & 0x0f;
|
||||||
int flags=0;
|
int flags=0;
|
||||||
@ -538,8 +538,8 @@ VIDEO_EOF( twin16 )
|
|||||||
need_process_spriteram = 1;
|
need_process_spriteram = 1;
|
||||||
|
|
||||||
/* if the sprite preprocessor is used, sprite ram is copied to an external buffer first,
|
/* if the sprite preprocessor is used, sprite ram is copied to an external buffer first,
|
||||||
as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably
|
as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably
|
||||||
more to it than that */
|
more to it than that */
|
||||||
memcpy(&buffered_spriteram16[0x1800],twin16_sprite_buffer,0x800*sizeof(UINT16));
|
memcpy(&buffered_spriteram16[0x1800],twin16_sprite_buffer,0x800*sizeof(UINT16));
|
||||||
memcpy(twin16_sprite_buffer,&spriteram16[0x1800],0x800*sizeof(UINT16));
|
memcpy(twin16_sprite_buffer,&spriteram16[0x1800],0x800*sizeof(UINT16));
|
||||||
}
|
}
|
||||||
|
@ -10,4 +10,4 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
extern const char build_version[];
|
extern const char build_version[];
|
||||||
const char build_version[] = "0.133u1 ("__DATE__")";
|
const char build_version[] = "0.133u2 ("__DATE__")";
|
||||||
|
Loading…
Reference in New Issue
Block a user