nishimoto @PSEG1

デバッグ用ツール AppJumpChecker に内部関数を使ったノーマルジャンプ機能追加。
バナー付加。
カードアプリのイニシャルコード、TitleID_Lo の表示実装。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2343 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-08-30 09:01:29 +00:00
parent 0883c669a5
commit cdef12704c
5 changed files with 39 additions and 39 deletions

View File

@ -12,8 +12,8 @@
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev:$
# $Author:$
# $Rev$
# $Author$
#----------------------------------------------------------------------------
override TARGET_PLATFORM = TWL
override TARGET_CODEGEN = ARM
@ -22,7 +22,7 @@ override TWL_ARCHGEN = LIMITED
TWL_NANDAPP = TRUE
TARGET_BIN = appJumpChecker.tad
INCDIR = ./include
INCDIR = ./include $(ROOT)/build/libraries/os/common/include
SRCDIR = ./src
SRCS = main.c screen.c font.c common.c
@ -50,6 +50,7 @@ ROM_SPEC_PARAM = MakerCode=01 \
NANDAccess=TRUE \
Media=NAND \
Secure=TRUE \
BannerFile=appjumpchecker.bnr \
PermitLandingNormalJump=TRUE \
WramMapping=MAP_TS_SCR

Binary file not shown.

View File

@ -29,17 +29,9 @@ extern "C" {
*---------------------------------------------------------------------------*/
/* TitleID */
#define CARDAPP_TITLEID (u64)(0x0003000034333041) // 430A
#define NANDAPP1_TITLEID (u64)(0x0003000434333141) // 431A
#define NANDAPP2_TITLEID (u64)(0x0003000434333241) // 432A
#define KEY_REPEAT_START 25 // キーリピート開始までのフレーム数
#define KEY_REPEAT_SPAN 10 // キーリピートの間隔フレーム数
/* アプリ間パラメータ関連 */
#define APPJUMP_STRING_LENGTH 24 // 引数一つ分として受け渡しされる文字列の長さ制限
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
@ -53,14 +45,6 @@ typedef struct KeyInfo
u16 rep; // 押し維持リピート入力
} KeyInfo;
// アプリ間でバイナリデータとして引き渡す構造体
typedef struct AppParam
{
u32 jumpCount; // アプリジャンプの実行回数
u8 isAutoJump; // 一定間隔で自動的にアプリジャンプを実行するかどうかのフラグ
u8 rsv[3]; // 4バイトアラインメントのため
} AppParam;
/*---------------------------------------------------------------------------*
Prototype
*---------------------------------------------------------------------------*/

View File

@ -17,6 +17,7 @@
#include <twl/nam.h>
#include <twl/os/common/format_rom.h>
#include "application_jump_private.h"
#include "common.h"
#include "screen.h"
@ -173,7 +174,18 @@ void TwlMain(void)
// 内部関数を使用したアプリジャンプの実行
if (gKey.trg & PAD_BUTTON_B)
{
LauncherBootFlags flag;
flag.bootType = LAUNCHER_BOOTTYPE_NAND;
flag.isValid = TRUE;
flag.isLogoSkip = TRUE;
flag.isInitialShortcutSkip = FALSE;
flag.isAppLoadCompleted = FALSE;
flag.isAppRelocate = FALSE;
flag.rsv = 0;
OS_SetLauncherParamAndResetHardware(dataList[gCurPos].id, &flag);
// 成功時はここ以降は実行されない
PrintErrMsg("Failed to App Jump(force).");
}
// カードアプリへのアプリジャンプ試行
@ -285,7 +297,7 @@ static BOOL GetDataStruct(DataStruct* list)
static void DrawScene(DataStruct* list)
{
s32 i;
u8 init_code[5];
u8 init_code[5], titleid_lo[5];
// 上画面
PutMainScreen( 0, 1, 0xff, " ------ App Jump Checker ------ ");
@ -295,12 +307,13 @@ static void DrawScene(DataStruct* list)
PutMainScreen( 0, 5, 0xff, " ------------------------------ ");
PutMainScreen( 0, 7, 0xff, " A : try App Jump (to NAND)" );
PutMainScreen( 0, 8, 0xff, " Y : try App Jump (to CARD)" );
PutMainScreen( 0, 10, 0xff, " UP ,DOWN ,LEFT ,RIGHT KEY :" );
PutMainScreen( 0, 11, 0xff, " move * (cursor) ");
PutMainScreen( 0, 13, 0xff, " ------------------------------ ");
PutMainScreen( 0, 8, 0xfe, " B : try App Jump (force) " );
PutMainScreen( 0, 9, 0xff, " Y : try App Jump (to CARD)" );
PutMainScreen( 0, 11, 0xff, " UP ,DOWN ,LEFT ,RIGHT KEY :" );
PutMainScreen( 0, 12, 0xff, " move * (cursor) ");
PutMainScreen( 0, 14, 0xff, " ------------------------------ ");
PutMainScreen( 0, 15, 0xf1, "%s", gErrBuf);
PutMainScreen( 0, 16, 0xf1, "%s", gErrBuf);
// 下画面
PutSubScreen( 0, 0, 0xf4, " NAND ( max 36 )");
@ -329,7 +342,7 @@ static void DrawScene(DataStruct* list)
}
// カードアプリチェック
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 1, 0xf4, " CARD");
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 1, 0xf4, " CARD: Init. Code, TitleID_Lo");
{
CARDRomHeader* rh;
rh = (CARDRomHeader*)CARD_GetRomHeader();
@ -339,32 +352,36 @@ static void DrawScene(DataStruct* list)
// イニシャルコードの取得
if ( rh->product_id & 0x03 || rh->product_id & 0x02 ) // 刺さっているカードのロムが TWLアプリ
{
ROM_Header_Short* rhs;
rhs = (ROM_Header_Short*)HW_TWL_CARD_ROM_HEADER_BUF; // CARD_GetRomHeader();
// rh = (CARDRomHeader*)HW_TWL_CARD_ROM_HEADER_BUF;
ROM_Header* rh2;
rh2 = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF;
// ROM ヘッダの拡張領域までイニシャルコードを見に行く
// 未マスタリング状態のロムでは、ROM ヘッダ(共通部)のイニシャルコードへ
// 設定が反映されない
ConvertTitleIdLo(init_code, rhs->titleID_Lo);
// ConvertGameCode(init_code, rh->game_code);
// ROM ヘッダの拡張領域まで TitleID_Lo を見に行く
// ROM ヘッダ(共通部)のイニシャルコードは基本的に製品版に入れられる
// ConvertTitleIdLo(titleid_lo, rh2->s.titleID_Lo);
MI_CpuCopy8( rh2->s.titleID_Lo, titleid_lo, 4 );
titleid_lo[4] = 0x00;
MI_CpuCopy8( rh2->s.game_code, init_code, 4 );
}
else // 刺さっているカードのロムが NTRアプリ
{
// 未マスタリング状態のロムでは、ROM ヘッダ(共通部)のイニシャルコードへ
// 設定が反映されない
// 特別に設定された NTRアプリなら TitleID_Lo が設定されている可能性があるので読み込んでみる
MI_CpuClear8( titleid_lo, 5 );
MI_CpuCopy8( ((ROM_Header*)rh)->s.titleID_Lo, titleid_lo, 4 );
titleid_lo[4] = 0x00;
ConvertGameCode(init_code, rh->game_code);
}
// ノーマルジャンプを許可しているかどうかを取得
if ( rh->reserved_A[8] & 0x80 )
{
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 2, 0xf2, " %s : o", init_code );
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 2, 0xf2, " %s, %s : o", init_code, titleid_lo );
}
else
{
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 2, 0xff, " %s : -", init_code );
PutSubScreen( 0, 2 + TITLE_NUM_CUL + 2, 0xff, " %s, %s : -", init_code, titleid_lo );
}
}
else
@ -390,8 +407,6 @@ static void ConvertTitleIdLo(u8* code, u8* titleid_lo)
{
tmp[i] = *titleid_lo;
*code = tmp[i];
// *code = *titleid_lo;
}
// *code = tmp;