From 98acfbefbd9e3f4cbb6560b11931b93358d9d624 Mon Sep 17 00:00:00 2001 From: kamikawa Date: Wed, 3 Sep 2008 01:53:13 +0000 Subject: [PATCH] =?UTF-8?q?=E9=96=8B=E7=99=BA=E6=A9=9F=E7=94=A8=E3=82=B7?= =?UTF-8?q?=E3=83=AA=E3=82=A2=E3=83=ABNo=E3=81=AE=E5=85=88=E9=A0=AD?= =?UTF-8?q?=E3=81=8C'V'=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=93?= =?UTF-8?q?=E3=81=A8=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=80=82=20=E5=8C=97?= =?UTF-8?q?=E7=B1=B3=E7=89=88=E3=81=AE=E3=82=B7=E3=83=AA=E3=82=A2=E3=83=AB?= =?UTF-8?q?No=E3=82=92=E5=88=9D=E3=82=81=E3=81=A6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E3=81=99=E3=82=8B=E9=9A=9B=E3=80=81=E4=BB=96=E3=81=AE=E3=83=AA?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E7=94=A8=E3=81=A8=E3=81=AF?= =?UTF-8?q?=E7=95=B0=E3=81=AA=E3=82=8B8=E6=A1=81=E3=81=AE=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E3=81=8C=E7=94=9F=E6=88=90=E3=81=95=E3=82=8C=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2380 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../HWInfoWriter/ARM9/src/hwi.c | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c index fd24bbd5..0dcb6a69 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c @@ -441,13 +441,18 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi LCFG_THW_SetValidLanguageBitmap( s_langBitmapList[ region ] ); // シリアルNo.のセット - if( pSerialNo == NULL ) { + if( pSerialNo != NULL ) + { + LCFG_THW_SetSerialNo( pSerialNo ); + } + else + { // 量産工程でないとシリアルNo.は用意できないので、ここではMACアドレスをもとに適当な値をセットする。 u8 buffer[ 12 ] = "SERIAL"; // 適当な文字列をMACアドレスと結合してSHA1を取り、仮SerialNoとする。 u8 serialNoOld[ SVC_SHA1_DIGEST_SIZE ]; u8 serialNoNew[ SVC_SHA1_DIGEST_SIZE ]; u8 sha1_buffer[ SVC_SHA1_DIGEST_SIZE ]; - int i; + int i,j; int len; int offset; @@ -468,11 +473,18 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi // 新しいシリアルNoをクリアしておく MI_CpuClear8( serialNoNew, sizeof(serialNoNew) ); - // シリアルNoの先頭が'T'でなければ不正なので仮のシリアルNo.を作成する - if ( serialNoOld[0] != 'T') + // シリアルNoの先頭が'T'(量産用)または'V'(開発用)でなければ不正なので仮のシリアルNo.を作成する + if ( serialNoOld[0] != 'T' && serialNoOld[0] != 'V') { - // 1バイト目はTWLの'T' - serialNoNew[0] = 'T'; + // 1バイト目は量産用なら'T'、その他なら'V' + if (SCFG_ReadBondingOption() == SCFG_OP_PRODUCT) + { + serialNoNew[0] = 'T'; + } + else + { + serialNoNew[0] = 'V'; + } // 2バイト目はリージョン別ASCII serialNoNew[1] = (u8)regionAsciiForSerialNo[region]; // 米国リージョン以外は3バイト目にEMS(仮シリアルNo.なので任天堂の'N') @@ -484,8 +496,8 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi // 数字8桁 OS_GetMacAddress( buffer + 6 ); SVC_CalcSHA1( sha1_buffer, buffer, sizeof(buffer) ); - for( i = offset; i < len-1; i++ ) { - serialNoNew[ i ] = (u8)( ( sha1_buffer[ i ] % 10 ) + 0x30 ); + for( i=offset,j=0; i < len-1; i++,j++ ) { + serialNoNew[ i ] = (u8)( ( sha1_buffer[ j ] % 10 ) + 0x30 ); } // チェックコード取得 @@ -494,11 +506,18 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi // 仮シリアルNo.であることの印として14バイト目を'K'とする serialNoNew[13] = 'K'; } - // シリアルNoの先頭が'T'である場合ユニーク数字8桁はそのままで他を変更する + // シリアルNoの先頭が'T'(量産用)または'V'(開発用)である場合ユニーク数字8桁はそのままで他を変更する else { - // 1バイト目はTWLの'T' - serialNoNew[0] = 'T'; + // 1バイト目は量産用なら'T'、その他なら'V' + if (SCFG_ReadBondingOption() == SCFG_OP_PRODUCT) + { + serialNoNew[0] = 'T'; + } + else + { + serialNoNew[0] = 'V'; + } // 2バイト目はリージョン別ASCII serialNoNew[1] = (u8)regionAsciiForSerialNo[region]; // 米国リージョン以外は3バイト目にEMS @@ -536,8 +555,6 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi OS_TPrintf( "serialNo : %s\n", serialNoNew ); LCFG_THW_SetSerialNo( serialNoNew ); - }else { - LCFG_THW_SetSerialNo( pSerialNo ); } // ランチャーTitleID_Loのセット