Add default video timing option. Patch from leilei.
This commit is contained in:
parent
604dce908b
commit
3b335f32aa
3 changed files with 78 additions and 50 deletions
2
src/pc.c
2
src/pc.c
|
|
@ -700,7 +700,7 @@ void loadconfig(char *fn)
|
||||||
gfxcard = video_get_video_from_internal_name(p);
|
gfxcard = video_get_video_from_internal_name(p);
|
||||||
else
|
else
|
||||||
gfxcard = 0;
|
gfxcard = 0;
|
||||||
video_speed = config_get_int(CFG_MACHINE, NULL, "video_speed", 3);
|
video_speed = config_get_int(CFG_MACHINE, NULL, "video_speed", -1);
|
||||||
p = (char *)config_get_string(CFG_MACHINE, NULL, "sndcard", "");
|
p = (char *)config_get_string(CFG_MACHINE, NULL, "sndcard", "");
|
||||||
if (p)
|
if (p)
|
||||||
sound_card_current = sound_card_get_from_internal_name(p);
|
sound_card_current = sound_card_get_from_internal_name(p);
|
||||||
|
|
|
||||||
119
src/video.c
119
src/video.c
|
|
@ -44,43 +44,54 @@
|
||||||
#include "vid_t3100e.h"
|
#include "vid_t3100e.h"
|
||||||
#include "vid_t1000.h"
|
#include "vid_t1000.h"
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
VIDEO_ISA = 0,
|
||||||
|
VIDEO_BUS
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char name[64];
|
char name[64];
|
||||||
char internal_name[24];
|
char internal_name[24];
|
||||||
device_t *device;
|
device_t *device;
|
||||||
int legacy_id;
|
int legacy_id;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int type;
|
||||||
|
int b, w, l;
|
||||||
|
} timing;
|
||||||
} VIDEO_CARD;
|
} VIDEO_CARD;
|
||||||
|
|
||||||
static VIDEO_CARD video_cards[] =
|
static VIDEO_CARD video_cards[] =
|
||||||
{
|
{
|
||||||
{"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX},
|
{"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX, {VIDEO_BUS, 4, 8, 16}},
|
||||||
{"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2},
|
{"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2, {VIDEO_BUS, 3, 3, 4}},
|
||||||
{"ATI VGA Charger (ATI-28800)", "ati28800", &ati28800_device, GFX_VGACHARGER},
|
{"ATI VGA Charger (ATI-28800)", "ati28800", &ati28800_device, GFX_VGACHARGER, {VIDEO_ISA, 3, 3, 6}},
|
||||||
{"ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16},
|
{"ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16, {VIDEO_ISA, 3, 3, 6}},
|
||||||
{"CGA", "cga", &cga_device, GFX_CGA},
|
{"CGA", "cga", &cga_device, GFX_CGA, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429},
|
{"Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429, {VIDEO_ISA, 3, 3, 6}},
|
||||||
{"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32},
|
{"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32, {VIDEO_BUS, 4, 5, 10}},
|
||||||
{"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE},
|
{"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE, {VIDEO_BUS, 3, 5, 10}},
|
||||||
{"EGA", "ega", &ega_device, GFX_EGA},
|
{"EGA", "ega", &ega_device, GFX_EGA, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"Hercules", "hercules", &hercules_device, GFX_HERCULES},
|
{"Hercules", "hercules", &hercules_device, GFX_HERCULES, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR},
|
{"Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"MDA", "mda", &mda_device, GFX_MDA},
|
{"MDA", "mda", &mda_device, GFX_MDA, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"MDSI Genius", "genius", &genius_device, GFX_GENIUS},
|
{"MDSI Genius", "genius", &genius_device, GFX_GENIUS, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"Number Nine 9FX (S3 Trio64)", "n9_9fx", &s3_9fx_device, GFX_N9_9FX},
|
{"Number Nine 9FX (S3 Trio64)", "n9_9fx", &s3_9fx_device, GFX_N9_9FX, {VIDEO_BUS, 3, 5, 10}},
|
||||||
{"OAK OTI-067", "oti067", &oti067_device, GFX_OTI067},
|
{"OAK OTI-067", "oti067", &oti067_device, GFX_OTI067, {VIDEO_ISA, 6, 8, 16}},
|
||||||
{"Olivetti GO481 (Paradise PVGA1A)", "olivetti_go481", ¶dise_pvga1a_oli_go481_device, GFX_OLIVETTI_GO481},
|
{"Olivetti GO481 (Paradise PVGA1A)", "olivetti_go481", ¶dise_pvga1a_oli_go481_device, GFX_OLIVETTI_GO481, {VIDEO_ISA, 6, 8, 16}},
|
||||||
{"Paradise Bahamas 64 (S3 Vision864)", "bahamas64", &s3_bahamas64_device, GFX_BAHAMAS64},
|
{"Paradise Bahamas 64 (S3 Vision864)", "bahamas64", &s3_bahamas64_device, GFX_BAHAMAS64, {VIDEO_BUS, 4, 5, 10}},
|
||||||
{"Phoenix S3 Trio32", "px_trio32", &s3_phoenix_trio32_device, GFX_PHOENIX_TRIO32},
|
{"Phoenix S3 Trio32", "px_trio32", &s3_phoenix_trio32_device, GFX_PHOENIX_TRIO32, {VIDEO_BUS, 4, 5, 10}},
|
||||||
{"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64},
|
{"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64, {VIDEO_BUS, 3, 5, 10}},
|
||||||
{"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS},
|
{"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX},
|
{"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX, {VIDEO_BUS, 2, 3, 4}},
|
||||||
{"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA},
|
{"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA, {VIDEO_ISA, 3, 3, 6}},
|
||||||
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000},
|
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000, {VIDEO_ISA, 3, 3, 6}},
|
||||||
{"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440},
|
{"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440, {VIDEO_BUS, 4, 8, 16}},
|
||||||
{"VGA", "vga", &vga_device, GFX_VGA},
|
{"VGA", "vga", &vga_device, GFX_VGA, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"Wyse 700", "wy700", &wy700_device, GFX_WY700},
|
{"Wyse 700", "wy700", &wy700_device, GFX_WY700, {VIDEO_ISA, 8, 16, 32}},
|
||||||
{"", "", NULL, 0}
|
{"", "", NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
int video_card_available(int card)
|
int video_card_available(int card)
|
||||||
|
|
@ -210,14 +221,8 @@ Fast VLB/PCI -
|
||||||
L = 4 bus clocks
|
L = 4 bus clocks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
VIDEO_ISA = 0,
|
|
||||||
VIDEO_BUS
|
|
||||||
};
|
|
||||||
|
|
||||||
int video_speed = 0;
|
int video_speed = 0;
|
||||||
int video_timing[6][4] =
|
int video_timing[7][4] =
|
||||||
{
|
{
|
||||||
{VIDEO_ISA, 8, 16, 32},
|
{VIDEO_ISA, 8, 16, 32},
|
||||||
{VIDEO_ISA, 6, 8, 16},
|
{VIDEO_ISA, 6, 8, 16},
|
||||||
|
|
@ -229,20 +234,42 @@ int video_timing[6][4] =
|
||||||
|
|
||||||
void video_updatetiming()
|
void video_updatetiming()
|
||||||
{
|
{
|
||||||
if (video_timing[video_speed][0] == VIDEO_ISA)
|
if (video_speed == -1)
|
||||||
{
|
{
|
||||||
video_timing_b = (int)(isa_timing * video_timing[video_speed][1]);
|
int new_gfxcard = video_old_to_new(gfxcard);
|
||||||
video_timing_w = (int)(isa_timing * video_timing[video_speed][2]);
|
|
||||||
video_timing_l = (int)(isa_timing * video_timing[video_speed][3]);
|
if (video_cards[new_gfxcard].timing.type == VIDEO_ISA)
|
||||||
}
|
{
|
||||||
|
video_timing_b = (int)(isa_timing * video_cards[new_gfxcard].timing.b);
|
||||||
|
video_timing_w = (int)(isa_timing * video_cards[new_gfxcard].timing.w);
|
||||||
|
video_timing_l = (int)(isa_timing * video_cards[new_gfxcard].timing.l);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
video_timing_b = (int)(bus_timing * video_cards[new_gfxcard].timing.b);
|
||||||
|
video_timing_w = (int)(bus_timing * video_cards[new_gfxcard].timing.w);
|
||||||
|
video_timing_l = (int)(bus_timing * video_cards[new_gfxcard].timing.l);
|
||||||
|
}
|
||||||
|
if (cpu_16bitbus)
|
||||||
|
video_timing_l = video_timing_w * 2;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
video_timing_b = (int)(bus_timing * video_timing[video_speed][1]);
|
if (video_timing[video_speed][0] == VIDEO_ISA)
|
||||||
video_timing_w = (int)(bus_timing * video_timing[video_speed][2]);
|
{
|
||||||
video_timing_l = (int)(bus_timing * video_timing[video_speed][3]);
|
video_timing_b = (int)(isa_timing * video_timing[video_speed][1]);
|
||||||
|
video_timing_w = (int)(isa_timing * video_timing[video_speed][2]);
|
||||||
|
video_timing_l = (int)(isa_timing * video_timing[video_speed][3]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
video_timing_b = (int)(bus_timing * video_timing[video_speed][1]);
|
||||||
|
video_timing_w = (int)(bus_timing * video_timing[video_speed][2]);
|
||||||
|
video_timing_l = (int)(bus_timing * video_timing[video_speed][3]);
|
||||||
|
}
|
||||||
|
if (cpu_16bitbus)
|
||||||
|
video_timing_l = video_timing_w * 2;
|
||||||
}
|
}
|
||||||
if (cpu_16bitbus)
|
|
||||||
video_timing_l = video_timing_w * 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int video_timing_b, video_timing_w, video_timing_l;
|
int video_timing_b, video_timing_w, video_timing_l;
|
||||||
|
|
|
||||||
|
|
@ -469,7 +469,7 @@ int config_dlgsave(void* hdlg)
|
||||||
}
|
}
|
||||||
|
|
||||||
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOSPD"));
|
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOSPD"));
|
||||||
video_speed = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
|
video_speed = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0) - 1;
|
||||||
|
|
||||||
cpu_manufacturer = temp_cpu_m;
|
cpu_manufacturer = temp_cpu_m;
|
||||||
cpu = temp_cpu;
|
cpu = temp_cpu;
|
||||||
|
|
@ -592,13 +592,14 @@ int config_dlgproc(void* hdlg, int message, INT_PARAM wParam, LONG_PARAM lParam)
|
||||||
|| (cpu_flags & CPU_REQUIRES_DYNAREC), 0);
|
|| (cpu_flags & CPU_REQUIRES_DYNAREC), 0);
|
||||||
|
|
||||||
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOSPD"));
|
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOSPD"));
|
||||||
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Default");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "8-bit");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "8-bit");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Slow 16-bit");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Slow 16-bit");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Fast 16-bit");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Fast 16-bit");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Slow VLB/PCI");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Slow VLB/PCI");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Mid VLB/PCI");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Mid VLB/PCI");
|
||||||
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Fast VLB/PCI");
|
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM) "Fast VLB/PCI");
|
||||||
wx_sendmessage(h, WX_CB_SETCURSEL, video_speed, 0);
|
wx_sendmessage(h, WX_CB_SETCURSEL, video_speed+1, 0);
|
||||||
|
|
||||||
h = wx_getdlgitem(hdlg, WX_ID("IDC_MEMSPIN"));
|
h = wx_getdlgitem(hdlg, WX_ID("IDC_MEMSPIN"));
|
||||||
printf("%d\n", models[model].ram_granularity);
|
printf("%d\n", models[model].ram_granularity);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue