X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Femu.c;h=9e299eacf8ab3d4de61ba5de15a1f31d8695256f;hb=93c18cb44bf9794c7c9bc93411c68880723320d1;hp=bbf07e5d1219f4f7d547f3d0a329e7682194abe9;hpb=049a6b3e80151f6a5af726e25478ed15e111dfcc;p=libpicofe.git diff --git a/psp/emu.c b/psp/emu.c index bbf07e5..9e299ea 100644 --- a/psp/emu.c +++ b/psp/emu.c @@ -37,7 +37,6 @@ unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be int engineStateSuspend; static unsigned int noticeMsgTime = 0; -int reset_timing = 0; // do we need this? #define PICO_PEN_ADJUST_X 4 #define PICO_PEN_ADJUST_Y 2 @@ -48,12 +47,18 @@ static void sound_deinit(void); static void blit2(const char *fps, const char *notice, int lagging_behind); static void clearArea(int full); -void emu_noticeMsgUpdated(void) +void plat_status_msg(const char *format, ...) { + va_list vl; + + va_start(vl, format); + vsnprintf(noticeMsg, sizeof(noticeMsg), fmt, vl); + va_end(vl); + noticeMsgTime = sceKernelGetSystemTimeLow(); } -int emu_getMainDir(char *dst, int len) +int plat_get_root_dir(char *dst, int len) { if (len > 0) *dst = 0; return 0; @@ -84,45 +89,18 @@ void emu_msg_cb(const char *msg) reset_timing = 1; } -static void emu_msg_tray_open(void) -{ - strcpy(noticeMsg, "CD tray opened"); - noticeMsgTime = sceKernelGetSystemTimeLow(); -} - - +/* FIXME: move to plat */ void emu_Init(void) { - // make dirs for saves, cfgs, etc. - mkdir("mds", 0777); - mkdir("srm", 0777); - mkdir("brm", 0777); - mkdir("cfg", 0777); - sound_init(); - - PicoInit(); - PicoMessage = emu_msg_cb; - PicoMCDopenTray = emu_msg_tray_open; - PicoMCDcloseTray = menu_loop_tray; } void emu_Deinit(void) { - // save SRAM - if ((currentConfig.EmuOpt & 1) && SRam.changed) { - emu_SaveLoadGame(0, 1); - SRam.changed = 0; - } - - if (!(currentConfig.EmuOpt & 0x20)) - config_writelrom(PicoConfigFile); - - PicoExit(); sound_deinit(); } -void emu_prepareDefaultConfig(void) +void pemu_prep_defconfig(void) { memset(&defaultConfig, 0, sizeof(defaultConfig)); defaultConfig.EmuOpt = 0x1d | 0x680; // | <- confirm_save, cd_leds, acc rend @@ -525,7 +503,7 @@ static void vidResetMode(void) sceGuSync(0,0); } -void emu_platformDebugCat(char *str) +void plat_debug_cat(char *str) { strcat(str, blit_16bit_mode ? "soft clut\n" : "hard clut\n"); } @@ -608,7 +586,7 @@ static void sound_init(void) lprintf("sceKernelCreateThread failed: %i\n", thid); } -void emu_startSound(void) +void pemu_sound_start(void) { static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0; int ret, stereo; @@ -632,9 +610,8 @@ void emu_startSound(void) ret = sceAudio_38553111(samples_block/2, PsndRate, 2); // seems to not need that stupid 64byte alignment if (ret < 0) { lprintf("sceAudio_38553111() failed: %i\n", ret); - sprintf(noticeMsg, "sound init failed (%i), snd disabled", ret); - noticeMsgTime = sceKernelGetSystemTimeLow(); - currentConfig.EmuOpt &= ~4; + plat_status_msg("sound init failed (%i), snd disabled", ret); + currentConfig.EmuOpt &= ~EOPT_EN_SOUND; } else { PicoWriteSound = writeSound; memset32((int *)(void *)sndBuffer, 0, sizeof(sndBuffer)/4); @@ -647,7 +624,7 @@ void emu_startSound(void) } } -void emu_endSound(void) +void pemu_sound_stop(void) { int i; if (samples_done == 0) @@ -667,7 +644,7 @@ void emu_endSound(void) } /* wait until we can write more sound */ -void emu_waitSound(void) +void pemu_sound_wait(void) { // TODO: test this while (!sound_thread_exit && samples_made - samples_done > samples_block * 4) @@ -715,7 +692,7 @@ static void SkipFrame(void) PicoSkipFrame=0; } -void emu_forcedFrame(int opts) +void pemu_forced_frame(int opts) { int po_old = PicoOpt; int eo_old = currentConfig.EmuOpt; @@ -804,12 +781,10 @@ static void RunEvents(unsigned int which) vidResetMode(); - if (PicoOpt&0x10) - strcpy(noticeMsg, "fast renderer"); + if (PicoOpt & POPT_ALT_RENDERER) + plat_status_msg("fast renderer"); else if (currentConfig.EmuOpt&0x80) - strcpy(noticeMsg, "accurate renderer"); - - noticeMsgTime = sceKernelGetSystemTimeLow(); + plat_status_msg("accurate renderer"); } if (which & 0x0300) { @@ -820,8 +795,8 @@ 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"); - noticeMsgTime = sceKernelGetSystemTimeLow(); + plat_status_msg("SAVE SLOT %i [%s]", state_slot, + emu_checkSaveFile(state_slot) ? "USED" : "FREE"); } } @@ -831,6 +806,7 @@ static void updateKeys(void) static unsigned int prevEvents = 0; int i; + /* FIXME: port to input fw, merge with emu.c:emu_update_input() */ keys = psp_pad_read(0); if (keys & PSP_CTRL_HOME) sceDisplayWaitVblankStart(); @@ -840,34 +816,6 @@ static void updateKeys(void) keys &= CONFIGURABLE_KEYS; - for (i = 0; i < 32; i++) - { - if (keys & (1 << i)) - { - int pl, acts = currentConfig.KeyBinds[i]; - if (!acts) continue; - pl = (acts >> 16) & 1; - if (kb_combo_keys & (1 << i)) - { - int u = i+1, acts_c = acts & kb_combo_acts; - // let's try to find the other one - if (acts_c) { - for (; u < 32; u++) - if ( (keys & (1 << u)) && (currentConfig.KeyBinds[u] & acts_c) ) { - allActions[pl] |= acts_c & currentConfig.KeyBinds[u]; - keys &= ~((1 << i) | (1 << u)); - break; - } - } - // add non-combo actions if combo ones were not found - if (!acts_c || u == 32) - allActions[pl] |= acts & ~kb_combo_acts; - } else { - allActions[pl] |= acts; - } - } - } - PicoPad[0] = allActions[0] & 0xfff; PicoPad[1] = allActions[1] & 0xfff; @@ -903,7 +851,7 @@ static void simpleWait(unsigned int until) sceKernelDelayThread(diff); } -void emu_Loop(void) +void pemu_loop(void) { static int mp3_init_done = 0; char fpsbuff[24]; // fps count c string @@ -929,7 +877,6 @@ void emu_Loop(void) clearArea(1); Pico.m.dirtyPal = 1; oldmodes = ((Pico.video.reg[12]&1)<<2) ^ 0xc; - emu_findKeyBindCombos(); // pal/ntsc might have changed, reset related stuff target_fps = Pico.m.pal ? 50 : 60; @@ -949,9 +896,9 @@ void emu_Loop(void) // prepare sound stuff PsndOut = NULL; - if (currentConfig.EmuOpt & 4) + if (currentConfig.EmuOpt & EOPT_EN_SOUND) { - emu_startSound(); + pemu_sound_start(); } sceDisplayWaitVblankStart(); @@ -1097,7 +1044,7 @@ void emu_Loop(void) if (PicoAHW & PAHW_MCD) PicoCDBufferFree(); if (PsndOut != NULL) { - emu_endSound(); + pemu_sound_stop(); PsndOut = NULL; } @@ -1112,13 +1059,6 @@ void emu_Loop(void) memset32_uncached((int *)psp_video_get_active_fb() + 512*264*2/4, 0, 512*8*2/4); } - -void emu_ResetGame(void) -{ - PicoReset(); - reset_timing = 1; -} - void emu_HandleResume(void) { if (!(PicoAHW & PAHW_MCD)) return;