Fixed some mistakes in the EGA code and added some missing #define's.

This commit is contained in:
OBattler
2018-01-24 23:33:08 +01:00
parent 9911df5024
commit 9421026739
2 changed files with 28 additions and 17 deletions

View File

@@ -9,7 +9,7 @@
* Emulation of the EGA, Chips & Technologies SuperEGA, and
* AX JEGA graphics cards.
*
* Version: @(#)vid_ega.c 1.0.12 2018/01/24
* Version: @(#)vid_ega.c 1.0.13 2018/01/24
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -41,11 +41,6 @@
#define BIOS_SEGA_PATH L"roms/video/ega/lega.vbi"
static wchar_t *ibm_path = BIOS_IBM_PATH;
static wchar_t *cpq_path = BIOS_CPQ_PATH;
static wchar_t *sega_path = BIOS_SEGA_PATH;
enum {
EGA_IBM = 0,
EGA_COMPAQ,
@@ -368,7 +363,6 @@ void ega_out(uint16_t addr, uint8_t val, void *p)
uint8_t ega_in(uint16_t addr, void *p)
{
ega_t *ega = (ega_t *)p;
int crtcreg;
if (((addr & 0xfff0) == 0x3d0 || (addr & 0xfff0) == 0x3b0) && !(ega->miscout & 1))
addr ^= 0x60;
@@ -1085,8 +1079,24 @@ void ega_init(ega_t *ega, int monitor_type, int is_mono)
ega->pallook = pallook16;
egaswitches = monitor_type & 0xf;
ega->vram_limit = 256 * 1024;
ega->vrammask = ega->vram_limit-1;
old_overscan_color = 0;
ega->miscout |= 0x22;
ega->enablevram = 1;
ega->oddeven_page = 0;
ega->seqregs[4] |= 2;
ega->extvram = 1;
update_overscan = 0;
#ifdef JEGA
ega->is_jega = 0;
#endif
}
@@ -1107,11 +1117,11 @@ static void *ega_standalone_init(device_t *info)
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
break;
case EGA_COMPAQ:
rom_init(&ega->bios_rom, BIOS_IBM_PATH,
rom_init(&ega->bios_rom, BIOS_CPQ_PATH,
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
break;
casae EGA_SUPEREGA:
rom_init(&ega->bios_rom, BIOS_IBM_PATH,
case EGA_SUPEREGA:
rom_init(&ega->bios_rom, BIOS_SEGA_PATH,
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
break;
}
@@ -1128,12 +1138,6 @@ static void *ega_standalone_init(device_t *info)
}
}
update_overscan = 0;
#ifdef JEGA
ega->is_jega = 0;
#endif
monitor_type = device_get_config_int("monitor_type");
ega_init(ega, monitor_type, (monitor_type & 0xf) == 10);

View File

@@ -9,7 +9,7 @@
* Emulation of the EGA, Chips & Technologies SuperEGA, and
* AX JEGA graphics cards.
*
* Version: @(#)vid_ega.h 1.0.4 2018/01/24
* Version: @(#)vid_ega.h 1.0.5 2018/01/24
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -126,6 +126,13 @@ extern uint8_t jfont_dbcs_16[DBCS16_LEN]; /* 65536 * 16 * 2 (* 8) */
extern int update_overscan;
#define DISPLAY_RGB 0
#define DISPLAY_COMPOSITE 1
#define DISPLAY_RGB_NO_BROWN 2
#define DISPLAY_GREEN 3
#define DISPLAY_AMBER 4
#define DISPLAY_WHITE 5
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
extern void ega_init(ega_t *ega, int monitor_type, int is_mono);