]> Chaos Git - corbenik/ctrulib.git/commitdiff
Updated mic example. Returning from the example then launching it again via hbmenu...
authoryellows8 <yellows8@users.noreply.github.com>
Tue, 25 Nov 2014 04:42:47 +0000 (23:42 -0500)
committeryellows8 <yellows8@users.noreply.github.com>
Tue, 25 Nov 2014 04:42:47 +0000 (23:42 -0500)
examples/mic/source/main.c

index 8e6fc11fd0a654cb41057a3ba67c659f339ab909..89ece516d5bd42e950ebec3ad3b6025a3d8ab49b 100644 (file)
@@ -11,13 +11,14 @@ int main()
        u8 *audiobuf;
        u32 audiobuf_size = 0x100000, audiobuf_pos = 0;
        u8 control=0x40;
+       u32 audio_initialized = 0;
 
        srvInit();      
        aptInit();
        gfxInit();
        hidInit(NULL);
        
-       CSND_initialize(NULL);
+       if(CSND_initialize(NULL)==0)audio_initialized = 1;
 
        sharedmem = (u32*)memalign(0x1000, sharedmem_size);
        audiobuf = linearAlloc(audiobuf_size);
@@ -26,52 +27,63 @@ int main()
 
        while(aptMainLoop())
        {
-               framebuf = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL);
                hidScanInput();
+               gspWaitForVBlank();
+
+               u32 kDown = hidKeysDown();
+               if (kDown & KEY_START)
+                       break; // break in order to return to hbmenu
 
-               if(hidKeysDown() & KEY_A)
+               if(audio_initialized)
                {
-                       audiobuf_pos = 0;
+                       framebuf = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL);
 
-                       CSND_setchannel_playbackstate(0x8, 0);//Stop audio playback.
-                       CSND_sharedmemtype0_cmdupdatestate(0);
+                       if(kDown & KEY_A)
+                       {
+                               audiobuf_pos = 0;
 
-                       MIC_SetRecording(1);
+                               CSND_setchannel_playbackstate(0x8, 0);//Stop audio playback.
+                               CSND_sharedmemtype0_cmdupdatestate(0);
 
-                       memset(framebuf, 0x20, 0x46500);
-               }
+                               MIC_SetRecording(1);
 
-               if((hidKeysHeld() & KEY_A) && audiobuf_pos < audiobuf_size)
-               {
-                       audiobuf_pos+= MIC_ReadAudioData(&audiobuf[audiobuf_pos], audiobuf_size-audiobuf_pos, 1);
-                       if(audiobuf_pos > audiobuf_size)audiobuf_pos = audiobuf_size;
+                               memset(framebuf, 0x20, 0x46500);
+                       }
 
-                       memset(framebuf, 0x60, 0x46500);
-               }
+                       if((hidKeysHeld() & KEY_A) && audiobuf_pos < audiobuf_size)
+                       {
+                               audiobuf_pos+= MIC_ReadAudioData(&audiobuf[audiobuf_pos], audiobuf_size-audiobuf_pos, 1);
+                               if(audiobuf_pos > audiobuf_size)audiobuf_pos = audiobuf_size;
 
-               if(hidKeysUp() & KEY_A)
-               {
-                       MIC_SetRecording(0);
-                       GSPGPU_FlushDataCache(NULL, audiobuf, audiobuf_pos);
-                       CSND_playsound(0x8, CSND_LOOP_DISABLE, CSND_ENCODING_PCM16, 16000, (u32*)audiobuf, NULL, audiobuf_pos, 2, 0);
+                               memset(framebuf, 0x60, 0x46500);
+                       }
 
-                       memset(framebuf, 0xe0, 0x46500);
+                       if(hidKeysUp() & KEY_A)
+                       {
+                               MIC_SetRecording(0);
+                               GSPGPU_FlushDataCache(NULL, audiobuf, audiobuf_pos);
+                               CSND_playsound(0x8, CSND_LOOP_DISABLE, CSND_ENCODING_PCM16, 16000, (u32*)audiobuf, NULL, audiobuf_pos, 2, 0);
 
-                       gfxFlushBuffers();
-                       gfxSwapBuffers();
+                               memset(framebuf, 0xe0, 0x46500);
 
-                       framebuf = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL);
-                       memset(framebuf, 0xe0, 0x46500);
+                               gfxFlushBuffers();
+                               gfxSwapBuffers();
+
+                               framebuf = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL);
+                               memset(framebuf, 0xe0, 0x46500);
+                       }
                }
 
                gfxFlushBuffers();
                gfxSwapBuffers();
-               gspWaitForVBlank();
        }
 
        MIC_Shutdown();
 
-       CSND_shutdown();
+       if(audio_initialized)CSND_shutdown();
+
+       free(sharedmem);
+       linearFree(audiobuf);
 
        hidExit();
        gfxExit();