Add Packard Bell PB570 emulation.
This commit is contained in:
parent
f62652da3b
commit
ce5ae22307
9 changed files with 58 additions and 3 deletions
BIN
nvr/default/pb570.nvr
Normal file
BIN
nvr/default/pb570.nvr
Normal file
Binary file not shown.
|
|
@ -452,6 +452,7 @@ enum
|
|||
ROM_TO16_PC,
|
||||
ROM_COMPAQ_PII,
|
||||
ROM_ELX_PC425X,
|
||||
ROM_PB570,
|
||||
|
||||
ROM_MAX
|
||||
};
|
||||
|
|
|
|||
|
|
@ -167,6 +167,9 @@ void *intel_flash_init(uint8_t type)
|
|||
case ROM_ENDEAVOR:
|
||||
strcpy(flash_path, "endeavor/");
|
||||
break;
|
||||
case ROM_PB570:
|
||||
strcpy(flash_path, "pb570/");
|
||||
break;
|
||||
case ROM_430VX:
|
||||
strcpy(flash_path, "430vx/");
|
||||
break;
|
||||
|
|
|
|||
17
src/mem.c
17
src/mem.c
|
|
@ -844,6 +844,23 @@ int loadbios()
|
|||
romfread(rom, 65536, 1, f);
|
||||
fclose(f);
|
||||
return 1;
|
||||
|
||||
case ROM_PB570:
|
||||
if (!rom_present("gd5430/pci.bin"))
|
||||
break;
|
||||
f = romfopen("pb570/1007by0r.bio", "rb");
|
||||
if (!f) break;
|
||||
fseek(f, 0x80, SEEK_SET);
|
||||
romfread(rom + 0x10000, 0x10000, 1, f);
|
||||
fclose(f);
|
||||
f = romfopen("pb570/1007by0r.bi1", "rb");
|
||||
if (!f) break;
|
||||
fseek(f, 0x80, SEEK_SET);
|
||||
romfread(rom, 0xc000, 1, f);
|
||||
romfread(rom+0xc000, 0x1000, 1, f);
|
||||
fclose(f);
|
||||
biosmask = 0x1ffff;
|
||||
return 1;
|
||||
}
|
||||
printf("Failed to load ROM!\n");
|
||||
if (f) fclose(f);
|
||||
|
|
|
|||
|
|
@ -171,6 +171,7 @@ MODEL models[] =
|
|||
{"[Socket 4] Intel Premiere/PCI", ROM_REVENGE, "revenge", { {"Intel", cpus_Pentium5V}, {"", NULL}, {"", NULL}}, 0, MODEL_AT|MODEL_PCI|MODEL_PS2|MODEL_HAS_IDE, 1, 128, 1, at_batman_init, NULL},
|
||||
|
||||
{"[Socket 5] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", { {"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}}, 0, MODEL_AT|MODEL_PCI|MODEL_PS2|MODEL_HAS_IDE, 1, 128, 1, at_endeavor_init, NULL},
|
||||
{"[Socket 5] Packard Bell PB570", ROM_PB570, "pb570", { {"Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}}, 1, MODEL_AT|MODEL_PCI|MODEL_PS2|MODEL_HAS_IDE, 1, 128, 1, at_endeavor_init, NULL},
|
||||
|
||||
{"[Socket 7] Award 430VX PCI", ROM_430VX, "430vx", { {"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"Cyrix", cpus_6x86}}, 0, MODEL_AT|MODEL_PCI|MODEL_PS2|MODEL_HAS_IDE, 1, 256, 1, at_i430vx_init, NULL},
|
||||
|
||||
|
|
|
|||
|
|
@ -298,7 +298,8 @@ void loadnvr()
|
|||
t1000_emsboard_loadnvr();
|
||||
return;
|
||||
case ROM_ELX_PC425X: f = nvrfopen("elx_pc425.nvr", "rb"); nvrmask = 127; break;
|
||||
|
||||
case ROM_PB570: f = nvrfopen("pb570.nvr", "rb"); nvrmask = 127; break;
|
||||
|
||||
default: return;
|
||||
}
|
||||
if (!f)
|
||||
|
|
@ -381,6 +382,8 @@ void savenvr()
|
|||
t1000_emsboard_savenvr();
|
||||
return;
|
||||
case ROM_ELX_PC425X: f = nvrfopen("elx_pc425.nvr", "wb"); break;
|
||||
case ROM_PB570: f = nvrfopen("pb570.nvr", "wb"); break;
|
||||
|
||||
default: return;
|
||||
}
|
||||
fwrite(nvrram,128,1,f);
|
||||
|
|
|
|||
|
|
@ -1469,11 +1469,19 @@ static void *gd5430_init()
|
|||
{
|
||||
return cl_init(CL_TYPE_GD5430, "gd5430/pci.bin");
|
||||
}
|
||||
static void *gd5430_pb570_init()
|
||||
{
|
||||
return cl_init(CL_TYPE_GD5430, "pb570/gd5430.bin");
|
||||
}
|
||||
|
||||
static int gd5429_available()
|
||||
{
|
||||
return rom_present("5429.vbi");
|
||||
}
|
||||
static int gd5430_available()
|
||||
{
|
||||
return rom_present("gd5430/pci.bin");
|
||||
}
|
||||
|
||||
void gd5429_close(void *p)
|
||||
{
|
||||
|
|
@ -1551,7 +1559,20 @@ device_t gd5430_device =
|
|||
0,
|
||||
gd5430_init,
|
||||
gd5429_close,
|
||||
gd5429_available,
|
||||
gd5430_available,
|
||||
gd5429_speed_changed,
|
||||
gd5429_force_redraw,
|
||||
gd5429_add_status_info,
|
||||
gd5429_config
|
||||
};
|
||||
|
||||
device_t gd5430_pb570_device =
|
||||
{
|
||||
"Cirrus Logic GD5430 (PB570)",
|
||||
0,
|
||||
gd5430_pb570_init,
|
||||
gd5429_close,
|
||||
gd5430_available,
|
||||
gd5429_speed_changed,
|
||||
gd5429_force_redraw,
|
||||
gd5429_add_status_info,
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
extern device_t gd5429_device;
|
||||
extern device_t gd5430_device;
|
||||
extern device_t gd5430_pb570_device;
|
||||
|
|
|
|||
10
src/video.c
10
src/video.c
|
|
@ -112,6 +112,7 @@ static video_timings_t timing_ps1_svga = {VIDEO_ISA, 6, 8,16, 6, 8,16};
|
|||
static video_timings_t timing_t3100e = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_t1000 = {VIDEO_ISA, 8,16,32, 8,16,32};
|
||||
static video_timings_t timing_pc425x = {VIDEO_BUS, 5, 5, 9, 20,20,30};
|
||||
static video_timings_t timing_pb570 = {VIDEO_BUS, 4, 4, 8, 10,10,20};
|
||||
|
||||
int video_card_available(int card)
|
||||
{
|
||||
|
|
@ -318,7 +319,10 @@ void video_updatetiming()
|
|||
|
||||
case ROM_ELX_PC425X:
|
||||
timing = &timing_pc425x;
|
||||
pclog("PC425 timing\n");
|
||||
break;
|
||||
|
||||
case ROM_PB570:
|
||||
timing = &timing_pb570;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -458,6 +462,10 @@ void video_init()
|
|||
case ROM_ELX_PC425X:
|
||||
device_add(&tgui9400cxi_elx_device);
|
||||
return;
|
||||
|
||||
case ROM_PB570:
|
||||
device_add(&gd5430_pb570_device);
|
||||
return;
|
||||
}
|
||||
device_add(video_cards[video_old_to_new(gfxcard)].device);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue