mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(佐々木@PSEG1)MountSpecialArchiveを使う設定でもビルドできるように変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2232 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
d538bf6f0f
commit
6a8982195d
@ -47,6 +47,17 @@ do-something-build:
|
|||||||
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=H SKIP_SUBDIR=FALSE $(MY_GOAL)
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=H SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=I SKIP_SUBDIR=FALSE $(MY_GOAL)
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=I SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=J SKIP_SUBDIR=FALSE $(MY_GOAL)
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=J SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=A USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=B USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=C USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=D USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=E USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=F USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=G USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=H USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=I USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=J USE_SPECIAL=TRUE SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
|
|
||||||
|
|
||||||
do-something:
|
do-something:
|
||||||
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=A SKIP_SUBDIR=FALSE $(MY_GOAL)
|
+$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=A SKIP_SUBDIR=FALSE $(MY_GOAL)
|
||||||
@ -79,6 +90,17 @@ LLIBRARIES = libnam$(TWL_LIBSUFFIX).a libes$(TWL_LIBSUFFIX).a \
|
|||||||
libsea$(TWL_LIBSUFFIX).a libboc$(TWL_LIBSUFFIX).a \
|
libsea$(TWL_LIBSUFFIX).a libboc$(TWL_LIBSUFFIX).a \
|
||||||
libsfs$(TWL_LIBSUFFIX).a
|
libsfs$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------
|
||||||
|
#-- API ƒ^ƒCƒv‚ÌŽw’è
|
||||||
|
ifeq ($(USE_SPECIAL),)
|
||||||
|
API_TYPE = NORMAL
|
||||||
|
else
|
||||||
|
API_TYPE = SPECIAL
|
||||||
|
MACRO_FLAGS += -DUSE_SPECIAL
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
#-------------------------
|
#-------------------------
|
||||||
#-- ROM A ~ Jまでのパラメータ設定
|
#-- ROM A ~ Jまでのパラメータ設定
|
||||||
|
|
||||||
@ -182,7 +204,7 @@ MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
|
|||||||
# インストール指定
|
# インストール指定
|
||||||
|
|
||||||
ifneq ($(TWL_IPL_RED_ROOT),)
|
ifneq ($(TWL_IPL_RED_ROOT),)
|
||||||
INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(MASTER_NAME)
|
INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(MASTER_NAME)/$(API_TYPE)
|
||||||
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
|
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@ -31,6 +31,19 @@ static char* GAMECODE_LIST[] = {
|
|||||||
|
|
||||||
static const u32 TITLE_COUNT = sizeof(GAMECODE_LIST) / sizeof(char*);
|
static const u32 TITLE_COUNT = sizeof(GAMECODE_LIST) / sizeof(char*);
|
||||||
|
|
||||||
|
static u64 TITLE_ID_HIGH[] = {
|
||||||
|
0x00030015ull,
|
||||||
|
0x00030005ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
0x00030004ull,
|
||||||
|
};
|
||||||
|
|
||||||
// PublicとPrivateの有無
|
// PublicとPrivateの有無
|
||||||
static BOOL DATA_EXIST[TITLE_COUNT][2] = {
|
static BOOL DATA_EXIST[TITLE_COUNT][2] = {
|
||||||
{TRUE, TRUE}, // A
|
{TRUE, TRUE}, // A
|
||||||
|
|||||||
@ -1,40 +0,0 @@
|
|||||||
TitleList
|
|
||||||
|
|
||||||
*概要*
|
|
||||||
メーカーコードやアプリ種別、セーブデータ領域の有無などが異なるアプリ間で
|
|
||||||
セーブデータアクセスが正常に行われるかどうかを確認するアプリセットです。
|
|
||||||
|
|
||||||
|
|
||||||
*テスト方法*
|
|
||||||
①/debugsoft/TitleList 以下のTitleList_A.tad~TitleList_J.tadを全てインポートします(以下これらのtadをまとめて、ロムセットと表記します)
|
|
||||||
②各ロムを起動して、
|
|
||||||
Aボタン - ロムセットへの書き込みテストと
|
|
||||||
Bボタン - 自身のセーブデータの読み込みテスト
|
|
||||||
|
|
||||||
を行うことができます。
|
|
||||||
|
|
||||||
*アプリの仕様*
|
|
||||||
書き込みテスト:
|
|
||||||
Aボタンを押すと、自分自身を除くロムセットのセーブデータに対して書き込みを試行します。
|
|
||||||
下画面に各ロムに対しての試行結果が表示されます。結果の表示の示す意味は下記の通りです。
|
|
||||||
|
|
||||||
PUB PRV はそれぞれセーブデータ領域の有無を示します。
|
|
||||||
|
|
||||||
○…正常に書き込みが行われた
|
|
||||||
×…書き込めなかった
|
|
||||||
-…セーブデータ領域が存在しない(PUBもPRVも存在しない)、または自分自身である
|
|
||||||
|
|
||||||
書き込むデータは、"Written by [X]" で、Xには自身のロム名(A~J)が入ります。
|
|
||||||
|
|
||||||
読み込みテスト:
|
|
||||||
Bボタンを押すと、自身のセーブデータの内容を表示することができます。
|
|
||||||
これによって、書き込みテストで実際に他のアプリからデータが書き込まれたかどうかを確認することができます。
|
|
||||||
Noneが表示される場合は、セーブデータ領域自体が存在しません
|
|
||||||
File not foundが表示される場合は、セーブデータ領域は存在しますが、ファイルが存在しません(どのアプリからも書き込まれていない)
|
|
||||||
|
|
||||||
セーブデータクリア:
|
|
||||||
ROM Aのみ、Xボタンを押すと、ロムセットのセーブデータを全てクリアします。
|
|
||||||
|
|
||||||
*ロムセットの内容*
|
|
||||||
ROMset.xlsを参照してください。
|
|
||||||
|
|
||||||
@ -29,6 +29,8 @@ BOOL WriteFile(const char* arc_name, const char* file_name);
|
|||||||
BOOL ReadFile(const char* arc_name, const char* file_name, char* out, int len);
|
BOOL ReadFile(const char* arc_name, const char* file_name, char* out, int len);
|
||||||
void PrintResult(int x, int y, char* text);
|
void PrintResult(int x, int y, char* text);
|
||||||
|
|
||||||
|
static FSFATFSArchiveWork archiveWork ATTRIBUTE_ALIGN(32);
|
||||||
|
|
||||||
const char* ARC_NAME[2] = {
|
const char* ARC_NAME[2] = {
|
||||||
"otherPub:/",
|
"otherPub:/",
|
||||||
"otherPrv:/",
|
"otherPrv:/",
|
||||||
@ -44,14 +46,33 @@ const char* FILE_NAME = "save.dat";
|
|||||||
|
|
||||||
BOOL TestWriting(const char* code, BOOL out_results[2])
|
BOOL TestWriting(const char* code, BOOL out_results[2])
|
||||||
{
|
{
|
||||||
|
s32 i = 0;
|
||||||
|
|
||||||
|
#ifndef USE_SPECIAL
|
||||||
const NATitleArchive arc[2] = {
|
const NATitleArchive arc[2] = {
|
||||||
NA_TITLE_ARCHIVE_DATAPUB,
|
NA_TITLE_ARCHIVE_DATAPUB,
|
||||||
NA_TITLE_ARCHIVE_DATAPRV,
|
NA_TITLE_ARCHIVE_DATAPRV,
|
||||||
};
|
};
|
||||||
s32 i = 0;
|
#else
|
||||||
|
const char* arc[2] = {
|
||||||
|
"otherPub",
|
||||||
|
"otherPrv",
|
||||||
|
};
|
||||||
|
u32 lo = 0;
|
||||||
|
OSTitleId TitleID;
|
||||||
|
lo = MI_LoadBE32(code);
|
||||||
|
TitleID = (TITLE_ID_HIGH[code[2] - 'A'] << 32) | lo;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
for(i = 0; i < 2; ++i)
|
for(i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
|
#ifndef USE_SPECIAL
|
||||||
FSResult res = NA_LoadOtherTitleArchive(code, arc[i]);
|
FSResult res = NA_LoadOtherTitleArchive(code, arc[i]);
|
||||||
|
#else
|
||||||
|
FSResult res = FSi_MountSpecialArchive(TitleID, arc[i], &archiveWork);
|
||||||
|
#endif
|
||||||
out_results[i] = (res != FS_RESULT_SUCCESS) ? FALSE : TRUE;
|
out_results[i] = (res != FS_RESULT_SUCCESS) ? FALSE : TRUE;
|
||||||
if(res != FS_RESULT_SUCCESS)
|
if(res != FS_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
@ -61,8 +82,12 @@ BOOL TestWriting(const char* code, BOOL out_results[2])
|
|||||||
}
|
}
|
||||||
|
|
||||||
WriteFile(ARC_NAME[i], FILE_NAME);
|
WriteFile(ARC_NAME[i], FILE_NAME);
|
||||||
|
|
||||||
|
#ifndef USE_SPECIAL
|
||||||
NA_UnloadOtherTitleArchive();
|
NA_UnloadOtherTitleArchive();
|
||||||
|
#else
|
||||||
|
FSi_MountSpecialArchive(TitleID, NULL, &archiveWork);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return out_results[0] | out_results[1];
|
return out_results[0] | out_results[1];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user