Added meaningful status window information for Mach64 and Sound Blaster.
Disabled some SB debug.
This commit is contained in:
parent
adde1a77a4
commit
2b410a9aea
5 changed files with 137 additions and 17 deletions
|
|
@ -151,8 +151,8 @@ void sb_pro_mixer_write(uint16_t addr, uint8_t val, void *p)
|
|||
mixer->filter = !(mixer->regs[0xe] & 0x20);
|
||||
mixer->bass_l = mixer->bass_r = 8;
|
||||
mixer->treble_l = mixer->treble_r = 8;
|
||||
pclog("%02X %02X %02X\n", mixer->regs[0x04], mixer->regs[0x22], mixer->regs[0x26]);
|
||||
pclog("Mixer - %04X %04X %04X %04X %04X %04X\n", mixer->master_l, mixer->master_r, mixer->voice_l, mixer->voice_r, mixer->fm_l, mixer->fm_r);
|
||||
// pclog("%02X %02X %02X\n", mixer->regs[0x04], mixer->regs[0x22], mixer->regs[0x26]);
|
||||
// pclog("Mixer - %04X %04X %04X %04X %04X %04X\n", mixer->master_l, mixer->master_r, mixer->voice_l, mixer->voice_r, mixer->fm_l, mixer->fm_r);
|
||||
if (mixer->index == 0xe)
|
||||
sb_dsp_set_stereo(&sb->dsp, val & 2);
|
||||
}
|
||||
|
|
@ -211,8 +211,8 @@ void sb_16_mixer_write(uint16_t addr, uint8_t val, void *p)
|
|||
mixer->treble_l = mixer->regs[0x44] >> 4;
|
||||
mixer->treble_r = mixer->regs[0x45] >> 4;
|
||||
mixer->filter = 0;
|
||||
pclog("%02X %02X %02X %02X %02X %02X\n", mixer->regs[0x30], mixer->regs[0x31], mixer->regs[0x32], mixer->regs[0x33], mixer->regs[0x34], mixer->regs[0x35]);
|
||||
pclog("Mixer - %04X %04X %04X %04X %04X %04X\n", mixer->master_l, mixer->master_r, mixer->voice_l, mixer->voice_r, mixer->fm_l, mixer->fm_r);
|
||||
// pclog("%02X %02X %02X %02X %02X %02X\n", mixer->regs[0x30], mixer->regs[0x31], mixer->regs[0x32], mixer->regs[0x33], mixer->regs[0x34], mixer->regs[0x35]);
|
||||
// pclog("Mixer - %04X %04X %04X %04X %04X %04X\n", mixer->master_l, mixer->master_r, mixer->voice_l, mixer->voice_r, mixer->fm_l, mixer->fm_r);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -429,6 +429,13 @@ void sb_speed_changed(void *p)
|
|||
sb_dsp_speed_changed(&sb->dsp);
|
||||
}
|
||||
|
||||
int sb_add_status_info(char *s, int max_len, void *p)
|
||||
{
|
||||
sb_t *sb = (sb_t *)p;
|
||||
|
||||
sb_dsp_add_status_info(s, max_len, &sb->dsp);
|
||||
}
|
||||
|
||||
device_t sb_1_device =
|
||||
{
|
||||
"Sound Blaster v1.0",
|
||||
|
|
@ -438,7 +445,7 @@ device_t sb_1_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_15_device =
|
||||
{
|
||||
|
|
@ -449,7 +456,7 @@ device_t sb_15_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_2_device =
|
||||
{
|
||||
|
|
@ -460,7 +467,7 @@ device_t sb_2_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_pro_v1_device =
|
||||
{
|
||||
|
|
@ -471,7 +478,7 @@ device_t sb_pro_v1_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_pro_v2_device =
|
||||
{
|
||||
|
|
@ -482,7 +489,7 @@ device_t sb_pro_v2_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_16_device =
|
||||
{
|
||||
|
|
@ -493,7 +500,7 @@ device_t sb_16_device =
|
|||
NULL,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
device_t sb_awe32_device =
|
||||
{
|
||||
|
|
@ -504,5 +511,5 @@ device_t sb_awe32_device =
|
|||
sb_awe32_available,
|
||||
sb_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
sb_add_status_info
|
||||
};
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ void sb_dsp_setdma8(sb_dsp_t *dsp, int dma)
|
|||
void sb_exec_command(sb_dsp_t *dsp)
|
||||
{
|
||||
int temp,c;
|
||||
pclog("sb_exec_command : SB command %02X\n", dsp->sb_command);
|
||||
// pclog("sb_exec_command : SB command %02X\n", dsp->sb_command);
|
||||
switch (dsp->sb_command)
|
||||
{
|
||||
case 0x01: /*???*/
|
||||
|
|
@ -516,7 +516,7 @@ void sb_exec_command(sb_dsp_t *dsp)
|
|||
void sb_write(uint16_t a, uint8_t v, void *priv)
|
||||
{
|
||||
sb_dsp_t *dsp = (sb_dsp_t *)priv;
|
||||
printf("sb_write : Write soundblaster %04X %02X %04X:%04X %02X\n",a,v,CS,pc,dsp->sb_command);
|
||||
// printf("sb_write : Write soundblaster %04X %02X %04X:%04X %02X\n",a,v,CS,pc,dsp->sb_command);
|
||||
switch (a&0xF)
|
||||
{
|
||||
case 6: /*Reset*/
|
||||
|
|
@ -550,7 +550,7 @@ uint8_t sb_read(uint16_t a, void *priv)
|
|||
{
|
||||
sb_dsp_t *dsp = (sb_dsp_t *)priv;
|
||||
// if (a==0x224) output=1;
|
||||
pclog("sb_read : Read soundblaster %04X %04X:%04X\n",a,CS,pc);
|
||||
// pclog("sb_read : Read soundblaster %04X %04X:%04X\n",a,CS,pc);
|
||||
switch (a & 0xf)
|
||||
{
|
||||
case 0xA: /*Read data*/
|
||||
|
|
@ -594,7 +594,7 @@ void sb_dsp_init(sb_dsp_t *dsp, int type)
|
|||
|
||||
void sb_dsp_setaddr(sb_dsp_t *dsp, uint16_t addr)
|
||||
{
|
||||
pclog("sb_dsp_setaddr : %04X\n", addr);
|
||||
// pclog("sb_dsp_setaddr : %04X\n", addr);
|
||||
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);
|
||||
dsp->sb_addr = addr;
|
||||
|
|
@ -824,7 +824,7 @@ void pollsb(void *p)
|
|||
{
|
||||
sb_irq(dsp, 1);
|
||||
dsp->sbenable = dsp->sb_8_enable;
|
||||
pclog("SB pause over\n");
|
||||
// pclog("SB pause over\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -912,3 +912,73 @@ void sb_dsp_poll(sb_dsp_t *dsp, int16_t *l, int16_t *r)
|
|||
*l = dsp->sbdatl;
|
||||
*r = dsp->sbdatr;
|
||||
}
|
||||
|
||||
int sb_dsp_add_status_info(char *s, int max_len, sb_dsp_t *dsp)
|
||||
{
|
||||
char temps[128];
|
||||
int cur_len = max_len;
|
||||
int len;
|
||||
int freq;
|
||||
|
||||
if (dsp->sb_timeo < 256)
|
||||
freq = 1000000 / (256 - dsp->sb_timeo);
|
||||
else
|
||||
freq = dsp->sb_timeo - 256;
|
||||
|
||||
if (dsp->sb_8_enable && dsp->sb_8_output)
|
||||
{
|
||||
switch (dsp->sb_8_format)
|
||||
{
|
||||
case 0x00: /*Mono unsigned*/
|
||||
case 0x10: /*Mono signed*/
|
||||
if (dsp->sb_type >= SBPRO && dsp->sb_type < SB16 && dsp->stereo)
|
||||
{
|
||||
strcpy(temps, "SB playback format : 8-bit stereo\n");
|
||||
freq /= 2;
|
||||
}
|
||||
else
|
||||
strcpy(temps, "SB playback format : 8-bit mono\n");
|
||||
break;
|
||||
case 0x20: /*Stereo unsigned*/
|
||||
case 0x30: /*Stereo signed*/
|
||||
strcpy(temps, "SB playback format : 8-bit stereo\n");
|
||||
break;
|
||||
case ADPCM_4:
|
||||
strcpy(temps, "SB playback format : 4-bit ADPCM\n");
|
||||
break;
|
||||
case ADPCM_26:
|
||||
strcpy(temps, "SB playback format : 2.6-bit ADPCM\n");
|
||||
break;
|
||||
case ADPCM_2:
|
||||
strcpy(temps, "SB playback format : 2-bit ADPCM\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (dsp->sb_16_enable && dsp->sb_16_output)
|
||||
{
|
||||
switch (dsp->sb_16_format)
|
||||
{
|
||||
case 0x00: /*Mono unsigned*/
|
||||
case 0x10: /*Mono signed*/
|
||||
strcpy(temps, "SB playback format : 16-bit mono\n");
|
||||
break;
|
||||
case 0x20: /*Stereo unsigned*/
|
||||
case 0x30: /*Stereo signed*/
|
||||
strcpy(temps, "SB playback format : 16-bit stereo\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
strcpy(temps, "SB playback stopped\n");
|
||||
strncat(s, temps, cur_len);
|
||||
cur_len -= strlen(temps);
|
||||
|
||||
if ((dsp->sb_8_enable && dsp->sb_8_output) || (dsp->sb_16_enable && dsp->sb_16_output))
|
||||
{
|
||||
sprintf(temps, "SB playback frequency : %iHz\n", freq);
|
||||
strncat(s, temps, cur_len);
|
||||
cur_len -= strlen(temps);
|
||||
}
|
||||
|
||||
return max_len - cur_len;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,3 +67,5 @@ void sb_dsp_speed_changed(sb_dsp_t *dsp);
|
|||
void sb_dsp_poll(sb_dsp_t *dsp, int16_t *l, int16_t *r);
|
||||
|
||||
void sb_dsp_set_stereo(sb_dsp_t *dsp, int stereo);
|
||||
|
||||
int sb_dsp_add_status_info(char *s, int max_len, sb_dsp_t *dsp);
|
||||
|
|
|
|||
|
|
@ -2088,8 +2088,48 @@ void mach64_force_redraw(void *p)
|
|||
int mach64_add_status_info(char *s, int max_len, void *p)
|
||||
{
|
||||
mach64_t *mach64 = (mach64_t *)p;
|
||||
int cur_len = max_len;
|
||||
|
||||
if (((mach64->crtc_gen_cntl >> 24) & 3) == 3)
|
||||
{
|
||||
svga_t *svga = &mach64->svga;
|
||||
char temps[128];
|
||||
int bpp = 4;
|
||||
|
||||
strncat(s, "Mach64 in native mode\n", cur_len);
|
||||
cur_len -= strlen("Mach64 in native mode\n");
|
||||
|
||||
switch ((mach64->crtc_gen_cntl >> 8) & 7)
|
||||
{
|
||||
case 1: bpp = 4; break;
|
||||
case 2: bpp = 8; break;
|
||||
case 3: bpp = 15; break;
|
||||
case 4: bpp = 16; break;
|
||||
case 5: bpp = 24; break;
|
||||
case 6: bpp = 32; break;
|
||||
}
|
||||
|
||||
sprintf(temps, "Mach64 colour depth : %i bpp\n", bpp);
|
||||
strncat(s, temps, cur_len);
|
||||
cur_len -= strlen(temps);
|
||||
|
||||
return svga_add_status_info(s, max_len, &mach64->svga);
|
||||
sprintf(temps, "Mach64 resolution : %i x %i\n", svga->hdisp, svga->dispend);
|
||||
strncat(s, temps, cur_len);
|
||||
cur_len -= strlen(temps);
|
||||
|
||||
sprintf(temps, "Mach64 refresh rate : %i Hz\n\n", svga->frames);
|
||||
svga->frames = 0;
|
||||
strncat(s, temps, cur_len);
|
||||
cur_len -= strlen(temps);
|
||||
|
||||
return max_len - cur_len;
|
||||
}
|
||||
else
|
||||
{
|
||||
strncat(s, "Mach64 in SVGA mode\n", cur_len);
|
||||
cur_len -= strlen("Mach64 in SVGA mode\n");
|
||||
return svga_add_status_info(s, cur_len, &mach64->svga);
|
||||
}
|
||||
}
|
||||
|
||||
device_t mach64gx_device =
|
||||
|
|
|
|||
|
|
@ -1405,6 +1405,7 @@ BOOL CALLBACK statusdlgproc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lPara
|
|||
SendDlgItemMessage(hdlg,IDC_STEXT7,WM_SETTEXT,(WPARAM)NULL,(LPARAM)s);
|
||||
sprintf(s,"Timer 0 frequency : %fHz",pit_timer0_freq());
|
||||
SendDlgItemMessage(hdlg,IDC_STEXT8,WM_SETTEXT,(WPARAM)NULL,(LPARAM)s);
|
||||
device_s[0] = 0;
|
||||
device_add_status_info(device_s, 4096);
|
||||
SendDlgItemMessage(hdlg,IDC_STEXT_DEVICE,WM_SETTEXT,(WPARAM)NULL,(LPARAM)device_s);
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Reference in a new issue