|
|
| version 1.33, 2004/03/24 06:07:57 | version 1.42, 2007/11/11 13:54:14 |
|---|---|
| Line 93 void gdc_setanalogpal(int color, int rgb | Line 93 void gdc_setanalogpal(int color, int rgb |
| event = palevent.event + palevent.events; | event = palevent.event + palevent.events; |
| event->clock = nevent.item[NEVENT_FLAMES].clock - | event->clock = nevent.item[NEVENT_FLAMES].clock - |
| (CPU_BASECLOCK - CPU_REMCLOCK); | (CPU_BASECLOCK - CPU_REMCLOCK); |
| event->color = (color * sizeof(RGB32)) + rgb; | event->color = (UINT16)((color * sizeof(RGB32)) + rgb); |
| event->value = (UINT8)value; | event->value = (UINT8)value; |
| palevent.events++; | palevent.events++; |
| } | } |
| Line 148 void gdc_analogext(BOOL extend) { | Line 148 void gdc_analogext(BOOL extend) { |
| if (extend) { | if (extend) { |
| gdc.analog |= (1 << GDCANALOG_256); | gdc.analog |= (1 << GDCANALOG_256); |
| vramop.operate |= 0x20; | vramop.operate |= (1 << VOPBIT_VGA); |
| } | } |
| else { | else { |
| gdc.analog &= ~(1 << (GDCANALOG_256)); | gdc.analog &= ~(1 << (GDCANALOG_256)); |
| vramop.operate &= ~0x20; | vramop.operate &= ~(1 << VOPBIT_VGA); |
| } | } |
| gdcs.palchange = GDCSCRN_REDRAW; | gdcs.palchange = GDCSCRN_REDRAW; |
| gdcs.grphdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2; | gdcs.grphdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2; |
| i286_vram_dispatch(vramop.operate); | MEMM_VRAM(vramop.operate); |
| } | } |
| #endif | #endif |
| Line 274 void gdc_work(int id) { | Line 274 void gdc_work(int id) { |
| case CMD_START: | case CMD_START: |
| case CMD_SYNC_ON: | case CMD_SYNC_ON: |
| (*dispflag) |= GDCSCRN_ENABLE | GDCSCRN_ALLDRAW2; | (*dispflag) |= GDCSCRN_ENABLE | GDCSCRN_ALLDRAW2; |
| screenupdate |= 2; | pcstat.screenupdate |= 2; |
| break; | break; |
| case CMD_STOP_: | case CMD_STOP_: |
| Line 282 void gdc_work(int id) { | Line 282 void gdc_work(int id) { |
| case CMD_SYNC_OFF: | case CMD_SYNC_OFF: |
| (*dispflag) &= (~GDCSCRN_ENABLE); | (*dispflag) &= (~GDCSCRN_ENABLE); |
| // (*dispflag) |= GDCSCRN_ALLDRAW2; | // (*dispflag) |= GDCSCRN_ALLDRAW2; |
| screenupdate |= 2; | pcstat.screenupdate |= 2; |
| break; | break; |
| case CMD_VECTE: | case CMD_VECTE: |
| Line 417 const GDCCLK *clk; | Line 417 const GDCCLK *clk; |
| void gdc_restorekacmode(void) { | void gdc_restorekacmode(void) { |
| BYTE bit; | UINT8 bit; |
| bit = (((!np2cfg.uPD72020) && (gdc.mode1 & 0x20))?0x00:0xff); | bit = (((!np2cfg.uPD72020) && (gdc.mode1 & 0x20))?0x00:0xff); |
| if (gdc.bitac != bit) { | if (gdc.bitac != bit) { |
| Line 479 static void IOOUTCALL gdc_o68(UINT port, | Line 479 static void IOOUTCALL gdc_o68(UINT port, |
| gdc_restorekacmode(); | gdc_restorekacmode(); |
| } | } |
| else if (bit == 0x80) { | else if (bit == 0x80) { |
| screenupdate |= 2; | pcstat.screenupdate |= 2; |
| } | } |
| gdcs.msw_accessable = gdc.mode1 & 0x40; | gdcs.msw_accessable = gdc.mode1 & 0x40; |
| } | } |
| Line 503 static void IOOUTCALL gdc_o6a(UINT port, | Line 503 static void IOOUTCALL gdc_o6a(UINT port, |
| gdc.analog &= ~(1 << GDCANALOG_16); | gdc.analog &= ~(1 << GDCANALOG_16); |
| gdc.analog |= (dat << GDCANALOG_16); | gdc.analog |= (dat << GDCANALOG_16); |
| gdcs.palchange = GDCSCRN_REDRAW; | gdcs.palchange = GDCSCRN_REDRAW; |
| vramop.operate &= VOP_ANALOGMASK; | vramop.operate &= ~(1 << VOPBIT_ANALOG); |
| vramop.operate |= dat << 4; | vramop.operate |= dat << VOPBIT_ANALOG; |
| i286_vram_dispatch(vramop.operate); | MEMM_VRAM(vramop.operate); |
| } | } |
| break; | break; |
| case 2: | case 2: |
| if ((gdc.mode2 & 0x08) && (grcg.chip == 3)) { | if ((gdc.mode2 & 0x08) && (grcg.chip == 3)) { |
| vramop.operate &= VOP_EGCMASK; | vramop.operate &= ~(1 << VOPBIT_EGC); |
| vramop.operate |= dat << 1; | vramop.operate |= dat << VOPBIT_EGC; |
| i286_vram_dispatch(vramop.operate); | MEMM_VRAM(vramop.operate); |
| } | } |
| break; | break; |
| } | } |
| Line 625 static REG8 IOINPCALL gdc_i60(UINT port) | Line 625 static REG8 IOINPCALL gdc_i60(UINT port) |
| UINT16 memv; | UINT16 memv; |
| addr = CPU_INPADRS; | addr = CPU_INPADRS; |
| jadr = 0xfa74; | jadr = 0xfa74; |
| memv = i286_memoryread_w(addr); | memv = MEML_READ16(addr); |
| while((memv == 0x00eb) || (memv == 0x5fe6)) { | while((memv == 0x00eb) || (memv == 0x5fe6)) { |
| jadr -= 0x200; | jadr -= 0x200; |
| addr += 2; | addr += 2; |
| memv = i286_memoryread_w(addr); | memv = MEML_READ16(addr); |
| } | } |
| if ((memv == 0x20a8) || (memv == 0x2024)) { | if ((memv == 0x20a8) || (memv == 0x2024)) { |
| memv = i286_memoryread_w(addr + 2); | memv = MEML_READ16(addr + 2); |
| if (memv == jadr) { // je | if (memv == jadr) { // je |
| if (!gdc.vsync) { | if (!gdc.vsync) { |
| CPU_REMCLOCK = -1; | CPU_REMCLOCK = -1; |
| Line 706 static void IOOUTCALL gdc_oa4(UINT port, | Line 706 static void IOOUTCALL gdc_oa4(UINT port, |
| if ((gdcs.disp ^ dat) & 1) { | if ((gdcs.disp ^ dat) & 1) { |
| gdcs.disp = dat & 1; | gdcs.disp = dat & 1; |
| screenupdate |= 2; | pcstat.screenupdate |= 2; |
| } | } |
| (void)port; | (void)port; |
| } | } |
| static void IOOUTCALL gdc_oa6(UINT port, REG8 dat) { | static void IOOUTCALL gdc_oa6(UINT port, REG8 dat) { |
| if ((gdcs.access ^ dat) & 1) { | dat = dat & 1; |
| gdcs.access = dat & 1; | if (gdcs.access != dat) { |
| vramop.operate &= VOP_ACCESSMASK; | gdcs.access = (UINT8)dat; |
| vramop.operate |= gdcs.access; | vramop.operate &= ~(1 << VOPBIT_ACCESS); |
| i286_vram_dispatch(vramop.operate); | vramop.operate |= dat << VOPBIT_ACCESS; |
| MEMM_VRAM(vramop.operate); | |
| } | } |
| (void)port; | (void)port; |
| } | } |
| Line 753 static REG8 IOINPCALL gdc_ia0(UINT port) | Line 754 static REG8 IOINPCALL gdc_ia0(UINT port) |
| UINT16 memv; | UINT16 memv; |
| addr = CPU_INPADRS; | addr = CPU_INPADRS; |
| jadr = 0xfa74; | jadr = 0xfa74; |
| memv = i286_memoryread_w(addr); | memv = MEML_READ16(addr); |
| while((memv == 0x00eb) || (memv == 0x5fe6)) { | while((memv == 0x00eb) || (memv == 0x5fe6)) { |
| jadr -= 0x200; | jadr -= 0x200; |
| addr += 2; | addr += 2; |
| memv = i286_memoryread_w(addr); | memv = MEML_READ16(addr); |
| } | } |
| if ((memv == 0x20a8) || (memv == 0x2024)) { | if ((memv == 0x20a8) || (memv == 0x2024)) { |
| memv = i286_memoryread_w(addr + 2); | memv = MEML_READ16(addr + 2); |
| if (memv == jadr) { // je | if (memv == jadr) { // je |
| if (!gdc.vsync) { | if (!gdc.vsync) { |
| CPU_REMCLOCK = -1; | CPU_REMCLOCK = -1; |
| Line 1045 static const IOINP gdcia0[8] = { | Line 1046 static const IOINP gdcia0[8] = { |
| void gdc_biosreset(void) { | void gdc_biosreset(void) { |
| #if defined(SUPPORT_PC9821) | #if defined(SUPPORT_PC9821) |
| UINT i, j; | UINT i; |
| UINT j; | |
| UINT8 tmp; | UINT8 tmp; |
| UINT8 *pal; | UINT8 *pal; |
| #endif | #endif |
| if (!(np2cfg.dipsw[0] & 0x01)) { | if (!(pccore.dipsw[0] & 0x01)) { |
| gdc.mode1 = 0x98; | gdc.mode1 = 0x98; |
| gdc.m.para[GDC_CSRFORM + 0] = 0x0f; | gdc.m.para[GDC_CSRFORM + 0] = 0x0f; |
| gdc.m.para[GDC_CSRFORM + 1] = 0xc0; | gdc.m.para[GDC_CSRFORM + 1] = 0xc0; |
| Line 1068 void gdc_biosreset(void) { | Line 1070 void gdc_biosreset(void) { |
| CopyMemory(gdc.m.para + GDC_SYNC, defsyncm15, 8); | CopyMemory(gdc.m.para + GDC_SYNC, defsyncm15, 8); |
| CopyMemory(gdc.s.para + GDC_SYNC, defsyncs15, 8); | CopyMemory(gdc.s.para + GDC_SYNC, defsyncs15, 8); |
| } | } |
| if (np2cfg.dipsw[0] & 0x80) { | if (pccore.dipsw[0] & 0x80) { |
| gdc.s.para[GDC_SYNC] = 0x16; | gdc.s.para[GDC_SYNC] = 0x16; |
| } | } |
| gdc_vectreset(&gdc.m); | gdc_vectreset(&gdc.m); |
| Line 1085 void gdc_biosreset(void) { | Line 1087 void gdc_biosreset(void) { |
| gdcs.access = 0; | gdcs.access = 0; |
| gdc.analog &= ~(1 << GDCANALOG_16); | gdc.analog &= ~(1 << GDCANALOG_16); |
| gdcs.palchange = GDCSCRN_REDRAW; | gdcs.palchange = GDCSCRN_REDRAW; |
| vramop.operate &= VOP_ACCESSMASK; | |
| vramop.operate &= VOP_EGCMASK; | gdc.mode2 &= ~(1 << 0); |
| vramop.operate &= VOP_ANALOGMASK; | gdc.mode2 &= ~(1 << 2); |
| gdc.mode2 &= ~(1 << 3); | |
| gdcs.mode2 = gdc.mode2; | |
| vramop.operate &= ~(1 << VOPBIT_ACCESS); | |
| vramop.operate &= ~(1 << VOPBIT_EGC); | |
| vramop.operate &= ~(1 << VOPBIT_ANALOG); | |
| #if defined(SUPPORT_PC9821) | #if defined(SUPPORT_PC9821) |
| gdc.analog &= ~(1 << (GDCANALOG_256)); | gdc.analog &= ~(1 << (GDCANALOG_256)); |
| vramop.operate &= ~0x20; | vramop.operate &= ~(1 << VOPBIT_VGA); |
| #endif | #endif |
| i286_vram_dispatch(vramop.operate); | MEMM_VRAM(vramop.operate); |
| // palette | // palette |
| CopyMemory(gdc.degpal, defdegpal, 4); | CopyMemory(gdc.degpal, defdegpal, 4); |
| Line 1118 void gdc_biosreset(void) { | Line 1126 void gdc_biosreset(void) { |
| gdcs.textdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT; | gdcs.textdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT; |
| gdcs.grphdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT; | gdcs.grphdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT; |
| gdcs.palchange = GDCSCRN_REDRAW; | gdcs.palchange = GDCSCRN_REDRAW; |
| screenupdate |= 2; | pcstat.screenupdate |= 2; |
| } | } |
| void gdc_reset(void) { | void gdc_reset(const NP2CFG *pConfig) { |
| ZeroMemory(&gdc, sizeof(gdc)); | ZeroMemory(&gdc, sizeof(gdc)); |
| ZeroMemory(&gdcs, sizeof(gdcs)); | ZeroMemory(&gdcs, sizeof(gdcs)); |
| Line 1133 void gdc_reset(void) { | Line 1141 void gdc_reset(void) { |
| gdc.display |= (1 << GDCDISP_ANALOG); | gdc.display |= (1 << GDCDISP_ANALOG); |
| } | } |
| #endif | #endif |
| if (!(np2cfg.dipsw[0] & 0x04)) { // dipsw1-3 on | if (!(pccore.dipsw[0] & 0x04)) { // dipsw1-3 on |
| gdc.display |= (1 << GDCDISP_PLAZMA2); | gdc.display |= (1 << GDCDISP_PLAZMA2); |
| } | } |
| gdc_biosreset(); | gdc_biosreset(); |
| (void)pConfig; | |
| } | } |
| void gdc_bind(void) { | void gdc_bind(void) { |