Video card can now be changed on Amstrad MegaPC.
This commit is contained in:
parent
78adae497f
commit
d28a908839
6 changed files with 52 additions and 5 deletions
|
|
@ -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(¶dise->svga.mapping);
|
||||
if (val & 8)
|
||||
{
|
||||
io_sethandler(0x03c0, 0x0020, paradise_in, NULL, NULL, paradise_out, NULL, NULL, paradise);
|
||||
mem_mapping_enable(¶dise->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(¶dise->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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue