バックアップ用のディレクトリが混じっていたので削除

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2012 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
aoki_ryoma 2008-07-28 05:53:40 +00:00
parent 7a6d8600a7
commit e32ffdaba9
7 changed files with 0 additions and 1406 deletions

View File

@ -1,237 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - tests - DisplaySystemInfo
File: viewSystemInfo.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 <twl.h>
#include <wchar.h>
#include <string.h>
#include <twl/os/common/ownerInfoEx_private.h>
#include "drawFunc.h"
#include "viewSystemInfo.h"
#include "misc.h"
#include "strResource.h"
// 描画関連
#define HEADER_UP 0
#define HEADER_LEFT 15
#define FOOTER_UP 160
#define FOOTER_LEFT 10
#define ALLOW_LEFT 10
#define KIND_UP 40 // 項目名の上座標
#define KIND_LEFT 20 // 項目名の左座標
#define VALUE_UP 40 // 項目値の上座標
#define VALUE_LEFT 140 // 項目値の左座標
#define LINE_OFFSET 15 // 1行ごとのオフセット
#define ROW_OFFSET 15 // 長い項目が現れたときの段組用
#define UNIQUE_BUF 12
const int s_pageOffset[][MAXPAGE] = {
{ 0, OWNERMENU_KSIZE }, // owner
{ 0, PARENTALMENU_KSIZE }, // parental
{ 0, 5, OTHERMENU_KSIZE }, // other
{ 0, SCFGMENU_KSIZE }, // scfg
{ 0, FUSEMENU_KSIZE } // fuse
};
void drawKindName( u8 menu, u8 page, u8 line );
void drawRootMenu( u8 page, u8 line );
void drawOwnerMenu( u8 page, u8 line );
void drawParentalMenu( u8 page, u8 line );
void drawOtherMenu( u8 page, u8 line );
void drawSCFGMenu( u8 page, u8 line );
void drawFuseMenu( u8 page, u8 line );
void printUniqueID( u8 drawLineOffset );
void drawHeader( u8 menu, u8 page, u8 line )
// 画面端に簡単な情報を表示する
{
PutStringUTF16( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, (const u16 *)L"DisplaySystemInfo");
if( menu != MENU_ROOT )
{
u16 buf[256];
swprintf(buf, 256, L"Root>%s page %d / %d", s_strMenuName[menu], page+1 , (s_numMenuK[menu] / NUM_LINES) + 1 );
PutStringUTF16( HEADER_LEFT, HEADER_UP + LINE_OFFSET, TXT_COLOR_BLUE, buf );
}
else
{
PutStringUTF16( HEADER_LEFT, HEADER_UP + LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L"Root" );
}
PutStringUTF16( FOOTER_LEFT, FOOTER_UP, TXT_COLOR_BLUE, (const u16 *)L" A: Decide B: Back ");
}
void drawMenu( u8 menu, u8 page, u8 line )
// 情報一覧を描画する
{
switch( menu ){
case MENU_ROOT:
drawRootMenu( page, line );
break;
case MENU_OWNER:
drawOwnerMenu( page, line );
break;
case MENU_PARENTAL:
drawParentalMenu( page, line );
break;
case MENU_OTHER:
drawOtherMenu( page, line );
break;
case MENU_SCFG:
drawSCFGMenu( page, line );
break;
case MENU_FUSE:
drawFuseMenu( page, line );
break;
}
}
void drawKindName( u8 menu, u8 page, u8 line )
// 項目名描画関数
{
u8 linenum = 0;
u8 offset = 0;
for(linenum = NUM_LINES * page ; linenum < s_numMenuK[menu] && linenum < (page+1) * NUM_LINES; linenum++, offset++)
{
if( linenum == NUM_LINES * page + line )
{
// 選択中の項目は表示色かえて矢印表示
PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*offset, TXT_COLOR_BLACK, (const u16 *)L"" );
PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*offset, TXT_COLOR_GREEN, s_strMetaMenu[menu][linenum]) ;
}
else
{
PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*offset, TXT_COLOR_BLACK, s_strMetaMenu[menu][linenum]) ;
}
}
}
void drawRootMenu( u8 page, u8 line )
{
drawKindName( MENU_ROOT, page, line);
}
void drawOwnerMenu( u8 page, u8 line )
{
u8 linenum;
drawKindName( MENU_OWNER, page, line);
for(linenum = page * NUM_LINES; linenum < s_numMenuV[MENU_OWNER] && linenum < (page+1) * NUM_LINES; linenum++)
{
// utf16で描画するものだけ分ける
if(linenum == OWNER_NICKNAME)
{
PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, gUserName) ;
}
else if(linenum == OWNER_COMMENT)
{
PutStringUTF16( VALUE_LEFT + ROW_OFFSET, VALUE_UP + LINE_OFFSET*( linenum+1 ), TXT_COLOR_BLACK, gUserComment) ;
}
else
{
// sjisで描画するもの
PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, gAllInfo[MENU_OWNER][linenum] );
}
}
}
void drawParentalMenu( u8 page, u8 line )
{
u8 linenum;
drawKindName( MENU_PARENTAL, page, line);
for(linenum = page * NUM_LINES; linenum < s_numMenuV[MENU_PARENTAL] && linenum < (page+1) * NUM_LINES; linenum++)
{
// utf16で描画するものだけ分ける
if(linenum == PARENTAL_ANSWER)
{
PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, gSecretAnswer) ;
}
else
{
// sjisで描画するもの
PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, gAllInfo[MENU_PARENTAL][linenum] );
}
}
}
void drawOtherMenu( u8 page, u8 line )
{
u8 linenum, drawLineOffset=0;
u8 nowPageMaxLine = s_pageOffset[MENU_OTHER][page+1] - s_pageOffset[MENU_OTHER][page];
// u8 maxline = s_numMenuV[MENU_OTHER] - page*5 > 5 ? 5 : s_numMenuV[MENU_OTHER] - page*5;
drawKindName( MENU_OTHER, page, line);
for(linenum = 0; linenum < nowPageMaxLine; linenum++)
{
u8 valueIdx = s_pageOffset[MENU_OTHER][page] + linenum;
drawLineOffset = linenum;
// 複数行必要な項目があると描画位置がずれるのでそれの対応
if( valueIdx >= OTHER_FORCE_DISABLE && page == 0)
{
drawLineOffset++;
}
if( valueIdx > OTHER_UNIQUE_ID && page == 1 )
{
drawLineOffset += OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 / UNIQUE_BUF;
}
// 描画する
if( valueIdx == OTHER_UNIQUE_ID )
{
printUniqueID(drawLineOffset);
}
else
{
PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gAllInfo[MENU_OTHER][valueIdx] );
}
}
}
void printUniqueID( u8 drawLineOffset)
// ユニークIDを整形して出力
{
char buf[UNIQUE_BUF+1];
u8 i;
for( i=0; i * UNIQUE_BUF < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 ; i++)
{
strncpy(buf, &gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID][i * UNIQUE_BUF], UNIQUE_BUF);
buf[UNIQUE_BUF] = '\0';
PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET * (drawLineOffset + i), TXT_COLOR_BLACK, buf );
}
}
void drawSCFGMenu( u8 page, u8 line )
{
drawKindName( MENU_SCFG, page, line);
}
void drawFuseMenu( u8 page, u8 line )
{
drawKindName( MENU_FUSE, page, line);
}

View File

@ -1,94 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - tests - DisplaySystemInfo
File: drawFunc.h
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$
*---------------------------------------------------------------------------*/
#ifndef __DRAW_FUNC__
#define __DRAW_FUNC__
#include <twl.h>
#ifdef __cplusplus
extern "C" {
#endif
#define STRING_LINES 10
// 各メニューサイズ
#define NUM_LINES 8 // 一ページあたりの項目数
#define ROOTMENU_SIZE 5
#define OWNERMENU_SIZE 6
#define PARENTALMENU_SIZE 6
#define OTHERMENU_SIZE 7
#define SCFGMENU_SIZE 1
#define FUSEMENU_SIZE 1
// メニューID
#define MENU_ROOT 10
#define MENU_OWNER 0
#define MENU_PARENTAL 1
#define MENU_OTHER 2
#define MENU_SCFG 3
#define MENU_FUSE 4
// 行番号
#define OWNER_LANGUAGE 0
#define OWNER_COLOR 1
#define OWNER_BIRTHDAY 2
#define OWNER_COUNTRY 3
#define OWNER_NICKNAME 4
#define OWNER_COMMENT 5
#define PARENTAL_FLAG 0
#define PARENTAL_ORGANIZATION 1
#define PARENTAL_AGE 2
#define PARENTAL_PASSWORD 3
#define PARENTAL_QUESTION_ID 4
#define PARENTAL_ANSWER 5
#define OTHER_WIRELESS 0
#define OTHER_FORCE_DISABLE 1
#define OTHER_AGREE_EULA 2
#define OTHER_EULA_VERSION 3
#define OTHER_REGION 4
#define OTHER_UNIQUE_ID 5
#define OTHER_SERIAL 6
/* global variables ----------------- */
#define MAXPAGE 10
// 各項目のページごとのオフセット値
extern const int s_pageOffset[][MAXPAGE];
/* function prototypes ----------------- */
void drawHeader( u8 menu, u8 page, u8 line );
void drawMenu( u8 menu, u8 page, u8 line );
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,144 +0,0 @@
// from main.c
void myDEMOInit( void )
{
DEMOInitCommon();
DEMOInitVRAM();
DEMOInitDisplayBitmap();
DEMOHookConsole();
DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1));
DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR);
DEMOStartDisplay();
}
/*---------------------------------------------------------------------------*
Name: InitScreen
Description: BG
Arguments:
Returns:
*---------------------------------------------------------------------------*/
static void InitScreen(void)
{
GXRgb myPalette[16] =
{
GX_RGB( 0, 0, 0), GX_RGB(31, 31, 31), GX_RGB( 31, 31, 0), GX_RGB(31, 0, 0),
GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0),
GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0),
GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0),
};
// BG 1 を設定
G2S_SetBG1Control(
GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256
GX_BG_COLORMODE_16, // カラーモード 16色
GX_BG_SCRBASE_0x0000, // スクリーンベース
GX_BG_CHARBASE_0x00000, // キャラクタベース
GX_BG_EXTPLTT_01 // 拡張パレットスロット
);
// BG1 を可視に
GXS_SetVisiblePlane(GX_GetVisiblePlane() & ~GX_PLANEMASK_BG1);
// カラーパレットを設定
GX_LoadBGPltt( myPalette, 0, sizeof(myPalette) );
}
/*---------------------------------------------------------------------------*
Name: InitCanvas
Description:
Arguments:
Returns:
*---------------------------------------------------------------------------*/
static void InitCanvas(void)
{
// BGキャラクタベースへのポインタ
GXCharFmt16* const pCharBase = (GXCharFmt16*)G2_GetBG1CharPtr();
int cOffset = CHARACTER_OFFSET;
TXT_LoadFont(&gFont, FONT_RESOURCE);
// CharCanvas の初期化と BG スクリーンの設定
// CharCanvas 0
NNS_G2dCharCanvasInitForBG(
&gCanvas[0], // CharCanvasへのポインタ
pCharBase + cOffset, // 使用するキャラクタ列先頭へのポインタ
CANVAS0_WIDTH, // CharCanvas幅
CANVAS0_HEIGHT, // CharCanvas高さ
NNS_G2D_CHARA_COLORMODE_16 // カラーモード
);
NNS_G2dMapScrToCharText(
G2S_GetBG1ScrPtr(), // スクリーンベースへのポインタ
CANVAS0_WIDTH, // CharCanvas幅
CANVAS0_HEIGHT, // CharCanvas高さ
CANVAS0_LEFT, // CharCanvas表示位置
CANVAS0_TOP, // CharCanvas表示位置
NNS_G2D_TEXT_BG_WIDTH_256, // スクリーン幅
cOffset, // 使用するキャラクタ列先頭のキャラクタ番号
0 // カラーパレット番号
);
// CharCanvas 0 が使う分のキャラクタ数をオフセットに加算
cOffset += CANVAS0_WIDTH * CANVAS0_HEIGHT;
// CharCanvas 1
NNS_G2dCharCanvasInitForBG(
&gCanvas[1],
pCharBase + cOffset,
CANVAS1_WIDTH,
CANVAS1_HEIGHT,
NNS_G2D_CHARA_COLORMODE_16
);
NNS_G2dMapScrToCharText(
G2S_GetBG1ScrPtr(),
CANVAS1_WIDTH,
CANVAS1_HEIGHT,
CANVAS1_LEFT,
CANVAS1_TOP,
NNS_G2D_TEXT_BG_WIDTH_256,
cOffset,
0
);
// CharCanvas 1 が使う分のキャラクタ数をオフセットに加算
cOffset += CANVAS1_WIDTH * CANVAS1_HEIGHT;
// TextCanvas の初期化
// CharCanvas 毎に TextCanvas を用意することもできますし、
// 複数の TextCanvas で1つの CharCanvas を共有する事もできます。
// 複数の CharCanvas を1つの TextCanvas で使う場合は
// TextCanvas の CharCanvas を置き換えながら使う事になります。
// 1) 複数の TextCanvas で1つの CharCanvas を共有
// CharCanvas 1 を TextCanvas 0, 1 で共有
{
NNS_G2dTextCanvasInit(
&gTextCanvas[0], // TextCanvasへのポインタ
&gCanvas[0], // 描画先のCharCanvasへのポインタ
(NNSG2dFont*)s_pFontBuffer, // 描画に用いるフォントへのポインタ
TEXT_HSPACE, // 文字間
TEXT_VSPACE // 行間
);
}
// 2) CharCanvas 毎に TextCanvas を用意
// CharCanvas 2 を TextCanvas 2 単独で使用
{
NNS_G2dTextCanvasInit(
&gTextCanvas[1],
&gCanvas[1],
(NNSG2dFont*)s_pFontBuffer,
TEXT_HSPACE,
TEXT_VSPACE
);
}
}

View File

@ -1,100 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - tests - DisplaySystemInfo
File: main.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 <twl.h>
#include <sysmenu.h>
#include "misc.h"
#include "viewSystemInfo.h"
#define CANVAS0_WIDTH 15
#define CANVAS0_HEIGHT 10
#define CANVAS0_LEFT 10
#define CANVAS0_TOP 10
#define CANVAS1_WIDTH 10
#define CANVAS1_HEIGHT 10
#define CANVAS1_LEFT 130
#define CANVAS1_TOP 10
#define TEXT_HSPACE 1 // 文字列描画時の文字間 (ピクセル単位)
#define TEXT_VSPACE 1 // 文字列描画時の行間 (ピクセル単位)
#define CHARACTER_OFFSET 1
/////////////////////////////
void VBlankHandler( void );
/////////////////////////////
/*---------------------------------------------------------------------------*
Name: TwlMain
Description: main
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void TwlMain( void )
{
OS_Init();
OS_TPrintf("Initialize...");
SYSM_Init(Alloc, Free );
SYSM_SetArena();
RTC_Init();
//---- interrupt setting
OS_EnableIrq();
OS_EnableInterrupts();
OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler );
OS_EnableIrqMask( OS_IE_V_BLANK );
GX_VBlankIntr( TRUE );
InitAllocator();
InitBG();
OS_TPrintf("Finished\n");
displayInfoInit();
FS_Init(FS_DMA_NOT_USE);
OS_TPrintf("begin mainloop\n");
// メインループ
while( 1 )
{
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
ReadKeyPad(); // キー入力の取得
displayInfoMain(); // ビューア更新
}
}
void VBlankHandler(void)
{
OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vブランク割込チェックのセット
}

View File

@ -1,427 +0,0 @@
static const u8 s_numMenuK[] = {
OWNERMENU_KSIZE,
PARENTALMENU_KSIZE,
OTHERMENU_KSIZE,
SCFGMENU_KSIZE,
FUSEMENU_KSIZE,
0,
0,
0,
0,
0,
ROOTMENU_KSIZE
// !!! あとで残りの分も追加するよ
};
static const u8 s_numMenuV[] = {
OWNERMENU_VSIZE,
PARENTALMENU_VSIZE,
OTHERMENU_VSIZE,
SCFGMENU_VSIZE,
FUSEMENU_VSIZE,
0,
0,
0,
0,
0,
ROOTMENU_VSIZE
// !!! あとで残りの分も追加するよ
};
static const u16 *s_strRootMenu[] = {
L"Owner",
L"Parental control",
L"Other machine setting",
L"SCFG",
L"Fuse rom"
};
static const char *s_strMenuName[] = {
"Owner",
"Parental control",
"Other machine setting",
"SCFG",
"Fuse rom"
};
static const u16 *s_strOwnerMenu[] = {
L"Language",
L"Favorite color",
L"Birthday",
L"Country",
L"Nickname",
L"Comment"
};
static const u16 *s_strParentalMenu[] = {
L"Parental control",
L"Organization",
L"Age",
L"Password",
L"Quastion id",
L"Answer"
};
static const u16 *s_strOtherMenu[] = {
L"Wireless",
L"Force Disable Wireless",
L"",
L"Agree EULA",
L"Eula Version",
L"Region",
L"",
L"",
L"Unique ID",
L"",
L"",
L"Serial No"
};
static const u16 *s_strSCFGMenu[] = {
L"UNDER CONSTRUCTION"
};
static const u16 *s_strFuseMenu[] = {
L"UNDER CONSTRUCTION"
};
static const u16 **s_strMetaMenu[] = {
s_strOwnerMenu,
s_strParentalMenu,
s_strOtherMenu,
s_strSCFGMenu,
s_strFuseMenu,
NULL,
NULL,
NULL,
NULL,
NULL,
s_strRootMenu
};
static char *s_strEnable[] = {
"DISABLED",
"ENABLED"
};
static char *s_strBool[] = {
"TRUE",
"FALSE"
};
static char *s_strRatingOrg[] = {
"CERO",
"ESRB",
"BBFC",
"USK",
"PEGI general",
"PEGI Finland",
"PEGI Portugal",
"PEGI and BBFC Great Briten",
"OFLC",
"GRB"
};
static char *s_strRegion[] = {
"JAPAN",
"AMERICA",
"EUROPA",
"AUSTRALIA",
"CHINA",
"KOREA",
};
static char *s_strUserColor[] = {
"GRAY ",
"BROWN ",
"RED ",
"PINK ",
"ORANGE ",
"YELLOW ",
"LIME_GREEN",
"GREEN ",
"DARK_GREEN",
"SEA_GREEN ",
"TURQUOISE ",
"BLUE ",
"DARK_BLUE ",
"PURPLE ",
"VIOLET ",
"MAGENTA ",
};
static char *s_strLanguage[] = {
"JAPANESE",
"ENGLISH",
"FRENCH",
"GERMAN",
"ITALIAN",
"SPANISH",
"CHINESE",
"KOREAN",
};
static char *s_strCountry[] = {
"UNDEFINED ", // 未設定
"JAPAN ", // 日本
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"Anguilla ", // アンギラ
"ANTIGUA_AND_BARBUDA", // アンティグア・バーブーダ
"ARGENTINA ", // アルゼンチン
"ARUBA", // アルバ
"BAHAMAS", // バハマ
"BARBADOS", // バルバドス
"BELIZE", // ベリーズ
"BOLIVIA", // ボリビア
"BRAZIL", // ブラジル
"BRITISH_VIRGIN_ISLANDS", // 英領ヴァージン諸島
"CANADA", // カナダ
"CAYMAN_ISLANDS", // ケイマン諸島
"CHILE ", // チリ
"COLOMBIA", // コロンビア
"COSTA_RICA", // コスタリカ
"DOMINICA", // ドミニカ国
"DOMINICAN_REPUBLIC", // ドミニカ共和国
"ECUADOR", // エクアドル
"EL_SALVADOR", // エルサルバドル
"FRENCH_GUIANA", // フランス領ギアナ
"GRENADA", // グレナダ
"GUADELOUPE", // グアドループ
"GUATEMALA ", // グアテマラ
"GUYANA", // ガイアナ
"HAITI", // ハイチ
"HONDURAS", // ホンジュラス
"JAMAICA", // ジャマイカ
"MARTINIQUE", // マルティニーク
"MEXICO", // メキシコ
"MONTSERRAT", // モントセラト
"NETHERLANDS_ANTILLES", // オランダ領アンティル
"NICARAGUA", // ニカラグア
"PANAMA ", // パナマ
"PARAGUAY", // パラグアイ
"PERU", // ペルー
"ST_KITTS_AND_NEVIS", // セントキッツ・ネイビス
"ST_LUCIA", // セントルシア
"ST_VINCENT_AND_THE_GRENADINES", // セントビンセント・グレナディーン
"SURINAME", // スリナム
"TRINIDAD_AND_TOBAGO", // トリニダード・トバゴ
"TURKS_AND_CAICOS_ISLANDS", // タークス・カイコス諸島
"UNITED_STATES", // アメリカ
"URUGUAY ", // ウルグアイ
"US_VIRGIN_ISLANDS", // 米領バージン諸島
"VENEZUELA", // ベネズエラ
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"ALBANIA ", // アルバニア
"AUSTRALIA", // オーストラリア
"AUSTRIA", // オーストリア
"BELGIUM", // ベルギー
"BOSNIA_AND_HERZEGOVINA", // ボスニア・ヘルツェゴビナ
"BOTSWANA", // ボツワナ
"BULGARIA ", // ブルガリア
"CROATIA", // クロアチア
"CYPRUS", // キプロス
"CZECH_REPUBLIC", // チェコ
"DENMARK", // デンマーク
"ESTONIA", // エストニア
"FINLAND", // フィンランド
"FRANCE", // フランス
"GERMANY", // ドイツ
"GREECE", // ギリシャ
"HUNGARY ", // ハンガリー
"ICELAND", // アイスランド
"IRELAND", // アイルランド
"ITALY", // イタリア
"LATVIA", // ラトビア
"LESOTHO", // レソト
"LIECHTENSTEIN", // リヒテンシュタイン
"LITHUANIA", // リトアニア
"LUXEMBOURG", // ルクセンブルク
"MACEDONIA", // マケドニア
"MALTA ", // マルタ
"MONTENEGRO", // モンテネグロ
"MOZAMBIQUE", // モザンビーク
"NAMIBIA", // ナミビア
"NETHERLANDS", // オランダ
"NEW_ZEALAND", // ニュージーランド
"NORWAY", // ノルウェー
"POLAND", // ポーランド
"PORTUGAL", // ポルトガル
"ROMANIA", // ルーマニア
"RUSSIA ", // ロシア
"SERBIA", // セルビア
"SLOVAKIA", // スロバキア
"SLOVENIA", // スロベニア
"SOUTH_AFRICA", // 南アフリカ
"SPAIN", // スペイン
"SWAZILAND", // スワジランド
"SWEDEN", // スウェーデン
"SWITZERLAND", // スイス
"TURKEY", // トルコ
"UNITED_KINGDOM ", // イギリス
"ZAMBIA", // ザンビア
"ZIMBABWE", // ジンバブエ
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"TAIWAN ", // 台湾
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"SOUTH_KOREA ", // 韓国
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"HONG_KONG ", // ホンコン
"MACAU", // マカオ
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"INDONESIA ", // インドネシア
"SINGAPORE ", // シンガポール
"THAILAND ", // タイ
"PHILIPPINES", // フィリピン
"MALAYSIA", // マレーシア
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"CHINA ", // 中国
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UAE ", // アラブ首長国連邦
"INDIA ", // インド
"EGYPT ", // エジプト
"OMAN", // オマーン
"QATAR", // カタール
"KUWAIT", // クウェート
"SAUDI_ARABIA", // サウジアラビア
"SYRIA", // シリア
"BAHRAIN", // バーレーン
"JORDAN", // ヨルダン
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"UNKNOWN",
"OTHERS ",
"UNKNOWN ",
};
static char s_strNA[] = {
""
};

View File

@ -1,354 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - tests - DisplaySystemInfo
File: viewSystemInfo.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 <wchar.h>
#include <twl/os/common/ownerInfoEx_private.h>
#include "misc.h"
#include "viewSystemInfo.h"
#include "strResource.h"
#define ID_BUFSIZE 2
#define AGE_BUFSIZE 4
#define BIRTHDAY_BUFSIZE 6
/* function prototype ----------------------------- */
void getAllInfo( void );
void initInfo( void );
void infoAlloc( char* p, int size, const char *name);
void control( u8 *menu, u8 *page, u8 *line );
void printAllInfo ( void );
/* global variables ----------------------------- */
RTCDrawProperty g_rtcDraw = {
TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y
};
char** gAllInfo[ROOTMENU_KSIZE]; // それぞれのメニューごとに項目の中身を"文字列で"持つ配列
u16 gUserName[OS_OWNERINFO_NICKNAME_MAX + 1];
u16 gUserComment[OS_OWNERINFO_COMMENT_MAX + 1];
u16 gSecretAnswer[OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1];
static OSOwnerInfoEx gOwnerInfo; // オーナー情報
static BOOL gbWirelessAvailable; // 無線が有効かどうか
static BOOL gbBatteryExtensionAvailable; // バッテリーエクステンションモードが有効か
static BOOL gbAgreeEula; // Eula同意済みか
static u8 gEulaVersion; // 同意Eulaのバージョン
static const OSTWLParentalControl *gpPC; // ペアレンタルコントロール情報
static u8 gUniqueID[OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN]; // ユニークId
static BOOL gbForceDisableWireless; // 無線の強制無効化フラグ
static OSTWLRegion gRegion; // リージョン番号
static u8 gSerialNo[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; // シリアル番号
/* static data ---------------------------------- */
// メニュー項目数
static const u8 s_numMenu[11]; //暫定
// 文字列リソース
/*
static const u16 *s_strRootMenu[ROOTMENU_SIZE];
static const char *s_strMenuName[ROOTMENU_SIZE];
static const u16 *s_strOwnerMenu[OWNERMENU_SIZE];
static const u16 *s_strParentalMenu[PARENTALMENU_SIZE];
static char *s_strCountry[ 256 ];
static char *s_strRegion[ OS_TWL_REGION_MAX ];
static char *s_strUserColor[ OS_FAVORITE_COLOR_MAX ];
static char *s_strLanguage[ OS_LANGUAGE_CODE_MAX ];
static char *s_strBool[2];
static char *s_strRatingOrg[OS_TWL_PCTL_OGN_MAX];
*/
/* function definition -------------------------- */
void displayInfoMain( void )
{
static u8 menu = MENU_ROOT;
static u8 page = 0, line = 0; // 現在選択しているページナンバと行
static BOOL firstCall = TRUE; // 最初の呼び出しか否か
// 初回の呼び出し時は全ての情報を取得しなおす
if( firstCall )
{
firstCall = FALSE;
initInfo();
getAllInfo();
}
// パッド情報で選んでる場所とか情報とか更新
control( &menu, &page, &line );
// 変更可能な項目でAボタン押したら変更モードに移るとか
// Bボタンでジャンルに戻るとかそんなんやる
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
drawHeader(menu, page, line);
drawMenu(menu, page, line); // 情報一覧を描画する
GetAndDrawRTCData( &g_rtcDraw, FALSE ); // RTC更新
}
void initInfo( void )
{
OS_TPrintf("buffer initialize\n");
// 固定文字列で対応できない項目に文字列領域を割り当てる
gAllInfo[MENU_OWNER][OWNER_BIRTHDAY] = (char*) Alloc (sizeof(char) * BIRTHDAY_BUFSIZE);
SDK_ASSERT( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY] );
gAllInfo[MENU_PARENTAL][PARENTAL_AGE] = (char*) Alloc (sizeof(char) * AGE_BUFSIZE);
SDK_ASSERT( gAllInfo[MENU_PARENTAL][PARENTAL_AGE] );
gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD] = (char*) Alloc (sizeof(char) * OS_TWL_PCTL_PASSWORD_LENGTH+1);
SDK_ASSERT( gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD] );
gAllInfo[MENU_OTHER][OTHER_EULA_VERSION] = (char*) Alloc (sizeof(char) * AGE_BUFSIZE);
SDK_ASSERT( gAllInfo[MENU_OTHER][OTHER_EULA_VERSION] );
gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID] = (char*) Alloc (sizeof(char) * OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3);
SDK_ASSERT( gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID] );
gAllInfo[MENU_OTHER][OTHER_SERIAL] = (char*) Alloc (sizeof(char) * OS_TWL_HWINFO_SERIALNO_LEN_MAX);
SDK_ASSERT( gAllInfo[MENU_OTHER][OTHER_SERIAL] );
OS_TPrintf( "information alloc succeeded\n" );
}
void getAllInfo( void )
//
{
BOOL SCFGAccessable = FALSE;
BOOL fuseRomAccessable = FALSE;
u8 uniqIDBuf[OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN];
OS_TPrintf("reflesh Information\n");
OS_TPrintf( "...Owner Information\n");
// 本体設定まわり
OS_GetOwnerInfoEx( &gOwnerInfo );
// 全体情報につめていく
// 泥臭すぎるやり方なのであとで考える
gAllInfo[MENU_OWNER][OWNER_LANGUAGE] = s_strLanguage[ gOwnerInfo.language ];
gAllInfo[MENU_OWNER][OWNER_COLOR] = s_strUserColor[ gOwnerInfo.favoriteColor ];
snprintf( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY], BIRTHDAY_BUFSIZE, "%02d/%02d", gOwnerInfo.birthday.month, gOwnerInfo.birthday.day);
OS_TPrintf( "language:%s\n", gAllInfo[MENU_OWNER][OWNER_LANGUAGE]);
gAllInfo[MENU_OWNER][OWNER_COUNTRY] = s_strCountry[gOwnerInfo.country];
wcsncpy( gUserName, gOwnerInfo.nickName, OS_OWNERINFO_NICKNAME_MAX + 1);
wcsncpy( gUserComment, gOwnerInfo.comment, OS_OWNERINFO_COMMENT_MAX + 1 ); // !!! なぜかコメントが取得できない 要検証
// wcsncpy( gUserComment, L"うべらべらー", OS_OWNERINFO_COMMENT_MAX + 1 );
OS_TPrintf( "...Parental Control Information\n" );
// ペアレンタルコントロールまわり
gpPC = OS_GetParentalControlInfoPtr();
gAllInfo[MENU_PARENTAL][PARENTAL_FLAG] = s_strBool[ gpPC->flags.isSetParentalControl ];
gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION] = s_strRatingOrg[ gpPC->ogn ];
snprintf( gAllInfo[MENU_PARENTAL][PARENTAL_AGE], AGE_BUFSIZE, "%d", gpPC->ratingAge );
snprintf( gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID], ID_BUFSIZE, "%d", gpPC->secretQuestionID );
wcsncpy( gUserComment, gpPC->secretAnswer, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1);
snprintf( gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD], OS_TWL_PCTL_PASSWORD_LENGTH + 1, "%d", gpPC->password );
OS_TPrintf( "...Other Machine Setting Information\n" );
// そのほかの本体情報まわり
//gbBatteryExtensionAvailable = OS_IsAvailableBatteryExtension();
gAllInfo[MENU_OTHER][OTHER_WIRELESS] = s_strEnable[ OS_IsAvailableWireless() ];
gAllInfo[MENU_OTHER][OTHER_FORCE_DISABLE] = s_strBool[ OS_IsForceDisableWireless() ];
gAllInfo[MENU_OTHER][OTHER_AGREE_EULA] = s_strBool[ OS_IsAgreeEULA() ];
snprintf( gAllInfo[MENU_OTHER][OTHER_EULA_VERSION], AGE_BUFSIZE, "%d", OS_GetAgreedEULAVersion()) ;
gAllInfo[MENU_OTHER][OTHER_REGION] = s_strRegion[ OS_GetRegion() ];
{
int i;
char ascii[] = "0123456789abcdef";
const u8 *unq = OS_GetMovableUniqueIDPtr();
// 16進で1バイトずつ詰めていく
// バッファが長さの3倍長なのは、データを"%02x-%02x-%02x..."に置換するため
for(i=0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3; i += 3, unq++ )
{
gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID][i] = ascii[(*unq>>4) & 0x0f];
gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID][i+1] = ascii[*unq & 0x0f];
gAllInfo[MENU_OTHER][OTHER_UNIQUE_ID][i+2] =
(i+2) == (OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 - 1) ? '\0' : '-' ;
OS_TPrintf("uniqid: %d\n", *unq);
}
}
{
u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX];
OS_GetSerialNo( serialBuf );
snprintf( gAllInfo[MENU_OTHER][OTHER_SERIAL], OS_TWL_HWINFO_SERIALNO_LEN_MAX, "%s", serialBuf);
}
// ヘッダ情報をチェック
// SecureアプリならfuseROM見える
// Secureアプリか明示的に指定したアプリならSCFGレジスタ見える
/*
if( SCFGAccessable && SCFG_IsSecureRomAccessible())
{
}
if( fuseRomAccessable )
{
}*/
printAllInfo();
OS_TPrintf("reflesh information finished\n");
}
void control( u8 *menu, u8 *page, u8 *line )
{
u8 pagemax = ( s_numMenuK[*menu] / NUM_LINES ) + 1; // 選択中メニューのページ数
u8 linemax = ( s_numMenuK[*menu] - (*page * NUM_LINES)) > NUM_LINES ?
NUM_LINES : s_numMenuK[*menu] - (*page * NUM_LINES); // 選択中ページの項目数
if( pad.trg & PAD_KEY_UP )
{
// 項目名のないところはカーソル飛ばす
do
{
*line = (*line + linemax - 1) % linemax;
}
while( !wcscmp( s_strMetaMenu[*menu][*line], L"") );
}
else if( pad.trg & PAD_KEY_DOWN )
{
do
{
*line = (*line+1) % linemax;
}
while( !wcscmp( s_strMetaMenu[*menu][*line], L"") );
}
if( pad.trg & PAD_KEY_LEFT )
{
// ページ送り
*page = (*page + pagemax - 1) % pagemax;
*line = 0;
}
else if( pad.trg & PAD_KEY_RIGHT )
{
*page = (*page+1) % pagemax;
*line = 0;
}
if( pad.trg & PAD_BUTTON_A )
{
if(*menu == MENU_ROOT)
{
// 次のメニュー画面を開く
*menu = *line;
*line = 0;
*page = 0;
}
else
{
// !!! 設定可能な項目だったら設定変更画面
}
}
if( pad.trg & PAD_BUTTON_B )
{
// !!! とりあえず今はルートに戻る
// 値設定画面の時はキャンセルするだけにする
*menu = MENU_ROOT;
*page = 0;
*line = 0;
}
}
void displayInfoInit( void )
{
int loop1,loop2;
GX_DispOff();
GXS_DispOff();
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"RomTypeTest");
PutStringUTF16( 4 * 8, 8 * 8, TXT_COLOR_BLACK, (const u16 *)L"Push A To Start Test.");
PutStringUTF16( 4 * 8, 10 * 8, TXT_COLOR_BLACK, (const u16 *)L"Push X To Start Test Quietly.");
GetAndDrawRTCData( &g_rtcDraw, TRUE );
// 全体情報を持つ配列をセット
// 全項目に文字列バッファを持たせるとメモリ書き込みが多くなるので
// 可能なものはstatic文字列へのポインタで対応
// 必要なものだけあとでmallocする
for(loop1=0; loop1<ROOTMENU_KSIZE; loop1++)
{
int loop2;
gAllInfo[loop1] = (char**)Alloc(sizeof(char*) * s_numMenuV[loop1]);
if(gAllInfo[loop1] == NULL ){
OS_TPrintf( "AllInfo malloc failed\n");
return;
}
// とりあえず全部N/Aで埋めておく
for(loop2=0; loop2<s_numMenuV[loop1]; loop2++)
{
gAllInfo[loop1][loop2] = s_strNA;
}
}
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
GX_DispOn();
GXS_DispOn();
}
void printAllInfo ( void )
{
int loop1, loop2;
for(loop1=0; loop1 < ROOTMENU_KSIZE; loop1++ )
{
for(loop2=0; loop2 < s_numMenuV[loop1]; loop2++ )
{
// utf16で描画するものだけ分ける
if(loop1 == MENU_OWNER && loop2 == OWNER_NICKNAME)
{
OS_TPrintf("%d %d : %s\n", loop1, loop2, gUserName);
}
else if(loop1 == MENU_OWNER && loop2 == OWNER_COMMENT)
{
OS_TPrintf("%d %d : %s\n", loop1, loop2, gUserComment);
}
else if(loop1 == MENU_PARENTAL && loop2 == PARENTAL_ANSWER)
{
OS_TPrintf("%d %d : %s\n", loop1, loop2, gSecretAnswer);
}
else
{
OS_TPrintf("%d %d : %s\n", loop1, loop2, gAllInfo[loop1][loop2]);
}
}
}
}

View File

@ -1,50 +0,0 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - tests - DisplaySystemInfo
File: viewSystemInfo.h
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$
*---------------------------------------------------------------------------*/
#ifndef __LOAD_VIEW_INFO__
#define __LOAD_VIEW_INFO__
#include <twl.h>
#include "drawFunc.h"
#ifdef __cplusplus
extern "C" {
#endif
////////////////////////////////
// 各種本体、ユーザ情報
extern char** gAllInfo[ROOTMENU_KSIZE]; // それぞれのメニューごとに項目の中身を"文字列で"持つ配列
extern u16 gUserName[OS_OWNERINFO_NICKNAME_MAX + 1];
extern u16 gUserComment[OS_OWNERINFO_COMMENT_MAX + 1];
extern u16 gSecretAnswer[OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1];
////////////////////////////////
void displayInfoMain( void );
void displayInfoInit( void );
////////////////////////////////
#ifdef __cplusplus
}
#endif
#endif // __LOAD_VIEW_INFO__