unified menu wip and some reorganization for it
[libpicofe.git] / psp / emu.c
index 91bd563..a9acac7 100644 (file)
--- 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