X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Femu.c;h=a9acac7884cc4e375e43c88acb32f2154b5115c5;hb=24b24674aedbdcb4432ab2ed823c3d9c97852da4;hp=91bd5634f3d47532487f264f75fea5d9b42e289b;hpb=f11bad75edc8966e9f84b040163cc86e830c46c6;p=libpicofe.git diff --git a/psp/emu.c b/psp/emu.c index 91bd563..a9acac7 100644 --- a/psp/emu.c +++ b/psp/emu.c @@ -609,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; @@ -648,7 +648,7 @@ static void sound_prepare(void) } } -static void sound_end(void) +void emu_endSound(void) { int i; if (samples_done == 0) @@ -667,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; @@ -742,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) @@ -771,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); } @@ -828,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; @@ -944,7 +952,7 @@ void emu_Loop(void) PsndOut = NULL; if (currentConfig.EmuOpt & 4) { - sound_prepare(); + emu_startSound(); } sceDisplayWaitVblankStart(); @@ -1090,8 +1098,8 @@ void emu_Loop(void) if (PicoAHW & PAHW_MCD) PicoCDBufferFree(); if (PsndOut != NULL) { + emu_endSound(); PsndOut = NULL; - sound_end(); } // save SRAM