--- xmil/io/pcg.c 2004/08/03 11:02:00 1.2 +++ xmil/io/pcg.c 2004/08/12 13:32:52 1.6 @@ -2,9 +2,6 @@ #include "z80core.h" #include "pccore.h" #include "iocore.h" -#include "x1_io.h" -#include "x1_crtc.h" -#include "x1_vram.h" #include "vram.h" #include "font.h" @@ -52,12 +49,13 @@ static UINT knj_offset(void) { static UINT nowsyncoffset(void) { UINT ret; + UINT h; + UINT v; - ret = (((v_cnt - crtc.CRT_YL) / crtc.fnty) + crtc.TXT_YL) * crtc.TXT_XL - + crtc.TXT_TOP; - if (pccore.HSYNC_CLK) { - ret += (h_cnt * crtc.TXT_XL) / pccore.HSYNC_CLK; - } + v = pccore_getraster(&h); + + ret = ((v / crtc.e.fonty) * crtc.s.TXT_XL) + crtc.s.TXT_TOP; + ret += (h * crtc.s.TXT_XL) / 250; if (ret >= 0x0800) { ret = 0x07ff; // オーバーフロー @@ -72,7 +70,7 @@ void IOOUTCALL pcg_o(UINT port, REG8 val UINT off; UINT l; - if (crtc.SCRN_BITS & SCRN_PCGMODE) { + if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { off = pcg_offset(); chr = tram[TRAM_ANK + off]; if (tram[TRAM_KNJ + off] & 0x90) { @@ -128,7 +126,7 @@ REG8 IOINPCALL pcg_i(UINT port) { BYTE chr,knj,val; val = 0xff; - if (crtc.SCRN_BITS & SCRN_PCGMODE) { + if (crtc.s.SCRN_BITS & SCRN_PCGMODE) { l = port & 0x0f; if ((port & 0xff00) == 0x1400) { off = knj_offset(); @@ -144,7 +142,7 @@ REG8 IOINPCALL pcg_i(UINT port) { val = font_knjx1t[p + l]; } } - else if (crtc.SCRN_BITS & SCRN_CPUFONT) { + else if (crtc.s.SCRN_BITS & SCRN_CPUFONT) { val = font_txt[(chr << 4) + l]; } else {