diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 1f8d66cd..4f7dbb6d 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -309,16 +309,19 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* // I2S停止(MCLKは動作継続) reg_SND_SMX_CNT &= ~REG_SND_SMX_CNT_E_MASK; + // CODEC再初期化 + CDC_Init(); + + // CODEC-DSモードへの遷移 if ( isNtrMode || th->s.exFlags.codec_mode == OS_CODECMODE_NITRO ) { - // (CODEC-DSモード) + // マイク不具合DSタイトルは音量を絞る + if ( *target == REBOOT_TARGET_DS_APP ) + { + DS_CheckSpeakerVolume( dh ); + } CDC_GoDsMode(); } - else - { - // 再初期化(CODEC-TWLモード) - CDC_Init(); - } // I2S再開 // DSサウンド:DSP = 8:0 diff --git a/build/libraries_sysmenu/ds/ARM7/Makefile b/build/libraries_sysmenu/ds/ARM7/Makefile index 65e08736..c959afc0 100644 --- a/build/libraries_sysmenu/ds/ARM7/Makefile +++ b/build/libraries_sysmenu/ds/ARM7/Makefile @@ -26,12 +26,14 @@ TWL_PROC = ARM7 #---------------------------------------------------------------------------- -SRCDIR = ../common/src +SRCDIR = ./src \ + ../common/src INCDIR = ../common/include \ $(ROOT)/build/libraries/mb/common/include \ SRCS = ds_wlpatch.c \ + ds_volume.c TARGET_LIB = libds_sp$(TWL_LIBSUFFIX).a diff --git a/build/libraries_sysmenu/ds/ARM7/src/ds_volume.c b/build/libraries_sysmenu/ds/ARM7/src/ds_volume.c new file mode 100644 index 00000000..7f03806c --- /dev/null +++ b/build/libraries_sysmenu/ds/ARM7/src/ds_volume.c @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: ds_volume.c + + Copyright 2008 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include + +/*---------------------------------------------------------------------------* + 型宣言 + *---------------------------------------------------------------------------*/ + +typedef struct _DsSpecialSpeakerVolumeTitle +{ + u8 gamecode[6]; // NULL終端兼アライメント用に2バイト大きいサイズを与える + u8 rom_version; + u8 volume; +} DsSpecialSpeakerVolumeTitle; + +/*---------------------------------------------------------------------------* + 静的変数定義 + *---------------------------------------------------------------------------*/ + +static DsSpecialSpeakerVolumeTitle sList[] ATTRIBUTE_ALIGN(32) = +{ + { "AKEJ", 0, 0x40 }, + { "ABXJ", 0, 0x40 }, + { "ALHJ", 0, 0x40 }, + { "YFSJ", 0, 0x40 }, + { "AY8E", 0, 0x40 }, + { "YONJ", 0, 0x40 }, + { "ACCE", 0, 0x40 }, + { "AN9E", 0, 0x40 }, + { "A5HE", 0, 0x40 }, + { "A5IE", 0, 0x40 }, + { "AMHE", 0, 0x40 }, + { "A3TX", 0, 0x40 }, + { "YCQE", 0, 0x40 }, + { "YBOE", 0, 0x40 }, + { "ADAE", 5, 0x40 }, + { "APAE", 5, 0x40 }, + { "ACZY", 0, 0x40 }, + { "APYJ", 0, 0x40 }, + { "AY7P", 0, 0x40 }, + { "AWHP", 0, 0x40 }, + { "AWHE", 0, 0x40 }, + { "AOIJ", 0, 0x40 }, + { "AOIJ", 1, 0x40 }, + { "YO9J", 0, 0x40 }, + { "YYKJ", 0, 0x40 } +}; + +/*---------------------------------------------------------------------------* + グローバル関数定義 + *---------------------------------------------------------------------------*/ + +void DS_CheckSpeakerVolume( void* romHeaderNTR ) +{ + ROM_Header* dh = romHeaderNTR; + int i; + int limit = sizeof(sList)/sizeof(sList[0]); + for (i=0;is.game_code && + sList[i].rom_version == dh->s.rom_version) + { + CDC_WriteSpiRegisterEx( 1, REG_CDC1_SP_ANGVOL_L_ADDR, (u8)(CDC1_ANGVOL_E | sList[i].volume) ); + CDC_WriteSpiRegisterEx( 1, REG_CDC1_SP_ANGVOL_R_ADDR, (u8)(CDC1_ANGVOL_E | sList[i].volume) ); + break; + } + } +} diff --git a/include/sysmenu/ds/common/ds.h b/include/sysmenu/ds/common/ds.h index 479fe350..9081e3ae 100644 --- a/include/sysmenu/ds/common/ds.h +++ b/include/sysmenu/ds/common/ds.h @@ -29,7 +29,7 @@ extern "C" { #define DS_WLPATCH_COPYCODE_SIZE (10*4) void DS_InsertWLPatch( void* romHeaderNTR ); - +void DS_CheckSpeakerVolume( void* romHeaderNTR ); #ifdef __cplusplus } /* extern "C" */