X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fgizmondo%2Femu.c;h=3a6c861b113f47c4e71e55bcd853c9403281f372;hb=99bdfd31b8708f8059fbc16ec8be90cb8d7c8bc3;hp=e628f061983dd61d133aed6af7230b8acb734f01;hpb=f2cf84723f891a6aa8cb39f74a0961013dc10601;p=picodrive.git diff --git a/platform/gizmondo/emu.c b/platform/gizmondo/emu.c index e628f06..3a6c861 100644 --- a/platform/gizmondo/emu.c +++ b/platform/gizmondo/emu.c @@ -26,9 +26,7 @@ // main 300K gfx-related buffer. Used by menu and renderers. unsigned char gfx_buffer[321*240*2*2]; -unsigned char *PicoDraw2FB = gfx_buffer; // temporary buffer for alt renderer ( (8+320)*(8+240+8) ) -static DWORD noticeMsgTime = 0; static short *snd_cbuff = NULL; static int snd_cbuf_samples = 0, snd_all_samples = 0; @@ -36,12 +34,6 @@ static int snd_cbuf_samples = 0, snd_all_samples = 0; static void blit(const char *fps, const char *notice); static void clearArea(int full); -void plat_status_msg(const char *format, ...) -{ - /* TODO */ - noticeMsgTime = GetTickCount(); -} - int plat_get_root_dir(char *dst, int len) { if (len > 0) *dst = 0; @@ -55,7 +47,7 @@ static void emu_msg_cb(const char *msg) giz_screen = fb_lock(1); memset32((int *)((char *)giz_screen + 321*232*2), 0, 321*8*2/4); - emu_textOut16(4, 232, msg); + emu_text_out16(4, 232, msg); noticeMsgTime = GetTickCount() - 2000; /* assumption: emu_msg_cb gets called only when something slow is about to happen */ @@ -81,15 +73,8 @@ void emu_stateCb(const char *str) void pemu_prep_defconfig(void) { - memset(&defaultConfig, 0, sizeof(defaultConfig)); - defaultConfig.EmuOpt = 0x1d | 0x680; // | confirm_save, cd_leds, 16bit rend - defaultConfig.s_PicoOpt = 0x0f | POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_SVP_DRC|POPT_ACC_SPRITES; defaultConfig.s_PsndRate = 22050; - defaultConfig.s_PicoRegion = 0; // auto - defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP defaultConfig.s_PicoCDBuffers = 0; - defaultConfig.Frameskip = -1; // auto - defaultConfig.volume = 50; defaultConfig.KeyBinds[ 2] = 1<<0; // SACB RLDU defaultConfig.KeyBinds[ 3] = 1<<1; defaultConfig.KeyBinds[ 0] = 1<<2; @@ -104,14 +89,12 @@ void pemu_prep_defconfig(void) defaultConfig.KeyBinds[12] = 1<<29; // vol up defaultConfig.KeyBinds[11] = 1<<30; // vol down defaultConfig.scaling = 0; - defaultConfig.turbo_rate = 15; } static int EmuScanBegin16(unsigned int num) { - if (!(Pico.video.reg[1]&8)) num += 8; - DrawLineDest = (unsigned short *) giz_screen + 321 * num; + Pico.est.DrawLineDest = (unsigned short *) giz_screen + 321 * num; if ((currentConfig.EmuOpt&0x4000) && (num&1) == 0) // (Pico.m.frame_count&1)) return 1; // skip next line @@ -122,8 +105,7 @@ static int EmuScanBegin16(unsigned int num) static int EmuScanBegin8(unsigned int num) { // draw like the fast renderer - if (!(Pico.video.reg[1]&8)) num += 8; - HighCol = gfx_buffer + 328 * num; + Pico.est.HighCol = gfx_buffer + 328 * num; return 0; } @@ -137,15 +119,8 @@ static void osd_text(int x, int y, const char *text) p = (int *) ((int)p & ~3); // align memset32(p, 0, len); } - emu_textOut16(x, y, text); -} - -/* -void log1(void *p1, void *p2) -{ - lprintf("%p %p %p\n", p1, p2, DrawLineDest); + emu_text_out16(x, y, text); } -*/ static void cd_leds(void) { @@ -179,7 +154,7 @@ static void blit(const char *fps, const char *notice) vidConvCpyRGB565(localPal, Pico.cram, 0x40); } // a hack for VR - if (PicoRead16Hook == PicoSVPRead16) + if (PicoAHW & PAHW_SVP) memset32((int *)(PicoDraw2FB+328*8+328*223), 0xe0e0e0e0, 328); if (!(Pico.video.reg[12]&1)) lines_flags|=0x10000; if (currentConfig.EmuOpt&0x4000) @@ -247,11 +222,11 @@ static void vidResetMode(void) if (PicoOpt&0x10) { } else if (currentConfig.EmuOpt&0x80) { - PicoDrawSetColorFormat(1); - PicoScanBegin = EmuScanBegin16; + PicoDrawSetOutFormat(PDF_RGB555, 0); + PicoDrawSetCallbacks(EmuScanBegin16, NULL); } else { - PicoDrawSetColorFormat(-1); - PicoScanBegin = EmuScanBegin8; + PicoDrawSetOutFormat(PDF_NONE, 0); + PicoDrawSetCallbacks(EmuScanBegin8, NULL); } if ((PicoOpt&0x10) || !(currentConfig.EmuOpt&0x80)) { // setup pal for 8-bit modes @@ -290,10 +265,8 @@ static void stdbg(const char *fmt, ...) static void updateSound(int len) { - if (PicoOpt&8) len<<=1; - - snd_all_samples += len; - PsndOut += len; + snd_all_samples += len / 2; + PsndOut += len / 2; if (PsndOut - snd_cbuff >= snd_cbuf_samples) { //if (PsndOut - snd_cbuff != snd_cbuf_samples) @@ -311,20 +284,22 @@ static void SkipFrame(void) } /* forced frame to front buffer */ -void pemu_forced_frame(int opts) +void pemu_forced_frame(int no_scale, int do_emu) { int po_old = PicoOpt; int eo_old = currentConfig.EmuOpt; PicoOpt &= ~0x10; - PicoOpt |= opts|POPT_ACC_SPRITES; + PicoOpt |= POPT_ACC_SPRITES; + if (!no_scale) + PicoOpt |= POPT_EN_SOFTSCALE; currentConfig.EmuOpt |= 0x80; if (giz_screen == NULL) giz_screen = fb_lock(1); - PicoDrawSetColorFormat(1); - PicoScanBegin = EmuScanBegin16; + PicoDrawSetOutFormat(PDF_RGB555, 0); + PicoDrawSetCallbacks(EmuScanBegin16, NULL); Pico.m.dirtyPal = 1; PicoFrameDrawOnly(); @@ -346,7 +321,7 @@ static void RunEvents(unsigned int which) FrameworkAudio_SetPause(1); if (giz_screen == NULL) giz_screen = fb_lock(1); - if ( emu_checkSaveFile(state_slot) && + if ( emu_check_save_file(state_slot) && (( (which & 0x1000) && (currentConfig.EmuOpt & 0x800)) || // load (!(which & 0x1000) && (currentConfig.EmuOpt & 0x200))) ) // save { @@ -364,7 +339,7 @@ static void RunEvents(unsigned int which) { osd_text(4, 232, (which & 0x1000) ? "LOADING GAME" : "SAVING GAME"); PicoStateProgressCB = emu_stateCb; - emu_SaveLoadGame((which & 0x1000) >> 12, 0); + emu_save_load_game((which & 0x1000) >> 12, 0); PicoStateProgressCB = NULL; Sleep(0); } @@ -399,7 +374,7 @@ static void RunEvents(unsigned int which) state_slot += 1; if(state_slot > 9) state_slot = 0; } - sprintf(noticeMsg, "SAVE SLOT %i [%s]", state_slot, emu_checkSaveFile(state_slot) ? "USED" : "FREE"); + sprintf(noticeMsg, "SAVE SLOT %i [%s]", state_slot, emu_check_save_file(state_slot) ? "USED" : "FREE"); noticeMsgTime = GetTickCount(); } } @@ -709,7 +684,7 @@ void pemu_loop(void) // save SRAM if ((currentConfig.EmuOpt & 1) && SRam.changed) { emu_stateCb("Writing SRAM/BRAM.."); - emu_SaveLoadGame(0, 1); + emu_save_load_game(0, 1); SRam.changed = 0; } }