Merge branch 'master' of ssh://github.com/86Box/86Box into cleanup30
This commit is contained in:
@@ -833,8 +833,7 @@ load_machine(void)
|
|||||||
p = (char *)config_get_string(cat, "fpu_type", "none");
|
p = (char *)config_get_string(cat, "fpu_type", "none");
|
||||||
fpu_type = fpu_get_type(cpu_f, cpu, p);
|
fpu_type = fpu_get_type(cpu_f, cpu, p);
|
||||||
|
|
||||||
mem_size = config_get_int(cat, "mem_size", 4096);
|
mem_size = config_get_int(cat, "mem_size", 64);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (mem_size < (((machines[machine].flags & MACHINE_AT) &&
|
if (mem_size < (((machines[machine].flags & MACHINE_AT) &&
|
||||||
(machines[machine].ram_granularity < 128)) ? machines[machine].min_ram*1024 : machines[machine].min_ram))
|
(machines[machine].ram_granularity < 128)) ? machines[machine].min_ram*1024 : machines[machine].min_ram))
|
||||||
@@ -2060,7 +2059,7 @@ config_load(void)
|
|||||||
|
|
||||||
/* Unmute the CD audio on the first CD-ROM drive. */
|
/* Unmute the CD audio on the first CD-ROM drive. */
|
||||||
cdrom[0].sound_on = 1;
|
cdrom[0].sound_on = 1;
|
||||||
mem_size = 640;
|
mem_size = 64;
|
||||||
isartc_type = 0;
|
isartc_type = 0;
|
||||||
for (i = 0; i < ISAMEM_MAX; i++)
|
for (i = 0; i < ISAMEM_MAX; i++)
|
||||||
isamem_type[i] = 0;
|
isamem_type[i] = 0;
|
||||||
|
@@ -44,7 +44,7 @@ typedef struct sb_dsp_t
|
|||||||
uint8_t sb_data[8];
|
uint8_t sb_data[8];
|
||||||
|
|
||||||
int sb_freq;
|
int sb_freq;
|
||||||
|
|
||||||
int16_t sbdat;
|
int16_t sbdat;
|
||||||
int sbdat2;
|
int sbdat2;
|
||||||
int16_t sbdatl, sbdatr;
|
int16_t sbdatl, sbdatr;
|
||||||
@@ -66,11 +66,12 @@ typedef struct sb_dsp_t
|
|||||||
int sb_irqm8, sb_irqm16, sb_irqm401;
|
int sb_irqm8, sb_irqm16, sb_irqm401;
|
||||||
|
|
||||||
uint8_t sb_asp_regs[256];
|
uint8_t sb_asp_regs[256];
|
||||||
|
uint8_t sb_8051_ram[256];
|
||||||
|
|
||||||
int sbenable, sb_enable_i;
|
int sbenable, sb_enable_i;
|
||||||
|
|
||||||
pc_timer_t output_timer, input_timer;
|
pc_timer_t output_timer, input_timer;
|
||||||
|
|
||||||
uint64_t sblatcho, sblatchi;
|
uint64_t sblatcho, sblatchi;
|
||||||
|
|
||||||
uint16_t sb_addr;
|
uint16_t sb_addr;
|
||||||
|
@@ -46,22 +46,22 @@ static int sbe2dat[4][9] = {
|
|||||||
|
|
||||||
static int sb_commands[256]=
|
static int sb_commands[256]=
|
||||||
{
|
{
|
||||||
-1, 2,-1,-1, 1, 2,-1, 0, 1,-1,-1,-1,-1,-1, 2, 1,
|
-1, 2,-1,-1, 1, 2,-1, 0, 1,-1,-1,-1,-1,-1, 2, 1,
|
||||||
1,-1,-1,-1, 2,-1, 2, 2,-1,-1,-1,-1, 0,-1,-1, 0,
|
1,-1,-1,-1, 2,-1, 2, 2,-1,-1,-1,-1, 0,-1,-1, 0,
|
||||||
0,-1,-1,-1, 2,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,
|
0,-1,-1,-1, 2,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
1, 2, 2,-1,-1,-1,-1,-1, 2,-1,-1,-1,-1,-1,-1,-1,
|
1, 2, 2,-1,-1,-1,-1,-1, 2,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1, 2, 2, 2, 2,-1,-1,-1,-1,-1, 0,-1, 0,
|
-1,-1,-1,-1, 2, 2, 2, 2,-1,-1,-1,-1,-1, 0,-1, 0,
|
||||||
2, 2,-1,-1,-1,-1,-1,-1, 2, 2,-1,-1,-1,-1,-1,-1,
|
2, 2,-1,-1,-1,-1,-1,-1, 2, 2,-1,-1,-1,-1,-1,-1,
|
||||||
0,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,
|
0,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
0, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1,
|
0, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1,
|
||||||
1, 0, 1, 0, 1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,
|
1, 0, 1, 0, 1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1, 0,-1,-1,-1,-1,-1,-1, 1, 2,-1,-1,-1,-1, 0
|
-1,-1, 0,-1,-1,-1,-1,-1,-1, 1, 2,-1,-1,-1,-1, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -71,50 +71,50 @@ uint16_t sb_dsp_versions[] = {0, 0, 0x105, 0x200, 0x201, 0x300, 0x302, 0x405, 0x
|
|||||||
|
|
||||||
/*These tables were 'borrowed' from DOSBox*/
|
/*These tables were 'borrowed' from DOSBox*/
|
||||||
int8_t scaleMap4[64] = {
|
int8_t scaleMap4[64] = {
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 0, -1, -2, -3, -4, -5, -6, -7,
|
0, 1, 2, 3, 4, 5, 6, 7, 0, -1, -2, -3, -4, -5, -6, -7,
|
||||||
1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15,
|
1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15,
|
||||||
2, 6, 10, 14, 18, 22, 26, 30, -2, -6, -10, -14, -18, -22, -26, -30,
|
2, 6, 10, 14, 18, 22, 26, 30, -2, -6, -10, -14, -18, -22, -26, -30,
|
||||||
4, 12, 20, 28, 36, 44, 52, 60, -4, -12, -20, -28, -36, -44, -52, -60
|
4, 12, 20, 28, 36, 44, 52, 60, -4, -12, -20, -28, -36, -44, -52, -60
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t adjustMap4[64] = {
|
uint8_t adjustMap4[64] = {
|
||||||
0, 0, 0, 0, 0, 16, 16, 16,
|
0, 0, 0, 0, 0, 16, 16, 16,
|
||||||
0, 0, 0, 0, 0, 16, 16, 16,
|
0, 0, 0, 0, 0, 16, 16, 16,
|
||||||
240, 0, 0, 0, 0, 16, 16, 16,
|
240, 0, 0, 0, 0, 16, 16, 16,
|
||||||
240, 0, 0, 0, 0, 16, 16, 16,
|
240, 0, 0, 0, 0, 16, 16, 16,
|
||||||
240, 0, 0, 0, 0, 16, 16, 16,
|
240, 0, 0, 0, 0, 16, 16, 16,
|
||||||
240, 0, 0, 0, 0, 16, 16, 16,
|
240, 0, 0, 0, 0, 16, 16, 16,
|
||||||
240, 0, 0, 0, 0, 0, 0, 0,
|
240, 0, 0, 0, 0, 0, 0, 0,
|
||||||
240, 0, 0, 0, 0, 0, 0, 0
|
240, 0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
int8_t scaleMap26[40] = {
|
int8_t scaleMap26[40] = {
|
||||||
0, 1, 2, 3, 0, -1, -2, -3,
|
0, 1, 2, 3, 0, -1, -2, -3,
|
||||||
1, 3, 5, 7, -1, -3, -5, -7,
|
1, 3, 5, 7, -1, -3, -5, -7,
|
||||||
2, 6, 10, 14, -2, -6, -10, -14,
|
2, 6, 10, 14, -2, -6, -10, -14,
|
||||||
4, 12, 20, 28, -4, -12, -20, -28,
|
4, 12, 20, 28, -4, -12, -20, -28,
|
||||||
5, 15, 25, 35, -5, -15, -25, -35
|
5, 15, 25, 35, -5, -15, -25, -35
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t adjustMap26[40] = {
|
uint8_t adjustMap26[40] = {
|
||||||
0, 0, 0, 8, 0, 0, 0, 8,
|
0, 0, 0, 8, 0, 0, 0, 8,
|
||||||
248, 0, 0, 8, 248, 0, 0, 8,
|
248, 0, 0, 8, 248, 0, 0, 8,
|
||||||
248, 0, 0, 8, 248, 0, 0, 8,
|
248, 0, 0, 8, 248, 0, 0, 8,
|
||||||
248, 0, 0, 8, 248, 0, 0, 8,
|
248, 0, 0, 8, 248, 0, 0, 8,
|
||||||
248, 0, 0, 0, 248, 0, 0, 0
|
248, 0, 0, 0, 248, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
int8_t scaleMap2[24] = {
|
int8_t scaleMap2[24] = {
|
||||||
0, 1, 0, -1, 1, 3, -1, -3,
|
0, 1, 0, -1, 1, 3, -1, -3,
|
||||||
2, 6, -2, -6, 4, 12, -4, -12,
|
2, 6, -2, -6, 4, 12, -4, -12,
|
||||||
8, 24, -8, -24, 6, 48, -16, -48
|
8, 24, -8, -24, 6, 48, -16, -48
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t adjustMap2[24] = {
|
uint8_t adjustMap2[24] = {
|
||||||
0, 4, 0, 4,
|
0, 4, 0, 4,
|
||||||
252, 4, 252, 4, 252, 4, 252, 4,
|
252, 4, 252, 4, 252, 4, 252, 4,
|
||||||
252, 4, 252, 4, 252, 4, 252, 4,
|
252, 4, 252, 4, 252, 4, 252, 4,
|
||||||
252, 0, 252, 0
|
252, 0, 252, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
double low_fir_sb16_coef[2][SB16_NCoef];
|
double low_fir_sb16_coef[2][SB16_NCoef];
|
||||||
@@ -127,13 +127,13 @@ int sb_dsp_do_log = ENABLE_SB_DSP_LOG;
|
|||||||
static void
|
static void
|
||||||
sb_dsp_log(const char *fmt, ...)
|
sb_dsp_log(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
if (sb_dsp_do_log) {
|
if (sb_dsp_do_log) {
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
pclog_ex(fmt, ap);
|
pclog_ex(fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define sb_dsp_log(fmt, ...)
|
#define sb_dsp_log(fmt, ...)
|
||||||
@@ -143,19 +143,19 @@ sb_dsp_log(const char *fmt, ...)
|
|||||||
static __inline double
|
static __inline double
|
||||||
sinc(double x)
|
sinc(double x)
|
||||||
{
|
{
|
||||||
return sin(M_PI * x) / (M_PI * x);
|
return sin(M_PI * x) / (M_PI * x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
recalc_sb16_filter(int c, int playback_freq)
|
recalc_sb16_filter(int c, int playback_freq)
|
||||||
{
|
{
|
||||||
/* Cutoff frequency = playback / 2 */
|
/* Cutoff frequency = playback / 2 */
|
||||||
int n;
|
int n;
|
||||||
double w, h;
|
double w, h;
|
||||||
double fC = ((double) playback_freq) / 96000.0;
|
double fC = ((double) playback_freq) / 96000.0;
|
||||||
double gain;
|
double gain;
|
||||||
|
|
||||||
for (n = 0; n < SB16_NCoef; n++) {
|
for (n = 0; n < SB16_NCoef; n++) {
|
||||||
/* Blackman window */
|
/* Blackman window */
|
||||||
w = 0.42 - (0.5 * cos((2.0*n*M_PI)/(double)(SB16_NCoef-1))) + (0.08 * cos((4.0*n*M_PI)/(double)(SB16_NCoef-1)));
|
w = 0.42 - (0.5 * cos((2.0*n*M_PI)/(double)(SB16_NCoef-1))) + (0.08 * cos((4.0*n*M_PI)/(double)(SB16_NCoef-1)));
|
||||||
/* Sinc filter */
|
/* Sinc filter */
|
||||||
@@ -163,16 +163,16 @@ recalc_sb16_filter(int c, int playback_freq)
|
|||||||
|
|
||||||
/* Create windowed-sinc filter */
|
/* Create windowed-sinc filter */
|
||||||
low_fir_sb16_coef[c][n] = w * h;
|
low_fir_sb16_coef[c][n] = w * h;
|
||||||
}
|
}
|
||||||
|
|
||||||
low_fir_sb16_coef[c][(SB16_NCoef - 1) / 2] = 1.0;
|
low_fir_sb16_coef[c][(SB16_NCoef - 1) / 2] = 1.0;
|
||||||
|
|
||||||
gain = 0.0;
|
gain = 0.0;
|
||||||
for (n = 0; n < SB16_NCoef; n++)
|
for (n = 0; n < SB16_NCoef; n++)
|
||||||
gain += low_fir_sb16_coef[c][n];
|
gain += low_fir_sb16_coef[c][n];
|
||||||
|
|
||||||
/* Normalise filter, to produce unity gain */
|
/* Normalise filter, to produce unity gain */
|
||||||
for (n = 0; n < SB16_NCoef; n++)
|
for (n = 0; n < SB16_NCoef; n++)
|
||||||
low_fir_sb16_coef[c][n] /= gain;
|
low_fir_sb16_coef[c][n] /= gain;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,19 +180,19 @@ recalc_sb16_filter(int c, int playback_freq)
|
|||||||
void
|
void
|
||||||
sb_update_mask(sb_dsp_t *dsp, int irqm8, int irqm16, int irqm401)
|
sb_update_mask(sb_dsp_t *dsp, int irqm8, int irqm16, int irqm401)
|
||||||
{
|
{
|
||||||
int clear = 0;
|
int clear = 0;
|
||||||
|
|
||||||
if (!dsp->sb_irqm8 && irqm8)
|
if (!dsp->sb_irqm8 && irqm8)
|
||||||
clear |= 1;
|
clear |= 1;
|
||||||
dsp->sb_irqm8 = irqm8;
|
dsp->sb_irqm8 = irqm8;
|
||||||
if (!dsp->sb_irqm16 && irqm16)
|
if (!dsp->sb_irqm16 && irqm16)
|
||||||
clear |= 1;
|
clear |= 1;
|
||||||
dsp->sb_irqm16 = irqm16;
|
dsp->sb_irqm16 = irqm16;
|
||||||
if (!dsp->sb_irqm401 && irqm401)
|
if (!dsp->sb_irqm401 && irqm401)
|
||||||
clear |= 1;
|
clear |= 1;
|
||||||
dsp->sb_irqm401 = irqm401;
|
dsp->sb_irqm401 = irqm401;
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
picintc(1 << dsp->sb_irqnum);
|
picintc(1 << dsp->sb_irqnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,9 +200,9 @@ sb_update_mask(sb_dsp_t *dsp, int irqm8, int irqm16, int irqm401)
|
|||||||
void
|
void
|
||||||
sb_update_status(sb_dsp_t *dsp, int bit, int set)
|
sb_update_status(sb_dsp_t *dsp, int bit, int set)
|
||||||
{
|
{
|
||||||
int masked = 0;
|
int masked = 0;
|
||||||
|
|
||||||
switch (bit) {
|
switch (bit) {
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
dsp->sb_irq8 = set;
|
dsp->sb_irq8 = set;
|
||||||
@@ -216,11 +216,11 @@ sb_update_status(sb_dsp_t *dsp, int bit, int set)
|
|||||||
dsp->sb_irq401 = set;
|
dsp->sb_irq401 = set;
|
||||||
masked = dsp->sb_irqm401;
|
masked = dsp->sb_irqm401;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set && !masked)
|
if (set && !masked)
|
||||||
picint(1 << dsp->sb_irqnum);
|
picint(1 << dsp->sb_irqnum);
|
||||||
else if (!set)
|
else if (!set)
|
||||||
picintc(1 << dsp->sb_irqnum);
|
picintc(1 << dsp->sb_irqnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,41 +228,41 @@ sb_update_status(sb_dsp_t *dsp, int bit, int set)
|
|||||||
void
|
void
|
||||||
sb_irq(sb_dsp_t *dsp, int irq8)
|
sb_irq(sb_dsp_t *dsp, int irq8)
|
||||||
{
|
{
|
||||||
sb_update_status(dsp, !irq8, 1);
|
sb_update_status(dsp, !irq8, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_irqc(sb_dsp_t *dsp, int irq8)
|
sb_irqc(sb_dsp_t *dsp, int irq8)
|
||||||
{
|
{
|
||||||
sb_update_status(dsp, !irq8, 0);
|
sb_update_status(dsp, !irq8, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sb_dsp_irq_update(void *priv, int set)
|
sb_dsp_irq_update(void *priv, int set)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
||||||
|
|
||||||
sb_update_status(dsp, 2, set);
|
sb_update_status(dsp, 2, set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sb_dsp_irq_pending(void *priv)
|
sb_dsp_irq_pending(void *priv)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
||||||
|
|
||||||
return dsp->sb_irq401;
|
return dsp->sb_irq401;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_set_mpu(sb_dsp_t *dsp, mpu_t *mpu)
|
sb_dsp_set_mpu(sb_dsp_t *dsp, mpu_t *mpu)
|
||||||
{
|
{
|
||||||
dsp->mpu = mpu;
|
dsp->mpu = mpu;
|
||||||
|
|
||||||
if (mpu != NULL)
|
if (mpu != NULL)
|
||||||
mpu401_irq_attach(mpu, sb_dsp_irq_update, sb_dsp_irq_pending, dsp);
|
mpu401_irq_attach(mpu, sb_dsp_irq_update, sb_dsp_irq_pending, dsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,75 +270,75 @@ sb_dsp_set_mpu(sb_dsp_t *dsp, mpu_t *mpu)
|
|||||||
void
|
void
|
||||||
sb_dsp_reset(sb_dsp_t *dsp)
|
sb_dsp_reset(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
midi_clear_buffer();
|
midi_clear_buffer();
|
||||||
|
|
||||||
timer_disable(&dsp->output_timer);
|
timer_disable(&dsp->output_timer);
|
||||||
timer_disable(&dsp->input_timer);
|
timer_disable(&dsp->input_timer);
|
||||||
|
|
||||||
dsp->sb_command = 0;
|
dsp->sb_command = 0;
|
||||||
|
|
||||||
dsp->sb_8_length = 0xffff;
|
dsp->sb_8_length = 0xffff;
|
||||||
dsp->sb_8_autolen = 0xffff;
|
dsp->sb_8_autolen = 0xffff;
|
||||||
|
|
||||||
dsp->sb_irq8 = 0;
|
dsp->sb_irq8 = 0;
|
||||||
dsp->sb_irq16 = 0;
|
dsp->sb_irq16 = 0;
|
||||||
dsp->sb_irq401 = 0;
|
dsp->sb_irq401 = 0;
|
||||||
dsp->sb_16_pause = 0;
|
dsp->sb_16_pause = 0;
|
||||||
dsp->sb_read_wp = dsp->sb_read_rp = 0;
|
dsp->sb_read_wp = dsp->sb_read_rp = 0;
|
||||||
dsp->sb_data_stat = -1;
|
dsp->sb_data_stat = -1;
|
||||||
dsp->sb_speaker = 0;
|
dsp->sb_speaker = 0;
|
||||||
dsp->sb_pausetime = -1LL;
|
dsp->sb_pausetime = -1LL;
|
||||||
dsp->sbe2 = 0xAA;
|
dsp->sbe2 = 0xAA;
|
||||||
dsp->sbe2count = 0;
|
dsp->sbe2count = 0;
|
||||||
|
|
||||||
dsp->sbreset = 0;
|
dsp->sbreset = 0;
|
||||||
|
|
||||||
dsp->record_pos_read = 0;
|
dsp->record_pos_read = 0;
|
||||||
dsp->record_pos_write = SB_DSP_REC_SAFEFTY_MARGIN;
|
dsp->record_pos_write = SB_DSP_REC_SAFEFTY_MARGIN;
|
||||||
|
|
||||||
picintc(1 << dsp->sb_irqnum);
|
picintc(1 << dsp->sb_irqnum);
|
||||||
|
|
||||||
dsp->asp_data_len = 0;
|
dsp->asp_data_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_doreset(sb_dsp_t *dsp)
|
sb_doreset(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
sb_dsp_reset(dsp);
|
sb_dsp_reset(dsp);
|
||||||
|
|
||||||
|
|
||||||
if (IS_AZTECH(dsp)) {
|
if (IS_AZTECH(dsp)) {
|
||||||
sb_commands[8] = 1;
|
sb_commands[8] = 1;
|
||||||
sb_commands[9] = 1;
|
sb_commands[9] = 1;
|
||||||
} else {
|
} else {
|
||||||
if ((dsp->sb_type >= SB16) && (dsp->sb_type < SBAWE64))
|
if ((dsp->sb_type >= SB16) && (dsp->sb_type < SBAWE64))
|
||||||
sb_commands[8] = 1;
|
sb_commands[8] = 1;
|
||||||
else
|
else
|
||||||
sb_commands[8] = -1;
|
sb_commands[8] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (c = 0; c < 256; c++)
|
for (c = 0; c < 256; c++)
|
||||||
dsp->sb_asp_regs[c] = 0;
|
dsp->sb_asp_regs[c] = 0;
|
||||||
|
|
||||||
dsp->sb_asp_regs[5] = 0x01;
|
dsp->sb_asp_regs[5] = 0x01;
|
||||||
dsp->sb_asp_regs[9] = 0xf8;
|
dsp->sb_asp_regs[9] = 0xf8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_speed_changed(sb_dsp_t *dsp)
|
sb_dsp_speed_changed(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
if (dsp->sb_timeo < 256)
|
if (dsp->sb_timeo < 256)
|
||||||
dsp->sblatcho = TIMER_USEC * (256 - dsp->sb_timeo);
|
dsp->sblatcho = TIMER_USEC * (256 - dsp->sb_timeo);
|
||||||
else
|
else
|
||||||
dsp->sblatcho = (uint64_t)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_timeo - 256)));
|
dsp->sblatcho = (uint64_t)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_timeo - 256)));
|
||||||
|
|
||||||
if (dsp->sb_timei < 256)
|
if (dsp->sb_timei < 256)
|
||||||
dsp->sblatchi = TIMER_USEC * (256 - dsp->sb_timei);
|
dsp->sblatchi = TIMER_USEC * (256 - dsp->sb_timei);
|
||||||
else
|
else
|
||||||
dsp->sblatchi = (uint64_t)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_timei - 256)));
|
dsp->sblatchi = (uint64_t)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_timei - 256)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,17 +346,17 @@ sb_dsp_speed_changed(sb_dsp_t *dsp)
|
|||||||
void
|
void
|
||||||
sb_add_data(sb_dsp_t *dsp, uint8_t v)
|
sb_add_data(sb_dsp_t *dsp, uint8_t v)
|
||||||
{
|
{
|
||||||
dsp->sb_read_data[dsp->sb_read_wp++] = v;
|
dsp->sb_read_data[dsp->sb_read_wp++] = v;
|
||||||
dsp->sb_read_wp &= 0xff;
|
dsp->sb_read_wp &= 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_start_dma(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
sb_start_dma(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
||||||
{
|
{
|
||||||
dsp->sb_pausetime = -1;
|
dsp->sb_pausetime = -1;
|
||||||
|
|
||||||
if (dma8) {
|
if (dma8) {
|
||||||
dsp->sb_8_length = len;
|
dsp->sb_8_length = len;
|
||||||
dsp->sb_8_format = format;
|
dsp->sb_8_format = format;
|
||||||
dsp->sb_8_autoinit = autoinit;
|
dsp->sb_8_autoinit = autoinit;
|
||||||
@@ -370,7 +370,7 @@ sb_start_dma(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
|||||||
timer_set_delay_u64(&dsp->output_timer, dsp->sblatcho);
|
timer_set_delay_u64(&dsp->output_timer, dsp->sblatcho);
|
||||||
dsp->sbleftright = 0;
|
dsp->sbleftright = 0;
|
||||||
dsp->sbdacpos = 0;
|
dsp->sbdacpos = 0;
|
||||||
} else {
|
} else {
|
||||||
dsp->sb_16_length = len;
|
dsp->sb_16_length = len;
|
||||||
dsp->sb_16_format = format;
|
dsp->sb_16_format = format;
|
||||||
dsp->sb_16_autoinit = autoinit;
|
dsp->sb_16_autoinit = autoinit;
|
||||||
@@ -380,14 +380,14 @@ sb_start_dma(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
|||||||
dsp->sb_16_output = 1;
|
dsp->sb_16_output = 1;
|
||||||
if (!timer_is_enabled(&dsp->output_timer))
|
if (!timer_is_enabled(&dsp->output_timer))
|
||||||
timer_set_delay_u64(&dsp->output_timer, dsp->sblatcho);
|
timer_set_delay_u64(&dsp->output_timer, dsp->sblatcho);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_start_dma_i(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
sb_start_dma_i(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
||||||
{
|
{
|
||||||
if (dma8) {
|
if (dma8) {
|
||||||
dsp->sb_8_length = len;
|
dsp->sb_8_length = len;
|
||||||
dsp->sb_8_format = format;
|
dsp->sb_8_format = format;
|
||||||
dsp->sb_8_autoinit = autoinit;
|
dsp->sb_8_autoinit = autoinit;
|
||||||
@@ -398,7 +398,7 @@ sb_start_dma_i(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
|||||||
dsp->sb_8_output = 0;
|
dsp->sb_8_output = 0;
|
||||||
if (!timer_is_enabled(&dsp->input_timer))
|
if (!timer_is_enabled(&dsp->input_timer))
|
||||||
timer_set_delay_u64(&dsp->input_timer, dsp->sblatchi);
|
timer_set_delay_u64(&dsp->input_timer, dsp->sblatchi);
|
||||||
} else {
|
} else {
|
||||||
dsp->sb_16_length = len;
|
dsp->sb_16_length = len;
|
||||||
dsp->sb_16_format = format;
|
dsp->sb_16_format = format;
|
||||||
dsp->sb_16_autoinit = autoinit;
|
dsp->sb_16_autoinit = autoinit;
|
||||||
@@ -409,70 +409,70 @@ sb_start_dma_i(sb_dsp_t *dsp, int dma8, int autoinit, uint8_t format, int len)
|
|||||||
dsp->sb_16_output = 0;
|
dsp->sb_16_output = 0;
|
||||||
if (!timer_is_enabled(&dsp->input_timer))
|
if (!timer_is_enabled(&dsp->input_timer))
|
||||||
timer_set_delay_u64(&dsp->input_timer, dsp->sblatchi);
|
timer_set_delay_u64(&dsp->input_timer, dsp->sblatchi);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(dsp->record_buffer,0,sizeof(dsp->record_buffer));
|
memset(dsp->record_buffer,0,sizeof(dsp->record_buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sb_8_read_dma(sb_dsp_t *dsp)
|
sb_8_read_dma(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
return dma_channel_read(dsp->sb_8_dmanum);
|
return dma_channel_read(dsp->sb_8_dmanum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_8_write_dma(sb_dsp_t *dsp, uint8_t val)
|
sb_8_write_dma(sb_dsp_t *dsp, uint8_t val)
|
||||||
{
|
{
|
||||||
dma_channel_write(dsp->sb_8_dmanum, val);
|
dma_channel_write(dsp->sb_8_dmanum, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sb_16_read_dma(sb_dsp_t *dsp)
|
sb_16_read_dma(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
return dma_channel_read(dsp->sb_16_dmanum);
|
return dma_channel_read(dsp->sb_16_dmanum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sb_16_write_dma(sb_dsp_t *dsp, uint16_t val)
|
sb_16_write_dma(sb_dsp_t *dsp, uint16_t val)
|
||||||
{
|
{
|
||||||
int ret = dma_channel_write(dsp->sb_16_dmanum, val);
|
int ret = dma_channel_write(dsp->sb_16_dmanum, val);
|
||||||
|
|
||||||
return (ret == DMA_NODATA);
|
return (ret == DMA_NODATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_setirq(sb_dsp_t *dsp, int irq)
|
sb_dsp_setirq(sb_dsp_t *dsp, int irq)
|
||||||
{
|
{
|
||||||
dsp->sb_irqnum = irq;
|
dsp->sb_irqnum = irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_setdma8(sb_dsp_t *dsp, int dma)
|
sb_dsp_setdma8(sb_dsp_t *dsp, int dma)
|
||||||
{
|
{
|
||||||
dsp->sb_8_dmanum = dma;
|
dsp->sb_8_dmanum = dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_setdma16(sb_dsp_t *dsp, int dma)
|
sb_dsp_setdma16(sb_dsp_t *dsp, int dma)
|
||||||
{
|
{
|
||||||
dsp->sb_16_dmanum = dma;
|
dsp->sb_16_dmanum = dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_exec_command(sb_dsp_t *dsp)
|
sb_exec_command(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
int temp, c;
|
int temp, c;
|
||||||
|
|
||||||
sb_dsp_log("sb_exec_command : SB command %02X\n", dsp->sb_command);
|
sb_dsp_log("sb_exec_command : SB command %02X\n", dsp->sb_command);
|
||||||
|
|
||||||
switch (dsp->sb_command) {
|
switch (dsp->sb_command) {
|
||||||
case 0x01: /* ???? */
|
case 0x01: /* ???? */
|
||||||
if (dsp->sb_type >= SB16)
|
if (dsp->sb_type >= SB16)
|
||||||
dsp->asp_data_len = dsp->sb_data[0] + (dsp->sb_data[1] << 8) + 1;
|
dsp->asp_data_len = dsp->sb_data[0] + (dsp->sb_data[1] << 8) + 1;
|
||||||
@@ -582,7 +582,7 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
if (dsp->sb_freq != temp && dsp->sb_type >= SB16)
|
if (dsp->sb_freq != temp && dsp->sb_type >= SB16)
|
||||||
recalc_sb16_filter(0, dsp->sb_freq);
|
recalc_sb16_filter(0, dsp->sb_freq);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x48: /* Set DSP block transfer size */
|
case 0x48: /* Set DSP block transfer size */
|
||||||
dsp->sb_8_autolen = dsp->sb_data[0] + (dsp->sb_data[1] << 8);
|
dsp->sb_8_autolen = dsp->sb_data[0] + (dsp->sb_data[1] << 8);
|
||||||
break;
|
break;
|
||||||
@@ -655,7 +655,7 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
sb_start_dma(dsp, 0, dsp->sb_command & 4, dsp->sb_data[0], dsp->sb_data[1] + (dsp->sb_data[2] << 8));
|
sb_start_dma(dsp, 0, dsp->sb_command & 4, dsp->sb_data[0], dsp->sb_data[1] + (dsp->sb_data[2] << 8));
|
||||||
dsp->sb_16_autolen = dsp->sb_data[1] + (dsp->sb_data[2] << 8);
|
dsp->sb_16_autolen = dsp->sb_data[1] + (dsp->sb_data[2] << 8);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0xB8: case 0xB9: case 0xBA: case 0xBB:
|
case 0xB8: case 0xB9: case 0xBA: case 0xBB:
|
||||||
case 0xBC: case 0xBD: case 0xBE: case 0xBF: /* 16-bit DMA input */
|
case 0xBC: case 0xBD: case 0xBE: case 0xBF: /* 16-bit DMA input */
|
||||||
if (dsp->sb_type >= SB16) {
|
if (dsp->sb_type >= SB16) {
|
||||||
@@ -763,7 +763,7 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
sb_dsp_log("Trigger IRQ\n");
|
sb_dsp_log("Trigger IRQ\n");
|
||||||
sb_irq(dsp, 0);
|
sb_irq(dsp, 0);
|
||||||
break;
|
break;
|
||||||
case 0xE7: case 0xFA: /* ???? */
|
case 0xE7: /* ???? */
|
||||||
break;
|
break;
|
||||||
case 0x07: case 0xFF: /* No, that's not how you program auto-init DMA */
|
case 0x07: case 0xFF: /* No, that's not how you program auto-init DMA */
|
||||||
break;
|
break;
|
||||||
@@ -808,15 +808,15 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
break;
|
break;
|
||||||
case 0xF9:
|
case 0xF9:
|
||||||
if (dsp->sb_type >= SB16) {
|
if (dsp->sb_type >= SB16) {
|
||||||
if (dsp->sb_data[0] == 0x0e)
|
sb_add_data(dsp, dsp->sb_8051_ram[dsp->sb_data[0]]);
|
||||||
sb_add_data(dsp, 0xff);
|
|
||||||
else if (dsp->sb_data[0] == 0x0f)
|
|
||||||
sb_add_data(dsp, 0x07);
|
|
||||||
else if (dsp->sb_data[0] == 0x37)
|
|
||||||
sb_add_data(dsp, 0x38);
|
|
||||||
else
|
|
||||||
sb_add_data(dsp, 0x00);
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case 0xFA:
|
||||||
|
if(dsp->sb_type >= SB16)
|
||||||
|
{
|
||||||
|
dsp->sb_8051_ram[dsp->sb_data[0]] = dsp->sb_data[1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0x04: case 0x05:
|
case 0x04: case 0x05:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -831,7 +831,7 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
} else
|
} else
|
||||||
sb_dsp_log("AZT2316A: UNKNOWN MODE! = %02x\n", dsp->sb_data[0]); // sequences 0x02->0xFF, 0x04->0xFF seen
|
sb_dsp_log("AZT2316A: UNKNOWN MODE! = %02x\n", dsp->sb_data[0]); // sequences 0x02->0xFF, 0x04->0xFF seen
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* TODO: Some more data about the DSP registeres
|
/* TODO: Some more data about the DSP registeres
|
||||||
* http://the.earth.li/~tfm/oldpage/sb_dsp.html
|
* http://the.earth.li/~tfm/oldpage/sb_dsp.html
|
||||||
@@ -845,17 +845,23 @@ sb_exec_command(sb_dsp_t *dsp)
|
|||||||
* 0FBh DSP Status SB16
|
* 0FBh DSP Status SB16
|
||||||
* 0FCh DSP Auxiliary Status SB16
|
* 0FCh DSP Auxiliary Status SB16
|
||||||
* 0FDh DSP Command Status SB16
|
* 0FDh DSP Command Status SB16
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
if(dsp->sb_type >= SB16)
|
||||||
|
{
|
||||||
|
//Update 8051 ram with the last DSP command.
|
||||||
|
//See https://github.com/joncampbell123/dosbox-x/issues/1044
|
||||||
|
dsp->sb_8051_ram[0x30] = dsp->sb_command;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_write(uint16_t a, uint8_t v, void *priv)
|
sb_write(uint16_t a, uint8_t v, void *priv)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
||||||
|
|
||||||
switch (a & 0xF) {
|
switch (a & 0xF) {
|
||||||
case 6: /* Reset */
|
case 6: /* Reset */
|
||||||
if (!dsp->uart_midi) {
|
if (!dsp->uart_midi) {
|
||||||
if (!(v & 1) && (dsp->sbreset & 1)) {
|
if (!(v & 1) && (dsp->sbreset & 1)) {
|
||||||
@@ -907,17 +913,17 @@ sb_write(uint16_t a, uint8_t v, void *priv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint8_t
|
uint8_t
|
||||||
sb_read(uint16_t a, void *priv)
|
sb_read(uint16_t a, void *priv)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
sb_dsp_t *dsp = (sb_dsp_t *) priv;
|
||||||
uint8_t ret = 0x00;
|
uint8_t ret = 0x00;
|
||||||
|
|
||||||
switch (a & 0xf) {
|
switch (a & 0xf) {
|
||||||
case 0xA: /* Read data */
|
case 0xA: /* Read data */
|
||||||
if (dsp->mpu && dsp->uart_midi) {
|
if (dsp->mpu && dsp->uart_midi) {
|
||||||
ret = MPU401_ReadData(dsp->mpu);
|
ret = MPU401_ReadData(dsp->mpu);
|
||||||
@@ -972,128 +978,134 @@ sb_read(uint16_t a, void *priv)
|
|||||||
sb_dsp_log("SB 16-bit ACK read 0xFF\n");
|
sb_dsp_log("SB 16-bit ACK read 0xFF\n");
|
||||||
ret = 0xff;
|
ret = 0xff;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_input_msg(void *p, uint8_t *msg)
|
sb_dsp_input_msg(void *p, uint8_t *msg)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
||||||
uint8_t len = msg[3], i = 0;
|
uint8_t len = msg[3], i = 0;
|
||||||
|
|
||||||
sb_dsp_log("MIDI in sysex = %d, uart irq = %d, msg = %d\n", dsp->midi_in_sysex, dsp->uart_irq, msg[3]);
|
sb_dsp_log("MIDI in sysex = %d, uart irq = %d, msg = %d\n", dsp->midi_in_sysex, dsp->uart_irq, msg[3]);
|
||||||
|
|
||||||
if (!dsp->uart_irq && !dsp->midi_in_poll && (dsp->mpu != NULL)) {
|
if (!dsp->uart_irq && !dsp->midi_in_poll && (dsp->mpu != NULL)) {
|
||||||
MPU401_InputMsg(dsp->mpu, msg);
|
MPU401_InputMsg(dsp->mpu, msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dsp->midi_in_sysex)
|
if (dsp->midi_in_sysex)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (dsp->uart_irq) {
|
if (dsp->uart_irq) {
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
sb_add_data(dsp, msg[i]);
|
sb_add_data(dsp, msg[i]);
|
||||||
sb_irq(dsp, 1);
|
sb_irq(dsp, 1);
|
||||||
} else if (dsp->midi_in_poll) {
|
} else if (dsp->midi_in_poll) {
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
sb_add_data(dsp, msg[i]);
|
sb_add_data(dsp, msg[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sb_dsp_input_sysex(void *p, uint8_t *buffer, uint32_t len, int abort)
|
sb_dsp_input_sysex(void *p, uint8_t *buffer, uint32_t len, int abort)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
if (!dsp->uart_irq && !dsp->midi_in_poll && (dsp->mpu != NULL))
|
if (!dsp->uart_irq && !dsp->midi_in_poll && (dsp->mpu != NULL))
|
||||||
return MPU401_InputSysex(dsp->mpu, buffer, len, abort);
|
return MPU401_InputSysex(dsp->mpu, buffer, len, abort);
|
||||||
|
|
||||||
if (abort) {
|
if (abort) {
|
||||||
dsp->midi_in_sysex = 0;
|
dsp->midi_in_sysex = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsp->midi_in_sysex = 1;
|
dsp->midi_in_sysex = 1;
|
||||||
|
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
if (dsp->sb_read_rp == dsp->sb_read_wp) {
|
if (dsp->sb_read_rp == dsp->sb_read_wp) {
|
||||||
sb_dsp_log("Length sysex SB = %d\n", len - i);
|
sb_dsp_log("Length sysex SB = %d\n", len - i);
|
||||||
return (len - i);
|
return (len - i);
|
||||||
}
|
}
|
||||||
|
|
||||||
sb_add_data(dsp, buffer[i]);
|
sb_add_data(dsp, buffer[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
dsp->midi_in_sysex = 0;
|
dsp->midi_in_sysex = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_init(sb_dsp_t *dsp, int type, int subtype, void *parent)
|
sb_dsp_init(sb_dsp_t *dsp, int type, int subtype, void *parent)
|
||||||
{
|
{
|
||||||
dsp->sb_type = type;
|
dsp->sb_type = type;
|
||||||
dsp->sb_subtype = subtype;
|
dsp->sb_subtype = subtype;
|
||||||
dsp->parent = parent;
|
dsp->parent = parent;
|
||||||
|
|
||||||
/* Default values. Use sb_dsp_setxxx() methods to change. */
|
/* Default values. Use sb_dsp_setxxx() methods to change. */
|
||||||
dsp->sb_irqnum = 7;
|
dsp->sb_irqnum = 7;
|
||||||
dsp->sb_8_dmanum = 1;
|
dsp->sb_8_dmanum = 1;
|
||||||
dsp->sb_16_dmanum = 5;
|
dsp->sb_16_dmanum = 5;
|
||||||
dsp->mpu = NULL;
|
dsp->mpu = NULL;
|
||||||
|
|
||||||
sb_doreset(dsp);
|
sb_doreset(dsp);
|
||||||
|
|
||||||
timer_add(&dsp->output_timer, pollsb, dsp, 0);
|
timer_add(&dsp->output_timer, pollsb, dsp, 0);
|
||||||
timer_add(&dsp->input_timer, sb_poll_i, dsp, 0);
|
timer_add(&dsp->input_timer, sb_poll_i, dsp, 0);
|
||||||
timer_add(&dsp->wb_timer, NULL, dsp, 0);
|
timer_add(&dsp->wb_timer, NULL, dsp, 0);
|
||||||
|
|
||||||
/* Initialise SB16 filter to same cutoff as 8-bit SBs (3.2 kHz). This will be recalculated when
|
/* Initialise SB16 filter to same cutoff as 8-bit SBs (3.2 kHz). This will be recalculated when
|
||||||
a set frequency command is sent. */
|
a set frequency command is sent. */
|
||||||
recalc_sb16_filter(0, 3200*2);
|
recalc_sb16_filter(0, 3200*2);
|
||||||
recalc_sb16_filter(1, 44100);
|
recalc_sb16_filter(1, 44100);
|
||||||
|
|
||||||
|
// Initialize SB16 8051 RAM
|
||||||
|
memset(dsp->sb_8051_ram, 0, 256);
|
||||||
|
dsp->sb_8051_ram[0x0e] = 0xff;
|
||||||
|
dsp->sb_8051_ram[0x0f] = 0x07;
|
||||||
|
dsp->sb_8051_ram[0x37] = 0x38;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_setaddr(sb_dsp_t *dsp, uint16_t addr)
|
sb_dsp_setaddr(sb_dsp_t *dsp, uint16_t addr)
|
||||||
{
|
{
|
||||||
sb_dsp_log("sb_dsp_setaddr : %04X\n", addr);
|
sb_dsp_log("sb_dsp_setaddr : %04X\n", addr);
|
||||||
if (dsp->sb_addr != 0) {
|
if (dsp->sb_addr != 0) {
|
||||||
io_removehandler(dsp->sb_addr + 6, 0x0002, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
io_removehandler(dsp->sb_addr + 6, 0x0002, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
||||||
io_removehandler(dsp->sb_addr + 0xa, 0x0006, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
io_removehandler(dsp->sb_addr + 0xa, 0x0006, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
||||||
}
|
}
|
||||||
dsp->sb_addr = addr;
|
dsp->sb_addr = addr;
|
||||||
if (dsp->sb_addr != 0) {
|
if (dsp->sb_addr != 0) {
|
||||||
io_sethandler(dsp->sb_addr + 6, 0x0002, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
io_sethandler(dsp->sb_addr + 6, 0x0002, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
||||||
io_sethandler(dsp->sb_addr + 0xa, 0x0006, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
io_sethandler(dsp->sb_addr + 0xa, 0x0006, sb_read, NULL, NULL, sb_write, NULL, NULL, dsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_dsp_set_stereo(sb_dsp_t *dsp, int stereo)
|
sb_dsp_set_stereo(sb_dsp_t *dsp, int stereo)
|
||||||
{
|
{
|
||||||
dsp->stereo = stereo;
|
dsp->stereo = stereo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
pollsb(void *p)
|
pollsb(void *p)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
||||||
int tempi, ref;
|
int tempi, ref;
|
||||||
int data[2];
|
int data[2];
|
||||||
|
|
||||||
timer_advance_u64(&dsp->output_timer, dsp->sblatcho);
|
timer_advance_u64(&dsp->output_timer, dsp->sblatcho);
|
||||||
if (dsp->sb_8_enable && !dsp->sb_8_pause && dsp->sb_pausetime < 0 && dsp->sb_8_output) {
|
if (dsp->sb_8_enable && !dsp->sb_8_pause && dsp->sb_pausetime < 0 && dsp->sb_8_output) {
|
||||||
sb_dsp_update(dsp);
|
sb_dsp_update(dsp);
|
||||||
|
|
||||||
switch (dsp->sb_8_format) {
|
switch (dsp->sb_8_format) {
|
||||||
@@ -1106,7 +1118,7 @@ pollsb(void *p)
|
|||||||
dsp->sbdat = (data[0] ^ 0x80) << 8;
|
dsp->sbdat = (data[0] ^ 0x80) << 8;
|
||||||
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
||||||
sb_dsp_log("pollsb: Mono unsigned, dsp->stereo, %s channel, %04X\n",
|
sb_dsp_log("pollsb: Mono unsigned, dsp->stereo, %s channel, %04X\n",
|
||||||
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
||||||
if (dsp->sbleftright)
|
if (dsp->sbleftright)
|
||||||
dsp->sbdatl = dsp->sbdat;
|
dsp->sbdatl = dsp->sbdat;
|
||||||
else
|
else
|
||||||
@@ -1123,7 +1135,7 @@ pollsb(void *p)
|
|||||||
dsp->sbdat = data[0] << 8;
|
dsp->sbdat = data[0] << 8;
|
||||||
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
||||||
sb_dsp_log("pollsb: Mono signed, dsp->stereo, %s channel, %04X\n",
|
sb_dsp_log("pollsb: Mono signed, dsp->stereo, %s channel, %04X\n",
|
||||||
dsp->sbleftright ? "left" : "right", data[0], dsp->sbdat);
|
dsp->sbleftright ? "left" : "right", data[0], dsp->sbdat);
|
||||||
if (dsp->sbleftright)
|
if (dsp->sbleftright)
|
||||||
dsp->sbdatl = dsp->sbdat;
|
dsp->sbdatl = dsp->sbdat;
|
||||||
else
|
else
|
||||||
@@ -1183,7 +1195,7 @@ pollsb(void *p)
|
|||||||
|
|
||||||
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
||||||
sb_dsp_log("pollsb: ADPCM 4, dsp->stereo, %s channel, %04X\n",
|
sb_dsp_log("pollsb: ADPCM 4, dsp->stereo, %s channel, %04X\n",
|
||||||
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
||||||
if (dsp->sbleftright)
|
if (dsp->sbleftright)
|
||||||
dsp->sbdatl = dsp->sbdat;
|
dsp->sbdatl = dsp->sbdat;
|
||||||
else
|
else
|
||||||
@@ -1226,7 +1238,7 @@ pollsb(void *p)
|
|||||||
|
|
||||||
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
||||||
sb_dsp_log("pollsb: ADPCM 26, dsp->stereo, %s channel, %04X\n",
|
sb_dsp_log("pollsb: ADPCM 26, dsp->stereo, %s channel, %04X\n",
|
||||||
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
||||||
if (dsp->sbleftright)
|
if (dsp->sbleftright)
|
||||||
dsp->sbdatl = dsp->sbdat;
|
dsp->sbdatl = dsp->sbdat;
|
||||||
else
|
else
|
||||||
@@ -1262,7 +1274,7 @@ pollsb(void *p)
|
|||||||
|
|
||||||
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
if ((dsp->sb_type >= SBPRO) && (dsp->sb_type < SB16) && dsp->stereo) {
|
||||||
sb_dsp_log("pollsb: ADPCM 2, dsp->stereo, %s channel, %04X\n",
|
sb_dsp_log("pollsb: ADPCM 2, dsp->stereo, %s channel, %04X\n",
|
||||||
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
dsp->sbleftright ? "left" : "right", dsp->sbdat);
|
||||||
if (dsp->sbleftright)
|
if (dsp->sbleftright)
|
||||||
dsp->sbdatl = dsp->sbdat;
|
dsp->sbdatl = dsp->sbdat;
|
||||||
else
|
else
|
||||||
@@ -1282,7 +1294,8 @@ pollsb(void *p)
|
|||||||
}
|
}
|
||||||
sb_irq(dsp, 1);
|
sb_irq(dsp, 1);
|
||||||
}
|
}
|
||||||
} if (dsp->sb_16_enable && !dsp->sb_16_pause && (dsp->sb_pausetime < 0LL) && dsp->sb_16_output) {
|
}
|
||||||
|
if (dsp->sb_16_enable && !dsp->sb_16_pause && (dsp->sb_pausetime < 0LL) && dsp->sb_16_output) {
|
||||||
sb_dsp_update(dsp);
|
sb_dsp_update(dsp);
|
||||||
|
|
||||||
switch (dsp->sb_16_format) {
|
switch (dsp->sb_16_format) {
|
||||||
@@ -1330,8 +1343,8 @@ pollsb(void *p)
|
|||||||
}
|
}
|
||||||
sb_irq(dsp, 0);
|
sb_irq(dsp, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dsp->sb_pausetime > -1) {
|
if (dsp->sb_pausetime > -1) {
|
||||||
dsp->sb_pausetime--;
|
dsp->sb_pausetime--;
|
||||||
if (dsp->sb_pausetime < 0) {
|
if (dsp->sb_pausetime < 0) {
|
||||||
sb_irq(dsp, 1);
|
sb_irq(dsp, 1);
|
||||||
@@ -1339,19 +1352,19 @@ pollsb(void *p)
|
|||||||
timer_disable(&dsp->output_timer);
|
timer_disable(&dsp->output_timer);
|
||||||
sb_dsp_log("SB pause over\n");
|
sb_dsp_log("SB pause over\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sb_poll_i(void *p)
|
sb_poll_i(void *p)
|
||||||
{
|
{
|
||||||
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
sb_dsp_t *dsp = (sb_dsp_t *) p;
|
||||||
int processed = 0;
|
int processed = 0;
|
||||||
|
|
||||||
timer_advance_u64(&dsp->input_timer, dsp->sblatchi);
|
timer_advance_u64(&dsp->input_timer, dsp->sblatchi);
|
||||||
|
|
||||||
if (dsp->sb_8_enable && !dsp->sb_8_pause && dsp->sb_pausetime < 0 && !dsp->sb_8_output) {
|
if (dsp->sb_8_enable && !dsp->sb_8_pause && dsp->sb_pausetime < 0 && !dsp->sb_8_output) {
|
||||||
switch (dsp->sb_8_format) {
|
switch (dsp->sb_8_format) {
|
||||||
case 0x00: /* Mono unsigned As the manual says, only the left channel is recorded */
|
case 0x00: /* Mono unsigned As the manual says, only the left channel is recorded */
|
||||||
sb_8_write_dma(dsp, (dsp->record_buffer[dsp->record_pos_read]>>8) ^0x80);
|
sb_8_write_dma(dsp, (dsp->record_buffer[dsp->record_pos_read]>>8) ^0x80);
|
||||||
@@ -1391,8 +1404,8 @@ sb_poll_i(void *p)
|
|||||||
sb_irq(dsp, 1);
|
sb_irq(dsp, 1);
|
||||||
}
|
}
|
||||||
processed = 1;
|
processed = 1;
|
||||||
}
|
}
|
||||||
if (dsp->sb_16_enable && !dsp->sb_16_pause && (dsp->sb_pausetime < 0LL) && !dsp->sb_16_output) {
|
if (dsp->sb_16_enable && !dsp->sb_16_pause && (dsp->sb_pausetime < 0LL) && !dsp->sb_16_output) {
|
||||||
switch (dsp->sb_16_format) {
|
switch (dsp->sb_16_format) {
|
||||||
case 0x00: /* Unsigned mono. As the manual says, only the left channel is recorded */
|
case 0x00: /* Unsigned mono. As the manual says, only the left channel is recorded */
|
||||||
if (sb_16_write_dma(dsp, dsp->record_buffer[dsp->record_pos_read]^0x8000))
|
if (sb_16_write_dma(dsp, dsp->record_buffer[dsp->record_pos_read]^0x8000))
|
||||||
@@ -1436,25 +1449,25 @@ sb_poll_i(void *p)
|
|||||||
sb_irq(dsp, 0);
|
sb_irq(dsp, 0);
|
||||||
}
|
}
|
||||||
processed = 1;
|
processed = 1;
|
||||||
}
|
}
|
||||||
/* Assume this is direct mode */
|
/* Assume this is direct mode */
|
||||||
if (!processed) {
|
if (!processed) {
|
||||||
dsp->record_pos_read += 2;
|
dsp->record_pos_read += 2;
|
||||||
dsp->record_pos_read &= 0xFFFF;
|
dsp->record_pos_read &= 0xFFFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sb_dsp_update(sb_dsp_t *dsp)
|
void sb_dsp_update(sb_dsp_t *dsp)
|
||||||
{
|
{
|
||||||
if (dsp->muted) {
|
if (dsp->muted) {
|
||||||
dsp->sbdatl = 0;
|
dsp->sbdatl = 0;
|
||||||
dsp->sbdatr = 0;
|
dsp->sbdatr = 0;
|
||||||
}
|
}
|
||||||
for (; dsp->pos < sound_pos_global; dsp->pos++) {
|
for (; dsp->pos < sound_pos_global; dsp->pos++) {
|
||||||
dsp->buffer[dsp->pos*2] = dsp->sbdatl;
|
dsp->buffer[dsp->pos*2] = dsp->sbdatl;
|
||||||
dsp->buffer[dsp->pos*2 + 1] = dsp->sbdatr;
|
dsp->buffer[dsp->pos*2 + 1] = dsp->sbdatr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -373,4 +373,5 @@ END
|
|||||||
#include "languages/pt-BR.rc"
|
#include "languages/pt-BR.rc"
|
||||||
#include "languages/pt-PT.rc"
|
#include "languages/pt-PT.rc"
|
||||||
#include "languages/sl-SI.rc"
|
#include "languages/sl-SI.rc"
|
||||||
|
#include "languages/es-ES.rc"
|
||||||
#include "languages/zh-CN.rc"
|
#include "languages/zh-CN.rc"
|
||||||
|
644
src/win/languages/es-ES.rc
Normal file
644
src/win/languages/es-ES.rc
Normal file
@@ -0,0 +1,644 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Spanish (Spain) resources
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
|
||||||
|
#pragma code_page(65001)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
#define AUTHORS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Menu
|
||||||
|
//
|
||||||
|
|
||||||
|
MainMenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP "&Acción"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Teclado requiere captura", IDM_ACTION_KBD_REQ_CAPTURE
|
||||||
|
MENUITEM "CTRL &derecho es ALT izquierdo", IDM_ACTION_RCTRL_IS_LALT
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
|
||||||
|
MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Pausa", IDM_ACTION_PAUSE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Salir...", IDM_ACTION_EXIT
|
||||||
|
END
|
||||||
|
POPUP "&Vista"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Ventana redimensionable", IDM_VID_RESIZE
|
||||||
|
MENUITEM "&Recordar tamaño y posición", IDM_VID_REMEMBER
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
POPUP "Re&nderizador"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||||
|
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||||
|
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||||
|
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||||
|
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
|
||||||
|
#endif
|
||||||
|
#ifdef USE_VNC
|
||||||
|
MENUITEM "&VNC", IDM_VID_VNC
|
||||||
|
#endif
|
||||||
|
END
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&specificar dimensiones...", IDM_VID_SPECIFY_DIM
|
||||||
|
MENUITEM "F&orzar ratio 4:3", IDM_VID_FORCE43
|
||||||
|
POPUP "&Factor de escalado de ventana"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||||
|
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||||
|
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||||
|
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||||
|
END
|
||||||
|
POPUP "&Método de filtrado"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Más cercano", IDM_VID_FILTER_NEAREST
|
||||||
|
MENUITEM "&Lineal", IDM_VID_FILTER_LINEAR
|
||||||
|
END
|
||||||
|
MENUITEM "&Escalado alta densidad", IDM_VID_HIDPI
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Pantalla completa\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||||
|
POPUP "Escalado pantalla completa"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Estirar", IDM_VID_FS_FULL
|
||||||
|
MENUITEM "&4:3", IDM_VID_FS_43
|
||||||
|
MENUITEM "&Píxeles cuadrados (Mant. aspecto)", IDM_VID_FS_KEEPRATIO
|
||||||
|
MENUITEM "&Escalado valor entero", IDM_VID_FS_INT
|
||||||
|
END
|
||||||
|
POPUP "&Ajustes EGA/(S)VGA"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Monitor VGA invertido", IDM_VID_INVERT
|
||||||
|
POPUP "&Tipo de pantalla VGA"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
|
||||||
|
MENUITEM "RGB &Grises", IDM_VID_GRAY_MONO
|
||||||
|
MENUITEM "Monitor &Ámbar", IDM_VID_GRAY_AMBER
|
||||||
|
MENUITEM "Monitor &Verde", IDM_VID_GRAY_GREEN
|
||||||
|
MENUITEM "Monitor &Blanco", IDM_VID_GRAY_WHITE
|
||||||
|
END
|
||||||
|
POPUP "&Conversión a grises"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||||
|
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||||
|
MENUITEM "&Media", IDM_VID_GRAYCT_AVE
|
||||||
|
END
|
||||||
|
END
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Overscan CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
|
||||||
|
MENUITEM "Cambiar contraste para pantalla &monocroma", IDM_VID_CGACON
|
||||||
|
END
|
||||||
|
MENUITEM "&Medios", IDM_MEDIA
|
||||||
|
POPUP "&Herramientas"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Ajustes...", IDM_CONFIG
|
||||||
|
MENUITEM "&Actualizar iconos en barra de estado", IDM_UPDATE_ICONS
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Preferencias...", IDM_PREFERENCES
|
||||||
|
# ifdef USE_DISCORD
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Habilitar integración con &Discord", IDM_DISCORD
|
||||||
|
# endif
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN
|
||||||
|
#ifdef MTR_ENABLED
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Comenzar traza\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||||
|
MENUITEM "Terminar traza\tCtrl+T", IDM_ACTION_END_TRACE
|
||||||
|
#endif
|
||||||
|
END
|
||||||
|
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||||
|
POPUP "&Trazas"
|
||||||
|
BEGIN
|
||||||
|
# ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
MENUITEM "Habilitar trazas de BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_CDROM_LOG
|
||||||
|
MENUITEM "Habilitar trazas de CD-ROM\tCtrl+F5", IDM_LOG_CDROM
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_D86F_LOG
|
||||||
|
MENUITEM "Habilitar trazas de disquete (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_FDC_LOG
|
||||||
|
MENUITEM "Habilitar trazas de controladora de disquete\tCtrl+F7", IDM_LOG_FDC
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_IDE_LOG
|
||||||
|
MENUITEM "Habilitar trazas de IDE\tCtrl+F8", IDM_LOG_IDE
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_SERIAL_LOG
|
||||||
|
MENUITEM "Habilitar trazas de Puerto Serie\tCtrl+F3", IDM_LOG_SERIAL
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_NIC_LOG
|
||||||
|
MENUITEM "Habilitar trazas de Red\tCtrl+F9", IDM_LOG_NIC
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_LOG_COMMANDS
|
||||||
|
# ifdef ENABLE_LOG_TOGGLES
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_LOG_BREAKPOINT
|
||||||
|
MENUITEM "&Punto de ruptura de traza\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_VRAM_DUMP
|
||||||
|
MENUITEM "Volcar RAM de &video\tCtrl+F1", IDM_DUMP_VRAM
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
END
|
||||||
|
#endif
|
||||||
|
POPUP "&Ayuda"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Documentación...", IDM_DOCS
|
||||||
|
MENUITEM "&Acerca de 86Box...", IDM_ABOUT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
StatusBarMenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
END
|
||||||
|
|
||||||
|
CassetteSubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Nueva imagen...", IDM_CASSETTE_IMAGE_NEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Imagen &Existente...", IDM_CASSETTE_IMAGE_EXISTING
|
||||||
|
MENUITEM "Imagen Existente (&Sólo-lectura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Grabar", IDM_CASSETTE_RECORD
|
||||||
|
MENUITEM "&Reproducir", IDM_CASSETTE_PLAY
|
||||||
|
MENUITEM "&Rebobinar al inicio", IDM_CASSETTE_REWIND
|
||||||
|
MENUITEM "&Avance rápido al final", IDM_CASSETTE_FAST_FORWARD
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer", IDM_CASSETTE_EJECT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
CartridgeSubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Imagen...", IDM_CARTRIDGE_IMAGE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer", IDM_CARTRIDGE_EJECT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
FloppySubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Nueva imagen...", IDM_FLOPPY_IMAGE_NEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Imagen &existente...", IDM_FLOPPY_IMAGE_EXISTING
|
||||||
|
MENUITEM "Imagen existente (&sólo-lectura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xportar a 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer", IDM_FLOPPY_EJECT
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
CdromSubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Silenciar", IDM_CDROM_MUTE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer disco", IDM_CDROM_EMPTY
|
||||||
|
MENUITEM "&Recargar imagen previa", IDM_CDROM_RELOAD
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Imagen...", IDM_CDROM_IMAGE
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
ZIPSubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Nueva imagen...", IDM_ZIP_IMAGE_NEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Imagen &existente...", IDM_ZIP_IMAGE_EXISTING
|
||||||
|
MENUITEM "Imagen existente (&sólo-lectura)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer", IDM_ZIP_EJECT
|
||||||
|
MENUITEM "&Recargar imagen previa", IDM_ZIP_RELOAD
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
MOSubmenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP ""
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Nueva imagen...", IDM_MO_IMAGE_NEW
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Imagen &existente...", IDM_MO_IMAGE_EXISTING
|
||||||
|
MENUITEM "Imagen existente (&sólo-lectura)...", IDM_MO_IMAGE_EXISTING_WP
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "E&xtraer", IDM_MO_EJECT
|
||||||
|
MENUITEM "&Recargar imagen previa", IDM_MO_RELOAD
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||||
|
VidGLSubMenu MENU DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
POPUP "&Tasa de refresco objetivo"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&Sincronizar con vídeo", IDM_VID_GL_FPS_BLITTER
|
||||||
|
MENUITEM "&25 fps", IDM_VID_GL_FPS_25
|
||||||
|
MENUITEM "&30 fps", IDM_VID_GL_FPS_30
|
||||||
|
MENUITEM "&50 fps", IDM_VID_GL_FPS_50
|
||||||
|
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||||
|
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||||
|
END
|
||||||
|
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||||
|
MENUITEM "&Seleccionar shader...", IDM_VID_GL_SHADER
|
||||||
|
MENUITEM "&Eliminar shader", IDM_VID_GL_NOSHADER
|
||||||
|
END
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Dialog
|
||||||
|
//
|
||||||
|
|
||||||
|
#define STR_PREFERENCES "Preferencias de 86Box"
|
||||||
|
#define STR_SND_GAIN "Ganancia de Sonido"
|
||||||
|
#define STR_NEW_FLOPPY "Nueva Imagen"
|
||||||
|
#define STR_CONFIG "Ajustes de Máquina"
|
||||||
|
#define STR_SPECIFY_DIM "Especificar Dimensiones de la Ventana Principal"
|
||||||
|
|
||||||
|
#define STR_OK "Aceptar"
|
||||||
|
#define STR_CANCEL "Cancelar"
|
||||||
|
#define STR_GLOBAL "Salvar estos ajustes como por &defecto globalmente"
|
||||||
|
#define STR_DEFAULT "&Por defecto"
|
||||||
|
#define STR_LANGUAGE "Idioma:"
|
||||||
|
#define STR_ICONSET "Juego de iconos:"
|
||||||
|
|
||||||
|
#define STR_GAIN "Ganancia"
|
||||||
|
|
||||||
|
#define STR_FILE_NAME "Nombre de archivo:"
|
||||||
|
#define STR_DISK_SIZE "Tamaño de disco:"
|
||||||
|
#define STR_RPM_MODE "Modo RPM:"
|
||||||
|
#define STR_PROGRESS "Progreso:"
|
||||||
|
|
||||||
|
#define STR_WIDTH "Ancho:"
|
||||||
|
#define STR_HEIGHT "Alto:"
|
||||||
|
#define STR_LOCK_TO_SIZE "Bloquear a este tamaño"
|
||||||
|
|
||||||
|
#define STR_MACHINE_TYPE "Tipo de máquina:"
|
||||||
|
#define STR_MACHINE "Máquina:"
|
||||||
|
#define STR_CONFIGURE "Configurar"
|
||||||
|
#define STR_CPU_TYPE "Tipo de CPU:"
|
||||||
|
#define STR_SPEED "Velocidad:"
|
||||||
|
#define STR_FPU "FPU:"
|
||||||
|
#define STR_WAIT_STATES "Estados en espera:"
|
||||||
|
#define STR_MB "MB"
|
||||||
|
#define STR_MEMORY "Memoria:"
|
||||||
|
#define STR_TIME_SYNC "Sincronización horaria"
|
||||||
|
#define STR_DISABLED "Deshabilitado"
|
||||||
|
#define STR_ENABLED_LOCAL "Habilitado (hora local)"
|
||||||
|
#define STR_ENABLED_UTC "Habilitado (UTC)"
|
||||||
|
#define STR_DYNAREC "Recompilador Dinámico"
|
||||||
|
|
||||||
|
#define STR_VIDEO "Vídeo:"
|
||||||
|
#define STR_VOODOO "Voodoo Graphics"
|
||||||
|
|
||||||
|
#define STR_MOUSE "Ratón:"
|
||||||
|
#define STR_JOYSTICK "Mando:"
|
||||||
|
#define STR_JOY1 "Mando 1..."
|
||||||
|
#define STR_JOY2 "Mando 2..."
|
||||||
|
#define STR_JOY3 "Mando 3..."
|
||||||
|
#define STR_JOY4 "Mando 4..."
|
||||||
|
|
||||||
|
#define STR_SOUND "Tarjeta de sonido:"
|
||||||
|
#define STR_MIDI "Dispositivo MIDI de salida:"
|
||||||
|
#define STR_MIDI_IN "Dispositivo MIDI de entrada:"
|
||||||
|
#define STR_MPU401 "MPU-401 independiente"
|
||||||
|
#define STR_SSI "Innovation SSI-2001"
|
||||||
|
#define STR_CMS "CMS / Game Blaster"
|
||||||
|
#define STR_GUS "Gravis Ultrasound"
|
||||||
|
#define STR_FLOAT "Usar sonido FLOAT32"
|
||||||
|
|
||||||
|
#define STR_NET_TYPE "Tipo de red:"
|
||||||
|
#define STR_PCAP "Dispositivo PCap:"
|
||||||
|
#define STR_NET "Adaptador de red:"
|
||||||
|
|
||||||
|
#define STR_LPT1 "Dispositivo LPT1:"
|
||||||
|
#define STR_LPT2 "Dispositivo LPT2:"
|
||||||
|
#define STR_LPT3 "Dispositivo LPT3:"
|
||||||
|
#define STR_SERIAL1 "Puerto serie 1"
|
||||||
|
#define STR_SERIAL2 "Puerto serie 2"
|
||||||
|
#define STR_SERIAL3 "Puerto serie 3"
|
||||||
|
#define STR_SERIAL4 "Puerto serie 4"
|
||||||
|
#define STR_PARALLEL1 "Puerto paralelo 1"
|
||||||
|
#define STR_PARALLEL2 "Puerto paralelo 2"
|
||||||
|
#define STR_PARALLEL3 "Puerto paralelo 3"
|
||||||
|
|
||||||
|
#define STR_HDC "Controladora HD:"
|
||||||
|
#define STR_FDC "Controladora FD:"
|
||||||
|
#define STR_IDE_TER "Tercera controladora IDE"
|
||||||
|
#define STR_IDE_QUA "Cuarta controladora IDE"
|
||||||
|
#define STR_SCSI "SCSI"
|
||||||
|
#define STR_SCSI_1 "Controladora 1:"
|
||||||
|
#define STR_SCSI_2 "Controladora 2:"
|
||||||
|
#define STR_SCSI_3 "Controladora 3:"
|
||||||
|
#define STR_SCSI_4 "Controladora 4:"
|
||||||
|
#define STR_CASSETTE "Cassette"
|
||||||
|
|
||||||
|
#define STR_HDD "Discos duros:"
|
||||||
|
#define STR_NEW "&Nuevo..."
|
||||||
|
#define STR_EXISTING "&Existente..."
|
||||||
|
#define STR_REMOVE "E&liminar"
|
||||||
|
#define STR_BUS "Bus:"
|
||||||
|
#define STR_CHANNEL "Canal:"
|
||||||
|
#define STR_ID "ID:"
|
||||||
|
|
||||||
|
#define STR_SPECIFY "E&specificar..."
|
||||||
|
#define STR_SECTORS "Sectores:"
|
||||||
|
#define STR_HEADS "Cabezas:"
|
||||||
|
#define STR_CYLS "Cilindros:"
|
||||||
|
#define STR_SIZE_MB "Tamaño (MB):"
|
||||||
|
#define STR_TYPE "Tipo:"
|
||||||
|
#define STR_IMG_FORMAT "Formato de imagen:"
|
||||||
|
#define STR_BLOCK_SIZE "Tamaño de bloque:"
|
||||||
|
|
||||||
|
#define STR_FLOPPY_DRIVES "Unidades de disquete:"
|
||||||
|
#define STR_TURBO "Temporizaciones Turbo"
|
||||||
|
#define STR_CHECKBPB "Chequear BPB"
|
||||||
|
#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
|
||||||
|
|
||||||
|
#define STR_MO_DRIVES "Unidades MO:"
|
||||||
|
#define STR_ZIP_DRIVES "Unidades ZIP:"
|
||||||
|
#define STR_250 "ZIP 250"
|
||||||
|
|
||||||
|
#define STR_ISARTC "ISA RTC:"
|
||||||
|
#define STR_ISAMEM "Expansión de Memoria ISA"
|
||||||
|
#define STR_ISAMEM_1 "Tarjeta 1:"
|
||||||
|
#define STR_ISAMEM_2 "Tarjeta 2:"
|
||||||
|
#define STR_ISAMEM_3 "Tarjeta 3:"
|
||||||
|
#define STR_ISAMEM_4 "Tarjeta 4:"
|
||||||
|
#define STR_BUGGER "Dispositivo ISABugger"
|
||||||
|
#define STR_POSTCARD "Tarjeta POST"
|
||||||
|
|
||||||
|
#define FONT_SIZE 9
|
||||||
|
#define FONT_NAME "Segoe UI"
|
||||||
|
|
||||||
|
#include "dialogs.rc"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// String Table
|
||||||
|
//
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
2048 "86Box"
|
||||||
|
IDS_2049 "Error"
|
||||||
|
IDS_2050 "Error fatal"
|
||||||
|
IDS_2051 "<reservado>"
|
||||||
|
IDS_2052 "Pulsa CTRL+ALT+AVPÁG para volver a modo ventana."
|
||||||
|
IDS_2053 "Velocidad"
|
||||||
|
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||||
|
IDS_2055 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||||
|
IDS_2056 "86Box no pudo encontrar ninguna imagen ROM usable.\n\nPor favor <a href=""https://github.com/86Box/roms/releases/latest"">descarga</a> un grupo de imágenes y extráelas en el directorio ""roms""."
|
||||||
|
IDS_2057 "(vacío)"
|
||||||
|
IDS_2058 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2059 "Turbo"
|
||||||
|
IDS_2060 "On"
|
||||||
|
IDS_2061 "Off"
|
||||||
|
IDS_2062 "Todas las imagenes (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
|
||||||
|
IDS_2063 "La máquina ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una máquina disponible."
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_2064 "La tarjeta de vídeo ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una tarjeta de vídeo disponible."
|
||||||
|
IDS_2065 "Máquina"
|
||||||
|
IDS_2066 "Vídeo"
|
||||||
|
IDS_2067 "Dispositivos de Entrada"
|
||||||
|
IDS_2068 "Sonido"
|
||||||
|
IDS_2069 "Red"
|
||||||
|
IDS_2070 "Puertos (COM y LPT)"
|
||||||
|
IDS_2071 "Controladoras de Almacenamiento"
|
||||||
|
IDS_2072 "Discos Duros"
|
||||||
|
IDS_2073 "Disquetes y unidades de CD-ROM"
|
||||||
|
IDS_2074 "Otros dispositivos extraíbles"
|
||||||
|
IDS_2075 "Otros periféricos"
|
||||||
|
IDS_2076 "Imágenes de superficie (*.86F)\0*.86F\0"
|
||||||
|
IDS_2077 "Haz click para capturar el ratón"
|
||||||
|
IDS_2078 "Pulsa F8+F12 para liberar el ratón"
|
||||||
|
IDS_2079 "Pulsa F8+F12 o el botón central para liberar el ratón"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_2080 "Incapaz de inicializar FluidSynth"
|
||||||
|
IDS_2081 "Bus"
|
||||||
|
IDS_2082 "Archivo"
|
||||||
|
IDS_2083 "C"
|
||||||
|
IDS_2084 "H"
|
||||||
|
IDS_2085 "S"
|
||||||
|
IDS_2086 "MB"
|
||||||
|
IDS_2087 "Chequear BPB"
|
||||||
|
IDS_2088 "KB"
|
||||||
|
IDS_2089 "Incapaz de inicializar el renderizador de vídeo."
|
||||||
|
IDS_2090 "Por defecto"
|
||||||
|
IDS_2091 "%i estado(s) de Espera"
|
||||||
|
IDS_2092 "Tipo"
|
||||||
|
IDS_2093 "Incapaz de configurar PCap"
|
||||||
|
IDS_2094 "No se encontraron dispositivos PCap"
|
||||||
|
IDS_2095 "Dispositivo PCap inválido"
|
||||||
|
IDS_2096 "Mando(s) de 2 botones estándar"
|
||||||
|
IDS_2097 "Mando de 4 botones estándar"
|
||||||
|
IDS_2098 "Mando de 6 botones estándar"
|
||||||
|
IDS_2099 "Mando de 8 botones estándar"
|
||||||
|
IDS_2100 "CH Flightstick Pro"
|
||||||
|
IDS_2101 "Microsoft SideWinder Pad"
|
||||||
|
IDS_2102 "Thrustmaster Flight Control System"
|
||||||
|
IDS_2103 "Ninguno"
|
||||||
|
IDS_2104 "Incapaz de cargar aceleradores de teclado."
|
||||||
|
IDS_2105 "Incapaz de registrar entrada directa."
|
||||||
|
IDS_2106 "%u"
|
||||||
|
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||||
|
IDS_2108 "Disquete %i (%s): %ls"
|
||||||
|
IDS_2109 "Todas las Imágenes (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2110 "Incapaz de inicializar FreeType"
|
||||||
|
IDS_2111 "Incapaz de inicializar SDL, se requiere SDL2.dll"
|
||||||
|
IDS_2112 "¿Seguro que quieres resetear la máquina emulada?"
|
||||||
|
IDS_2113 "¿Seguro que quieres cerrar 86Box?"
|
||||||
|
IDS_2114 "Incapaz de inicializar Ghostscript"
|
||||||
|
IDS_2115 "MO %i (%ls): %ls"
|
||||||
|
IDS_2116 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2117 "¡Bienvenido a 86Box!"
|
||||||
|
IDS_2118 "Controladora interna"
|
||||||
|
IDS_2119 "Salir"
|
||||||
|
IDS_2120 "No se encontraron ROMs"
|
||||||
|
IDS_2121 "¿Quieres guardar los ajustes?"
|
||||||
|
IDS_2122 "Se hará hard reset de la máquina emulada."
|
||||||
|
IDS_2123 "Guardar"
|
||||||
|
IDS_2124 "Acerca de 86Box"
|
||||||
|
IDS_2125 "86Box v" EMU_VERSION
|
||||||
|
|
||||||
|
IDS_2126 "Un emulador de ordenadores antigüos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, y otros.\n\nLiberado bajo la GNU General Public License versión 2 o posterior. Ver LICENSE para más información."
|
||||||
|
IDS_2127 "Aceptar"
|
||||||
|
IDS_2128 "Hardware no disponible"
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define LIB_NAME_PCAP "WinPcap"
|
||||||
|
#else
|
||||||
|
#define LIB_NAME_PCAP "libpcap"
|
||||||
|
#endif
|
||||||
|
IDS_2129 "Asegúrate de que " LIB_NAME_PCAP " está instalado y de que estás en una conexión de red compatible con " LIB_NAME_PCAP "."
|
||||||
|
IDS_2130 "Configuración inválida"
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||||
|
#else
|
||||||
|
#define LIB_NAME_FREETYPE "libfreetype"
|
||||||
|
#endif
|
||||||
|
IDS_2131 LIB_NAME_FREETYPE " es necesaria para emulación de impresión ESC/P."
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define LIB_NAME_GS "gsdll32.dll"
|
||||||
|
#else
|
||||||
|
#define LIB_NAME_GS "libgs"
|
||||||
|
#endif
|
||||||
|
IDS_2132 LIB_NAME_GS " es necesaria para la conversión automática de archivos PostScript a PDF.\n\nCualquier documento enviado a la impresora genérica postScript se guardará como archivo PostScript (.ps)."
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||||
|
#else
|
||||||
|
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||||
|
#endif
|
||||||
|
IDS_2133 LIB_NAME_FLUIDSYNTH " es necesario para salida MIDI FluidSynth."
|
||||||
|
IDS_2134 "Entrando en modo pantalla completa"
|
||||||
|
IDS_2135 "No mostrar más este mensaje"
|
||||||
|
IDS_2136 "No salir"
|
||||||
|
IDS_2137 "Resetear"
|
||||||
|
IDS_2138 "No resetear"
|
||||||
|
IDS_2139 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2140 "Imágenes de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2141 "%hs Configuración de Dispositivo"
|
||||||
|
IDS_2142 "Monitor en modo ahorro"
|
||||||
|
IDS_2143 "Shaders OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2144 "Opciones OpenGL"
|
||||||
|
IDS_2145 "Estás cargando una configuración no soportada"
|
||||||
|
IDS_2146 "El Filtrado de tipo de CPU basado en máquina seleccionada está deshabilitado para la esta máquina.\n\nEsto hace posible seleccionar una CPU que sea incompatible con esta máquina. Por ello, pueden aparecer incompatibilidader con la BIOS de la máquina u otro software.\n\nActivar este ajuste no está oficialmente soportado y cualquier reporte de fallo puede ser cerrado como inválido."
|
||||||
|
IDS_2147 "Continuar"
|
||||||
|
IDS_2148 "Cassette: %s"
|
||||||
|
IDS_2149 "Imágenes de Cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_2150 "Cartucho %i: %ls"
|
||||||
|
IDS_2151 "Imágenes de Cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_4096 "Disco duro (%s)"
|
||||||
|
IDS_4097 "%01i:%01i"
|
||||||
|
IDS_4098 "%01i"
|
||||||
|
IDS_4099 "Nunca hubo unidades de CD-ROM MFM/RLL o ESDI"
|
||||||
|
IDS_4100 "A medida..."
|
||||||
|
IDS_4101 "A medida (grande)..."
|
||||||
|
IDS_4102 "Añadir Nuevo Disco Duro"
|
||||||
|
IDS_4103 "Añadir Disco Duro Existente"
|
||||||
|
IDS_4104 "Las imágenes de disco HDI no pueden superar los 4 GB."
|
||||||
|
IDS_4105 "Las imágenes de disco no pueden superar los 127 GB."
|
||||||
|
IDS_4106 "Imágenes de Disco Duro (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_4107 "No se pudo leer el archivo"
|
||||||
|
IDS_4108 "No se pudo escribir el archivo"
|
||||||
|
IDS_4109 "No se soportan las imágenes HDI o HDX con un tamaño de sector diferente a 512."
|
||||||
|
IDS_4110 "No se soporta aún el USB"
|
||||||
|
IDS_4111 "La imagen de disco ya existe"
|
||||||
|
IDS_4112 "Por favor especifique un nombre de archivo válido."
|
||||||
|
IDS_4113 "Imagen de disco creada"
|
||||||
|
IDS_4114 "Asegúrese de que el archivo existe y es leíble."
|
||||||
|
IDS_4115 "Asegúrese de que el archivo en un directorio con permiso de escritura."
|
||||||
|
IDS_4116 "Imagen de disco demasiado grande"
|
||||||
|
IDS_4117 "Recuerde particionar y formatear la nueva unidad."
|
||||||
|
IDS_4118 "El archivo selecionado será sobreescrito. ¿Está seguro de querer usarlo?"
|
||||||
|
IDS_4119 "Imagen de disco no soportada"
|
||||||
|
IDS_4120 "Sobreescribir"
|
||||||
|
IDS_4121 "No sobreescribir"
|
||||||
|
IDS_4122 "Imagen plana (.img)"
|
||||||
|
IDS_4123 "Imagen HDI (.hdi)"
|
||||||
|
IDS_4124 "Imagen HDX (.hdx)"
|
||||||
|
IDS_4125 "VHD de tamaño fijo (.vhd)"
|
||||||
|
IDS_4126 "VHD de tamaño dinámico (.vhd)"
|
||||||
|
IDS_4127 "VHD diferencial (.vhd)"
|
||||||
|
IDS_4128 "Bloques grandes (2 MB)"
|
||||||
|
IDS_4129 "Bloques pequeños (512 KB)"
|
||||||
|
IDS_4130 "Archivos VHD (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
|
||||||
|
IDS_4131 "Seleccione el VHD padre"
|
||||||
|
IDS_4132 "Esto puede deberse a que la imagen padre se modificó después de que la imagen diferencial se crease.\n\nTambién puede ocurrir si las imágenes fueron movidas o copiadas, o por un fallo en el programa que creó este disco.\n\n¿Quiere corregir los registros de tiempo?"
|
||||||
|
IDS_4133 "Las marcas de tiempo del padre e hijo no coinciden"
|
||||||
|
IDS_4134 "No se pudo corregir la marca de tiempo del VHD."
|
||||||
|
IDS_4135 "%01i:%02i"
|
||||||
|
|
||||||
|
IDS_4352 "MFM/RLL"
|
||||||
|
IDS_4353 "XTA"
|
||||||
|
IDS_4354 "ESDI"
|
||||||
|
IDS_4355 "IDE"
|
||||||
|
IDS_4356 "ATAPI"
|
||||||
|
IDS_4357 "SCSI"
|
||||||
|
|
||||||
|
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||||
|
IDS_4609 "XTA (%01i:%01i)"
|
||||||
|
IDS_4610 "ESDI (%01i:%01i)"
|
||||||
|
IDS_4611 "IDE (%01i:%01i)"
|
||||||
|
IDS_4612 "ATAPI (%01i:%01i)"
|
||||||
|
IDS_4613 "SCSI (%01i:%02i)"
|
||||||
|
|
||||||
|
IDS_5120 "CD-ROM %i (%s): %s"
|
||||||
|
|
||||||
|
IDS_5376 "Deshabilitado"
|
||||||
|
IDS_5381 "ATAPI"
|
||||||
|
IDS_5382 "SCSI"
|
||||||
|
|
||||||
|
IDS_5632 "Deshabilitado"
|
||||||
|
IDS_5637 "ATAPI (%01i:%01i)"
|
||||||
|
IDS_5638 "SCSI (%01i:%02i)"
|
||||||
|
|
||||||
|
IDS_5888 "160 kB"
|
||||||
|
IDS_5889 "180 kB"
|
||||||
|
IDS_5890 "320 kB"
|
||||||
|
IDS_5891 "360 kB"
|
||||||
|
IDS_5892 "640 kB"
|
||||||
|
IDS_5893 "720 kB"
|
||||||
|
IDS_5894 "1.2 MB"
|
||||||
|
IDS_5895 "1.25 MB"
|
||||||
|
IDS_5896 "1.44 MB"
|
||||||
|
IDS_5897 "DMF (cluster 1024)"
|
||||||
|
IDS_5898 "DMF (cluster 2048)"
|
||||||
|
IDS_5899 "2.88 MB"
|
||||||
|
IDS_5900 "ZIP 100"
|
||||||
|
IDS_5901 "ZIP 250"
|
||||||
|
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||||
|
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||||
|
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||||
|
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||||
|
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||||
|
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||||
|
IDS_5908 "5.25"" 600Mb M.O."
|
||||||
|
IDS_5909 "5.25"" 650Mb M.O."
|
||||||
|
IDS_5910 "5.25"" 1Gb M.O."
|
||||||
|
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||||
|
|
||||||
|
IDS_6144 "RPM perfectas"
|
||||||
|
IDS_6145 "1%% por debajo de RPM perfectas"
|
||||||
|
IDS_6146 "1.5%% por debajo de RPM perfectas"
|
||||||
|
IDS_6147 "2%% por debajo de RPM perfectas"
|
||||||
|
|
||||||
|
IDS_7168 "(Por defecto del sistema)"
|
||||||
|
END
|
||||||
|
#define IDS_LANG_ESES IDS_7168
|
||||||
|
|
||||||
|
// Spanish (Spain) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
Reference in New Issue
Block a user