X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Femu.c;h=a9acac7884cc4e375e43c88acb32f2154b5115c5;hb=b3972d826fe31f82aa3382f80454e5d8ce895705;hp=b0504191a99b8e0fa6fd4a129e4ac68ba96092ef;hpb=7443ecd9586ff46c9ffbe8c2fdc719c722ff9b25;p=libpicofe.git diff --git a/psp/emu.c b/psp/emu.c index b050419..a9acac7 100644 --- a/psp/emu.c +++ b/psp/emu.c @@ -21,8 +21,8 @@ #include "../common/emu.h" #include "../common/config.h" #include "../common/lprintf.h" -#include "../../Pico/PicoInt.h" -#include "../../Pico/cd/cue.h" +#include +#include #define OSD_FPS_X 432 @@ -54,9 +54,10 @@ void emu_noticeMsgUpdated(void) noticeMsgTime = sceKernelGetSystemTimeLow(); } -void emu_getMainDir(char *dst, int len) +int emu_getMainDir(char *dst, int len) { if (len > 0) *dst = 0; + return 0; } static void osd_text(int x, const char *text, int is_active, int clear_all) @@ -155,16 +156,6 @@ void emu_prepareDefaultConfig(void) defaultConfig.turbo_rate = 15; } -void emu_setDefaultConfig(void) -{ - memcpy(¤tConfig, &defaultConfig, sizeof(currentConfig)); - PicoOpt = currentConfig.s_PicoOpt; - PsndRate = currentConfig.s_PsndRate; - PicoRegionOverride = currentConfig.s_PicoRegion; - PicoAutoRgnOrder = currentConfig.s_PicoAutoRgnOrder; - PicoCDBuffers = currentConfig.s_PicoCDBuffers; -} - extern void amips_clut(unsigned short *dst, unsigned char *src, unsigned short *pal, int count); extern void amips_clut_6bit(unsigned short *dst, unsigned char *src, unsigned short *pal, int count); @@ -272,7 +263,7 @@ static void do_pal_update(int allow_sh, int allow_as) localPal[0xe0] = 0; localPal[0xf0] = 0x001f; } - else if (allow_as && (rendstatus & PDRAW_ACC_SPRITES)) + else if (allow_as && (rendstatus & PDRAW_SPR_LO_ON_HI)) { memcpy32((int *)dpal+0x80/2, (void *)localPal, 0x40*2/4); } @@ -299,7 +290,7 @@ static void EmuScanPrepare(void) if (Pico.m.dirtyPal) do_pal_update(1, 1); - if ((rendstatus & PDRAW_ACC_SPRITES) && !(Pico.video.reg[0xC]&8)) + if ((rendstatus & PDRAW_SPR_LO_ON_HI) && !(Pico.video.reg[0xC]&8)) amips_clut_f = amips_clut_6bit; else amips_clut_f = amips_clut; } @@ -618,7 +609,7 @@ static void sound_init(void) lprintf("sceKernelCreateThread failed: %i\n", thid); } -static void sound_prepare(void) +void emu_startSound(void) { static int PsndRate_old = 0, PicoOpt_old = 0, pal_old = 0; int ret, stereo; @@ -657,7 +648,7 @@ static void sound_prepare(void) } } -static void sound_end(void) +void emu_endSound(void) { int i; if (samples_done == 0) @@ -676,6 +667,14 @@ static void sound_end(void) sceAudio_5C37C0AE(); } +/* wait until we can write more sound */ +void emu_waitSound(void) +{ + // TODO: test this + while (!sound_thread_exit && samples_made - samples_done > samples_block * 4) + psp_msleep(10); +} + static void sound_deinit(void) { sound_thread_exit = 1; @@ -751,10 +750,10 @@ static void RunEventsPico(unsigned int events, unsigned int keys) if (pico_inp_mode != 0) { PicoPad[0] &= ~0x0f; // release UDLR - if (keys & BTN_UP) { pico_pen_y--; if (pico_pen_y < 8) pico_pen_y = 8; } - if (keys & BTN_DOWN) { pico_pen_y++; if (pico_pen_y > 224-PICO_PEN_ADJUST_Y) pico_pen_y = 224-PICO_PEN_ADJUST_Y; } - if (keys & BTN_LEFT) { pico_pen_x--; if (pico_pen_x < 0) pico_pen_x = 0; } - if (keys & BTN_RIGHT) { + if (keys & PBTN_UP) { pico_pen_y--; if (pico_pen_y < 8) pico_pen_y = 8; } + if (keys & PBTN_DOWN) { pico_pen_y++; if (pico_pen_y > 224-PICO_PEN_ADJUST_Y) pico_pen_y = 224-PICO_PEN_ADJUST_Y; } + if (keys & PBTN_LEFT) { pico_pen_x--; if (pico_pen_x < 0) pico_pen_x = 0; } + if (keys & PBTN_RIGHT) { int lim = (Pico.video.reg[12]&1) ? 319 : 255; pico_pen_x++; if (pico_pen_x > lim-PICO_PEN_ADJUST_X) @@ -780,10 +779,10 @@ static void RunEvents(unsigned int which) int keys; sceGuSync(0,0); blit2("", (which & 0x1000) ? "LOAD STATE? (X=yes, O=no)" : "OVERWRITE SAVE? (X=yes, O=no)", 0); - while( !((keys = psp_pad_read(1)) & (BTN_X|BTN_CIRCLE)) ) + while( !((keys = psp_pad_read(1)) & (PBTN_X|PBTN_CIRCLE)) ) psp_msleep(50); - if (keys & BTN_CIRCLE) do_it = 0; - while( ((keys = psp_pad_read(1)) & (BTN_X|BTN_CIRCLE)) ) // wait for release + if (keys & PBTN_CIRCLE) do_it = 0; + while( ((keys = psp_pad_read(1)) & (PBTN_X|PBTN_CIRCLE)) ) // wait for release psp_msleep(50); clearArea(0); } @@ -837,7 +836,7 @@ static void updateKeys(void) if (keys & PSP_CTRL_HOME) sceDisplayWaitVblankStart(); - if (keys & BTN_SELECT) + if (keys & PBTN_SELECT) engineState = PGS_Menu; keys &= CONFIGURABLE_KEYS; @@ -953,7 +952,7 @@ void emu_Loop(void) PsndOut = NULL; if (currentConfig.EmuOpt & 4) { - sound_prepare(); + emu_startSound(); } sceDisplayWaitVblankStart(); @@ -1099,8 +1098,8 @@ void emu_Loop(void) if (PicoAHW & PAHW_MCD) PicoCDBufferFree(); if (PsndOut != NULL) { + emu_endSound(); PsndOut = NULL; - sound_end(); } // save SRAM