From: yellows8 Date: Tue, 25 Nov 2014 04:42:47 +0000 (-0500) Subject: Updated mic example. Returning from the example then launching it again via hbmenu... X-Git-Tag: v0.2.0~22 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=6adaa95c18762d51935a94efec46d907c1507981;p=corbenik%2Fctrulib.git Updated mic example. Returning from the example then launching it again via hbmenu is broken. --- diff --git a/examples/mic/source/main.c b/examples/mic/source/main.c index 8e6fc11..89ece51 100644 --- a/examples/mic/source/main.c +++ b/examples/mic/source/main.c @@ -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();