From 2b488686180d99d431d99ff2463fb7b34aee957b Mon Sep 17 00:00:00 2001 From: aliaspider Date: Tue, 27 Oct 2015 19:11:52 +0100 Subject: [PATCH 1/4] nit. --- Makefile.ctr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.ctr b/Makefile.ctr index 4fc2261928..ba94b62084 100644 --- a/Makefile.ctr +++ b/Makefile.ctr @@ -88,7 +88,7 @@ else OBJS += camera/drivers/nullcamera.o OBJS += location/drivers/nulllocation.o OBJS += audio/drivers/ctr_csnd_audio.o - OBJS += audio/drivers/ctr_dsp_audio.o + OBJS += audio/drivers/ctr_dsp_audio.o OBJS += audio/drivers/nullaudio.o OBJS += gfx/video_driver.o OBJS += gfx/video_common.o From 98f84b9c8e85bcbd814339625659908c98c434e2 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Tue, 27 Oct 2015 19:43:39 +0100 Subject: [PATCH 2/4] (3DS) build fix. --- Makefile.ctr | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.ctr b/Makefile.ctr index ba94b62084..d216f18a80 100644 --- a/Makefile.ctr +++ b/Makefile.ctr @@ -42,6 +42,8 @@ ifeq ($(GRIFFIN_BUILD), 1) else OBJS += libretro-common/file/file_extract.o OBJS += performance.o + OBJS += libretro-common/compat/compat_getopt.o + OBJS += libretro-common/compat/compat_strcasestr.o OBJS += libretro-common/compat/compat_strl.o OBJS += libretro-common/compat/compat_fnmatch.o OBJS += libretro-common/memmap/memalign.o @@ -135,6 +137,7 @@ else OBJS += libretro-common/file/retro_file.o OBJS += libretro-common/file/retro_stat.o OBJS += dir_list_special.o + OBJS += string_list_special.o OBJS += libretro-common/string/string_list.o OBJS += libretro-common/string/stdstring.o OBJS += file_ops.o From 39c5b683b86b62a19fe5d68ceb82568a8d6c90d0 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Tue, 27 Oct 2015 19:50:39 +0100 Subject: [PATCH 3/4] (3DS) auto-extract /3ds/dspfirm.cdc from /3ds/code.bin when needed/ --- frontend/drivers/platform_ctr.c | 54 +++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index d99cc6c895..f9ac12a0de 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -46,6 +46,8 @@ void dump_result_value(Result val); #define DEBUG_VAR(X) printf( "%-20s: 0x%08X\n", #X, (u32)(X)) #define DEBUG_VAR64(X) printf( #X"\r\t\t\t\t : 0x%016llX\n", (u64)(X)) #define DEBUG_ERROR(X) do{if(X)dump_result_value(X)}while(0) +#define PRINTFPOS(X,Y) "\x1b["#X";"#Y"H" +#define PRINTFPOS_STR(X,Y) "\x1b["X";"Y"H" #endif #define CTR_APPMEMALLOC_PTR ((u32*)0x1FF80040) @@ -238,8 +240,55 @@ static void frontend_ctr_shutdown(bool unused) (void)unused; } -#define PRINTFPOS(X,Y) "\x1b["#X";"#Y"H" -#define PRINTFPOS_STR(X,Y) "\x1b["X";"Y"H" +static void ctr_check_dspfirm(void) +{ + FILE* dsp_fp = fopen("sdmc:/3ds/dspfirm.cdc", "rb"); + + if(dsp_fp) + fclose(dsp_fp); + else + { + uint32_t* code_buffer; + uint32_t* ptr; + FILE* code_fp; + size_t code_size; + const uint32_t dsp1_magic = 0x31505344; /* "DSP1" */ + + code_fp =fopen("sdmc:/3ds/code.bin", "rb"); + if(code_fp) + { + fseek(code_fp, 0, SEEK_END); + code_size = ftell(code_fp); + fseek(code_fp, 0, SEEK_SET); + + code_buffer = (uint32_t*) malloc(code_size); + if(code_buffer) + { + fread(code_buffer, 1, code_size, code_fp); + + for (ptr = code_buffer + 0x40; ptr < (code_buffer + (code_size >> 2)); ptr++) + { + if (*ptr == dsp1_magic) + { + size_t dspfirm_size = ptr[1]; + ptr -= 0x40; + if ((ptr + (dspfirm_size >> 2)) > (code_buffer + (code_size >> 2))) + break; + + dsp_fp = fopen("sdmc:/3ds/dspfirm.cdc", "wb"); + if(!dsp_fp) + break; + fwrite(ptr, 1, dspfirm_size, dsp_fp); + fclose(dsp_fp); + break; + } + } + free(code_buffer); + } + fclose(code_fp); + } + } +} static void frontend_ctr_init(void *data) { @@ -262,6 +311,7 @@ static void frontend_ctr_init(void *data) audio_ctr_csnd = audio_ctr_dsp; audio_ctr_dsp = audio_null; } + ctr_check_dspfirm(); if(ndspInit() != 0) *dsp_audio_driver = audio_null; initCfgu(); From 01ed0af1225d57053bb2a9488cc9c5ef7563fa20 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Tue, 27 Oct 2015 19:54:00 +0100 Subject: [PATCH 4/4] nit. --- Makefile.ctr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.ctr b/Makefile.ctr index d216f18a80..d5ad185560 100644 --- a/Makefile.ctr +++ b/Makefile.ctr @@ -42,8 +42,8 @@ ifeq ($(GRIFFIN_BUILD), 1) else OBJS += libretro-common/file/file_extract.o OBJS += performance.o - OBJS += libretro-common/compat/compat_getopt.o - OBJS += libretro-common/compat/compat_strcasestr.o + OBJS += libretro-common/compat/compat_getopt.o + OBJS += libretro-common/compat/compat_strcasestr.o OBJS += libretro-common/compat/compat_strl.o OBJS += libretro-common/compat/compat_fnmatch.o OBJS += libretro-common/memmap/memalign.o @@ -137,7 +137,7 @@ else OBJS += libretro-common/file/retro_file.o OBJS += libretro-common/file/retro_stat.o OBJS += dir_list_special.o - OBJS += string_list_special.o + OBJS += string_list_special.o OBJS += libretro-common/string/string_list.o OBJS += libretro-common/string/stdstring.o OBJS += file_ops.o