Standardization for PNP ROM loading

This commit is contained in:
Jasmine Iwanek
2024-12-29 21:35:09 -05:00
parent e11743c521
commit 21a98774e4

View File

@@ -3325,16 +3325,16 @@ sb_16_pnp_init(UNUSED(const device_t *info))
device_add(&ide_qua_pnp_device); device_add(&ide_qua_pnp_device);
other_ide_present++; other_ide_present++;
uint8_t *pnp_rom = NULL; uint8_t *pnp_rom = NULL;
FILE *fp = rom_fopen(PNP_ROM_SB_16_PNP, "rb");
FILE *fp = rom_fopen(PNP_ROM_SB_16_PNP, "rb"); uint16_t pnp_rom_len = 512;
if (fp) { if (fp) {
if (fread(sb->pnp_rom, 1, 390, fp) == 390) if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
pnp_rom = sb->pnp_rom; pnp_rom = sb->pnp_rom;
fclose(fp); fclose(fp);
} }
isapnp_add_card(pnp_rom, 390, sb_16_pnp_config_changed, isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed,
NULL, NULL, NULL, sb); NULL, NULL, NULL, sb);
sb_dsp_set_real_opl(&sb->dsp, 1); sb_dsp_set_real_opl(&sb->dsp, 1);
@@ -3415,9 +3415,10 @@ sb_vibra16_pnp_init(UNUSED(const device_t *info))
uint8_t *pnp_rom = NULL; uint8_t *pnp_rom = NULL;
if (pnp_rom_file) { if (pnp_rom_file) {
FILE *fp = rom_fopen(pnp_rom_file, "rb"); FILE *fp = rom_fopen(pnp_rom_file, "rb");
uint16_t pnp_rom_len = 512;
if (fp) { if (fp) {
if (fread(sb->pnp_rom, 1, 512, fp) == 512) if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
pnp_rom = sb->pnp_rom; pnp_rom = sb->pnp_rom;
fclose(fp); fclose(fp);
} }
@@ -3426,7 +3427,7 @@ sb_vibra16_pnp_init(UNUSED(const device_t *info))
switch (info->local) { switch (info->local) {
case 0: case 0:
case 1: case 1:
isapnp_add_card(pnp_rom, 512, sb_vibra16_pnp_config_changed, isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_vibra16_pnp_config_changed,
NULL, NULL, NULL, sb); NULL, NULL, NULL, sb);
break; break;
@@ -3671,9 +3672,10 @@ sb_awe32_pnp_init(const device_t *info)
uint8_t *pnp_rom = NULL; uint8_t *pnp_rom = NULL;
if (pnp_rom_file) { if (pnp_rom_file) {
FILE *fp = rom_fopen(pnp_rom_file, "rb"); FILE *fp = rom_fopen(pnp_rom_file, "rb");
uint16_t pnp_rom_len = 512;
if (fp) { if (fp) {
if (fread(sb->pnp_rom, 1, 512, fp) == 512) if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
pnp_rom = sb->pnp_rom; pnp_rom = sb->pnp_rom;
fclose(fp); fclose(fp);
} }
@@ -3681,21 +3683,25 @@ sb_awe32_pnp_init(const device_t *info)
switch (info->local) { switch (info->local) {
case SB_32_PNP: case SB_32_PNP:
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed, NULL, NULL, NULL, sb); isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed,
NULL, NULL, NULL, sb);
break; break;
case SB_AWE32_PNP: case SB_AWE32_PNP:
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe32_pnp_config_changed, NULL, NULL, NULL, sb); isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe32_pnp_config_changed,
NULL, NULL, NULL, sb);
break; break;
case SB_AWE64_IDE: case SB_AWE64_IDE:
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_ide_config_changed, NULL, NULL, NULL, sb); isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_ide_config_changed,
NULL, NULL, NULL, sb);
break; break;
case SB_AWE64_VALUE: case SB_AWE64_VALUE:
case SB_AWE64_NOIDE: case SB_AWE64_NOIDE:
case SB_AWE64_GOLD: case SB_AWE64_GOLD:
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_noide_config_changed, NULL, NULL, NULL, sb); isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_noide_config_changed,
NULL, NULL, NULL, sb);
break; break;
default: default:
@@ -3836,7 +3842,6 @@ static void *
ess_x688_pnp_init(UNUSED(const device_t *info)) ess_x688_pnp_init(UNUSED(const device_t *info))
{ {
sb_t *ess = calloc(sizeof(sb_t), 1); sb_t *ess = calloc(sizeof(sb_t), 1);
int len = 512;
ess->pnp = 1 + (int) info->local; ess->pnp = 1 + (int) info->local;
@@ -3869,20 +3874,21 @@ ess_x688_pnp_init(UNUSED(const device_t *info))
other_ide_present++; other_ide_present++;
const char *pnp_rom_file = NULL; const char *pnp_rom_file = NULL;
uint16_t pnp_rom_len = 512;
switch (info->local) { switch (info->local) {
case 0: case 0:
pnp_rom_file = PNP_ROM_ESS0100; pnp_rom_file = PNP_ROM_ESS0100;
len = 145; pnp_rom_len = 145;
break; break;
case 1: case 1:
pnp_rom_file = PNP_ROM_ESS0102; pnp_rom_file = PNP_ROM_ESS0102;
len = 145; pnp_rom_len = 145;
break; break;
case 2: case 2:
pnp_rom_file = PNP_ROM_ESS0968; pnp_rom_file = PNP_ROM_ESS0968;
len = 135; pnp_rom_len = 135;
break; break;
default: default:
@@ -3893,13 +3899,13 @@ ess_x688_pnp_init(UNUSED(const device_t *info))
if (pnp_rom_file) { if (pnp_rom_file) {
FILE *fp = rom_fopen(pnp_rom_file, "rb"); FILE *fp = rom_fopen(pnp_rom_file, "rb");
if (fp) { if (fp) {
if (fread(ess->pnp_rom, 1, len, fp) == len) if (fread(ess->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
pnp_rom = ess->pnp_rom; pnp_rom = ess->pnp_rom;
fclose(fp); fclose(fp);
} }
} }
isapnp_add_card(pnp_rom, len, ess_x688_pnp_config_changed, isapnp_add_card(pnp_rom, sizeof(ess->pnp_rom), ess_x688_pnp_config_changed,
NULL, NULL, NULL, ess); NULL, NULL, NULL, ess);
sb_dsp_setaddr(&ess->dsp, 0); sb_dsp_setaddr(&ess->dsp, 0);