--- xmil/pccore.c 2004/08/05 16:47:26 1.11 +++ xmil/pccore.c 2004/08/07 12:10:27 1.13 @@ -4,25 +4,26 @@ #include "soundmng.h" #include "sysmng.h" #include "timemng.h" +#include "xmilver.h" #include "z80core.h" #include "pccore.h" #include "iocore.h" -#include "draw.h" +#include "timing.h" +#include "calendar.h" +#include "keystat.h" +#include "palettes.h" +#include "makescrn.h" #include "sound.h" #include "sndctrl.h" -#include "menu.h" #include "font.h" -#include "xmilver.h" #include "fddfile.h" -#include "calendar.h" -#include "timing.h" #include "defrom.res" -#include "keystat.h" const OEMCHAR xmilversion[] = OEMTEXT(XMILVER_CORE); - XMILCFG xmilcfg = { 0, 0, 1, 0, 1, 2, 0, 1, + XMILCFG xmilcfg = { 0, 0, 1, + 2, 0, 1, 22050, 1000, 0, 80, 0, 0, 0, 0, @@ -30,6 +31,7 @@ const OEMCHAR xmilversion[] = OEMTEXT(XM 1, 0}; PCCORE pccore = {250, 0, 1, 0}; + CORESTAT corestat; BYTE mMAIN[0x10000]; BYTE mBIOS[0x8000]; BYTE mBANK[16][0x8000]; @@ -39,7 +41,6 @@ const OEMCHAR xmilversion[] = OEMTEXT(XM BYTE *RAM0r; BYTE *RAM0w; DWORD h_cntbase; - BRESULT soundrenewal; @@ -73,7 +74,7 @@ void ipl_load(void) { ½é´ü²½ ***********************************************************************/ -BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_SW, BYTE DIP_SW) { +static BRESULT reset_x1(BYTE ROM_TYPE, BYTE SOUND_SW, BYTE DIP_SW) { pccore.HSYNC_CLK = 250; pccore.ROM_TYPE = ROM_TYPE; @@ -90,7 +91,6 @@ BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_ scrnmng_setcolormode(FALSE); } - textdrawproc_renewal(); ipl_load(); Z80_RESET(); @@ -117,6 +117,8 @@ BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_ subcpu_reset(); vramio_reset(); + pal_reset(); + makescrn_reset(); timing_reset(); return(SUCCESS); } @@ -132,15 +134,15 @@ static BYTE keyintcnt = 0; void pccore_initialize(void) { sndctrl_initialize(); + makescrn_initialize(); - init_draw(); font_load(NULL, TRUE); crtc_initialize(); pcg_initialize(); ppi_initialize(); - reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW); +// reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW); // keystat_initialize(); // keystat_reset(); @@ -149,8 +151,8 @@ void pccore_initialize(void) { void pccore_reset(void) { soundmng_stop(); - if (soundrenewal) { - soundrenewal = 0; + if (corestat.soundrenewal) { + corestat.soundrenewal = 0; sndctrl_deinitialize(); sndctrl_initialize(); } @@ -206,15 +208,14 @@ void iptrace_out(void) { } #endif - - -void x1r_exec(void) { +void pccore_exec(BRESULT draw) { REG8 inttiming; + corestat.drawframe = draw; + v_cnt = 0; s_cnt = 0; - xmilcfg.DISPSYNC &= 1; inttiming = xmilcfg.CPU8MHz & 1; while(s_cnt < 266) { @@ -246,16 +247,13 @@ void x1r_exec(void) { v_cnt++; if (crtc.s.CRT_YL == v_cnt) { pcg.r.vsync = 1; - if (xmilcfg.DISPSYNC == 1) { - xmilcfg.DISPSYNC |= 0x80; + if (xmilcfg.DISPSYNC & 1) { scrnupdate(); } } } sound_sync(); calendar_inc(); - if (!(xmilcfg.DISPSYNC & 0x80)) { - scrnupdate(); - } + scrnupdate(); }