diff --git a/build/debugsoft/MakerTitle/TitleList/Makefile b/build/debugsoft/MakerTitle/TitleList/Makefile index b2f2c5d2..1acd6ed2 100644 --- a/build/debugsoft/MakerTitle/TitleList/Makefile +++ b/build/debugsoft/MakerTitle/TitleList/Makefile @@ -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=I 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: +$(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 \ libsfs$(TWL_LIBSUFFIX).a + +#------------------------- +#-- API タイプの指定 +ifeq ($(USE_SPECIAL),) +API_TYPE = NORMAL +else +API_TYPE = SPECIAL +MACRO_FLAGS += -DUSE_SPECIAL +endif + + #------------------------- #-- ROM A 〜 Jまでのパラメータ設定 @@ -182,7 +204,7 @@ MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) # インストール指定 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) endif diff --git a/build/debugsoft/MakerTitle/TitleList/ROMset.xls b/build/debugsoft/MakerTitle/TitleList/ROMset.xls deleted file mode 100644 index adae6360..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/ROMset.xls and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/include/title.h b/build/debugsoft/MakerTitle/TitleList/include/title.h index 8d235690..74d93621 100644 --- a/build/debugsoft/MakerTitle/TitleList/include/title.h +++ b/build/debugsoft/MakerTitle/TitleList/include/title.h @@ -31,6 +31,19 @@ static char* GAMECODE_LIST[] = { 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の有無 static BOOL DATA_EXIST[TITLE_COUNT][2] = { {TRUE, TRUE}, // A diff --git a/build/debugsoft/MakerTitle/TitleList/readme.txt b/build/debugsoft/MakerTitle/TitleList/readme.txt deleted file mode 100644 index 362f50c7..00000000 --- a/build/debugsoft/MakerTitle/TitleList/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -TitleList - -*概要* - メーカーコードやアプリ種別、セーブデータ領域の有無などが異なるアプリ間で - セーブデータアクセスが正常に行われるかどうかを確認するアプリセットです。 - - -*テスト方法* - @/debugsoft/TitleList 以下のTitleList_A.tad〜TitleList_J.tadを全てインポートします(以下これらのtadをまとめて、ロムセットと表記します) - A各ロムを起動して、 -   Aボタン − ロムセットへの書き込みテストと -   Bボタン − 自身のセーブデータの読み込みテスト - - を行うことができます。 - -*アプリの仕様* - 書き込みテスト: -  Aボタンを押すと、自分自身を除くロムセットのセーブデータに対して書き込みを試行します。 -  下画面に各ロムに対しての試行結果が表示されます。結果の表示の示す意味は下記の通りです。 - - PUB PRV はそれぞれセーブデータ領域の有無を示します。 - -  ○…正常に書き込みが行われた -  ×…書き込めなかった -  −…セーブデータ領域が存在しない(PUBもPRVも存在しない)、または自分自身である - -  書き込むデータは、"Written by [X]" で、Xには自身のロム名(A〜J)が入ります。 - - 読み込みテスト: -  Bボタンを押すと、自身のセーブデータの内容を表示することができます。 -  これによって、書き込みテストで実際に他のアプリからデータが書き込まれたかどうかを確認することができます。 - Noneが表示される場合は、セーブデータ領域自体が存在しません - File not foundが表示される場合は、セーブデータ領域は存在しますが、ファイルが存在しません(どのアプリからも書き込まれていない) - - セーブデータクリア: -  ROM Aのみ、Xボタンを押すと、ロムセットのセーブデータを全てクリアします。 - -*ロムセットの内容* -  ROMset.xlsを参照してください。 - diff --git a/build/debugsoft/MakerTitle/TitleList/src/appmain.c b/build/debugsoft/MakerTitle/TitleList/src/appmain.c index a06d5772..ab626ba4 100644 --- a/build/debugsoft/MakerTitle/TitleList/src/appmain.c +++ b/build/debugsoft/MakerTitle/TitleList/src/appmain.c @@ -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); void PrintResult(int x, int y, char* text); +static FSFATFSArchiveWork archiveWork ATTRIBUTE_ALIGN(32); + const char* ARC_NAME[2] = { "otherPub:/", "otherPrv:/", @@ -44,14 +46,33 @@ const char* FILE_NAME = "save.dat"; BOOL TestWriting(const char* code, BOOL out_results[2]) { + s32 i = 0; + +#ifndef USE_SPECIAL const NATitleArchive arc[2] = { NA_TITLE_ARCHIVE_DATAPUB, 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) { +#ifndef USE_SPECIAL 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; if(res != FS_RESULT_SUCCESS) { @@ -61,8 +82,12 @@ BOOL TestWriting(const char* code, BOOL out_results[2]) } WriteFile(ARC_NAME[i], FILE_NAME); - + +#ifndef USE_SPECIAL NA_UnloadOtherTitleArchive(); +#else + FSi_MountSpecialArchive(TitleID, NULL, &archiveWork); +#endif } return out_results[0] | out_results[1];