mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NTRカードタイトル起動時にバックアップデバイスのチェックとブラックリストの照合を行うように
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@3063 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3cdc0d6066
commit
f2c63c34f5
@ -35,6 +35,8 @@ SRCS = sysmenu_lib.c \
|
|||||||
SaveDataChecker/lgy_SaveDataChecker.c \
|
SaveDataChecker/lgy_SaveDataChecker.c \
|
||||||
SaveDataChecker/lgy_VCK.c \
|
SaveDataChecker/lgy_VCK.c \
|
||||||
SaveDataChecker/lgy_VCW.c \
|
SaveDataChecker/lgy_VCW.c \
|
||||||
|
SaveDataChecker/lgy_BackupDeviceChecker.c \
|
||||||
|
Blacklist/lgy_BlackList.c \
|
||||||
fs_wram.c \
|
fs_wram.c \
|
||||||
../common/src/status.c \
|
../common/src/status.c \
|
||||||
../common/src/pxi.c \
|
../common/src/pxi.c \
|
||||||
|
|||||||
@ -0,0 +1,310 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: lgy_BlackList.cpp
|
||||||
|
|
||||||
|
Copyright (C)2009-2012 Nintendo Co., Ltd. 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.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl.h>
|
||||||
|
#include <sysmenu.h>
|
||||||
|
#include "lgy_BlackList.h"
|
||||||
|
|
||||||
|
static void checkBlackListRom( void);
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct lgyBlackCodeList
|
||||||
|
{
|
||||||
|
char** code_list;
|
||||||
|
u16 num;
|
||||||
|
u16 reserved;
|
||||||
|
} lgyBlackCodeList;
|
||||||
|
|
||||||
|
// 以下、3文字目を揃えたリスト
|
||||||
|
static char *black_2[] = {
|
||||||
|
"A22J", "A22E", "A22P", "A32J", "A32E", "A42J", "A52J", "A62J",
|
||||||
|
"A72E", "A62P", "A72J", "Y52E", "A62E", "A82J", "Y22J", "A22K",
|
||||||
|
"Y32J", "A72K", "Y42J", "A62K", "Y52J", "Y52K", "Y62J", "A22J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_3[] = {
|
||||||
|
"A23J", "A23E", "A33J", "A43J", "A53J", "A63J", "A63E", "A43E",
|
||||||
|
"A43P", "Y23E", "Y73E", "A73J", "A83J", "A93J", "Y23J", "Y33J",
|
||||||
|
"A23K", "A43K", "Y43J", "A23J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_4[] = {
|
||||||
|
"A24J", "A24E", "A34J", "A54J",
|
||||||
|
"A74P", "Y54J", "Y54E", "Y54P", "Y54X", "A24P", "A44J", "A64J",
|
||||||
|
"A84J", "Y34J", "Y54K", "Y64J", "A24J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_5[] = {
|
||||||
|
"A25J", "A35J", "A45J",
|
||||||
|
"A55J", "A55E", "A85E", "A45P", "A85J", "A85P", "A95E", "A25J",
|
||||||
|
"A65J", "A75J", "A95J", "Y25J", "A85K", "Y35J", "A55K", "Y45J",
|
||||||
|
"Y55P", "Y65J", "Y75J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_6[] = {
|
||||||
|
"A26J", "A26E", "A26P", "A36J", "A36E",
|
||||||
|
"A36P", "A76E", "Y36E", "Y56E", "Y56X", "Y56P", "A66J", "A56J",
|
||||||
|
"A76J", "A96J", "Y26J", "A36K", "Y36J", "A76K", "Y76J", "A26J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_7[] = {
|
||||||
|
"A27J", "A27P", "A37J", "A57J", "A57E", "A57P", "CM7E", "A67J",
|
||||||
|
"A77J", "A97J", "Y27J", "A57K", "Y47J", "Y57J", "Y77K", "A27J"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_8[] = {
|
||||||
|
"A28J", "A38J", "A48J", "A58E", "A58P", "Y28E", "Y28P", "Y78P",
|
||||||
|
"A58J", "A78J", "A98J", "Y28J", "Y28K", "Y48K", "Y68J", "A58K"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_9[] = {
|
||||||
|
"A29J", "A29E", "A29P", "A39E", "A49J", "A59E", "A39J", "A79J",
|
||||||
|
"A79E", "A79P", "Y49E", "Y49P", "Y79P", "Y79F", "A69J", "A89J",
|
||||||
|
"A99J", "A39K", "Y39J", "Y59J", "Y69J", "Y89K"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_A[] = {
|
||||||
|
"Y4AP", "Y8AP",
|
||||||
|
"Y2AJ", "Y3AJ", "Y4AJ", "Y5AJ", "Y4AK", "Y6AJ", "Y7AJ", "Y8AJ",
|
||||||
|
"Y8AE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_B[] = {
|
||||||
|
"Y9BP", "Y9BI", "Y9BF", "Y9BD", "Y2BJ", "Y3BJ", "Y4BJ",
|
||||||
|
"Y5BJ", "Y6BJ", "Y8BJ", "Y9BH", "Y9BS"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_C[] = {
|
||||||
|
"Y4CE", "Y4CP", "Y2CJ",
|
||||||
|
"Y3CJ", "Y4CJ", "Y4CK", "Y6CJ", "Y7CP", "Y7CD", "Y7CF", "Y7CS",
|
||||||
|
"Y7CI", "Y7CH"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_D[] = {
|
||||||
|
"Y7DE", "Y2DJ", "Y3DJ", "Y5DJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_E[] = {
|
||||||
|
"Y3EJ", "Y5EE", "Y4EJ", "Y5EJ", "Y6EJ", "Y7EJ", "Y8EE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_F[] = {
|
||||||
|
"Y2FP", "Y6FE", "Y8FE",
|
||||||
|
"Y2FJ", "Y3FJ", "Y4FJ", "Y6FJ", "Y7FJ", "Y8FP"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_G[] = {
|
||||||
|
"Y4GP", "Y4GE",
|
||||||
|
"Y5GP", "Y7GP", "Y7GE", "Y2GJ", "Y4GK", "Y5GE", "Y7GK"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_H[] = {
|
||||||
|
"Y5HE",
|
||||||
|
"Y2HJ", "Y2HP", "Y3HK", "Y4HJ", "Y5HJ", "Y5HK", "Y6HJ", "Y7HJ",
|
||||||
|
"Y8HJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_I[] = {
|
||||||
|
"Y4IE", "Y2IJ", "Y3IJ", "Y4IJ", "Y5IJ", "Y6IJ", "Y7IJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_J[] = {
|
||||||
|
"Y2JE", "Y2JP", "Y5JE", "Y3JJ", "Y2JJ", "Y8JJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_K[] = {
|
||||||
|
"Y2KJ", "Y3KJ", "Y4KJ", "Y6KJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_L[] = {
|
||||||
|
"Y2LE", "Y8LP", "Y8LE", "Y3LJ", "Y4LJ", "Y6LJ", "Y8LJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_M[] = {
|
||||||
|
"Y2ME", "Y2MP", "Y2MJ", "Y3MJ", "Y2MK", "Y4MJ", "Y6MK"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_N[] = {
|
||||||
|
"Y2NJ", "Y3NJ", "Y3NK", "AANJ", "Y8NJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_O[] = {
|
||||||
|
"Y5OE", "Y2OJ", "Y4OJ", "Y5OJ", "Y7OJ", "Y7OK", "Y8OJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_P[] = {
|
||||||
|
"Y6PE", "Y6PP", "Y3PK", "Y4PJ", "Y4PJ", "Y6PJ", "Y7PJ", "Y6PK"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_Q[] = {
|
||||||
|
"Y2QJ", "Y3QJ", "Y4QJ", "Y6QJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_R[] = {
|
||||||
|
"Y4RE", "Y5RE", "Y4RP", "Y5RX", "Y5RP", "Y6RE", "Y2RJ", "Y3RJ",
|
||||||
|
"Y4RJ", "Y4RK", "Y8RJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_S[] = {
|
||||||
|
"Y4SE", "Y6SE", "Y6SP", "Y7SP", "Y7SE",
|
||||||
|
"Y5SE", "Y4SJ", "Y5SJ", "Y6SJ", "Y7SJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_T[] = {
|
||||||
|
"Y5TE", "Y4TJ", "Y6TJ", "Y8TK"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_U[] = {
|
||||||
|
"Y5UE", "Y4UE", "Y4UP", "Y6UP", "Y6UE", "Y2UJ", "Y2UJ",
|
||||||
|
"Y4UJ", "Y6UJ", "Y7UJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_V[] = {
|
||||||
|
"Y5VE", "Y2VJ", "Y3VJ", "Y7VJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_W[] = {
|
||||||
|
"Y2WE", "Y2WP", "Y2WJ", "Y3WJ", "Y4WJ", "Y5WP"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_X[] = {
|
||||||
|
"Y3XJ", "Y7XJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_Y[] = {
|
||||||
|
"Y4YE", "Y5YE", "Y3YJ", "Y4YJ", "Y4YK", "Y5YJ", "Y6YJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *black_Z[] = {
|
||||||
|
"Y6ZS", "Y6ZP",
|
||||||
|
"Y6ZI", "Y6ZH", "Y6ZF", "Y6ZD", "Y6ZE", "Y2ZJ", "Y7ZJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static lgyBlackCodeList black_code_list[43] = {
|
||||||
|
{ NULL, 0}, // '0'
|
||||||
|
{ NULL, 0}, // '1'
|
||||||
|
{ black_2, sizeof(black_2)/sizeof(char*)}, // '2'
|
||||||
|
{ black_3, sizeof(black_3)/sizeof(char*)}, // '3'
|
||||||
|
{ black_4, sizeof(black_4)/sizeof(char*)}, // '4'
|
||||||
|
{ black_5, sizeof(black_5)/sizeof(char*)}, // '5'
|
||||||
|
{ black_6, sizeof(black_6)/sizeof(char*)}, // '6'
|
||||||
|
{ black_7, sizeof(black_7)/sizeof(char*)}, // '7'
|
||||||
|
{ black_8, sizeof(black_8)/sizeof(char*)}, // '8'
|
||||||
|
{ black_9, sizeof(black_9)/sizeof(char*)}, // '9'
|
||||||
|
{ NULL, 0}, // ':'
|
||||||
|
{ NULL, 0}, // ';'
|
||||||
|
{ NULL, 0}, // '<'
|
||||||
|
{ NULL, 0}, // '='
|
||||||
|
{ NULL, 0}, // '>'
|
||||||
|
{ NULL, 0}, // '?'
|
||||||
|
{ NULL, 0}, // '@'
|
||||||
|
{ black_A, sizeof(black_A)/sizeof(char*)}, // 'A'
|
||||||
|
{ black_B, sizeof(black_B)/sizeof(char*)}, // 'B'
|
||||||
|
{ black_C, sizeof(black_C)/sizeof(char*)}, // 'C'
|
||||||
|
{ black_D, sizeof(black_D)/sizeof(char*)}, // 'D'
|
||||||
|
{ black_E, sizeof(black_E)/sizeof(char*)}, // 'E'
|
||||||
|
{ black_F, sizeof(black_F)/sizeof(char*)}, // 'F'
|
||||||
|
{ black_G, sizeof(black_G)/sizeof(char*)}, // 'G'
|
||||||
|
{ black_H, sizeof(black_H)/sizeof(char*)}, // 'H'
|
||||||
|
{ black_I, sizeof(black_I)/sizeof(char*)}, // 'I'
|
||||||
|
{ black_J, sizeof(black_J)/sizeof(char*)}, // 'J'
|
||||||
|
{ black_K, sizeof(black_K)/sizeof(char*)}, // 'K'
|
||||||
|
{ black_L, sizeof(black_L)/sizeof(char*)}, // 'L'
|
||||||
|
{ black_M, sizeof(black_M)/sizeof(char*)}, // 'M'
|
||||||
|
{ black_N, sizeof(black_N)/sizeof(char*)}, // 'N'
|
||||||
|
{ black_O, sizeof(black_O)/sizeof(char*)}, // 'O'
|
||||||
|
{ black_P, sizeof(black_P)/sizeof(char*)}, // 'P'
|
||||||
|
{ black_Q, sizeof(black_Q)/sizeof(char*)}, // 'Q'
|
||||||
|
{ black_R, sizeof(black_R)/sizeof(char*)}, // 'R'
|
||||||
|
{ black_S, sizeof(black_S)/sizeof(char*)}, // 'S'
|
||||||
|
{ black_T, sizeof(black_T)/sizeof(char*)}, // 'T'
|
||||||
|
{ black_U, sizeof(black_U)/sizeof(char*)}, // 'U'
|
||||||
|
{ black_V, sizeof(black_V)/sizeof(char*)}, // 'V'
|
||||||
|
{ black_W, sizeof(black_W)/sizeof(char*)}, // 'W'
|
||||||
|
{ black_X, sizeof(black_X)/sizeof(char*)}, // 'X'
|
||||||
|
{ black_Y, sizeof(black_Y)/sizeof(char*)}, // 'Y'
|
||||||
|
{ black_Z, sizeof(black_Z)/sizeof(char*)} // 'Z'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOL CheckBlackList( TitleProperty *rhs)
|
||||||
|
{
|
||||||
|
u16 list_num;
|
||||||
|
u8 second_character_value;
|
||||||
|
char test[5];
|
||||||
|
|
||||||
|
{
|
||||||
|
char* n = (char*)&rhs->titleID;
|
||||||
|
test[0] = n[3];
|
||||||
|
test[1] = n[2];
|
||||||
|
test[2] = n[1];
|
||||||
|
test[3] = n[0];
|
||||||
|
test[4] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
{ // テスト用
|
||||||
|
int total = 0;
|
||||||
|
for( int i=0; i<43; i++)
|
||||||
|
{
|
||||||
|
total += black_code_list[i].num;
|
||||||
|
if( !black_code_list[i].code_list)
|
||||||
|
{
|
||||||
|
OS_TPrintf( "[%d] : NULL, %d\n", i, black_code_list[i].num);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OS_TPrintf( "[%d] : 0x%x, %d\n", i, black_code_list[i].code_list, black_code_list[i].num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OS_TPrintf( "black list total : %d\n", total);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
second_character_value = (u8)(test[2]); // 3文字目
|
||||||
|
if( (second_character_value < '0')||(second_character_value > 'Z'))
|
||||||
|
{
|
||||||
|
OS_TPrintf(" This game has no backup device...\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
u8 second_character_index = second_character_value - '0';
|
||||||
|
u16 max = black_code_list[second_character_index].num;
|
||||||
|
char** small_list = black_code_list[second_character_index].code_list;
|
||||||
|
for( list_num = 0; list_num < max; list_num++)
|
||||||
|
{
|
||||||
|
OS_TPrintf("small list:%s\n", small_list[list_num]);
|
||||||
|
if( 0 == STD_CompareNString( &test[0], small_list[list_num], 4))
|
||||||
|
{
|
||||||
|
OS_TPrintf("%s is on the BlackList.\n", small_list[list_num]);
|
||||||
|
checkBlackListRom();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OS_TPrintf(" This game is not on the BlackList.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
ダミーリードによってベリファイによる起動ブロックを装ってみるかも
|
||||||
|
*/
|
||||||
|
static void checkBlackListRom( void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: lgy_BlackList.h
|
||||||
|
|
||||||
|
Copyright (C)2009-2012 Nintendo Co., Ltd. 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.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __LGY_BLACKLIST_CPP__
|
||||||
|
#define __LGY_BLACKLIST_CPP__
|
||||||
|
|
||||||
|
BOOL CheckBlackList( TitleProperty *rhs);
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -0,0 +1,800 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: lgy_SaveDataChecker.cpp
|
||||||
|
|
||||||
|
Copyright (C)2009-2012 Nintendo Co., Ltd. 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.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <twl.h>
|
||||||
|
#include "lgy_SaveDataChecker.h"
|
||||||
|
#include "lgy_BackupDeviceChecker.h"
|
||||||
|
|
||||||
|
static BOOL ReadBackupStatus( u8* status);
|
||||||
|
static BOOL ReadBackupID( u32* devid);
|
||||||
|
static BOOL checkDevice( void);
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct lgyGameCodeList
|
||||||
|
{
|
||||||
|
char** code_list;
|
||||||
|
u16 num;
|
||||||
|
u16 reserved;
|
||||||
|
} lgyGameCodeList;
|
||||||
|
|
||||||
|
// 以下、3文字目を揃えたリスト
|
||||||
|
// なお、バックアップデバイスの有無は最初の 3文字だけで識別可能
|
||||||
|
// (ROMバージョンの違いや仕向地によってバックアップデバイスの
|
||||||
|
// 有り無しは変わらない)であることは確認済み。
|
||||||
|
static char *list_2[] = {
|
||||||
|
"AG2", "AB2", "AC2", "AD2", "AE2", "AF2", "AH2", "AI2",
|
||||||
|
"AK2", "AL2", "AM2", "AN2", "AO2", "AP2", "AQ2", "AR2",
|
||||||
|
"AS2", "AU2", "AV2", "AW2", "AX2", "AZ2", "B22", "B32",
|
||||||
|
"B42", "B52", "B62", "B72", "B82", "BA2", "BB2", "BD2",
|
||||||
|
"BE2", "BF2", "BG2", "BH2", "BJ2", "BL2", "BM2", "BN2",
|
||||||
|
"BO2", "BP2", "BQ2", "BR2", "BS2", "BT2", "BU2", "BV2",
|
||||||
|
"BW2", "BX2", "BY2", "BZ2", "C22", "C32", "C42", "C52",
|
||||||
|
"C62", "C72", "CA2", "CB2", "CC2", "CD2", "CE2", "CF2",
|
||||||
|
"CG2", "CH2", "CI2", "CJ2", "CK2", "CL2", "CM2", "CN2",
|
||||||
|
"CO2", "CP2", "CQ2", "CR2", "CS2", "CT2", "CU2", "CW2",
|
||||||
|
"CX2", "CY2", "CZ2", "TK2", "TP2", "YA2", "YB2", "YC2",
|
||||||
|
"YD2", "YE2", "YF2", "YG2", "YH2", "YI2", "YJ2", "YK2",
|
||||||
|
"YL2", "YM2", "YN2", "YO2", "YP2", "YQ2", "YR2", "YS2",
|
||||||
|
"YT2", "YU2", "YV2", "YW2", "YX2", "YY2", "YZ2"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_3[] = {
|
||||||
|
"AL3", "AB3",
|
||||||
|
"AC3", "AD3", "AE3", "AF3", "AG3", "AH3", "AI3", "AK3",
|
||||||
|
"AO3", "AQ3", "AR3", "AS3", "AU3", "AV3", "AW3",
|
||||||
|
"AX3", "AY3", "AZ3", "B23", "B33", "B43", "B53", "B63",
|
||||||
|
"B83", "BA3", "BB3", "BC3", "BD3", "BE3", "BF3", "BG3",
|
||||||
|
"BH3", "BJ3", "BK3", "BL3", "BM3", "BN3", "BP3", "BQ3",
|
||||||
|
"BR3", "BS3", "BT3", "BV3", "BW3", "BX3", "BY3", "BZ3",
|
||||||
|
"C23", "C33", "C53", "C63", "C73", "CB3", "CC3", "CD3",
|
||||||
|
"CE3", "CF3", "CG3", "CH3", "CI3", "CJ3", "CL3", "CM3",
|
||||||
|
"CN3", "CO3", "CP3", "CQ3", "CR3", "CS3", "CT3", "CU3",
|
||||||
|
"CV3", "CW3", "CX3", "CY3", "CZ3", "TH3", "TK3", "TM3",
|
||||||
|
"TN3", "YA3", "YB3", "YC3", "YE3", "YF3", "YG3", "YH3",
|
||||||
|
"YI3", "YJ3", "YK3", "YL3", "YM3", "YN3", "YO3", "YQ3",
|
||||||
|
"YR3", "YS3", "YT3", "YU3", "YV3", "YW3", "YY3", "YZ3"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_4[] = {
|
||||||
|
"AB4", "AC4", "AE4", "AH4", "AI4", "AK4", "AL4", "AN4",
|
||||||
|
"AO4", "AQ4", "AR4", "AS4", "AU4", "AV4", "AW4", "AX4",
|
||||||
|
"AY4", "AZ4", "B24", "B34", "B44", "B54", "B64", "B74",
|
||||||
|
"B84", "BA4", "BB4", "BC4", "BF4", "BG4", "BH4", "BJ4",
|
||||||
|
"BK4", "BL4", "BM4", "BN4", "BO4", "BP4", "BQ4", "BR4",
|
||||||
|
"BS4", "BU4", "BV4", "BW4", "BX4", "BY4", "BZ4", "C24",
|
||||||
|
"C34", "C44", "C54", "C64", "C74", "CB4", "CC4", "CD4",
|
||||||
|
"CE4", "CF4", "CG4", "CH4", "CI4", "CJ4", "CK4", "CL4",
|
||||||
|
"CM4", "CO4", "CP4", "CR4", "CS4", "CT4", "CU4", "CV4",
|
||||||
|
"CW4", "CX4", "CY4", "CZ4", "TB4", "TC4", "TD4", "TF4",
|
||||||
|
"TG4", "TM4", "TP4", "YB4", "YC4", "YE4", "YF4", "YG4",
|
||||||
|
"YH4", "YJ4", "YK4", "YL4", "YM4", "YN4", "YO4", "YP4",
|
||||||
|
"YQ4", "YR4", "YS4", "YT4", "YU4", "YV4", "YW4", "YY4",
|
||||||
|
"YZ4"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_5[] = {
|
||||||
|
"AB5", "AC5", "AD5", "AE5", "AG5", "AH5", "AI5",
|
||||||
|
"AK5", "AL5", "AM5", "AN5", "AO5", "AQ5", "AR5", "AS5",
|
||||||
|
"AU5", "AV5", "AW5", "AX5", "AY5", "B35", "B55", "B65",
|
||||||
|
"B75", "B85", "BA5", "BB5", "BC5", "BD5", "BE5", "BF5",
|
||||||
|
"BG5", "BJ5", "BL5", "BM5", "BN5", "BO5", "BP5", "BQ5",
|
||||||
|
"BR5", "BS5", "BT5", "BU5", "BX5", "BY5", "BZ5", "C25",
|
||||||
|
"C45", "C55", "C65", "C75", "CA5", "CB5", "CD5", "CF5",
|
||||||
|
"CG5", "CH5", "CI5", "CJ5", "CK5", "CL5", "CM5", "CN5",
|
||||||
|
"CO5", "CP5", "CR5", "CS5", "CT5", "CU5", "CV5", "CW5",
|
||||||
|
"CX5", "CY5", "CZ5", "TC5", "TJ5", "TK5", "YB5", "YD5",
|
||||||
|
"YF5", "YG5", "YH5", "YI5", "YJ5", "YL5", "YN5", "YO5",
|
||||||
|
"YP5", "YQ5", "YR5", "YS5", "YT5", "YU5", "YV5", "YY5",
|
||||||
|
"YZ5"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_6[] = {
|
||||||
|
"AB6", "AC6", "AE6", "AF6", "AG6", "AH6", "AK6",
|
||||||
|
"AL6", "AM6", "AN6", "AO6", "AQ6", "AR6", "AS6", "AU6",
|
||||||
|
"AV6", "AW6", "AX6", "AY6", "AZ6", "B26", "B36", "B46",
|
||||||
|
"B56", "B66", "B76", "B86", "BA6", "BC6", "BE6", "BF6",
|
||||||
|
"BG6", "BH6", "BK6", "BL6", "BN6", "BO6", "BP6", "BQ6",
|
||||||
|
"BR6", "BS6", "BU6", "BV6", "BW6", "BX6", "BY6", "BZ6",
|
||||||
|
"C26", "C36", "C46", "C56", "C66", "C76", "CA6", "CB6",
|
||||||
|
"CD6", "CE6", "CF6", "CG6", "CH6", "CI6", "CJ6", "CK6",
|
||||||
|
"CL6", "CM6", "CN6", "CO6", "CP6", "CR6", "CS6", "CT6",
|
||||||
|
"CV6", "CW6", "CX6", "CY6", "CZ6", "YB6", "YC6", "YE6",
|
||||||
|
"YF6", "YG6", "YH6", "YI6", "YL6", "YM6", "YN6",
|
||||||
|
"YO6", "YP6", "YR6", "YS6", "YT6", "YU6", "YV6", "YW6",
|
||||||
|
"YZ6"
|
||||||
|
}; //"YK6", はバックアップなしリージョンが存在するので対象から外す
|
||||||
|
|
||||||
|
static char *list_7[] = {
|
||||||
|
"YF7", "AB7", "AC7", "AD7", "AE7", "AF7", "AG7", "AH7",
|
||||||
|
"AK7", "AL7", "AM7", "AN7", "AO7", "AQ7", "AR7", "AS7",
|
||||||
|
"AU7", "AV7", "AW7", "AX7", "AY7", "AZ7", "B27", "B47",
|
||||||
|
"B57", "B67", "B77", "BA7", "BB7", "BC7", "BD7", "BE7",
|
||||||
|
"BF7", "BG7", "BH7", "BJ7", "BL7", "BM7", "BN7", "BO7",
|
||||||
|
"BP7", "BQ7", "BR7", "BS7", "BU7", "BV7", "BW7", "BX7",
|
||||||
|
"BY7", "BZ7", "C27", "C37", "C47", "C57", "C67", "C77",
|
||||||
|
"CA7", "CB7", "CD7", "CE7", "CF7", "CG7", "CH7", "CI7",
|
||||||
|
"CJ7", "CL7", "CN7", "CP7", "CQ7", "CR7", "CS7", "CT7",
|
||||||
|
"CV7", "CY7", "TJ7", "TN7", "YA7", "YB7", "YC7", "YD7",
|
||||||
|
"YE7", "YG7", "YH7", "YI7", "YJ7", "YK7", "YL7",
|
||||||
|
"YM7", "YN7", "YO7", "YR7", "YS7", "YT7", "YV7", "YW7",
|
||||||
|
"YX7", "YY7", "YZ7"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_8[] = {
|
||||||
|
"YS8", "AB8", "AD8", "AE8", "AF8", "AG8",
|
||||||
|
"AH8", "AI8", "AL8", "AM8", "AN8", "AO8", "AP8", "AQ8",
|
||||||
|
"AR8", "AS8", "AU8", "AV8", "AW8", "AX8", "AY8", "AZ8",
|
||||||
|
"B28", "B38", "B48", "B58", "B68", "B78", "BA8", "BB8",
|
||||||
|
"BC8", "BD8", "BE8", "BF8", "BG8", "BH8", "BJ8", "BM8",
|
||||||
|
"BN8", "BO8", "BP8", "BQ8", "BR8", "BS8", "BT8", "BU8",
|
||||||
|
"BV8", "BW8", "BY8", "BZ8", "C38", "C48", "C58", "C68",
|
||||||
|
"CB8", "CC8", "CD8", "CE8", "CF8", "CG8", "CH8", "CI8",
|
||||||
|
"CJ8", "CK8", "CL8", "CM8", "CN8", "CO8", "CP8", "CQ8",
|
||||||
|
"CR8", "CS8", "CT8", "CU8", "CV8", "CW8", "CX8", "CY8",
|
||||||
|
"TJ8", "YA8", "YB8", "YC8", "YD8", "YF8", "YG8",
|
||||||
|
"YI8", "YJ8", "YK8", "YL8", "YM8", "YN8", "YO8", "YP8",
|
||||||
|
"YQ8", "YR8", "YT8", "YV8", "YW8", "YX8", "YY8",
|
||||||
|
"YZ8"
|
||||||
|
}; //"IA8", は IRC基板でバックアップデバイスの触り方が異なるため対象から外す
|
||||||
|
|
||||||
|
static char *list_9[] = {
|
||||||
|
"AB9", "AC9", "AD9", "AE9", "AF9", "AG9", "AH9",
|
||||||
|
"AI9", "AK9", "AL9", "AM9", "AN9", "AO9", "AP9", "AQ9",
|
||||||
|
"AR9", "AS9", "AU9", "AW9", "AX9", "AY9", "AZ9", "B39",
|
||||||
|
"B49", "B59", "B69", "B79", "B89", "BA9", "BB9", "BC9",
|
||||||
|
"BD9", "BE9", "BF9", "BG9", "BH9", "BJ9", "BK9", "BL9",
|
||||||
|
"BM9", "BO9", "BP9", "BQ9", "BR9", "BS9", "BT9", "BU9",
|
||||||
|
"BV9", "BW9", "BY9", "BZ9", "C29", "C39", "C49", "C59",
|
||||||
|
"C69", "CB9", "CC9", "CD9", "CE9", "CF9", "CG9", "CH9",
|
||||||
|
"CI9", "CK9", "CM9", "CP9", "CQ9", "CR9", "CS9", "CV9",
|
||||||
|
"CW9", "CX9", "CY9", "CZ9", "TA9", "TJ9", "TK9", "YA9",
|
||||||
|
"YB9", "YE9", "YF9", "YH9", "YJ9", "YK9", "YL9", "YM9",
|
||||||
|
"YN9", "YO9", "YP9", "YR9", "YS9", "YT9", "YU9", "YV9",
|
||||||
|
"YW9", "YX9", "YY9", "YZ9"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_A[] = {
|
||||||
|
"ARA", "AEA", "A2A", "A3A", "A5A", "A6A",
|
||||||
|
"A8A", "ABA", "ACA", "ADA", "AFA", "AIA", "AJA",
|
||||||
|
"AKA", "ALA", "AMA", "ANA", "APA", "AQA", "ATA",
|
||||||
|
"AUA", "AVA", "AWA", "AXA", "AYA", "AZA", "B2A", "B3A",
|
||||||
|
"B4A", "B5A", "B6A", "B7A", "B8A", "BBA", "BCA", "BDA",
|
||||||
|
"BFA", "BJA", "BKA", "BLA", "BMA", "BNA", "BOA", "BPA",
|
||||||
|
"BQA", "BRA", "BSA", "BTA", "BVA", "BWA", "BYA", "BZA",
|
||||||
|
"C2A", "C3A", "C4A", "C5A", "C6A", "CAA", "CBA", "CDA",
|
||||||
|
"CEA", "CFA", "CHA", "CIA", "CJA", "CKA", "CMA", "CNA",
|
||||||
|
"COA", "CPA", "CQA", "CRA", "CSA", "CTA", "CUA", "CVA",
|
||||||
|
"CWA", "CXA", "CYA", "CZA", "TJA", "TLA", "TMA", "TQA",
|
||||||
|
"YAA", "YBA", "YDA", "YEA", "YFA", "YGA", "YHA", "YIA",
|
||||||
|
"YJA", "YLA", "YMA", "YNA", "YOA", "YQA", "YRA", "YSA",
|
||||||
|
"YTA", "YUA", "YXA", "YYA", "YZA"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_B[] = {
|
||||||
|
"A2B", "A3B", "A5B",
|
||||||
|
"A6B", "A8B", "ABB", "ACB", "ADB", "AFB", "AHB", "AIB",
|
||||||
|
"AJB", "AKB", "ALB", "AMB", "ANB", "APB", "AQB", "ARB",
|
||||||
|
"ASB", "ATB", "AUB", "AVB", "AWB", "AXB", "AYB", "AZB",
|
||||||
|
"B2B", "B3B", "B4B", "B5B", "B6B", "B8B", "BAB", "BBB",
|
||||||
|
"BDB", "BEB", "BFB", "BGB", "BHB", "BIB", "BJB", "BKB",
|
||||||
|
"BLB", "BMB", "BNB", "BOB", "BPB", "BQB", "BSB", "BTB",
|
||||||
|
"BUB", "BVB", "BWB", "BYB", "BZB", "C2B", "C3B", "C4B",
|
||||||
|
"C5B", "C6B", "C7B", "CAB", "CBB", "CDB", "CEB", "CGB",
|
||||||
|
"CHB", "CIB", "CJB", "CKB", "CLB", "CMB", "CNB", "COB",
|
||||||
|
"CPB", "CQB", "CRB", "CSB", "CTB", "CUB", "CVB", "CWB",
|
||||||
|
"CXB", "CYB", "TBB", "TDB", "TGB", "TQB", "YAB", "YBB",
|
||||||
|
"YCB", "YEB", "YFB", "YGB", "YHB", "YIB", "YJB", "YKB",
|
||||||
|
"YLB", "YMB", "YNB", "YPB", "YQB", "YRB", "YSB", "YTB",
|
||||||
|
"YUB", "YVB", "YWB", "YXB", "YYB", "YZB"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_C[] = {
|
||||||
|
"A4C", "A5C",
|
||||||
|
"A6C", "A8C", "ABC", "ACC", "ADC", "AEC", "AFC", "AGC",
|
||||||
|
"AIC", "AJC", "AMC", "ANC", "AOC", "APC", "AQC", "ARC",
|
||||||
|
"ASC", "ATC", "AUC", "AVC", "AWC", "AXC", "AYC", "AZC",
|
||||||
|
"B3C", "B4C", "B5C", "B6C", "B7C", "BCC", "BDC", "BEC",
|
||||||
|
"BFC", "BGC", "BHC", "BJC", "BKC", "BLC", "BMC", "BNC",
|
||||||
|
"BOC", "BRC", "BSC", "BTC", "BUC", "BVC", "BWC", "BXC",
|
||||||
|
"BYC", "BZC", "C2C", "C3C", "C4C", "C5C", "C6C", "CAC",
|
||||||
|
"CCC", "CDC", "CEC", "CFC", "CGC", "CHC", "CIC", "CJC",
|
||||||
|
"CKC", "CLC", "CMC", "CNC", "COC", "CPC", "CQC", "CRC",
|
||||||
|
"CSC", "CVC", "CWC", "CXC", "CYC", "CZC", "TBC", "TCC",
|
||||||
|
"TEC", "TGC", "TQC", "YAC", "YBC", "YCC", "YDC",
|
||||||
|
"YEC", "YFC", "YGC", "YHC", "YIC", "YJC", "YKC", "YMC",
|
||||||
|
"YOC", "YQC", "YRC", "YSC", "YTC", "YUC", "YVC", "YWC",
|
||||||
|
"YXC", "YYC", "YZC"
|
||||||
|
}; // "UZC", は BT基板でバックアップデバイスの触り方が異なる可能性があるため対象から外す
|
||||||
|
|
||||||
|
static char *list_D[] = {
|
||||||
|
"A2D", "A3D", "A4D", "A5D", "A6D",
|
||||||
|
"A8D", "ABD", "ADD", "AED", "AFD", "AGD", "AHD", "AID",
|
||||||
|
"AJD", "AKD", "ALD", "AMD", "AOD", "APD", "AQD",
|
||||||
|
"ARD", "ASD", "ATD", "AUD", "AVD", "AWD", "AXD", "AYD",
|
||||||
|
"B2D", "B3D", "B4D", "B5D", "BBD", "BCD", "BDD", "BFD",
|
||||||
|
"BHD", "BID", "BJD", "BKD", "BLD", "BMD", "BND", "BPD",
|
||||||
|
"BQD", "BSD", "BTD", "BUD", "BVD", "BWD", "BXD", "BZD",
|
||||||
|
"C2D", "C3D", "C4D", "C5D", "C6D", "C7D", "CAD", "CBD",
|
||||||
|
"CCD", "CDD", "CED", "CFD", "CGD", "CHD", "CID", "CJD",
|
||||||
|
"CKD", "CLD", "CMD", "CND", "CPD", "CQD", "CRD", "CSD",
|
||||||
|
"CTD", "CVD", "CWD", "CXD", "CZD", "TAD", "TED", "TGD",
|
||||||
|
"TKD", "TQD", "YBD", "YCD", "YDD", "YED", "YGD", "YHD",
|
||||||
|
"YID", "YJD", "YKD", "YLD", "YMD", "YND", "YOD", "YPD",
|
||||||
|
"YQD", "YRD", "YSD", "YTD", "YUD", "YVD", "YWD", "YXD",
|
||||||
|
"YZD"
|
||||||
|
}; // "AND", はバックアップなしリージョンが存在するので対象から外す
|
||||||
|
|
||||||
|
static char *list_E[] = {
|
||||||
|
"YCE", "A3E", "A5E", "A6E", "A8E", "ABE", "ACE", "ADE",
|
||||||
|
"AEE", "AFE", "AGE", "AHE", "AJE", "AKE", "ALE", "AME",
|
||||||
|
"ANE", "AOE", "APE", "AQE", "ARE", "ASE", "ATE", "AUE",
|
||||||
|
"AVE", "AWE", "AXE", "AYE", "AZE", "B2E", "B4E", "B5E",
|
||||||
|
"B6E", "B7E", "BBE", "BCE", "BDE", "BEE", "BFE", "BGE",
|
||||||
|
"BHE", "BJE", "BKE", "BLE", "BME", "BNE", "BOE", "BQE",
|
||||||
|
"BSE", "BTE", "BUE", "BVE", "BWE", "BXE", "BYE", "BZE",
|
||||||
|
"C2E", "C3E", "C4E", "C5E", "C6E", "CAE", "CBE", "CCE",
|
||||||
|
"CDE", "CEE", "CFE", "CGE", "CHE", "CIE", "CJE", "CKE",
|
||||||
|
"CLE", "CME", "CNE", "COE", "CPE", "CQE", "CRE", "CSE",
|
||||||
|
"CTE", "CUE", "CVE", "CWE", "CXE", "CYE", "THE", "TQE",
|
||||||
|
"YAE", "YBE", "YEE", "YFE", "YGE", "YHE", "YIE",
|
||||||
|
"YJE", "YKE", "YLE", "YME", "YNE", "YOE", "YPE", "YQE",
|
||||||
|
"YRE", "YTE", "YWE", "YXE", "YYE", "YZE"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_F[] = {
|
||||||
|
"A2F", "A3F",
|
||||||
|
"A5F", "A6F", "ABF", "ACF", "ADF", "AEF", "AFF", "AGF",
|
||||||
|
"AHF", "AIF", "AKF", "AMF", "ANF", "AOF", "APF", "AQF",
|
||||||
|
"ARF", "ASF", "ATF", "AUF", "AVF", "AXF", "B2F", "B3F",
|
||||||
|
"B4F", "B5F", "B6F", "B7F", "BBF", "BCF", "BDF", "BEF",
|
||||||
|
"BFF", "BHF", "BJF", "BKF", "BLF", "BMF", "BNF", "BPF",
|
||||||
|
"BQF", "BRF", "BSF", "BTF", "BUF", "BWF", "BXF", "BZF",
|
||||||
|
"C2F", "C3F", "C4F", "C5F", "C6F", "C7F", "CAF", "CBF",
|
||||||
|
"CCF", "CDF", "CEF", "CFF", "CGF", "CHF", "CIF", "CJF",
|
||||||
|
"CKF", "CLF", "CMF", "CPF", "CRF", "CSF", "CTF", "CUF",
|
||||||
|
"CVF", "CWF", "CXF", "CYF", "TBF", "TKF", "TQF", "YAF",
|
||||||
|
"YBF", "YDF", "YEF", "YFF", "YGF", "YHF", "YIF", "YJF",
|
||||||
|
"YKF", "YLF", "YMF", "YOF", "YPF", "YQF", "YRF", "YSF",
|
||||||
|
"YTF", "YUF", "YVF", "YWF", "YXF", "YYF", "YZF"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_G[] = {
|
||||||
|
"A2G",
|
||||||
|
"A3G", "A4G", "A5G", "A6G", "A8G", "ACG", "ADG", "AEG",
|
||||||
|
"AFG", "AGG", "AHG", "AIG", "AJG", "AKG", "ALG", "AMG",
|
||||||
|
"ANG", "AOG", "APG", "AQG", "ARG", "ASG", "ATG", "AUG",
|
||||||
|
"AVG", "AWG", "AYG", "AZG", "B2G", "B3G", "B4G", "B5G",
|
||||||
|
"B6G", "B7G", "BAG", "BCG", "BDG", "BEG", "BFG", "BGG",
|
||||||
|
"BHG", "BIG", "BKG", "BLG", "BMG", "BNG", "BQG", "BRG",
|
||||||
|
"BTG", "BUG", "BVG", "BWG", "BXG", "BYG", "BZG", "C2G",
|
||||||
|
"C3G", "C4G", "C5G", "C6G", "C7G", "CAG", "CBG", "CCG",
|
||||||
|
"CDG", "CEG", "CFG", "CGG", "CHG", "CIG", "CJG", "CLG",
|
||||||
|
"CMG", "CNG", "CPG", "CQG", "CRG", "CSG", "CTG", "CUG",
|
||||||
|
"CWG", "CXG", "CYG", "TCG", "TGG", "THG", "TKG",
|
||||||
|
"TLG", "TPG", "YAG", "YBG", "YCG", "YEG", "YFG", "YHG",
|
||||||
|
"YIG", "YJG", "YKG", "YLG", "YNG", "YOG", "YPG", "YQG",
|
||||||
|
"YRG", "YTG", "YUG", "YVG", "YWG", "YXG", "YYG", "YZG"
|
||||||
|
}; //"IPG", は IRC01orIRC02基板でバックアップデバイスの触り方が異なるため対象から外す
|
||||||
|
|
||||||
|
static char *list_H[] = {
|
||||||
|
"A2H", "A3H", "A4H", "A5H", "A6H", "A8H", "ABH", "ACH",
|
||||||
|
"ADH", "AEH", "AFH", "AHH", "AIH", "AJH", "AKH", "ALH",
|
||||||
|
"AMH", "ANH", "AOH", "APH", "AQH", "ASH", "ATH", "AUH",
|
||||||
|
"AVH", "AWH", "AXH", "AYH", "AZH", "B3H", "B4H", "B5H",
|
||||||
|
"B6H", "B7H", "B8H", "BAH", "BCH", "BDH", "BEH", "BGH",
|
||||||
|
"BHH", "BIH", "BJH", "BKH", "BLH", "BMH", "BNH", "BOH",
|
||||||
|
"BPH", "BQH", "BRH", "BSH", "BTH", "BVH", "BYH", "BZH",
|
||||||
|
"C2H", "C3H", "C4H", "C5H", "C6H", "CAH", "CDH", "CEH",
|
||||||
|
"CFH", "CGH", "CHH", "CIH", "CJH", "CKH", "CLH", "CNH",
|
||||||
|
"COH", "CPH", "CQH", "CRH", "CSH", "CTH", "CUH", "CVH",
|
||||||
|
"CWH", "CXH", "CYH", "TCH", "TJH", "TPH", "TQH", "YAH",
|
||||||
|
"YBH", "YCH", "YDH", "YEH", "YFH", "YGH", "YHH", "YIH",
|
||||||
|
"YJH", "YKH", "YLH", "YMH", "YNH", "YOH", "YPH", "YQH",
|
||||||
|
"YRH", "YSH", "YTH", "YUH", "YVH", "YWH", "YXH", "YYH",
|
||||||
|
"YZH"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_I[] = {
|
||||||
|
"A2I", "A3I", "A4I", "A5I", "A6I", "A8I", "ABI",
|
||||||
|
"ACI", "ADI", "AFI", "AHI", "AII", "AMI", "ANI", "AOI",
|
||||||
|
"API", "AQI", "ARI", "ASI", "AUI", "AVI", "AWI", "AXI",
|
||||||
|
"AYI", "AZI", "B2I", "B3I", "B4I", "B6I", "B7I", "B8I",
|
||||||
|
"BCI", "BDI", "BEI", "BGI", "BHI", "BII", "BKI", "BLI",
|
||||||
|
"BNI", "BOI", "BPI", "BQI", "BRI", "BSI", "BTI", "BUI",
|
||||||
|
"BVI", "BWI", "BZI", "C4I", "C5I", "C6I", "CAI", "CBI",
|
||||||
|
"CDI", "CFI", "CHI", "CJI", "CKI", "CLI", "CMI", "CNI",
|
||||||
|
"COI", "CPI", "CQI", "CRI", "CSI", "CTI", "CUI", "CVI",
|
||||||
|
"CWI", "CXI", "CYI", "YAI", "YBI", "YCI", "YDI",
|
||||||
|
"YEI", "YFI", "YGI", "YHI", "YII", "YKI", "YLI", "YNI",
|
||||||
|
"YPI", "YQI", "YRI", "YTI", "YUI", "YVI", "YWI", "YXI",
|
||||||
|
"YYI", "YZI"
|
||||||
|
}; //"UEI", は C22基板でバックアップデバイスの触り方が異なるため対象から外す
|
||||||
|
|
||||||
|
static char *list_J[] = {
|
||||||
|
"ABJ", "A4J", "A2J", "A6J", "ACJ", "ADJ",
|
||||||
|
"AEJ", "AHJ", "AIJ", "AJJ", "AKJ", "ALJ", "AMJ", "ANJ",
|
||||||
|
"AOJ", "APJ", "AQJ", "ARJ", "ASJ", "ATJ", "AUJ", "AVJ",
|
||||||
|
"AXJ", "AYJ", "B2J", "B3J", "B4J", "B6J", "B7J",
|
||||||
|
"B8J", "BAJ", "BBJ", "BCJ", "BDJ", "BEJ", "BFJ", "BGJ",
|
||||||
|
"BHJ", "BJJ", "BKJ", "BLJ", "BMJ", "BNJ", "BOJ", "BPJ",
|
||||||
|
"BQJ", "BRJ", "BSJ", "BTJ", "BUJ", "BVJ", "BXJ", "BYJ",
|
||||||
|
"BZJ", "C3J", "C4J", "C5J", "C6J", "C7J", "CAJ", "CBJ",
|
||||||
|
"CCJ", "CEJ", "CFJ", "CGJ", "CHJ", "CIJ", "CJJ", "CKJ",
|
||||||
|
"CLJ", "CMJ", "CNJ", "COJ", "CPJ", "CQJ", "CRJ", "CSJ",
|
||||||
|
"CTJ", "CUJ", "CVJ", "CWJ", "CYJ", "CZJ", "TQJ", "YAJ",
|
||||||
|
"YBJ", "YCJ", "YDJ", "YEJ", "YFJ", "YGJ", "YHJ", "YIJ",
|
||||||
|
"YJJ", "YKJ", "YLJ", "YMJ", "YNJ", "YOJ", "YPJ", "YQJ",
|
||||||
|
"YRJ", "YSJ", "YTJ", "YUJ", "YVJ", "YWJ", "YXJ", "YYJ",
|
||||||
|
"YZJ"
|
||||||
|
}; //"B5J", はバックアップなしリージョンが存在するので対象から外す
|
||||||
|
|
||||||
|
static char *list_K[] = {
|
||||||
|
"A2K", "A3K", "A4K", "A5K", "A6K", "A8K", "ABK",
|
||||||
|
"ACK", "ADK", "AEK", "AFK", "AHK", "AIK", "AJK", "AKK",
|
||||||
|
"ALK", "AMK", "ANK", "APK", "AQK", "ARK", "ASK", "ATK",
|
||||||
|
"AUK", "AVK", "AWK", "AXK", "AYK", "AZK", "B2K", "B3K",
|
||||||
|
"B4K", "B6K", "B7K", "B8K", "BBK", "BCK", "BDK",
|
||||||
|
"BEK", "BFK", "BGK", "BHK", "BIK", "BJK", "BKK", "BLK",
|
||||||
|
"BMK", "BNK", "BOK", "BQK", "BRK", "BSK", "BUK", "BVK",
|
||||||
|
"BXK", "BYK", "BZK", "C2K", "C3K", "C4K", "C5K", "C6K",
|
||||||
|
"C7K", "CAK", "CBK", "CCK", "CDK", "CEK", "CGK", "CHK",
|
||||||
|
"CIK", "CJK", "CKK", "CLK", "CNK", "COK", "CQK", "CRK",
|
||||||
|
"CSK", "CTK", "CUK", "CWK", "CXK", "CYK", "CZK",
|
||||||
|
"TAK", "TGK", "TMK", "TQK", "YAK", "YDK", "YEK", "YFK",
|
||||||
|
"YGK", "YHK", "YIK", "YJK", "YKK", "YLK", "YMK", "YNK",
|
||||||
|
"YOK", "YPK", "YQK", "YSK", "YTK", "YUK", "YVK", "YWK",
|
||||||
|
"YXK", "YYK", "YZK"
|
||||||
|
}; //"B5K", はバックアップなしリージョンが存在するので対象から外す
|
||||||
|
//"IPK", は IRC01orIRC02基板でバックアップデバイスの触り方が異なるため対象から外す
|
||||||
|
|
||||||
|
static char *list_L[] = {
|
||||||
|
"ADL", "A2L", "A3L", "A4L", "A5L", "A6L",
|
||||||
|
"ABL", "ACL", "AEL", "AFL", "AGL", "AHL", "AIL",
|
||||||
|
"AJL", "AKL", "ALL", "AML", "ANL", "AOL", "APL", "AQL",
|
||||||
|
"ARL", "ASL", "ATL", "AUL", "AVL", "AWL", "AXL", "AYL",
|
||||||
|
"AZL", "B2L", "B3L", "B5L", "B6L", "B7L", "BAL", "BBL",
|
||||||
|
"BCL", "BDL", "BEL", "BFL", "BGL", "BHL", "BIL", "BJL",
|
||||||
|
"BKL", "BLL", "BML", "BNL", "BOL", "BPL", "BQL", "BRL",
|
||||||
|
"BSL", "BTL", "BUL", "BVL", "BWL", "BXL", "BYL", "BZL",
|
||||||
|
"C2L", "C5L", "C6L", "C7L", "CAL", "CBL", "CCL", "CDL",
|
||||||
|
"CFL", "CHL", "CIL", "CJL", "CKL", "CLL", "CML", "CNL",
|
||||||
|
"COL", "CPL", "CQL", "CRL", "CSL", "CTL", "CUL", "CVL",
|
||||||
|
"CXL", "CYL", "CZL", "TCL", "TFL", "THL", "TML", "TPL",
|
||||||
|
"TQL", "YAL", "YBL", "YCL", "YDL", "YEL", "YFL", "YGL",
|
||||||
|
"YHL", "YIL", "YJL", "YLL", "YML", "YNL", "YOL", "YPL",
|
||||||
|
"YQL", "YRL", "YSL", "YTL", "YUL", "YVL", "YWL", "YXL",
|
||||||
|
"YYL", "YZL"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_M[] = {
|
||||||
|
"A2M", "A3M", "A5M", "ABM", "ACM", "ADM",
|
||||||
|
"AEM", "AFM", "AHM", "AIM", "AJM", "AKM", "AMM", "ANM",
|
||||||
|
"AOM", "APM", "AQM", "ARM", "ASM", "ATM", "AUM", "AVM",
|
||||||
|
"AWM", "AYM", "AZM", "B2M", "B3M", "B4M", "B5M", "B7M",
|
||||||
|
"B8M", "BAM", "BBM", "BCM", "BDM", "BFM", "BGM", "BHM",
|
||||||
|
"BIM", "BJM", "BKM", "BLM", "BMM", "BNM", "BPM", "BQM",
|
||||||
|
"BRM", "BSM", "BTM", "BVM", "BWM", "BXM", "BYM", "BZM",
|
||||||
|
"C2M", "C4M", "C5M", "C6M", "C7M", "CAM", "CBM", "CCM",
|
||||||
|
"CDM", "CFM", "CGM", "CHM", "CIM", "CKM", "CLM", "CMM",
|
||||||
|
"CNM", "COM", "CPM", "CQM", "CRM", "CSM", "CTM", "CUM",
|
||||||
|
"CVM", "CWM", "CXM", "CYM", "CZM", "TAM", "TBM", "TCM",
|
||||||
|
"THM", "TKM", "TQM", "YAM", "YBM", "YCM", "YDM", "YEM",
|
||||||
|
"YFM", "YGM", "YHM", "YIM", "YJM", "YKM", "YLM", "YMM",
|
||||||
|
"YNM", "YOM", "YQM", "YRM", "YSM", "YTM", "YUM", "YXM",
|
||||||
|
"YYM", "YZM"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_N[] = {
|
||||||
|
"YQN", "ARN", "AFN", "A4N", "A6N", "A8N", "ABN", "ACN", "ADN",
|
||||||
|
"AEN", "AGN", "AHN", "AIN", "AJN", "AKN", "ALN",
|
||||||
|
"AMN", "ANN", "AON", "APN", "AQN", "ASN", "AUN",
|
||||||
|
"AVN", "AWN", "AXN", "AYN", "AZN", "B2N", "B3N", "B4N",
|
||||||
|
"B5N", "B7N", "B8N", "BAN", "BBN", "BCN", "BDN", "BEN",
|
||||||
|
"BFN", "BHN", "BIN", "BJN", "BMN", "BNN", "BON", "BPN",
|
||||||
|
"BQN", "BSN", "BTN", "BVN", "BWN", "BXN", "BYN", "BZN",
|
||||||
|
"C2N", "C3N", "C4N", "C5N", "C6N", "C7N", "CAN", "CBN",
|
||||||
|
"CCN", "CDN", "CEN", "CFN", "CGN", "CHN", "CIN", "CJN",
|
||||||
|
"CKN", "CLN", "CON", "CQN", "CRN", "CSN", "CTN", "CUN",
|
||||||
|
"CVN", "CWN", "CXN", "CYN", "CZN", "TEN", "TKN", "TQN",
|
||||||
|
"YBN", "YCN", "YDN", "YEN", "YGN", "YHN", "YIN", "YJN",
|
||||||
|
"YKN", "YLN", "YMN", "YNN", "YON", "YPN", "YSN",
|
||||||
|
"YTN", "YUN", "YVN", "YWN", "YXN", "YYN", "YZN"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_O[] = {
|
||||||
|
"AVO", "A2O",
|
||||||
|
"A3O", "A4O", "A5O", "A6O", "ABO", "ACO", "AEO", "AFO",
|
||||||
|
"AGO", "AHO", "AIO", "AKO", "AMO", "ANO", "AOO", "APO",
|
||||||
|
"AQO", "ARO", "ATO", "AUO", "AWO", "AXO", "AYO",
|
||||||
|
"B2O", "B4O", "B5O", "B6O", "B8O", "BAO", "BBO", "BCO",
|
||||||
|
"BDO", "BFO", "BGO", "BHO", "BIO", "BJO", "BKO", "BLO",
|
||||||
|
"BMO", "BNO", "BOO", "BPO", "BRO", "BSO", "BTO", "BUO",
|
||||||
|
"BWO", "BXO", "BYO", "BZO", "C2O", "C3O", "C5O", "C6O",
|
||||||
|
"C7O", "CAO", "CBO", "CDO", "CEO", "CFO", "CGO", "CHO",
|
||||||
|
"CJO", "CLO", "CMO", "CNO", "COO", "CPO", "CQO", "CRO",
|
||||||
|
"CSO", "CTO", "CWO", "CXO", "CZO", "YBO", "YCO", "YDO",
|
||||||
|
"YEO", "YGO", "YHO", "YIO", "YKO", "YMO", "YNO", "YOO",
|
||||||
|
"YPO", "YQO", "YRO", "YSO", "YTO", "YUO", "YVO", "YWO",
|
||||||
|
"YXO", "YZO"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_P[] = {
|
||||||
|
"CHP", "ANP", "A3P", "A4P", "A5P", "A6P", "A8P", "ACP",
|
||||||
|
"ADP", "AEP", "AFP", "AGP", "AHP", "AJP", "AKP", "ALP",
|
||||||
|
"AMP", "AOP", "APP", "AQP", "ARP", "ASP", "ATP",
|
||||||
|
"AUP", "AVP", "AWP", "AXP", "AZP", "B2P", "B3P", "B5P",
|
||||||
|
"B6P", "B7P", "B8P", "BAP", "BBP", "BCP", "BDP", "BEP",
|
||||||
|
"BFP", "BGP", "BIP", "BJP", "BKP", "BLP", "BMP", "BNP",
|
||||||
|
"BOP", "BPP", "BQP", "BRP", "BSP", "BTP", "BUP", "BVP",
|
||||||
|
"BWP", "BXP", "BYP", "BZP", "C2P", "C3P", "C4P", "C5P",
|
||||||
|
"C6P", "C7P", "CAP", "CBP", "CDP", "CEP", "CFP", "CGP",
|
||||||
|
"CIP", "CJP", "CKP", "CLP", "CMP", "CNP", "COP",
|
||||||
|
"CPP", "CQP", "CRP", "CSP", "CTP", "CUP", "CVP", "CWP",
|
||||||
|
"CXP", "CYP", "TFP", "TMP", "TPP", "YAP", "YBP",
|
||||||
|
"YCP", "YDP", "YEP", "YFP", "YGP", "YHP", "YIP", "YJP",
|
||||||
|
"YKP", "YLP", "YMP", "YNP", "YOP", "YPP", "YQP", "YSP",
|
||||||
|
"YTP", "YUP", "YVP", "YWP", "YXP", "YZP"
|
||||||
|
}; //"UZP", は BT基板でバックアップデバイスの触り方が異なる可能性があるため対象から外す
|
||||||
|
|
||||||
|
static char *list_Q[] = {
|
||||||
|
"ASQ", "A3Q", "A4Q",
|
||||||
|
"A5Q", "A6Q", "A8Q", "ACQ", "ADQ", "AEQ", "AFQ", "AGQ",
|
||||||
|
"AHQ", "AIQ", "AJQ", "AKQ", "ALQ", "AMQ", "ANQ", "AOQ",
|
||||||
|
"AQQ", "ARQ", "AUQ", "AVQ", "AWQ", "AYQ", "AZQ",
|
||||||
|
"B2Q", "B3Q", "B5Q", "B6Q", "B7Q", "B8Q", "BAQ", "BBQ",
|
||||||
|
"BCQ", "BEQ", "BFQ", "BGQ", "BHQ", "BKQ", "BLQ", "BMQ",
|
||||||
|
"BNQ", "BOQ", "BPQ", "BQQ", "BRQ", "BTQ", "BUQ", "BVQ",
|
||||||
|
"BWQ", "BXQ", "BYQ", "BZQ", "C2Q", "C3Q", "C4Q", "C5Q",
|
||||||
|
"C6Q", "C7Q", "CAQ", "CBQ", "CCQ", "CDQ", "CEQ", "CFQ",
|
||||||
|
"CGQ", "CIQ", "CJQ", "CKQ", "CLQ", "CMQ", "CNQ", "COQ",
|
||||||
|
"CPQ", "CQQ", "CRQ", "CSQ", "CTQ", "CUQ", "CVQ", "CWQ",
|
||||||
|
"CYQ", "CZQ", "TAQ", "TBQ", "TPQ", "YAQ", "YBQ", "YCQ",
|
||||||
|
"YDQ", "YEQ", "YFQ", "YGQ", "YHQ", "YIQ", "YJQ", "YKQ",
|
||||||
|
"YLQ", "YMQ", "YNQ", "YOQ", "YPQ", "YRQ", "YSQ", "YTQ",
|
||||||
|
"YUQ", "YWQ", "YXQ", "YYQ", "YZQ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_R[] = {
|
||||||
|
"AVR", "A2R", "A3R", "A4R",
|
||||||
|
"A5R", "A6R", "A8R", "ABR", "ACR", "ADR", "AER", "AFR",
|
||||||
|
"AGR", "AHR", "AIR", "AJR", "AKR", "ALR", "AMR", "ANR",
|
||||||
|
"APR", "AQR", "ARR", "ASR", "ATR", "AUR", "AWR",
|
||||||
|
"AXR", "AYR", "AZR", "B3R", "B4R", "B5R", "B6R", "B8R",
|
||||||
|
"BAR", "BDR", "BER", "BFR", "BGR", "BHR", "BIR", "BJR",
|
||||||
|
"BKR", "BLR", "BMR", "BNR", "BOR", "BPR", "BQR", "BRR",
|
||||||
|
"BSR", "BTR", "BUR", "BVR", "BWR", "BYR", "BZR", "C3R",
|
||||||
|
"C4R", "C5R", "C6R", "C7R", "CAR", "CBR", "CCR", "CDR",
|
||||||
|
"CER", "CFR", "CGR", "CIR", "CJR", "CKR", "CLR", "CMR",
|
||||||
|
"CNR", "CPR", "CQR", "CRR", "CSR", "CTR", "CUR", "CVR",
|
||||||
|
"CWR", "CXR", "CYR", "CZR", "TBR", "TCR", "THR", "TNR",
|
||||||
|
"TRR", "UBR", "YAR", "YBR", "YCR", "YDR", "YER", "YFR",
|
||||||
|
"YGR", "YHR", "YIR", "YJR", "YKR", "YLR", "YMR", "YNR",
|
||||||
|
"YPR", "YQR", "YRR", "YSR", "YTR", "YUR", "YVR", "YWR",
|
||||||
|
"YYR", "YZR"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_S[] = {
|
||||||
|
"A2S", "A3S", "A6S", "A8S", "ABS", "AFS",
|
||||||
|
"AHS", "AIS", "AJS", "AKS", "ALS", "AMS", "ANS", "AOS",
|
||||||
|
"APS", "AQS", "ARS", "ASS", "AUS", "AVS", "AWS", "AXS",
|
||||||
|
"AYS", "AZS", "B2S", "B3S", "B6S", "B8S", "BBS", "BCS",
|
||||||
|
"BES", "BFS", "BJS", "BKS", "BLS", "BNS", "BOS", "BPS",
|
||||||
|
"BQS", "BSS", "BUS", "BVS", "BWS", "BXS", "BYS", "BZS",
|
||||||
|
"C2S", "C3S", "C5S", "CAS", "CBS", "CCS", "CDS", "CFS",
|
||||||
|
"CGS", "CHS", "CIS", "CJS", "CLS", "CMS", "CNS", "COS",
|
||||||
|
"CPS", "CQS", "CRS", "CSS", "CTS", "CUS", "CVS", "CWS",
|
||||||
|
"CXS", "CYS", "CZS", "TAS", "TBS", "TFS", "TGS", "TKS",
|
||||||
|
"TMS", "TPS", "YAS", "YBS", "YCS", "YDS", "YES",
|
||||||
|
"YFS", "YGS", "YHS", "YIS", "YJS", "YLS", "YMS", "YOS",
|
||||||
|
"YPS", "YQS", "YSS", "YTS", "YUS", "YVS", "YWS", "YXS",
|
||||||
|
"YYS", "YZS"
|
||||||
|
}; // "UNS", は OSD用基板でバックアップデバイスの触り方が異なる可能性があるため対象から外す
|
||||||
|
|
||||||
|
static char *list_T[] = {
|
||||||
|
"AOT", "A3T", "A2T", "A5T", "A6T", "A8T", "ABT",
|
||||||
|
"ACT", "AET", "AFT", "AGT", "AHT", "AIT", "AJT", "AKT",
|
||||||
|
"ALT", "AMT", "ANT", "APT", "AQT", "ART", "AST",
|
||||||
|
"ATT", "AUT", "AVT", "AWT", "AXT", "AYT", "AZT", "B2T",
|
||||||
|
"B3T", "B4T", "B5T", "B6T", "B8T", "BAT", "BDT", "BET",
|
||||||
|
"BFT", "BGT", "BIT", "BKT", "BLT", "BMT", "BOT", "BQT",
|
||||||
|
"BTT", "BUT", "BVT", "BYT", "C2T", "C3T", "C4T", "C5T",
|
||||||
|
"C6T", "C7T", "CAT", "CBT", "CCT", "CDT", "CET", "CFT",
|
||||||
|
"CHT", "CIT", "CKT", "CLT", "CMT", "CNT", "COT", "CPT",
|
||||||
|
"CQT", "CST", "CTT", "CUT", "CVT", "CWT", "CXT", "CYT",
|
||||||
|
"CZT", "TBT", "TCT", "TFT", "TGT", "THT", "TKT", "TLT",
|
||||||
|
"TMT", "YAT", "YBT", "YCT", "YDT", "YET", "YFT", "YGT",
|
||||||
|
"YHT", "YIT", "YJT", "YKT", "YLT", "YMT", "YNT", "YOT",
|
||||||
|
"YPT", "YQT", "YRT", "YST", "YTT", "YUT", "YVT", "YWT",
|
||||||
|
"YXT", "YYT", "YZT"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_U[] = {
|
||||||
|
"AOU", "AWU", "YOU", "A2U", "A3U", "A4U", "A5U", "A6U",
|
||||||
|
"A8U", "ABU", "ACU", "ADU", "AEU", "AFU", "AGU", "AJU",
|
||||||
|
"AKU", "ALU", "AMU", "ANU", "APU", "AQU", "ARU",
|
||||||
|
"ASU", "ATU", "AUU", "AVU", "AXU", "AYU", "AZU",
|
||||||
|
"B2U", "B3U", "B5U", "B6U", "B8U", "BBU", "BCU", "BDU",
|
||||||
|
"BEU", "BFU", "BGU", "BHU", "BIU", "BJU", "BKU", "BLU",
|
||||||
|
"BMU", "BNU", "BOU", "BPU", "BQU", "BRU", "BSU", "BTU",
|
||||||
|
"BUU", "BWU", "BXU", "BYU", "BZU", "C2U", "C3U", "C4U",
|
||||||
|
"C5U", "C7U", "CBU", "CCU", "CDU", "CEU", "CFU", "CGU",
|
||||||
|
"CHU", "CIU", "CJU", "CKU", "CLU", "CMU", "CNU", "COU",
|
||||||
|
"CPU", "CQU", "CSU", "CTU", "CUU", "CVU", "CWU", "CXU",
|
||||||
|
"CYU", "TMU", "YAU", "YBU", "YCU", "YDU", "YEU", "YFU",
|
||||||
|
"YGU", "YIU", "YJU", "YKU", "YLU", "YMU", "YNU",
|
||||||
|
"YQU", "YRU", "YSU", "YTU", "YUU", "YVU", "YWU",
|
||||||
|
"YXU", "YYU", "YZU"
|
||||||
|
}; //"YHU", はバックアップなしリージョンが存在するので対象から外す
|
||||||
|
|
||||||
|
static char *list_V[] = {
|
||||||
|
"A2V", "A3V", "A4V", "A8V", "ABV",
|
||||||
|
"ACV", "ADV", "AEV", "AFV", "AGV", "AHV", "AIV", "AJV",
|
||||||
|
"AKV", "ALV", "AMV", "AOV", "APV", "AQV", "ARV", "ASV",
|
||||||
|
"ATV", "AUV", "AVV", "AWV", "AXV", "AZV", "B2V", "B3V",
|
||||||
|
"B4V", "B5V", "B6V", "B7V", "B8V", "BAV", "BBV", "BDV",
|
||||||
|
"BEV", "BFV", "BGV", "BHV", "BIV", "BKV", "BLV", "BMV",
|
||||||
|
"BNV", "BPV", "BQV", "BRV", "BSV", "BTV", "BUV", "BVV",
|
||||||
|
"BWV", "BXV", "BYV", "BZV", "C2V", "C3V", "C4V", "C5V",
|
||||||
|
"C6V", "C7V", "CAV", "CBV", "CCV", "CDV", "CFV", "CHV",
|
||||||
|
"CIV", "CKV", "CLV", "CMV", "CNV", "COV", "CPV", "CQV",
|
||||||
|
"CRV", "CSV", "CTV", "CVV", "CWV", "CXV", "CYV", "CZV",
|
||||||
|
"TDV", "TMV", "YAV", "YBV", "YCV", "YDV", "YEV", "YGV",
|
||||||
|
"YHV", "YIV", "YJV", "YKV", "YLV", "YMV", "YNV", "YOV",
|
||||||
|
"YPV", "YQV", "YRV", "YSV", "YTV", "YUV", "YVV", "YWV",
|
||||||
|
"YXV", "YZV"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_W[] = {
|
||||||
|
"A6W", "AVW", "A2W", "A3W", "A8W", "ACW", "ADW",
|
||||||
|
"AEW", "AFW", "AGW", "AIW", "AJW", "AKW", "ALW", "AMW",
|
||||||
|
"ANW", "AOW", "APW", "AQW", "ARW", "ASW", "ATW", "AUW",
|
||||||
|
"AWW", "AXW", "AYW", "AZW", "B2W", "B3W", "B5W",
|
||||||
|
"B6W", "B7W", "BAW", "BBW", "BCW", "BDW", "BEW", "BFW",
|
||||||
|
"BGW", "BHW", "BIW", "BKW", "BLW", "BMW", "BNW", "BOW",
|
||||||
|
"BPW", "BQW", "BRW", "BSW", "BTW", "BUW", "BWW", "BXW",
|
||||||
|
"BYW", "C2W", "C3W", "C4W", "C5W", "C6W", "C7W", "CAW",
|
||||||
|
"CBW", "CCW", "CDW", "CEW", "CFW", "CHW", "CIW", "CJW",
|
||||||
|
"CKW", "CLW", "CMW", "COW", "CPW", "CRW", "CSW", "CTW",
|
||||||
|
"CUW", "CVW", "CXW", "CYW", "CZW", "TBW", "TPW",
|
||||||
|
"Y7W", "YAW", "YBW", "YCW", "YDW", "YEW", "YFW", "YGW",
|
||||||
|
"YHW", "YIW", "YJW", "YKW", "YLW", "YMW", "YNW", "YOW",
|
||||||
|
"YQW", "YRW", "YSW", "YTW", "YUW", "YVW", "YWW", "YXW",
|
||||||
|
"YYW", "YZW"
|
||||||
|
}; //"IMW", は IRC基板でバックアップデバイスの触り方が異なるため対象から外す
|
||||||
|
|
||||||
|
static char *list_X[] = {
|
||||||
|
"YUX", "ALX", "A2X", "A3X", "A6X", "A8X", "ABX", "ACX",
|
||||||
|
"ADX", "AEX", "AFX", "AGX", "AHX", "AIX", "AKX",
|
||||||
|
"AMX", "ANX", "AOX", "APX", "AQX", "ARX", "ASX", "ATX",
|
||||||
|
"AUX", "AVX", "AWX", "AXX", "AYX", "AZX", "B2X", "B3X",
|
||||||
|
"B4X", "B5X", "B6X", "B7X", "BAX", "BBX", "BCX", "BDX",
|
||||||
|
"BEX", "BFX", "BGX", "BHX", "BKX", "BMX", "BNX", "BOX",
|
||||||
|
"BPX", "BRX", "BSX", "BTX", "BUX", "BVX", "BWX", "BXX",
|
||||||
|
"BYX", "BZX", "C2X", "C3X", "C5X", "C6X", "C7X", "CAX",
|
||||||
|
"CBX", "CCX", "CDX", "CEX", "CFX", "CGX", "CHX", "CIX",
|
||||||
|
"CJX", "CKX", "CLX", "CMX", "CPX", "CQX", "CSX", "CTX",
|
||||||
|
"CUX", "CVX", "CWX", "CXX", "CYX", "CZX", "TAX", "TMX",
|
||||||
|
"YAX", "YBX", "YCX", "YDX", "YEX", "YFX", "YGX", "YHX",
|
||||||
|
"YIX", "YJX", "YKX", "YLX", "YMX", "YNX", "YOX", "YPX",
|
||||||
|
"YQX", "YRX", "YSX", "YTX", "YVX", "YWX", "YXX",
|
||||||
|
"YYX", "YZX"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_Y[] = {
|
||||||
|
"A2Y", "A3Y", "A4Y", "A6Y", "A8Y", "ACY",
|
||||||
|
"AEY", "AFY", "AGY", "AIY", "AJY", "AKY", "ALY", "AMY",
|
||||||
|
"ANY", "AOY", "APY", "AQY", "ARY", "ASY", "AUY", "AVY",
|
||||||
|
"AWY", "AXY", "AYY", "AZY", "B2Y", "B3Y", "B4Y", "B5Y",
|
||||||
|
"B6Y", "B7Y", "B8Y", "BBY", "BCY", "BDY", "BEY", "BFY",
|
||||||
|
"BGY", "BHY", "BIY", "BJY", "BKY", "BMY", "BNY", "BOY",
|
||||||
|
"BPY", "BQY", "BRY", "BSY", "BTY", "BUY", "BVY", "BWY",
|
||||||
|
"BXY", "BYY", "BZY", "C2Y", "C3Y", "C4Y", "C5Y", "C6Y",
|
||||||
|
"C7Y", "CAY", "CBY", "CCY", "CDY", "CEY", "CFY", "CGY",
|
||||||
|
"CHY", "CIY", "CJY", "CKY", "CLY", "CMY", "CNY", "COY",
|
||||||
|
"CQY", "CRY", "CSY", "CTY", "CUY", "CVY", "CWY", "CXY",
|
||||||
|
"CYY", "CZY", "TMY", "YAY", "YBY", "YCY", "YDY", "YEY",
|
||||||
|
"YFY", "YGY", "YHY", "YIY", "YJY", "YKY", "YLY", "YMY",
|
||||||
|
"YNY", "YOY", "YQY", "YRY", "YSY", "YUY", "YVY", "YWY",
|
||||||
|
"YXY", "YYY", "YZY"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *list_Z[] = {
|
||||||
|
"A2Z", "A3Z", "A4Z", "A5Z", "A6Z",
|
||||||
|
"A8Z", "ABZ", "ACZ", "ADZ", "AEZ", "AFZ", "AGZ", "AHZ",
|
||||||
|
"AIZ", "AJZ", "AKZ", "ALZ", "AMZ", "ANZ", "AOZ", "APZ",
|
||||||
|
"AQZ", "ARZ", "ASZ", "AUZ", "AWZ", "AXZ", "AYZ", "AZZ",
|
||||||
|
"B2Z", "B3Z", "B4Z", "B5Z", "B6Z", "B7Z", "B8Z", "BAZ",
|
||||||
|
"BBZ", "BCZ", "BDZ", "BEZ", "BFZ", "BGZ", "BHZ", "BIZ",
|
||||||
|
"BLZ", "BMZ", "BNZ", "BOZ", "BPZ", "BQZ", "BRZ", "BTZ",
|
||||||
|
"BUZ", "BVZ", "BWZ", "BYZ", "BZZ", "C2Z", "C4Z", "C5Z",
|
||||||
|
"C6Z", "C7Z", "CAZ", "CBZ", "CCZ", "CDZ", "CEZ", "CGZ",
|
||||||
|
"CHZ", "CIZ", "CKZ", "CLZ", "CMZ", "CNZ", "COZ", "CPZ",
|
||||||
|
"CQZ", "CRZ", "CSZ", "CTZ", "CUZ", "CVZ", "CXZ", "CZZ",
|
||||||
|
"THZ", "TKZ", "TRZ", "YAZ", "YBZ", "YCZ", "YDZ", "YEZ",
|
||||||
|
"YGZ", "YHZ", "YIZ", "YJZ", "YKZ", "YLZ", "YMZ", "YNZ",
|
||||||
|
"YOZ", "YPZ", "YQZ", "YRZ", "YSZ", "YTZ", "YVZ", "YWZ",
|
||||||
|
"YYZ", "YZZ"
|
||||||
|
};
|
||||||
|
|
||||||
|
static lgyGameCodeList game_code_list[43] = {
|
||||||
|
{ NULL, 0}, // '0'
|
||||||
|
{ NULL, 0}, // '1'
|
||||||
|
{ list_2, sizeof(list_2)/sizeof(char*)}, // '2'
|
||||||
|
{ list_3, sizeof(list_3)/sizeof(char*)}, // '3'
|
||||||
|
{ list_4, sizeof(list_4)/sizeof(char*)}, // '4'
|
||||||
|
{ list_5, sizeof(list_5)/sizeof(char*)}, // '5'
|
||||||
|
{ list_6, sizeof(list_6)/sizeof(char*)}, // '6'
|
||||||
|
{ list_7, sizeof(list_7)/sizeof(char*)}, // '7'
|
||||||
|
{ list_8, sizeof(list_8)/sizeof(char*)}, // '8'
|
||||||
|
{ list_9, sizeof(list_9)/sizeof(char*)}, // '9'
|
||||||
|
{ NULL, 0}, // ':'
|
||||||
|
{ NULL, 0}, // ';'
|
||||||
|
{ NULL, 0}, // '<'
|
||||||
|
{ NULL, 0}, // '='
|
||||||
|
{ NULL, 0}, // '>'
|
||||||
|
{ NULL, 0}, // '?'
|
||||||
|
{ NULL, 0}, // '@'
|
||||||
|
{ list_A, sizeof(list_A)/sizeof(char*)}, // 'A'
|
||||||
|
{ list_B, sizeof(list_B)/sizeof(char*)}, // 'B'
|
||||||
|
{ list_C, sizeof(list_C)/sizeof(char*)}, // 'C'
|
||||||
|
{ list_D, sizeof(list_D)/sizeof(char*)}, // 'D'
|
||||||
|
{ list_E, sizeof(list_E)/sizeof(char*)}, // 'E'
|
||||||
|
{ list_F, sizeof(list_F)/sizeof(char*)}, // 'F'
|
||||||
|
{ list_G, sizeof(list_G)/sizeof(char*)}, // 'G'
|
||||||
|
{ list_H, sizeof(list_H)/sizeof(char*)}, // 'H'
|
||||||
|
{ list_I, sizeof(list_I)/sizeof(char*)}, // 'I'
|
||||||
|
{ list_J, sizeof(list_J)/sizeof(char*)}, // 'J'
|
||||||
|
{ list_K, sizeof(list_K)/sizeof(char*)}, // 'K'
|
||||||
|
{ list_L, sizeof(list_L)/sizeof(char*)}, // 'L'
|
||||||
|
{ list_M, sizeof(list_M)/sizeof(char*)}, // 'M'
|
||||||
|
{ list_N, sizeof(list_N)/sizeof(char*)}, // 'N'
|
||||||
|
{ list_O, sizeof(list_O)/sizeof(char*)}, // 'O'
|
||||||
|
{ list_P, sizeof(list_P)/sizeof(char*)}, // 'P'
|
||||||
|
{ list_Q, sizeof(list_Q)/sizeof(char*)}, // 'Q'
|
||||||
|
{ list_R, sizeof(list_R)/sizeof(char*)}, // 'R'
|
||||||
|
{ list_S, sizeof(list_S)/sizeof(char*)}, // 'S'
|
||||||
|
{ list_T, sizeof(list_T)/sizeof(char*)}, // 'T'
|
||||||
|
{ list_U, sizeof(list_U)/sizeof(char*)}, // 'U'
|
||||||
|
{ list_V, sizeof(list_V)/sizeof(char*)}, // 'V'
|
||||||
|
{ list_W, sizeof(list_W)/sizeof(char*)}, // 'W'
|
||||||
|
{ list_X, sizeof(list_X)/sizeof(char*)}, // 'X'
|
||||||
|
{ list_Y, sizeof(list_Y)/sizeof(char*)}, // 'Y'
|
||||||
|
{ list_Z, sizeof(list_Z)/sizeof(char*)} // 'Z'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOL CheckBackupDevice( TitleProperty *rhs)
|
||||||
|
{
|
||||||
|
u16 list_num;
|
||||||
|
u8 second_character_value;
|
||||||
|
char test[5];
|
||||||
|
|
||||||
|
{
|
||||||
|
char* n = (char*)&rhs->titleID;
|
||||||
|
test[0] = n[3];
|
||||||
|
test[1] = n[2];
|
||||||
|
test[2] = n[1];
|
||||||
|
test[3] = n[0];
|
||||||
|
test[4] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
{ // テスト用
|
||||||
|
int total = 0;
|
||||||
|
for( int i=0; i<43; i++)
|
||||||
|
{
|
||||||
|
total += game_code_list[i].num;
|
||||||
|
if( !game_code_list[i].code_list)
|
||||||
|
{
|
||||||
|
OS_TPrintf( "[%d] : NULL, %d\n", i, game_code_list[i].num);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OS_TPrintf( "[%d] : 0x%x, %d\n", i, game_code_list[i].code_list, game_code_list[i].num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OS_TPrintf( "total : %d\n", total);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
second_character_value = (u8)(test[2]); // 3文字目
|
||||||
|
if( (second_character_value < '0')||(second_character_value > 'Z'))
|
||||||
|
{
|
||||||
|
OS_TPrintf(" This game has no backup device...\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
u8 second_character_index = second_character_value - '0';
|
||||||
|
u16 max = game_code_list[second_character_index].num;
|
||||||
|
char** small_list = game_code_list[second_character_index].code_list;
|
||||||
|
for( list_num = 0; list_num < max; list_num++)
|
||||||
|
{
|
||||||
|
OS_TPrintf("small list:%s\n", small_list[list_num]);
|
||||||
|
if( 0 == STD_CompareNString( &test[0], small_list[list_num], 2))
|
||||||
|
{
|
||||||
|
OS_TPrintf("%s has backup device.\n", small_list[list_num]);
|
||||||
|
return checkDevice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OS_TPrintf(" This game has no backup device.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
今のところは WriteEnable & WriteDisable による StatusRegister の変化をチェック
|
||||||
|
将来的にはデバイス毎にライト&ベリファイチェックまで行う可能性あり。
|
||||||
|
*/
|
||||||
|
static BOOL checkDevice( void)
|
||||||
|
{
|
||||||
|
BOOL result1, result2;
|
||||||
|
u8 status1, status2;
|
||||||
|
|
||||||
|
InitializeBackup();
|
||||||
|
result1 = ReadBackupStatus(&status1);
|
||||||
|
result2 = ReadBackupStatus(&status2);
|
||||||
|
FinalizeBackup();
|
||||||
|
|
||||||
|
OS_TPrintf("status1 : 0x%x\n", status1);
|
||||||
|
OS_TPrintf("status2 : 0x%x\n", status2);
|
||||||
|
|
||||||
|
if( (result1 != FALSE)&&(!(status1 & 0x01))&&
|
||||||
|
(result2 != FALSE)&&(!(status2 & 0x01)))
|
||||||
|
{
|
||||||
|
OS_TPrintf(" backup device check ok.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
OS_TPrintf(" backup device check ng.\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
ステータスレジスタのチェック
|
||||||
|
*/
|
||||||
|
static BOOL ReadBackupStatus( u8* status)
|
||||||
|
{
|
||||||
|
return CARDi_RequestStreamCommand((u32)0, (u32)status, 1, NULL, 0, FALSE,
|
||||||
|
CARD_REQ_READ_STATUS, 0, CARD_REQUEST_MODE_RECV);
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL ReadBackupID( u32* devid)
|
||||||
|
{
|
||||||
|
return CARDi_RequestStreamCommand((u32)0, (u32)devid, 4, NULL, 0, FALSE,
|
||||||
|
CARD_REQ_READ_ID, 0, CARD_REQUEST_MODE_RECV);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
InitializeTwlBackup();
|
||||||
|
// 全部CPUなのでキャッシュケアは必要なし
|
||||||
|
OS_TPrintf("buf : 0x%x\n", buf);
|
||||||
|
|
||||||
|
memset( buf, 0x5A, 512);
|
||||||
|
if( WriteTwlEEPROM( 0, buf, 512).IsFailure())
|
||||||
|
{
|
||||||
|
OS_TPrintf("launch NG. (write EEPROM error!)\n");
|
||||||
|
}
|
||||||
|
memset( buf, 0xFF, 512);
|
||||||
|
if( ReadNtrEEPROM( 0, (u32*)buf, 512).IsFailure())
|
||||||
|
{
|
||||||
|
OS_TPrintf("launch NG. (read error!)\n");
|
||||||
|
FinalizeTwlBackup();
|
||||||
|
return nn::fs::ResultInvalidCciFormat();
|
||||||
|
}
|
||||||
|
FinalizeTwlBackup();
|
||||||
|
__breakpoint(0);
|
||||||
|
*/
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: lgy_SaveDataChecker.h
|
||||||
|
|
||||||
|
Copyright (C)2009-2012 Nintendo Co., Ltd. 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.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __LGY_BACKUPDEVICECHECKER_CPP__
|
||||||
|
#define __LGY_BACKUPDEVICECHECKER_CPP__
|
||||||
|
|
||||||
|
|
||||||
|
BOOL CheckBackupDevice( TitleProperty *rhs);
|
||||||
|
//BOOL ReadBackupStatus( u32* status);
|
||||||
|
|
||||||
|
|
||||||
|
//nn::Result ReadTwlEEPROM(u32 address, u32* buffer, size_t size);
|
||||||
|
//nn::Result WriteTwlEEPROM(u32 address, const u32* buffer, size_t size);
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -25,6 +25,8 @@
|
|||||||
#include "fs_wram.h"
|
#include "fs_wram.h"
|
||||||
#include <sysmenu/errorLog.h>
|
#include <sysmenu/errorLog.h>
|
||||||
#include "SaveDataChecker/lgy_SaveDataChecker.h"
|
#include "SaveDataChecker/lgy_SaveDataChecker.h"
|
||||||
|
#include "SaveDataChecker/lgy_BackupDeviceChecker.h"
|
||||||
|
#include "BlackList/lgy_BlackList.h"
|
||||||
|
|
||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
|
|
||||||
@ -1805,6 +1807,7 @@ static BOOL SYSMi_AuthenticateHeader( TitleProperty *pBootTitle, ROM_Header *hea
|
|||||||
// ”F<E2809D>Ø
|
// ”F<E2809D>Ø
|
||||||
static BOOL SYSMi_AuthenticateTitleCore( TitleProperty *pBootTitle)
|
static BOOL SYSMi_AuthenticateTitleCore( TitleProperty *pBootTitle)
|
||||||
{
|
{
|
||||||
|
BOOL resultCard = TRUE;
|
||||||
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
|
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
|
||||||
if( hs->platform_code & PLATFORM_CODE_FLAG_TWL )
|
if( hs->platform_code & PLATFORM_CODE_FLAG_TWL )
|
||||||
{
|
{
|
||||||
@ -1819,15 +1822,26 @@ static BOOL SYSMi_AuthenticateTitleCore( TitleProperty *pBootTitle)
|
|||||||
OS_TPrintf( "Authenticate :TWL_ROM start.\n" );
|
OS_TPrintf( "Authenticate :TWL_ROM start.\n" );
|
||||||
if( SYSMi_AuthenticateTWLTitle( pBootTitle ))
|
if( SYSMi_AuthenticateTWLTitle( pBootTitle ))
|
||||||
{
|
{
|
||||||
if( CheckBackupData( pBootTitle)) // バックアップデータのチェック
|
/*
|
||||||
|
if( !CheckBlackList( pBootTitle)) // ブラックリストの確認
|
||||||
{
|
{
|
||||||
return TRUE;
|
resultCard = FALSE;
|
||||||
}
|
}
|
||||||
else
|
if( !CheckBackupDevice( pBootTitle)) // バックアップデバイスの確認
|
||||||
|
{
|
||||||
|
resultCard = FALSE;
|
||||||
|
}*/
|
||||||
|
if( !CheckBackupData( pBootTitle)) // バックアップデータのチェック
|
||||||
|
{
|
||||||
|
resultCard = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !resultCard)
|
||||||
{
|
{
|
||||||
UTL_SetFatalError(FATAL_ERROR_BACKUP_DATA_CHECK_FAILED);
|
UTL_SetFatalError(FATAL_ERROR_BACKUP_DATA_CHECK_FAILED);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
case LAUNCHER_BOOTTYPE_TEMP:
|
case LAUNCHER_BOOTTYPE_TEMP:
|
||||||
@ -1870,7 +1884,30 @@ static BOOL SYSMi_AuthenticateTitleCore( TitleProperty *pBootTitle)
|
|||||||
return SYSMi_AuthenticateNTRDownloadTitle( pBootTitle );
|
return SYSMi_AuthenticateNTRDownloadTitle( pBootTitle );
|
||||||
case LAUNCHER_BOOTTYPE_ROM:
|
case LAUNCHER_BOOTTYPE_ROM:
|
||||||
OS_TPrintf( "Authenticate :NTR_ROM start.\n" );
|
OS_TPrintf( "Authenticate :NTR_ROM start.\n" );
|
||||||
return SYSMi_AuthenticateNTRCardTitle( pBootTitle );
|
if( SYSMi_AuthenticateNTRCardTitle( pBootTitle ))
|
||||||
|
{
|
||||||
|
if( !CheckBlackList( pBootTitle)) // ブラックリストの確認
|
||||||
|
{
|
||||||
|
resultCard = FALSE;
|
||||||
|
}
|
||||||
|
if( !CheckBackupDevice( pBootTitle)) // バックアップデバイスの確認
|
||||||
|
{
|
||||||
|
resultCard = FALSE;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if( !CheckBackupData( pBootTitle)) // バックアップデータのチェック
|
||||||
|
{
|
||||||
|
resultCard = FALSE;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
if( !resultCard)
|
||||||
|
{
|
||||||
|
UTL_SetFatalError(FATAL_ERROR_BACKUP_DATA_CHECK_FAILED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
default:
|
default:
|
||||||
UTL_SetFatalError(FATAL_ERROR_NTR_BOOTTYPE_UNKNOWN);
|
UTL_SetFatalError(FATAL_ERROR_NTR_BOOTTYPE_UNKNOWN);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user