Video card can now be changed on Amstrad MegaPC.

This commit is contained in:
SarahW 2018-02-25 15:13:45 +00:00
commit d28a908839
6 changed files with 52 additions and 5 deletions

View file

@ -14,6 +14,7 @@
#include "vid_svga.h"
#include "vid_svga_render.h"
#include "vid_unk_ramdac.h"
#include "wd76c10.h"
typedef struct paradise_t
{
@ -32,6 +33,9 @@ typedef struct paradise_t
void paradise_remap(paradise_t *paradise);
void paradise_out(uint16_t addr, uint8_t val, void *p);
uint8_t paradise_in(uint16_t addr, void *p);
void paradise_out(uint16_t addr, uint8_t val, void *p)
{
paradise_t *paradise = (paradise_t *)p;
@ -132,6 +136,16 @@ void paradise_out(uint16_t addr, uint8_t val, void *p)
}
}
break;
case 0x46e8:
io_removehandler(0x03c0, 0x0020, paradise_in, NULL, NULL, paradise_out, NULL, NULL, paradise);
mem_mapping_disable(&paradise->svga.mapping);
if (val & 8)
{
io_sethandler(0x03c0, 0x0020, paradise_in, NULL, NULL, paradise_out, NULL, NULL, paradise);
mem_mapping_enable(&paradise->svga.mapping);
}
break;
}
svga_out(addr, val, svga);
}
@ -356,6 +370,8 @@ static void *paradise_wd90c11_megapc_init()
"megapc/211253-bios hi.u19",
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
wd76c10_set_bios_rom(&paradise->bios_rom);
return paradise;
}
@ -368,6 +384,9 @@ static void *paradise_pvga1a_oli_go481_init()
"oli_go481_lo.bin",
"oli_go481_hi.bin",
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
io_sethandler(0x46e8, 0x0001, paradise_in, NULL, NULL, paradise_out, NULL, NULL, paradise);
return paradise;
}