diff --git a/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip b/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip deleted file mode 100644 index 3c329023..00000000 Binary files a/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip and /dev/null differ diff --git a/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip b/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip deleted file mode 100644 index ce07e42d..00000000 Binary files a/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip and /dev/null differ diff --git a/build/debugsoft/AppJumpChecker/Makefile b/build/debugsoft/AppJumpChecker/Makefile deleted file mode 100644 index a2022b49..00000000 --- a/build/debugsoft/AppJumpChecker/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - debugsoft - ApplicationJump -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE -TARGET_BIN = appJumpChecker.tad - -INCDIR = ./include $(ROOT)/build/libraries/os/common/include -SRCDIR = ./src - -SRCS = main.c screen.c font.c common.c - -LLIBRARIES += libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a - -#---------------------------------- -# sea を使用 - -LLIBRARIES += libsea$(TWL_LIBSUFFIX).a - -#---------------------------------- -# nam を使用 - -LLIBRARIES += libnam$(TWL_LIBSUFFIX).a - - -ROM_SPEC = appJumpChecker.autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf - -ROM_SPEC_PARAM = MakerCode=01 \ - NANDAccess=TRUE \ - Media=NAND \ - Secure=TRUE \ - BannerFile=appjumpchecker.bnr \ - PermitLandingNormalJump=TRUE \ - WramMapping=MAP_TS_SCR - -# GameCode=456A \ - -COMPONENT_NAME = armadillo -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/$(COMPONENT_NAME)/$(TWL_BUILDTYPE_ARM7)/$(COMPONENT_NAME) -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -MAKETAD_OPTION := -s - -do-build: $(TARGETS) - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -INSTALL_DIR = ./roms - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/AppJumpChecker/appjumpchecker.bnr b/build/debugsoft/AppJumpChecker/appjumpchecker.bnr deleted file mode 100644 index de53082b..00000000 Binary files a/build/debugsoft/AppJumpChecker/appjumpchecker.bnr and /dev/null differ diff --git a/build/debugsoft/AppJumpChecker/include/common.h b/build/debugsoft/AppJumpChecker/include/common.h deleted file mode 100644 index a0d79755..00000000 --- a/build/debugsoft/AppJumpChecker/include/common.h +++ /dev/null @@ -1,67 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 COMMON_H_ -#define COMMON_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_START 25 // キーリピート開始までのフレーム数 -#define KEY_REPEAT_SPAN 10 // キーリピートの間隔フレーム数 - -/*---------------------------------------------------------------------------* - 構造体 定義 - *---------------------------------------------------------------------------*/ - -// キー入力情報 -typedef struct KeyInfo -{ - u16 cnt; // 未加工入力値 - u16 trg; // 押しトリガ入力 - u16 up; // 離しトリガ入力 - u16 rep; // 押し維持リピート入力 -} KeyInfo; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -void InitCommon(void); - -void ReadKey(KeyInfo* pKey); - -void VBlankIntr(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* COMMON_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/include/font.h b/build/debugsoft/AppJumpChecker/include/font.h deleted file mode 100644 index 37699026..00000000 --- a/build/debugsoft/AppJumpChecker/include/font.h +++ /dev/null @@ -1,41 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: font.h - - Copyright 2007 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/include/screen.h b/build/debugsoft/AppJumpChecker/include/screen.h deleted file mode 100644 index 0d08dffd..00000000 --- a/build/debugsoft/AppJumpChecker/include/screen.h +++ /dev/null @@ -1,49 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.h - - Copyright 2007 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 関数 定義 - *---------------------------------------------------------------------------*/ -void InitScreen(void); -void ClearScreen(void); -void ClearMainScreen(void); -void ClearSubScreen(void); -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...); -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...); -void UpdateScreen(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/src/common.c b/build/debugsoft/AppJumpChecker/src/common.c deleted file mode 100644 index b1883893..00000000 --- a/build/debugsoft/AppJumpChecker/src/common.c +++ /dev/null @@ -1,153 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 "common.h" - -static void InitInterrupts(void); -static void InitHeap(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitCommon - - Description: 基本的な初期化関数をここで呼ぶ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitCommon(void) -{ - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - InitHeap(); - InitInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: ReadKey - - Description: キー入力情報を取得し、入力情報構造体を編集する。 - 押しトリガ、離しトリガ、押し継続リピートトリガ を検出する。 - - Arguments: pKey - 編集するキー入力情報構造体を指定する。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void ReadKey(KeyInfo* pKey) -{ - static u16 repeat_count[12]; - int i; - u16 r; - - r = PAD_Read(); - pKey->trg = 0x0000; - pKey->up = 0x0000; - pKey->rep = 0x0000; - - for (i = 0; i < 12; i++) - { - if (r & (0x0001 << i)) - { - if (!(pKey->cnt & (0x0001 << i))) - { - pKey->trg |= (0x0001 << i); // 押しトリガ - repeat_count[i] = 1; - } - else - { - if (repeat_count[i] > KEY_REPEAT_START) - { - pKey->rep |= (0x0001 << i); // 押し継続リピート - repeat_count[i] = (u16) (KEY_REPEAT_START - KEY_REPEAT_SPAN); - } - else - { - repeat_count[i]++; - } - } - } - else - { - if (pKey->cnt & (0x0001 << i)) - { - pKey->up |= (0x0001 << i); // 離しトリガ - } - } - } - - pKey->cnt = r; // 未加工キー入力 -} - -/*---------------------------------------------------------------------------* - Name: InitInterrupts - - Description: 割り込み設定を初期化する。 - V ブランク割り込みを許可し、割り込みハンドラを設定する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitInterrupts(void) -{ - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitHeap - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitHeap(void) -{ - void* tempLo; - OSHeapHandle hh; - - // メインメモリ上のアリーナにヒープをひとつ作成 - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - // ヒープ作成に失敗した場合は異常終了 - OS_Panic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/src/font.c b/build/debugsoft/AppJumpChecker/src/font.c deleted file mode 100644 index 2111ca07..00000000 --- a/build/debugsoft/AppJumpChecker/src/font.c +++ /dev/null @@ -1,585 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroWiFi - WCM - demos - wcm-list - File: font.c - - Copyright 2005,2006 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. - - $Log: font.c,v $ - Revision 1.2 2006/03/10 09:22:43 kitase_hirotake - INDENT SOURCE - - Revision 1.1 2005/07/21 08:21:06 adachi_hiroaki - 新規追加 - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/src/main.c b/build/debugsoft/AppJumpChecker/src/main.c deleted file mode 100644 index 7a7e2578..00000000 --- a/build/debugsoft/AppJumpChecker/src/main.c +++ /dev/null @@ -1,493 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Nand-2 - 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 -#include - -#include "application_jump_private.h" -#include "common.h" -#include "screen.h" - -#define DMA_NO_FS 1 -#define TITLE_NUM_CUL 18 -#define TITLE_NUM_PAGE (TITLE_NUM_CUL * 2) - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -// インストールされている NAND アプリの数 -static s32 gNandAppNum; - -// カーソル位置 -static s32 gCurPos = 0; - -static BOOL gIsExistCard = FALSE; - -// エラー表示用バッファ -static char gErrBuf[33]; - -// エラー表示時間計測用 -static OSTick gErrTick = 0; - -typedef struct DataStruct -{ - NAMTitleId id; - BOOL normaljmp_flag; -} DataStruct; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void PrintErrMsg(const char* msg); - -static BOOL GetDataStruct(DataStruct* list); -static void DrawScene(DataStruct* list); - -static void ConvertTitleIdLo(u8* code, u8* titleid_lo); -static void ConvertGameCode(u8* code, u32 game_code); -static void ConvertInitialCode(u8* code, u32 titleid_lo); - -static void* AllocForNAM(u32 size); -static void FreeForNAM(void* ptr); - -/*---------------------------------------------------------------------------*/ - -static void PrintErrMsg(const char* msg) -{ - if ( STD_StrLen(msg) > 32 ) - { - OS_Warning("err msg is too long."); - return; - } - - STD_StrCpy( gErrBuf, msg ); - gErrTick = OS_GetTick(); -} - -void TwlMain(void) -{ - DataStruct dataList[TITLE_NUM_PAGE]; - - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - FS_Init(DMA_NO_FS); - NAM_Init(AllocForNAM, FreeForNAM); - - ClearScreen(); - - // NAND にインポートされているNAND アプリの数を取得する - if ( (gNandAppNum = NAM_GetNumTitles()) < 0) - { - OS_Panic("NAM_GetNumTitles() failed."); - } - - - - // キー入力情報取得の空呼び出し(IPL での A ボタン押下対策) - ReadKey(&gKey); - - // 情報の取得 - if ( !GetDataStruct(dataList) ) - { - PrintErrMsg("Failed to get dataList."); - } - - while(TRUE) - { - // キー入力情報取得 - ReadKey(&gKey); - - // カーソルの移動 - if (gKey.trg & PAD_KEY_DOWN) - { - gCurPos++; - if ( gCurPos >= ( gNandAppNum < TITLE_NUM_PAGE ? gNandAppNum : TITLE_NUM_PAGE) ) - { - gCurPos = 0; - } - } - if (gKey.trg & PAD_KEY_UP) - { - if ( gCurPos == 0) - { - if ( gNandAppNum < TITLE_NUM_PAGE ) - { - gCurPos = gNandAppNum - 1; - } - else - { - gCurPos = TITLE_NUM_PAGE - 1; - } - } - else - { - gCurPos--; - } - } - - // 列の移動 - if ( (gKey.trg & PAD_KEY_RIGHT || gKey.trg & PAD_KEY_LEFT) && gNandAppNum >= TITLE_NUM_CUL ) - { - if ( gCurPos > TITLE_NUM_CUL ) - { - if ( gCurPos - TITLE_NUM_CUL < gNandAppNum ) - { - gCurPos -= TITLE_NUM_CUL; - } - } - else - { - if ( gCurPos + TITLE_NUM_CUL < gNandAppNum ) - { - gCurPos += TITLE_NUM_CUL; - } - } - } - - // アプリジャンプの実行 - if (gKey.trg & PAD_BUTTON_A) - { - OS_DoApplicationJump(dataList[gCurPos].id, OS_APP_JUMP_NORMAL); - // 成功時はここ以降は実行されない - PrintErrMsg("Failed to App Jump."); - } - // 内部関数を使用したアプリジャンプの実行 - 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)."); - } - - // カードアプリへのアプリジャンプ試行 - if (gKey.trg & PAD_BUTTON_Y) - { - CARDRomHeader* rh; -// u64 titleId; - rh = (CARDRomHeader*)CARD_GetRomHeader(); - - // TWL アプリの場合 - if ( rh->product_id & 0x03 || rh->product_id & 0x02 ) // 刺さっているカードのロムが TWLアプリ - { - ROM_Header* rh2; - rh2 = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; - - OS_DoApplicationJump( rh2->s.titleID, OS_APP_JUMP_NORMAL); - } - -// titleId = (0x00030000 << 32) | rh->game_code; - // NITRO カードアプリなら失敗(特殊なものでない限り TitleID が設定されていないため) - - PrintErrMsg("Failed to App Jump."); - } - - // エラー表示判定 - if ( OS_TicksToSeconds(OS_GetTick() - gErrTick) > 3 ) - { - PrintErrMsg(" "); - } - - // 画面描画 - DrawScene(dataList); - - // Vブランク待ち - OS_WaitVBlankIntr(); - - // 画面クリア - ClearScreen(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -static BOOL GetDataStruct(DataStruct* list) -{ - // 36個分のタイトルIDリストバッファ - NAMTitleId titleIdList[TITLE_NUM_PAGE]; - s32 i; - FSFile fp; - - if ( NAM_GetTitleList(titleIdList, TITLE_NUM_PAGE) != NAM_OK ) - { - PrintErrMsg("NAM_GetTitleList failed."); - return FALSE; - } - - // データリストの作成(1ページ分) - for ( i=0; i= gNandAppNum ) - { - break; - } - - // TitleID の格納 - list->id = titleIdList[i]; - - // ノーマルジャンプをされるのを許可するかを表すフラグの取得 - // TitleID を見て、タイトル種別がデータタイトルならば - // そもそも ROMヘッダが存在しない、アプリジャンプをする必要もない - if ( !NAM_IsDataTitle(list->id) ) - { - // アプリ本体へのパスを取得 - if ( NAM_GetTitleBootContentPath(pathbuf, list->id) != NAM_OK ) - { - PrintErrMsg("GetContentPath failed."); - return FALSE; - } - - // アプリのファイルオープン - FS_InitFile(&fp); - if ( !FS_OpenFileEx(&fp, pathbuf, FS_FILEMODE_R) ) - { - // 失敗時はエラーコード出力で終了 - PrintErrMsg("FS_OpenFileEx failed."); - return FALSE; - } - - if ( -1 == FS_ReadFile(&fp, &rh, sizeof(ROM_Header_Short) )) - { - PrintErrMsg("FS_ReadFile failed."); - return FALSE; - } - - list->normaljmp_flag = rh.permit_landing_normal_jump; - - FS_CloseFile(&fp); - } - else - { - list->normaljmp_flag = FALSE; - } - } - - PrintErrMsg(" "); - return TRUE; -} - -static void DrawScene(DataStruct* list) -{ - s32 i; - u8 init_code[5], titleid_lo[5]; - - // 上画面 - PutMainScreen( 0, 1, 0xff, " ------ App Jump Checker ------ "); - - PutMainScreen( 0, 3, 0xff, " total app : %d", gNandAppNum); - - PutMainScreen( 0, 5, 0xff, " ------------------------------ "); - - PutMainScreen( 0, 7, 0xff, " A : try App Jump (to NAND)" ); - 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, 16, 0xf1, "%s", gErrBuf); - - // 下画面 - PutSubScreen( 0, 0, 0xf4, " NAND ( max 36 )"); - PutSubScreen( 0, 1, 0xff, "--- ID ---------------- ID -------"); - - - // 下画面に1行ずつ、カーソル用スペース、イニシャルコード、ノーマルジャンプ可否フラグを表示 - for ( i=0; i < TITLE_NUM_PAGE; i++, list++) - { - // そもそも NAND アプリの数が 1ページにも満たない場合は途中で終了する - if ( i >= gNandAppNum ) - { - break; - } - - ConvertInitialCode(init_code, NAM_GetTitleIdLo(list->id)); - - if ( list->normaljmp_flag ) - { - PutSubScreen( (i >= TITLE_NUM_CUL ? 18 : 0), 2 + (i >= TITLE_NUM_CUL ? i-18 : i), 0xf2, " %s : o", init_code ); - } - else - { - PutSubScreen( (i >= TITLE_NUM_CUL ? 18 : 0), 2 + (i >= TITLE_NUM_CUL ? i-18 : i), 0xff, " %s : -", init_code ); - } - } - - // カードアプリチェック - PutSubScreen( 0, 2 + TITLE_NUM_CUL + 1, 0xf4, " CARD: Init. Code, TitleID_Lo"); - { - CARDRomHeader* rh; - rh = (CARDRomHeader*)CARD_GetRomHeader(); - - if ( rh->game_code != 0 ) - { - // イニシャルコードの取得 - if ( rh->product_id & 0x03 || rh->product_id & 0x02 ) // 刺さっているカードのロムが TWLアプリ - { - ROM_Header* rh2; - rh2 = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; - - // 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] & 0x01 ) - { - 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, %s : -", init_code, titleid_lo ); - } - } - else - { - PutSubScreen( 0, 2 + TITLE_NUM_CUL + 2, 0xfe, " not exist"); - } - - ConvertGameCode(init_code, rh->game_code); - } - - - // カーソル描画 - PutSubScreen( 1 + (gCurPos >= TITLE_NUM_CUL ? 18 : 0), 2 + (gCurPos >= TITLE_NUM_CUL ? gCurPos - 18 : gCurPos), 0xf4, "*"); -} - -static void ConvertTitleIdLo(u8* code, u8* titleid_lo) -{ - u8 tmp[5]; - s32 i; - -// for ( titleid_lo += 3, i=0 ; i<4; i++, code++, titleid_lo--) - for ( i=3; i>=0; i--, titleid_lo++ ) - { - tmp[i] = *titleid_lo; - *code = tmp[i]; - } - -// *code = tmp; - - // NULL 終端 - *code = 0x00; -} - -static void ConvertGameCode(u8* code, u32 game_code) -{ - u8 tmp[5]; - s32 i; - - ConvertInitialCode(tmp, game_code); - - for ( i=3; i>=0; i--, code++) - { - *code = tmp[i]; - } - - // NULL 文字終端 - *code = 0x00; -} - -static void ConvertInitialCode(u8* code, u32 titleid_lo) -{ - s32 i; - - for ( i=0; i<4; i++, code++) - { - *code = (u8)(titleid_lo >> (8 * (3-i))); - } - - // NULL文字終端 - *code = 0x00; -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグ47をセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -static void* AllocForNAM(u32 size) -{ - void* ptr; - ptr = OS_AllocFromMain(size); - - if (ptr == NULL) - { - OS_Panic("alloc failed."); - } - - return ptr; - -} - -static void FreeForNAM(void* ptr) -{ - OS_FreeToMain(ptr); -} - - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/AppJumpChecker/src/screen.c b/build/debugsoft/AppJumpChecker/src/screen.c deleted file mode 100644 index a9fec417..00000000 --- a/build/debugsoft/AppJumpChecker/src/screen.c +++ /dev/null @@ -1,194 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.c - - Copyright 2007 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 -#include "screen.h" -#include "font.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define TEXT_SCREEN_SIZE 2048 - -/*---------------------------------------------------------------------------* - 内部変数 定義 - *---------------------------------------------------------------------------*/ - -// 仮想スクリーン[ 上下画面 ][ BG 枚数 ][ キャラクタ数 ] -static u16 gScreen[2 ][ 1 ][ TEXT_SCREEN_SIZE / sizeof(u16) ] ATTRIBUTE_ALIGN(32); - -/*---------------------------------------------------------------------------* - Name: InitScreen - - Description: 文字表示システムのために、表示設定を初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitScreen(void) -{ - // 各 V-RAM 初期化 - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - // OAM 初期化 - MI_CpuFillFast((void*)HW_OAM, 0xc0, HW_OAM_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, 0xc0, HW_DB_OAM_SIZE); - - // パレット初期化 - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - // 上画面設定 - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - - // 下画面設定 - GX_SetBankForSubBG(GX_VRAM_SUB_BG_32_H); - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_DB_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[1][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: 画面のテキスト表示をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -void ClearMainScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - -} -void ClearSubScreen(void) -{ - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -/*---------------------------------------------------------------------------* - Name: PutMainScreen - - Description: メイン画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[0][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: PrintSubScreen - - Description: サブ画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[1][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: UpdateScreen - - Description: 仮想スクリーンを V-RAM に反映する。 - V ブランク期間中での呼び出しを想定。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void UpdateScreen(void) -{ - // 仮想スクリーンを V-RAM に反映 - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall.a b/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall.a deleted file mode 100644 index d8c3f61d..00000000 Binary files a/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall_c.bin b/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall_c.bin deleted file mode 100644 index 6ff82c68..00000000 Binary files a/build/debugsoft/ApplicationJump/Card-anotherID/461A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/461A/rom_header_461a.template.sbin b/build/debugsoft/ApplicationJump/Card-anotherID/461A/rom_header_461a.template.sbin deleted file mode 100644 index a7df6dae..00000000 Binary files a/build/debugsoft/ApplicationJump/Card-anotherID/461A/rom_header_461a.template.sbin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/Makefile b/build/debugsoft/ApplicationJump/Card-anotherID/Makefile deleted file mode 100644 index 547f36bc..00000000 --- a/build/debugsoft/ApplicationJump/Card-anotherID/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -TARGET_BIN = appjumpTestForCard_AID.srl -INCDIR = ../include -SRCDIR = ./src ../src -SRCS = main.c screen.c font.c common.c - -ROM_SPEC = appjumptest_card.rsf - - - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/ApplicationJumpTest -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ./461A/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/appjumptest_card.rsf b/build/debugsoft/ApplicationJump/Card-anotherID/appjumptest_card.rsf deleted file mode 100644 index 19e70a3d..00000000 --- a/build/debugsoft/ApplicationJump/Card-anotherID/appjumptest_card.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "AppJmpTestC" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ./461A/rom_header_461a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 461A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/banner/banner.bnr b/build/debugsoft/ApplicationJump/Card-anotherID/banner/banner.bnr deleted file mode 100644 index 0b405167..00000000 Binary files a/build/debugsoft/ApplicationJump/Card-anotherID/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Card-anotherID/src/main.c b/build/debugsoft/ApplicationJump/Card-anotherID/src/main.c deleted file mode 100644 index 7db1eee4..00000000 --- a/build/debugsoft/ApplicationJump/Card-anotherID/src/main.c +++ /dev/null @@ -1,313 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Card - 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 "common.h" -#include "screen.h" - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -// アプリ間パラメータ -static AppParam gAppParam; -// アプリ間パラメータとして文字列をセットするかどうか -static BOOL gIsSetDelArg = TRUE; -// アプリ間パラメータとして引き渡された文字列を格納するバッファ(6つまで) -static char gStrAppParam[6][APPJUMP_STRING_LENGTH + 1] ATTRIBUTE_ALIGN(32); -// アプリ間パラメータとして引き渡された文字列の個数 -static int gArgc; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn); - -/*---------------------------------------------------------------------------*/ - -void TwlMain(void) -{ - OSDeliverArgInfo argInfo; - - int result; - int argSize =sizeof(u32); - - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // キー入力情報取得の空呼び出し(IPL での A ボタン押下対策) - ReadKey(&gKey); - - OS_InitDeliverArgInfo(&argInfo, sizeof(AppParam)); - OS_DecodeDeliverArg(); - - /* アプリ間パラメータ(バイナリデータの取得) */ - if ( OS_DELIVER_ARG_SUCCESS != (result = OS_GetBinaryFromDeliverArg( &gAppParam, &argSize, sizeof(AppParam))) ) - { - PutMainScreen(1, 16, 0xf1, "ERROR!: READ_ERROR (%d)", result); - - OS_WaitVBlankIntr(); - OS_Terminate(); - } - - /* アプリ間パラメータ(文字列)の取得 */ - if ((gArgc = OS_GetDeliverArgc()) > 0) - { - int i; - - OS_TPrintf("argc = %d\n", gArgc); - - for (i=0; i < gArgc-1 && i < 6; i++) - { - STD_StrLCpy(gStrAppParam[i], (const char*)OS_GetDeliverArgv(i+1), APPJUMP_STRING_LENGTH); - gStrAppParam[i][APPJUMP_STRING_LENGTH] = '\0'; - } - } - - while(TRUE) - { - int i; - - // 自動テスト中に、ユーザのキー入力による終了指示を受け付けるためにウエイトを入れる - if (gAppParam.isAutoJump == 1) - { - OSTick tick = OS_GetTick(); - - PutMainScreen(1, 9, 0xf8, "executing auto app jump..."); - PutMainScreen(1, 11, 0xff, "wait 2 seconds..."); - PutMainScreen(1, 13, 0xff, "START: quit auto app jump"); - do { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_START) - { - break; - } - - OS_WaitVBlankIntr(); - } while (OS_TicksToSeconds(OS_GetTick() - tick) < 2); - } - else - { - // キー入力情報取得 - ReadKey(&gKey); - } - - // 画面クリア - ClearScreen(); - - // メイン画面描画 - PutMainScreen(0, 2, 0xf4, " ****** This APP is CARD ****** "); - PutMainScreen(0, 5, 0xff, " APP JUMP : %u times ", gAppParam.jumpCount); - PutMainScreen(0, 7, 0xff, " DELIVERED PARAM (recent 6 app)"); - - for (i=0; i 0) - { - int i; - - OS_TPrintf("argc = %d\n", gArgc); - - for (i=0; i < gArgc-1 && i < 6; i++) - { - STD_StrLCpy(gStrAppParam[i], (const char*)OS_GetDeliverArgv(i+1), APPJUMP_STRING_LENGTH); - gStrAppParam[i][APPJUMP_STRING_LENGTH] = '\0'; - } - } - - while(TRUE) - { - int i; - - // 自動テスト中に、ユーザのキー入力による終了指示を受け付けるためにウエイトを入れる - if (gAppParam.isAutoJump == 1) - { - OSTick tick = OS_GetTick(); - - PutMainScreen(1, 9, 0xf8, "executing auto app jump..."); - PutMainScreen(1, 11, 0xff, "wait 2 seconds..."); - PutMainScreen(1, 13, 0xff, "START: quit auto app jump"); - do { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_START) - { - break; - } - - OS_WaitVBlankIntr(); - } while (OS_TicksToSeconds(OS_GetTick() - tick) < 2); - } - else - { - // キー入力情報取得 - ReadKey(&gKey); - } - - // 画面クリア - ClearScreen(); - - // メイン画面描画 - PutMainScreen(0, 2, 0xf4, " ****** This APP is CARD ****** "); - PutMainScreen(0, 5, 0xff, " APP JUMP : %u times ", gAppParam.jumpCount); - PutMainScreen(0, 7, 0xff, " DELIVERED PARAM (recent 6 app)"); - - for (i=0; i 0) - { - int i; - - OS_TPrintf("argc = %d\n", gArgc); - - for (i=0; i < gArgc-1 && i < 6; i++) - { - STD_StrLCpy(gStrAppParam[i], (const char*)OS_GetDeliverArgv(i+1), APPJUMP_STRING_LENGTH); - gStrAppParam[i][APPJUMP_STRING_LENGTH] = '\0'; - } - } - - while(TRUE) - { - int i; - - // 自動テスト中に、ユーザのキー入力による終了指示を受け付けるためにウエイトを入れる - if (gAppParam.isAutoJump == 1) - { - OSTick tick = OS_GetTick(); - - PutMainScreen(1, 9, 0xf8, "executing auto app jump..."); - PutMainScreen(1, 11, 0xff, "wait 2 seconds..."); - PutMainScreen(1, 13, 0xff, "START: quit auto app jump"); - do { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_START) - { - break; - } - - OS_WaitVBlankIntr(); - } while (OS_TicksToSeconds(OS_GetTick() - tick) < 2); - } - else - { - // キー入力情報取得 - ReadKey(&gKey); - } - - // 画面クリア - ClearScreen(); - - // メイン画面描画 - PutMainScreen(0, 2, 0xf4, " ****** This APP is CARD ****** "); - PutMainScreen(0, 5, 0xff, " APP JUMP : %u times ", gAppParam.jumpCount); - PutMainScreen(0, 7, 0xff, " DELIVERED PARAM (recent 6 app)"); - - for (i=0; i= JUMPTYPE_NUM ) - { - gJumpTypeForB = JUMPTYPE_RETURN; - } - } - - if (gKey.trg & PAD_BUTTON_START) - { - // 自動テストフラグをスイッチ - gAppParam.isAutoJump ^= 1; - } - - if (gKey.trg & PAD_BUTTON_A) - { - AddDeliverArg(&argInfo, FALSE); - // NAND-1 アプリへジャンプ - if( !OS_DoApplicationJump( NANDAPP1_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_Y) - { - AddDeliverArg(&argInfo, FALSE); - - // NAND-2 アプリへジャンプ - if ( !OS_DoApplicationJump( NANDAPP2_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_X || gAppParam.isAutoJump == 1) - { - AddDeliverArg(&argInfo, FALSE); - // 自分自身へジャンプ - if( !OS_DoApplicationJump( OS_GetTitleId(), OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_B) - { - AddDeliverArg(&argInfo, TRUE); - switch (gJumpTypeForB) - { - case JUMPTYPE_RETURN: - if ( !OS_ReturnToPrevApplication() ) - { - OS_TPrintf("Failed to Return Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Return Jump."); - } - break; - case JUMPTYPE_ANOTHER_CARD: - break; - case JUMPTYPE_SYSMENU: - OS_JumpToSystemMenu(); - break; - } - } - - if (gKey.trg & PAD_BUTTON_L || gKey.trg & PAD_BUTTON_R) - { - // アプリ間パラメータとして文字列を引き渡すかどうかのフラグを ON/OFF する - gIsSetDelArg = !gIsSetDelArg; - } - - // Vブランク待ち - OS_WaitVBlankIntr(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -/*---------------------------------------------------------------------------* - Name: AddDeliverArg - - Description: アプリジャンプ先へ引き渡すパラメータを追加。 - - Arguments: argInfo : - isReturn : ジャンプ元への復帰ならば TRUE - - Returns: None. - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn) -{ - int result; - char argument[APPJUMP_STRING_LENGTH + 1]; - gAppParam.jumpCount++; - - OS_InitDeliverArgInfo(argInfo, sizeof(AppParam)); - - // アプリジャンプ回数を +1 してセット - result = OS_SetBinaryToDeliverArg( &(gAppParam), sizeof(AppParam) ); - - if(result != OS_DELIVER_ARG_SUCCESS) - { - OS_Warning("Failed to Set DeliverArgument."); - } - - if (gIsSetDelArg) - { - int i; - - // 文字列をセット - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - if (isReturn) - { - STD_TSPrintf(argument, "Returned from CARD"); - } - else - { - STD_TSPrintf(argument, "Jumped from CARD"); - } - OS_SetStringToDeliverArg(argument); - - // 今まで引き渡されたパラメータ文字列を引き継がせる - for (i=0; i <= 4 && i < gArgc; i++) - { - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - STD_StrLCpy( argument, gStrAppParam[i], APPJUMP_STRING_LENGTH ); - result = OS_SetStringToDeliverArg(argument); - OS_TPrintf("arg = %s : result = %d\n", argument, result); - } - } - OS_EncodeDeliverArg(); -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/Makefile b/build/debugsoft/ApplicationJump/Makefile deleted file mode 100644 index 79900665..00000000 --- a/build/debugsoft/ApplicationJump/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - debugsoft - ApplicationJump -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = Card \ - Nand-1 \ - Nand-2 \ - Card-fail \ - Card-anotherID - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall.a b/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall.a deleted file mode 100644 index 8a14b9aa..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall_c.bin b/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall_c.bin deleted file mode 100644 index 8b722c18..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-1/431A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-1/431A/rom_header_431a.template.sbin b/build/debugsoft/ApplicationJump/Nand-1/431A/rom_header_431a.template.sbin deleted file mode 100644 index ab3b2658..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-1/431A/rom_header_431a.template.sbin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-1/Makefile b/build/debugsoft/ApplicationJump/Nand-1/Makefile deleted file mode 100644 index 70780d21..00000000 --- a/build/debugsoft/ApplicationJump/Nand-1/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Nand-1 -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL -TWL_NANDAPP := TRUE - -TARGET_BIN = appjumpTestForNand1.tad -INCDIR = ../include -SRCDIR = ./src ../src -SRCS = main.c screen.c font.c common.c - -ROM_SPEC = main_nand1.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/ApplicationJumpTest -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ./431A/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/ApplicationJump/Nand-1/banner/banner.bnr b/build/debugsoft/ApplicationJump/Nand-1/banner/banner.bnr deleted file mode 100644 index 0e57dc8b..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-1/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-1/main_nand1.rsf b/build/debugsoft/ApplicationJump/Nand-1/main_nand1.rsf deleted file mode 100644 index cd4a169a..00000000 --- a/build/debugsoft/ApplicationJump/Nand-1/main_nand1.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName AppJmpTestN1 - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ./431A/rom_header_431a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "./banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 431A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/ApplicationJump/Nand-1/src/main.c b/build/debugsoft/ApplicationJump/Nand-1/src/main.c deleted file mode 100644 index 1592d5df..00000000 --- a/build/debugsoft/ApplicationJump/Nand-1/src/main.c +++ /dev/null @@ -1,368 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Nand-1 - 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 "common.h" -#include "screen.h" - -/*---------------------------------------------------------------------------* - 変数定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -// B ボタンジャンプ先の切りかえフラグ -static u8 gJumpTypeForB = JUMPTYPE_RETURN; -// アプリ間パラメータ -static AppParam gAppParam; -// アプリ間パラメータとして文字列をセットするかどうか -static BOOL gIsSetDelArg = TRUE; -// アプリ間パラメータとして引き渡された文字列を格納するバッファ(6つまで) -static char gStrAppParam[6][APPJUMP_STRING_LENGTH + 1] ATTRIBUTE_ALIGN(32); -// アプリ間パラメータとして引き渡された文字列の個数 -static int gArgc; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn); - -/*---------------------------------------------------------------------------*/ - -void TwlMain(void) -{ - OSDeliverArgInfo argInfo; - - int result; - int argSize =sizeof(u32); - - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // キー入力情報取得の空呼び出し(IPL での A ボタン押下対策) - ReadKey(&gKey); - - OS_InitDeliverArgInfo(&argInfo, sizeof(AppParam)); - OS_DecodeDeliverArg(); - - /* アプリ間パラメータ(バイナリデータの取得) */ - if ( OS_DELIVER_ARG_SUCCESS != (result = OS_GetBinaryFromDeliverArg( &gAppParam, &argSize, sizeof(AppParam))) ) - { - PutMainScreen(1, 16, 0xf1, "ERROR!: READ_ERROR (%d)", result); - - OS_WaitVBlankIntr(); - OS_Terminate(); - } - - /* アプリ間パラメータ(文字列)の取得 */ - if ((gArgc = OS_GetDeliverArgc()) > 0) - { - int i; - - OS_TPrintf("argc = %d\n", gArgc); - - for (i=0; i < gArgc-1 && i < 6; i++) - { - STD_StrLCpy(gStrAppParam[i], (const char*)OS_GetDeliverArgv(i+1), APPJUMP_STRING_LENGTH); - gStrAppParam[i][APPJUMP_STRING_LENGTH] = '\0'; - } - } - - while(TRUE) - { - int i; - - // 自動テスト中に、ユーザのキー入力による終了指示を受け付けるためにウエイトを入れる - if (gAppParam.isAutoJump == 1) - { - OSTick tick = OS_GetTick(); - - PutMainScreen(1, 9, 0xf8, "executing auto app jump..."); - PutMainScreen(1, 11, 0xff, "wait 2 seconds..."); - PutMainScreen(1, 13, 0xff, "START: quit auto app jump"); - do { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_START) - { - break; - } - - OS_WaitVBlankIntr(); - } while (OS_TicksToSeconds(OS_GetTick() - tick) < 2); - } - else - { - // キー入力情報取得 - ReadKey(&gKey); - } - - // 画面クリア - ClearScreen(); - - // メイン画面描画 - PutMainScreen(0, 2, 0xf5, " ***** This APP is NAND-1 ***** "); - PutMainScreen(0, 5, 0xff, " APP JUMP : %u times ", gAppParam.jumpCount); - PutMainScreen(0, 7, 0xff, " DELIVERED PARAM (recent 6 app)"); - - for (i=0; i= JUMPTYPE_NUM ) - { - gJumpTypeForB = JUMPTYPE_RETURN; - } - } - - if (gKey.trg & PAD_BUTTON_START) - { - // 自動テストフラグをスイッチ - gAppParam.isAutoJump ^= 1; - } - - if (gKey.trg & PAD_BUTTON_A) - { - AddDeliverArg(&argInfo, FALSE); - // カードアプリへジャンプ - if( !OS_DoApplicationJump( CARDAPP_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - - if (gKey.trg & PAD_BUTTON_Y) - { - AddDeliverArg(&argInfo, FALSE); - - // もう一方の NAND アプリへジャンプ - if ( !OS_DoApplicationJump( NANDAPP2_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_X || gAppParam.isAutoJump == 1) - { - AddDeliverArg(&argInfo, FALSE); - // 自分自身へジャンプ - if( !OS_DoApplicationJump( OS_GetTitleId(), OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_B) - { - AddDeliverArg(&argInfo, TRUE); - - switch (gJumpTypeForB) - { - case JUMPTYPE_RETURN: - if ( !OS_ReturnToPrevApplication() ) - { - OS_TPrintf("Failed to Return Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Return Jump."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - case JUMPTYPE_ANOTHER_CARD: - if ( !OS_DoApplicationJump(CARDAPP_ANO_TITLEID, OS_APP_JUMP_NORMAL) ) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump(ANO)."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - case JUMPTYPE_SYSMENU: - OS_JumpToSystemMenu(); - break; - case JUMPTYPE_FAIL_CARD: - if ( !OS_DoApplicationJump(CARDAPP_FAIL_TITLEID, OS_APP_JUMP_NORMAL) ) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump(FAIL)."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - } - } - - if (gKey.trg & PAD_BUTTON_L || gKey.trg & PAD_BUTTON_R) - { - gIsSetDelArg = !gIsSetDelArg; - } - - // Vブランク待ち - OS_WaitVBlankIntr(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -/*---------------------------------------------------------------------------* - Name: AddDeliverArg - - Description: アプリジャンプ先へ引き渡すパラメータを追加。 - - Arguments: argInfo : - isReturn : ジャンプ元への復帰ならば TRUE - - Returns: None. - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn) -{ - int result; - char argument[APPJUMP_STRING_LENGTH + 1]; - gAppParam.jumpCount++; - - OS_InitDeliverArgInfo(argInfo, sizeof(AppParam)); - - // アプリジャンプ回数を +1 してセット - result = OS_SetBinaryToDeliverArg( &(gAppParam), sizeof(AppParam) ); - - if(result != OS_DELIVER_ARG_SUCCESS) - { - OS_Warning("Failed to Set DeliverArgument."); - } - - if (gIsSetDelArg) - { - int i; - - // 文字列をセット - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - if (isReturn) - { - STD_TSPrintf(argument, "Returned from NAND-1"); - } - else - { - STD_TSPrintf(argument, "Jumped from NAND-1"); - } - OS_SetStringToDeliverArg(argument); - - // 今まで引き渡されたパラメータ文字列を引き継がせる - for (i=0; i <= 4 && i < gArgc; i++) - { - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - STD_StrLCpy( argument, gStrAppParam[i], APPJUMP_STRING_LENGTH ); - result = OS_SetStringToDeliverArg(argument); - OS_TPrintf("arg = %s : result = %d\n", argument, result); - } - } - OS_EncodeDeliverArg(); -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall.a b/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall.a deleted file mode 100644 index a12fea83..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall_c.bin b/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall_c.bin deleted file mode 100644 index 21d02f46..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-2/432A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-2/432A/rom_header_432a.template.sbin b/build/debugsoft/ApplicationJump/Nand-2/432A/rom_header_432a.template.sbin deleted file mode 100644 index 03810f85..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-2/432A/rom_header_432a.template.sbin and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-2/Makefile b/build/debugsoft/ApplicationJump/Nand-2/Makefile deleted file mode 100644 index f4ea4dde..00000000 --- a/build/debugsoft/ApplicationJump/Nand-2/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Nand-2 -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL -TWL_NANDAPP := TRUE - -TARGET_BIN = appjumpTestForNand2.tad -INCDIR = ../include -SRCDIR = ./src ../src -SRCS = main.c screen.c font.c common.c - -ROM_SPEC = main_nand2.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/ApplicationJumpTest -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ./431A/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/ApplicationJump/Nand-2/banner/banner.bnr b/build/debugsoft/ApplicationJump/Nand-2/banner/banner.bnr deleted file mode 100644 index e6190cc3..00000000 Binary files a/build/debugsoft/ApplicationJump/Nand-2/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/ApplicationJump/Nand-2/main_nand2.rsf b/build/debugsoft/ApplicationJump/Nand-2/main_nand2.rsf deleted file mode 100644 index 176c6791..00000000 --- a/build/debugsoft/ApplicationJump/Nand-2/main_nand2.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName AppJmpTestN2 - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ./432A/rom_header_432a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "./banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 432A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/ApplicationJump/Nand-2/src/main.c b/build/debugsoft/ApplicationJump/Nand-2/src/main.c deleted file mode 100644 index 7250ecf1..00000000 --- a/build/debugsoft/ApplicationJump/Nand-2/src/main.c +++ /dev/null @@ -1,370 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Nand-2 - 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 "common.h" -#include "screen.h" - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ - -// キー入力 -static KeyInfo gKey; - - -// B ボタンジャンプ先の切りかえフラグ -static u8 gJumpTypeForB = JUMPTYPE_RETURN; -// アプリ間パラメータ -static AppParam gAppParam; -// アプリ間パラメータとして文字列をセットするかどうか -static BOOL gIsSetDelArg = TRUE; -// アプリ間パラメータとして引き渡された文字列を格納するバッファ(6つまで) -static char gStrAppParam[6][APPJUMP_STRING_LENGTH + 1] ATTRIBUTE_ALIGN(32); -// アプリ間パラメータとして引き渡された文字列の個数 -static int gArgc; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn); - -/*---------------------------------------------------------------------------*/ - -void TwlMain(void) -{ - OSDeliverArgInfo argInfo; - - int result; - int argSize =sizeof(u32); - - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // キー入力情報取得の空呼び出し(IPL での A ボタン押下対策) - ReadKey(&gKey); - - OS_InitDeliverArgInfo(&argInfo, sizeof(AppParam)); - OS_DecodeDeliverArg(); - - /* アプリ間パラメータ(バイナリデータの取得) */ - if ( OS_DELIVER_ARG_SUCCESS != (result = OS_GetBinaryFromDeliverArg( &gAppParam, &argSize, sizeof(AppParam))) ) - { - PutMainScreen(1, 16, 0xf1, "ERROR!: READ_ERROR (%d)", result); - - OS_WaitVBlankIntr(); - OS_Terminate(); - } - - /* アプリ間パラメータ(文字列)の取得 */ - if ((gArgc = OS_GetDeliverArgc()) > 0) - { - int i; - - OS_TPrintf("argc = %d\n", gArgc); - - for (i=0; i < gArgc-1 && i < 6; i++) - { - STD_StrLCpy(gStrAppParam[i], (const char*)OS_GetDeliverArgv(i+1), APPJUMP_STRING_LENGTH); - gStrAppParam[i][APPJUMP_STRING_LENGTH] = '\0'; - } - } - - while(TRUE) - { - int i; - - // 自動テスト中に、ユーザのキー入力による終了指示を受け付けるためにウエイトを入れる - if (gAppParam.isAutoJump == 1) - { - OSTick tick = OS_GetTick(); - - PutMainScreen(1, 9, 0xf8, "executing auto app jump..."); - PutMainScreen(1, 11, 0xff, "wait 2 seconds..."); - PutMainScreen(1, 13, 0xff, "START: quit auto app jump"); - do { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_START) - { - break; - } - - OS_WaitVBlankIntr(); - } while (OS_TicksToSeconds(OS_GetTick() - tick) < 2); - } - else - { - // キー入力情報取得 - ReadKey(&gKey); - } - - // 画面クリア - ClearScreen(); - - // メイン画面描画 - PutMainScreen(0, 2, 0xf6, " ***** This APP is NAND-2 ***** "); - PutMainScreen(0, 5, 0xff, " APP JUMP : %u times ", gAppParam.jumpCount); - PutMainScreen(0, 7, 0xff, " DELIVERED PARAM (recent 6 app)"); - - for (i=0; i= JUMPTYPE_NUM ) - { - gJumpTypeForB = JUMPTYPE_RETURN; - } - } - - if (gKey.trg & PAD_BUTTON_START) - { - // 自動テストフラグをスイッチ - gAppParam.isAutoJump ^= 1; - } - - if (gKey.trg & PAD_BUTTON_A) - { - AddDeliverArg(&argInfo, FALSE); - // カードアプリへジャンプ - if( !OS_DoApplicationJump( CARDAPP_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - - if (gKey.trg & PAD_BUTTON_Y) - { - AddDeliverArg(&argInfo, FALSE); - - // もう一方の NAND アプリへジャンプ - if ( !OS_DoApplicationJump( NANDAPP1_TITLEID, OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_X || gAppParam.isAutoJump == 1) - { - AddDeliverArg(&argInfo, FALSE); - // 自分自身へジャンプ - if( !OS_DoApplicationJump( OS_GetTitleId(), OS_APP_JUMP_NORMAL )) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump."); - } - break; - } - if (gKey.trg & PAD_BUTTON_B) - { - AddDeliverArg(&argInfo, TRUE); - switch (gJumpTypeForB) - { - case JUMPTYPE_RETURN: - if ( !OS_ReturnToPrevApplication() ) - { - OS_TPrintf("Failed to Return Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Return Jump."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - case JUMPTYPE_ANOTHER_CARD: - if ( !OS_DoApplicationJump(CARDAPP_ANO_TITLEID, OS_APP_JUMP_NORMAL) ) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump(ANO)."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - case JUMPTYPE_SYSMENU: - OS_JumpToSystemMenu(); - break; - case JUMPTYPE_FAIL_CARD: - if ( !OS_DoApplicationJump(CARDAPP_FAIL_TITLEID, OS_APP_JUMP_NORMAL) ) - { - OS_TPrintf("Failed to Jump.\n"); - PutMainScreen(1, 16, 0xf1, "ERROR!: Failed to Jump(FAIL)."); - OS_WaitVBlankIntr(); - OS_Sleep(1000); - } - break; - } - } - - if (gKey.trg & PAD_BUTTON_L || gKey.trg & PAD_BUTTON_R) - { - gIsSetDelArg = !gIsSetDelArg; - } - - // Vブランク待ち - OS_WaitVBlankIntr(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -/*---------------------------------------------------------------------------* - Name: AddDeliverArg - - Description: アプリジャンプ先へ引き渡すパラメータを追加。 - - Arguments: argInfo : - isReturn : ジャンプ元への復帰ならば TRUE - - Returns: None. - *---------------------------------------------------------------------------*/ -static void AddDeliverArg(OSDeliverArgInfo *argInfo, BOOL isReturn) -{ - int result; - char argument[APPJUMP_STRING_LENGTH + 1]; - gAppParam.jumpCount++; - - OS_InitDeliverArgInfo(argInfo, sizeof(AppParam)); - - // アプリジャンプ回数を +1 してセット - result = OS_SetBinaryToDeliverArg( &(gAppParam), sizeof(AppParam) ); - - if(result != OS_DELIVER_ARG_SUCCESS) - { - OS_Warning("Failed to Set DeliverArgument."); - } - - if (gIsSetDelArg) - { - int i; - - // 文字列をセット - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - if (isReturn) - { - STD_TSPrintf(argument, "Returned from NAND-2"); - } - else - { - STD_TSPrintf(argument, "Jumped from NAND-2"); - } - - OS_SetStringToDeliverArg(argument); - - // 今まで引き渡されたパラメータ文字列を引き継がせる - for (i=0; i <= 4 && i < gArgc; i++) - { - MI_CpuClear8(argument, APPJUMP_STRING_LENGTH + 1); - STD_StrLCpy( argument, gStrAppParam[i], APPJUMP_STRING_LENGTH ); - result = OS_SetStringToDeliverArg(argument); - OS_TPrintf("arg = %s : result = %d\n", argument, result); - } - } - OS_EncodeDeliverArg(); -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/ReadMe.txt b/build/debugsoft/ApplicationJump/ReadMe.txt deleted file mode 100644 index e704cd28..00000000 --- a/build/debugsoft/ApplicationJump/ReadMe.txt +++ /dev/null @@ -1,86 +0,0 @@ -appjumpTest - -アプリジャンプ機能をテストするためのアプリセットです。 -======================================================== - -<概要> =============================================== -2種類のNAND アプリと 3種類のカードアプリで構成されます。 -各アプリ間で、アプリジャンプの機能を一通り試すことができます。 -アプリ間でのパラメータの受け渡し、ジャンプ元へのリターンも可能です。 - - -3種類のカードアプリについて - -| ファイル名 | イニシャルコード | 被ノーマルジャンプ | -| appjumpTestForCard.srl | 430A |  許可 | -| appjumpTestForCard_Fail.srl | 460A | 不許可 | -| appjumpTestForCard_AID.srl | 461A |  許可 | ------------------------------------------------------------------------------ - -<使い方> ============================================= -2種類のNAND アプリを TWL にインポートした状態で、カードアプリを起動してください。 - -操作方法は、下画面下部に一覧表示されます。 -ABXY ボタンがそれぞれに対応したターゲットへのアプリジャンプを実行します。 - -L/R ボタンで、アプリ間パラメータ(文字列データ)を次のジャンプ先へ渡すかどうかを -切り替えることができます(デフォルトは ON になっています)。 - -START ボタンを押すと、現在起動中のアプリ自身へのアプリジャンプを自動で繰り返すモードに入ります。 -中断するには、起動後上画面にメッセージが出ている間(約2秒間)に START ボタンを押してください。 - -(2008/08/30 追記) -異常系チェックのために、カードアプリを2種追加しました。 - -・ひとつめ(460A)について - 被ノーマルジャンプを許可していない TWL カードアプリです。 - NAND アプリからこのアプリにジャンプしようとすると、必ずエラーが返るはずです。 - -・ふたつめ(461A)について - 被ノーマルジャンプは許可していますが、最初のカードアプリとは TitleID が別物の TWL カードアプリです。 - 最初に、もう一方のノーマルジャンプを許可しているカードアプリ[430A]をスロットに挿入した状態で - テストを開始します。そこから NAND アプリにジャンプした後、カードを[461A] に差し替えます。 - そして、NAND アプリからカードアプリへノーマルジャンプを実行した際に、ジャンプできるかどうかをチェックします。 - - -<画面の見方> ========================================== -・上画面について - 起動中のアプリが 3種類の内どれかを色と文字で表します。 - (黄:CARD、紫:NAND-1、水色:NAND-2) - - APP JUMP -> 今までのアプリジャンプ実行回数です。 - DELIVERED PARAM -> アプリ間パラメータ渡しをONにしている場合、ジャンプ元へのリターンも含めて -  これまでのジャンプ元の履歴が 6つまで表示されます。 - エラー表示 -> アプリジャンプに失敗した場合、赤字でエラーが表示されます。 -  エラー表示が出た場合、それ以上アプリの実行はできませんので再起動してください。 - -・下画面について - DELIVER ARG: (ON or OFF) -> アプリ間パラメータ渡しを有効にするかどうかのフラグの状態です。 -  L/R ボタンで ON/OFF を切り替えることができます。 - AUTO JUMP TEST: (ON or OFF) -> 自分自身へのアプリジャンプを中断するまで繰り返すテストモードかどうかを示す値です。 - 操作方法一覧 -> 各ボタンの説明を表示しています。アプリによって、ボタンに割り当てられた -  ジャンプ先が異なりますので注意してください。 -  ただし、ジャンプ元へのリターンは Bボタン、自分自身へのジャンプは Xボタン固定です。 - -(2008/09/03 追記) -上下ボタンの入力によって、Bボタンに割り当てられるジャンプ先が変化します。 -リターンジャンプ、ランチャーへのジャンプ、別のカードアプリ[460A],[461A]へのジャンプが順に変わります。 - -最初にカードアプリ[430A]を挿している状態から NAND アプリにジャンプし、 -途中でカードを挿し替えた場合、[460A], [461A] へのジャンプは必ず失敗する仕様になっています。 - - -<その他注意事項> -初回起動時(アプリジャンプを一度も実行していない状態)に、ジャンプ元へのリターンを行うと、 -必ずエラーになります。 - - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - - -<更新履歴>============================================ -2008/09/03 操作方法に追記 -2008/08/30 カードアプリ2種追加について加筆修正 -2008/07/31 新規追加 diff --git a/build/debugsoft/ApplicationJump/include/common.h b/build/debugsoft/ApplicationJump/include/common.h deleted file mode 100644 index d591dc81..00000000 --- a/build/debugsoft/ApplicationJump/include/common.h +++ /dev/null @@ -1,96 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 COMMON_H_ -#define COMMON_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -/* TitleID */ -#define CARDAPP_TITLEID (u64)(0x0003000034333041) // 430A -#define CARDAPP_FAIL_TITLEID (u64)(0x0003000034363041) // 460A -#define CARDAPP_ANO_TITLEID (u64)(0x0003000034363141) // 461A - -#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 // 引数一つ分として受け渡しされる文字列の長さ制限 - -/*---------------------------------------------------------------------------* - 構造体 定義 - *---------------------------------------------------------------------------*/ - -typedef enum JumpTypeForB -{ - JUMPTYPE_RETURN = 0, - JUMPTYPE_ANOTHER_CARD, - JUMPTYPE_SYSMENU, - JUMPTYPE_FAIL_CARD, - - JUMPTYPE_NUM -} JumpTypeForB; - -// キー入力情報 -typedef struct KeyInfo -{ - u16 cnt; // 未加工入力値 - u16 trg; // 押しトリガ入力 - u16 up; // 離しトリガ入力 - u16 rep; // 押し維持リピート入力 -} KeyInfo; - -// アプリ間でバイナリデータとして引き渡す構造体 -typedef struct AppParam -{ - u32 jumpCount; // アプリジャンプの実行回数 - u8 isAutoJump; // 一定間隔で自動的にアプリジャンプを実行するかどうかのフラグ - u8 rsv[3]; // 4バイトアラインメントのため -} AppParam; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -void InitCommon(void); - -void ReadKey(KeyInfo* pKey); - -void VBlankIntr(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* COMMON_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/include/font.h b/build/debugsoft/ApplicationJump/include/font.h deleted file mode 100644 index 37699026..00000000 --- a/build/debugsoft/ApplicationJump/include/font.h +++ /dev/null @@ -1,41 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: font.h - - Copyright 2007 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/include/screen.h b/build/debugsoft/ApplicationJump/include/screen.h deleted file mode 100644 index 0d08dffd..00000000 --- a/build/debugsoft/ApplicationJump/include/screen.h +++ /dev/null @@ -1,49 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.h - - Copyright 2007 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 関数 定義 - *---------------------------------------------------------------------------*/ -void InitScreen(void); -void ClearScreen(void); -void ClearMainScreen(void); -void ClearSubScreen(void); -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...); -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...); -void UpdateScreen(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/src/common.c b/build/debugsoft/ApplicationJump/src/common.c deleted file mode 100644 index b1883893..00000000 --- a/build/debugsoft/ApplicationJump/src/common.c +++ /dev/null @@ -1,153 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 "common.h" - -static void InitInterrupts(void); -static void InitHeap(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitCommon - - Description: 基本的な初期化関数をここで呼ぶ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitCommon(void) -{ - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - InitHeap(); - InitInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: ReadKey - - Description: キー入力情報を取得し、入力情報構造体を編集する。 - 押しトリガ、離しトリガ、押し継続リピートトリガ を検出する。 - - Arguments: pKey - 編集するキー入力情報構造体を指定する。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void ReadKey(KeyInfo* pKey) -{ - static u16 repeat_count[12]; - int i; - u16 r; - - r = PAD_Read(); - pKey->trg = 0x0000; - pKey->up = 0x0000; - pKey->rep = 0x0000; - - for (i = 0; i < 12; i++) - { - if (r & (0x0001 << i)) - { - if (!(pKey->cnt & (0x0001 << i))) - { - pKey->trg |= (0x0001 << i); // 押しトリガ - repeat_count[i] = 1; - } - else - { - if (repeat_count[i] > KEY_REPEAT_START) - { - pKey->rep |= (0x0001 << i); // 押し継続リピート - repeat_count[i] = (u16) (KEY_REPEAT_START - KEY_REPEAT_SPAN); - } - else - { - repeat_count[i]++; - } - } - } - else - { - if (pKey->cnt & (0x0001 << i)) - { - pKey->up |= (0x0001 << i); // 離しトリガ - } - } - } - - pKey->cnt = r; // 未加工キー入力 -} - -/*---------------------------------------------------------------------------* - Name: InitInterrupts - - Description: 割り込み設定を初期化する。 - V ブランク割り込みを許可し、割り込みハンドラを設定する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitInterrupts(void) -{ - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitHeap - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitHeap(void) -{ - void* tempLo; - OSHeapHandle hh; - - // メインメモリ上のアリーナにヒープをひとつ作成 - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - // ヒープ作成に失敗した場合は異常終了 - OS_Panic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/src/font.c b/build/debugsoft/ApplicationJump/src/font.c deleted file mode 100644 index 2111ca07..00000000 --- a/build/debugsoft/ApplicationJump/src/font.c +++ /dev/null @@ -1,585 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroWiFi - WCM - demos - wcm-list - File: font.c - - Copyright 2005,2006 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. - - $Log: font.c,v $ - Revision 1.2 2006/03/10 09:22:43 kitase_hirotake - INDENT SOURCE - - Revision 1.1 2005/07/21 08:21:06 adachi_hiroaki - 新規追加 - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/ApplicationJump/src/screen.c b/build/debugsoft/ApplicationJump/src/screen.c deleted file mode 100644 index a9fec417..00000000 --- a/build/debugsoft/ApplicationJump/src/screen.c +++ /dev/null @@ -1,194 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.c - - Copyright 2007 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 -#include "screen.h" -#include "font.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define TEXT_SCREEN_SIZE 2048 - -/*---------------------------------------------------------------------------* - 内部変数 定義 - *---------------------------------------------------------------------------*/ - -// 仮想スクリーン[ 上下画面 ][ BG 枚数 ][ キャラクタ数 ] -static u16 gScreen[2 ][ 1 ][ TEXT_SCREEN_SIZE / sizeof(u16) ] ATTRIBUTE_ALIGN(32); - -/*---------------------------------------------------------------------------* - Name: InitScreen - - Description: 文字表示システムのために、表示設定を初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitScreen(void) -{ - // 各 V-RAM 初期化 - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - // OAM 初期化 - MI_CpuFillFast((void*)HW_OAM, 0xc0, HW_OAM_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, 0xc0, HW_DB_OAM_SIZE); - - // パレット初期化 - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - // 上画面設定 - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - - // 下画面設定 - GX_SetBankForSubBG(GX_VRAM_SUB_BG_32_H); - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_DB_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[1][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: 画面のテキスト表示をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -void ClearMainScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - -} -void ClearSubScreen(void) -{ - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -/*---------------------------------------------------------------------------* - Name: PutMainScreen - - Description: メイン画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[0][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: PrintSubScreen - - Description: サブ画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[1][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: UpdateScreen - - Description: 仮想スクリーンを V-RAM に反映する。 - V ブランク期間中での呼び出しを想定。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void UpdateScreen(void) -{ - // 仮想スクリーンを V-RAM に反映 - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/CardRomHeaderChecker/Card/Makefile b/build/debugsoft/CardRomHeaderChecker/Card/Makefile deleted file mode 100644 index 15279b58..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Card/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -SUBDIRS = ../common/banner \ - $(ROOT)/build/demos/gx/UnitTours/DEMOLib - -TARGET_BIN = CardRomHeaderChecker.srl -#INCDIR = ../common/include -SRCDIR = ../common/src -SRCS = main.c - -ROM_SPEC = ./ROM-TS.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/CardRomHeaderChecker -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ../common/0CZA/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf b/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf deleted file mode 100644 index 17cc8900..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf +++ /dev/null @@ -1,196 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "CardRH Check" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../common/0CZA/rom_header_0cza.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../common/banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/CardRomHeaderChecker/ForDLPlay/Makefile b/build/debugsoft/CardRomHeaderChecker/ForDLPlay/Makefile deleted file mode 100644 index f66190df..00000000 --- a/build/debugsoft/CardRomHeaderChecker/ForDLPlay/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL -TWL_NANDAPP := TRUE -override TWL_ARCHGEN = HYBRID - -SUBDIRS = ../common/banner \ - $(ROOT)/build/demos/gx/UnitTours/DEMOLib - -TARGET_BIN = CardRomHeaderChecker.tad -#INCDIR = ../common/include -SRCDIR = ../common/src -SRCS = main.c - -ROM_SPEC = ./ROM-TS_nand.HYB.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/ForDLPlay/ROM-TS_nand.HYB.rsf b/build/debugsoft/CardRomHeaderChecker/ForDLPlay/ROM-TS_nand.HYB.rsf deleted file mode 100644 index 14f382f1..00000000 --- a/build/debugsoft/CardRomHeaderChecker/ForDLPlay/ROM-TS_nand.HYB.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "CardRH Check" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../common/0CZA/rom_header_0cza.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../common/banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/CardRomHeaderChecker/Makefile b/build/debugsoft/CardRomHeaderChecker/Makefile deleted file mode 100644 index d5d8dc26..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - debugsoft - ApplicationJump -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = Card \ - Nand - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile b/build/debugsoft/CardRomHeaderChecker/Nand/Makefile deleted file mode 100644 index 6b1cd5d0..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -SUBMAKES = ./Makefile.HYB ./Makefile.LTD - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.HYB b/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.HYB deleted file mode 100644 index f0168cf3..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.HYB +++ /dev/null @@ -1,53 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL -TWL_NANDAPP := TRUE -override TWL_ARCHGEN = HYBRID - -SUBDIRS = ../common/banner \ - $(ROOT)/build/demos/gx/UnitTours/DEMOLib - -TARGET_BIN = CardRomHeaderChecker.tad -#INCDIR = ../common/include -SRCDIR = ../common/src -SRCS = main.c - -ROM_SPEC = ./ROM-TS_nand.HYB.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/CardRomHeaderChecker -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ../common/0CZA/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.LTD b/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.LTD deleted file mode 100644 index b666973f..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile.LTD +++ /dev/null @@ -1,53 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL -TWL_NANDAPP := TRUE -override TWL_ARCHGEN = LIMITED - -SUBDIRS = ../common/banner2 \ - $(ROOT)/build/demos/gx/UnitTours/DEMOLib - -TARGET_BIN = CardRomHeaderChecker.tad -#INCDIR = ../common/include -SRCDIR = ../common/src -SRCS = main.c - -ROM_SPEC = ./ROM-TS_nand.LTD.rsf - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/CardRomHeaderChecker -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -LIBSYSCALL = ../common/0CYA/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.HYB.rsf b/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.HYB.rsf deleted file mode 100644 index 14f382f1..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.HYB.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "CardRH Check" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../common/0CZA/rom_header_0cza.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../common/banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.LTD.rsf b/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.LTD.rsf deleted file mode 100644 index ef72b3f6..00000000 --- a/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.LTD.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "CardRH Check" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../common/0CYA/rom_header_0cya.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../common/banner2/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile b/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile deleted file mode 100644 index 6b1cd5d0..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - appjumpTest - Card -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -SUBMAKES = ./Makefile.HYB ./Makefile.LTD - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.HYB b/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.HYB deleted file mode 100644 index a2de77ad..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.HYB +++ /dev/null @@ -1,71 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos.TWL - nandApp - ExecTmpApp -# File: Makefile -# -# Copyright 2007-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$ -#---------------------------------------------------------------------------- - -MISC_DIR = $(ROOT)/build/demos.TWL/nandApp/launcher_param/misc -DATA_DIR = $(ROOT)/build/demos.TWL/nandApp/launcher_param/data - -SUBDIRS = banner - -#------------------------- -#-- NAND アプリのビルドを指定します。 - -TWL_NANDAPP = TRUE - - -#---------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = HYBRID - -LINCLUDES = $(MISC_DIR) \ - $(DATA_DIR) - -SRCS = main.c ExecTmpApp.c \ - $(MISC_DIR)/misc_simple.c \ - $(DATA_DIR)/data.c - -TARGET_BIN = ExecTmpCardRomHeaderChecker.tad - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = demo.autogen.hyb.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_nand.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - InitialCode=0CXA \ - BannerFile="banner/banner.bnr" \ - RomHeaderTemplate="../common/0CXA/rom_header_0cxa.template.sbin" - -MAKEROM_ROMROOT = ./../Nand/bin/$(TWL_BUILDTYPE_ARM9) -MAKEROM_ROMFILES = CardRomHeaderChecker.nand.srl - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -LIBSYSCALL = ../common/0CXA/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.LTD b/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.LTD deleted file mode 100644 index e45ea2cb..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/Makefile.LTD +++ /dev/null @@ -1,72 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos.TWL - nandApp - ExecTmpApp -# File: Makefile -# -# Copyright 2007-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$ -#---------------------------------------------------------------------------- - -MISC_DIR = $(ROOT)/build/demos.TWL/nandApp/launcher_param/misc -DATA_DIR = $(ROOT)/build/demos.TWL/nandApp/launcher_param/data - -SUBDIRS = banner2 - -#------------------------- -#-- NAND アプリのビルドを指定します。 - -TWL_NANDAPP = TRUE - - -#---------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = LIMITED - -LINCLUDES = $(MISC_DIR) \ - $(DATA_DIR) - -SRCS = main.c ExecTmpApp.c \ - $(MISC_DIR)/misc_simple.c \ - $(DATA_DIR)/data.c - -TARGET_BIN = ExecTmpCardRomHeaderChecker.tad - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = demo.autogen.ltd.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_nand.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - InitialCode=0CWA \ - BannerFile="banner2/banner.bnr" \ - RomHeaderTemplate="../common/0CWA/rom_header_0cwa.template.sbin" - -MAKEROM_ROMROOT = ./../Nand/bin/$(TWL_BUILDTYPE_ARM9) -MAKEROM_ROMFILES = CardRomHeaderChecker.nand.srl - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -LIBSYSCALL = ../common/0CWA/libsyscall.a - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/Makefile b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/Makefile deleted file mode 100644 index 1054d389..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - nandApp - demos - launcher_param - ExecTmpApp -# File: Makefile -# -# Copyright 2007-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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/banner_v3.bsf b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/banner_v3.bsf deleted file mode 100644 index 71aae09c..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/banner_v3.bsf and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/icon/gameIcon.bmp b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/icon/gameIcon.bmp deleted file mode 100644 index 588fc8cd..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/Makefile b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/Makefile deleted file mode 100644 index 1054d389..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - nandApp - demos - launcher_param - ExecTmpApp -# File: Makefile -# -# Copyright 2007-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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/banner_v3.bsf b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/banner_v3.bsf deleted file mode 100644 index 42d0860b..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/banner_v3.bsf and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/icon/gameIcon.bmp b/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/icon/gameIcon.bmp deleted file mode 100644 index 588fc8cd..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/TmpJump/banner2/icon/gameIcon.bmp and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.c b/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.c deleted file mode 100644 index 2d6b2ec4..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.c +++ /dev/null @@ -1,169 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - nandApp - demos - launcher_param - ExecTmpApp - File: ExecTmpApp.c - - Copyright 2007-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 -#include "misc_simple.h" -#include "ExecTmpApp.h" - -// define data------------------------------------------ - -#define COPB_MENU_ELEMENT_NUM 2 // メニューの項目数 - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- - -static void MenuScene( void ); - -// global variable ------------------------------------- - -// static variable ------------------------------------- -static u16 s_csr = 0; -static void(*s_pNowProcess)(void); - -// const data ----------------------------------------- -static const char *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] = -{ - "save app to tmp and restart", - "return to launcher", -}; - -static MenuPos s_menuPos[] = { - { TRUE, 3, 6 }, - { TRUE, 3, 8 }, -}; - -static const MenuParam s_menuParam = { - COPB_MENU_ELEMENT_NUM, - TXT_COLOR_BLACK, - TXT_COLOR_GREEN, - TXT_COLOR_RED, - &s_menuPos[ 0 ], - (const char **)&s_pStrMenu, -}; - -//====================================================== -// アプリ連携テストプログラムB -//====================================================== - -static void DrawMenuScene( void ) -{ - myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "ExecTmpCardRomHeaderChecker"); - // メニュー項目 - myDp_DrawMenu( s_csr, MAIN_SCREEN, &s_menuParam ); -} - -static void MenuInit( void ) -{ - FS_Init(3); - GX_DispOff(); - GXS_DispOff(); - - myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "ExecTmpCardRomHeaderChecker"); - - s_pNowProcess = MenuScene; - - DrawMenuScene(); - - GX_DispOn(); - GXS_DispOn(); -} - -static void MenuScene(void) -{ - //-------------------------------------- - // キー入力処理 - //-------------------------------------- - if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動 - if( ++s_csr == COPB_MENU_ELEMENT_NUM ) { - s_csr=0; - } - } - if( MYPAD_IS_TRIG(PAD_KEY_UP) ){ - if( --s_csr & 0x80 ) { - s_csr=COPB_MENU_ELEMENT_NUM - 1; - } - } - - DrawMenuScene(); - - if( MYPAD_IS_TRIG(PAD_BUTTON_A) ) { // メニュー項目への分岐 - if( s_menuPos[ s_csr ].enable ) { - u64 targetApp = 0x00030004534d504c;// SMPL - s32 len = 0; - s32 llen; - BOOL success = TRUE; - FSFile src,dest; - void *buf; - switch( s_csr ) { - case 0: - - // tmpに保存 - FS_DeleteFile(OS_TMP_APP_PATH); - FS_CreateFile(OS_TMP_APP_PATH, FS_PERMIT_R | FS_PERMIT_W); - FS_InitFile( &src ); - FS_InitFile( &dest ); - if ( !FS_OpenFileEx( &src, "rom:/CardRomHeaderChecker.nand.srl", FS_FILEMODE_R ) ) success = FALSE; - len = (int)FS_GetFileLength( &src ); - - buf = (void *)0x2400000; - for(llen = 0; llen < len; ) - { - int rd; - rd = FS_ReadFile( &src, buf, len ); - if(rd == -1) - { - success = FALSE; - break; - } - buf = (void *)((u32)buf + rd); - llen += rd; - } - buf = (void *)0x2400000; - if ( !FS_CloseFile( &src ) ) success = FALSE; - if (len != llen) success = FALSE; - - if ( !FS_OpenFileEx( &dest, OS_TMP_APP_PATH, FS_FILEMODE_W ) ) success = FALSE; - llen = FS_WriteFile( &dest, buf, len ); - if ( !FS_CloseFile( &dest ) ) success = FALSE; - if (len != llen) success = FALSE; - - if( !success ) break; - - //アプリ起動 - OS_DoApplicationJump( targetApp, OS_APP_JUMP_TMP ); - break; - case 1: - OS_DoApplicationJump( NULL, OS_APP_JUMP_NORMAL ); - //再起動 - break; - } - } - } -} - -// 初期化 -void ExecTmpAppInit( void ) -{ - MenuInit(); -} - -// メインループ -void ExecTmpAppMain(void) -{ - s_pNowProcess(); -} diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.h b/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.h deleted file mode 100644 index 5610ade2..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/ExecTmpApp.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - nandApp - demos - launcher_param - ExecTmpApp - File: ExecTmpApp.h - - Copyright 2007-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 __COOPERATION_B_H__ -#define __COOPERATION_B_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include - -// define data---------------------------------------------------------- - -void ExecTmpAppInit( void ); -void ExecTmpAppMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __COOPERATION_B_H__ diff --git a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/main.c b/build/debugsoft/CardRomHeaderChecker/TmpJump/src/main.c deleted file mode 100644 index 6c62624d..00000000 --- a/build/debugsoft/CardRomHeaderChecker/TmpJump/src/main.c +++ /dev/null @@ -1,68 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - nandApp - demos - launcher_param - ExecTmpApp - File: main.c - - Copyright 2007-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 -#include "misc_simple.h" -#include "ExecTmpApp.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- -BOOL g_isValidTSD; - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - myInit(); - - ExecTmpAppInit(); - // メインループ---------------------------- - while(1){ - - myPreMain(); - - ExecTmpAppMain(); - - myProMain(); - - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - } -} - - -// ============================================================================ -// 割り込み処理 -// ============================================================================ - -// Vブランク割り込み -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット -} - diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CWA/libsyscall.a b/build/debugsoft/CardRomHeaderChecker/common/0CWA/libsyscall.a deleted file mode 100644 index 3498a72f..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CWA/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CWA/rom_header_0cwa.template.sbin b/build/debugsoft/CardRomHeaderChecker/common/0CWA/rom_header_0cwa.template.sbin deleted file mode 100644 index 487804e8..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CWA/rom_header_0cwa.template.sbin and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CXA/libsyscall.a b/build/debugsoft/CardRomHeaderChecker/common/0CXA/libsyscall.a deleted file mode 100644 index 58bb57ef..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CXA/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CXA/rom_header_0cxa.template.sbin b/build/debugsoft/CardRomHeaderChecker/common/0CXA/rom_header_0cxa.template.sbin deleted file mode 100644 index 264ba8f9..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CXA/rom_header_0cxa.template.sbin and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CYA/libsyscall.a b/build/debugsoft/CardRomHeaderChecker/common/0CYA/libsyscall.a deleted file mode 100644 index 4c38cdc4..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CYA/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CYA/rom_header_0cya.template.sbin b/build/debugsoft/CardRomHeaderChecker/common/0CYA/rom_header_0cya.template.sbin deleted file mode 100644 index 073f58b1..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CYA/rom_header_0cya.template.sbin and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CZA/libsyscall.a b/build/debugsoft/CardRomHeaderChecker/common/0CZA/libsyscall.a deleted file mode 100644 index 7377eea2..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CZA/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CZA/rom_header_0cza.template.sbin b/build/debugsoft/CardRomHeaderChecker/common/0CZA/rom_header_0cza.template.sbin deleted file mode 100644 index f99ad765..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/0CZA/rom_header_0cza.template.sbin and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile b/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile deleted file mode 100644 index 1f8aa1d4..00000000 --- a/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf b/build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf deleted file mode 100644 index 03b7b035..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner/icon/gameIcon.bmp b/build/debugsoft/CardRomHeaderChecker/common/banner/icon/gameIcon.bmp deleted file mode 100644 index 3ea06fe9..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner2/Makefile b/build/debugsoft/CardRomHeaderChecker/common/banner2/Makefile deleted file mode 100644 index 1f8aa1d4..00000000 --- a/build/debugsoft/CardRomHeaderChecker/common/banner2/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner2/banner_v3.bsf b/build/debugsoft/CardRomHeaderChecker/common/banner2/banner_v3.bsf deleted file mode 100644 index 3977e385..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/banner2/banner_v3.bsf and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner2/icon/gameIcon.bmp b/build/debugsoft/CardRomHeaderChecker/common/banner2/icon/gameIcon.bmp deleted file mode 100644 index 3ea06fe9..00000000 Binary files a/build/debugsoft/CardRomHeaderChecker/common/banner2/icon/gameIcon.bmp and /dev/null differ diff --git a/build/debugsoft/CardRomHeaderChecker/common/src/main.c b/build/debugsoft/CardRomHeaderChecker/common/src/main.c deleted file mode 100644 index e0d97568..00000000 --- a/build/debugsoft/CardRomHeaderChecker/common/src/main.c +++ /dev/null @@ -1,219 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - template - demos - File: main.c - - Copyright 2003-2005,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 -#include -#include -#include "DEMO.h" - -#define COLOR_WHITE (GX_RGBA(31, 31, 31, 1)) -#define COLOR_CYAN (GX_RGBA(0, 31, 31, 1)) -#define COLOR_RED (GX_RGBA(31, 0, 0, 1)) -#define COLOR_YELLOW (GX_RGBA(31, 31, 0, 1)) - -#define TITLE_COLOR COLOR_YELLOW -#define LABEL_COLOR COLOR_WHITE -#define VALUE_COLOR COLOR_WHITE -#define OK_COLOR COLOR_CYAN -#define NG_COLOR COLOR_RED - -// CRC計算 -#define CRC16_INIT_VALUE 0xffff -#define CALC_CRC16_SIZE 0x15e -static u16 CalcCRC16(u16 start, u8 *data, int size); - -void TwlMain(void) -{ - ROM_Header *prhTWL, *prhNTR; - char str[100]; - u16 row = 0; - u16 shift = 8; - u16 crc; - - OS_Init(); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); - - // カードROMヘッダ: NTR互換用 - prhNTR = (ROM_Header*)HW_CARD_ROM_HEADER; - - DEMOSetBitmapTextColor(COLOR_YELLOW); - DEMODrawText( 8, row, "Card ROM Header" ); - row += 2 * shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Title Name:" ); - MI_CpuClear8( str, 100 ); - MI_CpuCopy8( prhNTR->s.title_name, str, TITLE_NAME_MAX ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, str ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Game Code:" ); - MI_CpuClear8( str, 100 ); - MI_CpuCopy8( prhNTR->s.game_code, str, GAME_CODE_MAX ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, str ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Header CRC:" ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, "0x%04x", prhNTR->s.header_crc16 ); - row += shift; - - crc = CalcCRC16( CRC16_INIT_VALUE, (u8*)prhNTR, CALC_CRC16_SIZE ); - if( crc == prhNTR->s.header_crc16 ) - { - DEMOSetBitmapTextColor(OK_COLOR); - DEMODrawText( 96, row, "0x%04x OK", crc ); - } - else - { - DEMOSetBitmapTextColor(NG_COLOR); - DEMODrawText( 96, row, "0x%04x NG", crc ); - } - row += 3 * shift; - - // この固定メモリアドレスにTWLカードROMヘッダがある - // これはカードROMヘッダとは異なる - // カードROMヘッダ: NTR互換のための領域でROMヘッダのNTR互換部分だけがある - // TWLカードROMヘッダ: NTR互換部分に加えてROMヘッダのTWLで追加された部分もある - prhTWL = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; - - DEMOSetBitmapTextColor(COLOR_YELLOW); - DEMODrawText( 8, row, "TWL Card ROM Header" ); - row += 2 * shift; - - if( OS_IsRunOnTwl() ) - { - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Title Name: " ); - MI_CpuClear8( str, 100 ); - MI_CpuCopy8( prhTWL->s.title_name, str, TITLE_NAME_MAX ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, str ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Game Code: " ); - MI_CpuClear8( str, 100 ); - MI_CpuCopy8( prhTWL->s.game_code, str, GAME_CODE_MAX ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, str ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "TitleID_Hi: " ); - prhTWL = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, "0x%08x", prhTWL->s.titleID_Hi ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "TitleID_Lo: " ); - MI_CpuClear8( str, 100 ); - MI_CpuCopy8( prhTWL->s.titleID_Lo, str, 4 ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, str ); - row += shift; - - DEMOSetBitmapTextColor(LABEL_COLOR); - DEMODrawText( 8, row, "Header CRC:" ); - DEMOSetBitmapTextColor(VALUE_COLOR); - DEMODrawText( 96, row, "0x%04x", prhTWL->s.header_crc16 ); - row += shift; - - crc = CalcCRC16( CRC16_INIT_VALUE, (u8*)prhTWL, CALC_CRC16_SIZE ); - if( crc == prhTWL->s.header_crc16 ) - { - DEMOSetBitmapTextColor(OK_COLOR); - DEMODrawText( 96, row, "0x%04x OK", crc ); - } - else - { - DEMOSetBitmapTextColor(NG_COLOR); - DEMODrawText( 96, row, "0x%04x NG", crc ); - } - row += 2 * shift; - }else - { - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawText( 8, row, "Running on NITRO Mode." ); - row += 2 * shift; - } - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawText( 8, row, "End." ); - row += 2 * shift; - DEMODrawText( 8, row, "Press A to check Self-Jump." ); - - while (1) - { - DEMOReadKey(); - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - if(DEMO_IS_TRIG(PAD_BUTTON_A)) OS_RebootSystem(); - } -} - - -/*---------------------------------------------------------------------------* - * Math - * - * u16 CalcCRC16( u16 start, u8 *data, int size ) - *---------------------------------------------------------------------------*/ - -static u16 crc16_table[16] = { - 0x0000, 0xCC01, 0xD801, 0x1400, - 0xF001, 0x3C00, 0x2800, 0xE401, - 0xA001, 0x6C00, 0x7800, 0xB401, - 0x5000, 0x9C01, 0x8801, 0x4400 -}; - -static u16 CalcCRC16(u16 start, u8 *data, int size) -{ - u16 r1; - u16 total = start; - - while (size-- > 0) - { - // 下位4bit - r1 = crc16_table[total & 0xf]; - total = (u16)((total >> 4) & 0x0fff); - total = (u16)(total ^ r1 ^ crc16_table[*data & 0xf]); - - // 上位4bit - r1 = crc16_table[total & 0xf]; - total = (u16)((total >> 4) & 0x0fff); - total = (u16)(total ^ r1 ^ crc16_table[(*data >> 4) & 0xf]); - - data++; - } - return total; -} - -/*====== End of main.c ======*/ diff --git a/build/debugsoft/Internet/Makefile b/build/debugsoft/Internet/Makefile deleted file mode 100644 index 0e2cb013..00000000 --- a/build/debugsoft/Internet/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = NCFGCrusher \ - - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/Internet/NCFGCrusher/Makefile b/build/debugsoft/Internet/NCFGCrusher/Makefile deleted file mode 100644 index 6ecde606..00000000 --- a/build/debugsoft/Internet/NCFGCrusher/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlWiFi - NCFG - demos - ncfg-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = $(ROOT)/build/demos/gx/UnitTours/DEMOLib - -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL -TWL_ARCHGEN := LIMITED -TWL_NANDAPP := TRUE -TARGET_NAME = NCFGCrusher -TARGET_BIN = $(TARGET_NAME).srl -#TARGET_BIN = $(TARGET_NAME).tad -SRCS = main.c - - -ROM_SPEC = $(TARGET_NAME).autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - BannerFile=./banner/banner.bnr \ - GameCode=4S03 \ - TitleName=$(TARGET_NAME) \ - AppType=USER \ -# Media=NAND \ - - -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.exe - - -#------------------------- -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(TARGET_NAME) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - - - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLWIFI_ROOT)/build/buildtools/commondefs.demos -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLWIFI_ROOT)/build/buildtools/modulerules -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/Internet/NCFGCrusher/banner/banner.bnr b/build/debugsoft/Internet/NCFGCrusher/banner/banner.bnr deleted file mode 100644 index 60eba830..00000000 Binary files a/build/debugsoft/Internet/NCFGCrusher/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/Internet/NCFGCrusher/readme.txt b/build/debugsoft/Internet/NCFGCrusher/readme.txt deleted file mode 100644 index f4309edd..00000000 --- a/build/debugsoft/Internet/NCFGCrusher/readme.txt +++ /dev/null @@ -1,33 +0,0 @@ -NCFGTest - -*概要 -接続設定を破壊するツールです。 - -*操作方法 -上下キーで破壊する接続設定を選択し、Aボタンで決定します。 -下画面に元の接続設定データと、破壊後のデータが表示されます。 - -破壊は、各データの先頭に 0x61 〜 0x67を埋め込む形で実現しています。 - - ----------- -*NCFGの修復仕様まとめ - -接続設定のCRCをチェックし、エラーがある場合はその設定を初期化します。 -(IPアドレスの設定や、接続タイプ等が全てクリアされる状態) - -Nitroのときのように、接続設定1と2を異常にすると、3も道連れになりクリアされるというようなことはありません。 - - -より、詳細な仕様は影舞に記されています。 -http://phoenix.boy.nintendo.co.jp/~twl-wifi/kagemai/html/user.cgi?project=twl-wifi&action=view_report&id=84 -http://phoenix.boy.nintendo.co.jp/~twl-wifi/kagemai/html/user.cgi?project=twl-wifi&action=view_report&id=83 - -一部抜粋 -- CRC エラーの接続先は、個別に消去します。 -- 全領域 CRC エラーだった場合は、初回起動だと見なし、消去のみを行い、 - エラーを返しません。 -- 設定がされていた領域で消去が発生した場合は、エラーを通知します。 -- それ以外の場合は、エラーを返しません。 - (元々設定されていなかった領域で消去が発生した場合も含む) - diff --git a/build/debugsoft/Internet/NCFGCrusher/src/main.c b/build/debugsoft/Internet/NCFGCrusher/src/main.c deleted file mode 100644 index d3104ffb..00000000 --- a/build/debugsoft/Internet/NCFGCrusher/src/main.c +++ /dev/null @@ -1,183 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlWiFi - NCFG - demos - ncfg-1 - File: main.c - - Copyright 2007 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$ - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - NVRAM 上のネットワーク設定を一定の値で初期化しながら、 - その結果をダンプするサンプルプログラムです。 - *---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include - -//#include -//#include - -static void MainLoop(void); -//static void VBlankIntr(void); - -static void ReadNCFG(s32 index, u8* out); -static void WriteNCFG(s32 index); -static void InitDEMOSystem(void); - -static u32 UpdateCursor(u32 val, u32 max, u16 key); - -static const char* SLOT_NAME[] = { - "SLOT_1", "SLOT_2", "SLOT_3", "SLOT_EX_1", "SLOT_EX_2", "SLOT_EX_3" -}; -static const u32 SLOT_NUM = sizeof(SLOT_NAME) / sizeof(char*); - -void NitroMain() -{ - OS_Init(); - FX_Init(); - GX_Init(); - -// GX_DispOff(); -// GXS_DispOff(); - - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - InitDEMOSystem(); - - (void)PAD_Read(); - - - - OS_TPrintf("UP DOWN - SELECT NCFG SLOT\n"); - OS_TPrintf("A - OVERWRITE NCFG\n"); - - - MainLoop(); - - OS_Terminate(); -} - -static u32 UpdateCursor(u32 val, u32 max, u16 key) -{ - if(key & PAD_KEY_DOWN) - { - val = (val + 1) % max; - } - if(key & PAD_KEY_UP) - { - val = (val + max - 1) % max; - } - return val; -} - -static void MainLoop(void) -{ - u32 index = 0; - s32 slot_index[] = - { - NCFG_SLOT_1, - NCFG_SLOT_2, - NCFG_SLOT_3, - NCFG_SLOT_EX_1, - NCFG_SLOT_EX_2, - NCFG_SLOT_EX_3, - }; - u16 key = 0, old_key = 0, trig = 0; - - while(1) - { - s32 i = 0; - - old_key = key; - key = PAD_Read(); - trig = (u16)(key & (key ^ old_key)); - - index = UpdateCursor(index, SLOT_NUM, trig); - if(trig & PAD_BUTTON_A) - { - WriteNCFG(slot_index[index]); - OS_TPrintf("%s was modified\n", SLOT_NAME[index]); - } - - for(i = 0; i < SLOT_NUM; ++i) - { - - DEMODrawText(0, i * 8, ((index == i) ? "*" : " ")); - DEMODrawText(8, i * 8, "%s\n", SLOT_NAME[i]); - } - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } -} - -static void ReadNCFG(s32 index, u8* out) -{ - static u8 buf[512]; - FSFile fp; - s32 result; - - FS_InitFile(&fp); - - result = NCFG_ReadBackupMemory(buf, sizeof(buf), index); - OS_TPrintf("NCFG_ReadBackupMemory(%d): %d\n", index, result); - if ( result >= 0 ) - { - // OS_TPrintfEx("% *.16b", result, buf); - OS_TPrintfEx("% 256.16b", buf); - OS_TPrintf("\n"); - } - - MI_CpuCopy8(buf, out, sizeof(buf)); -} - -static void WriteNCFG(s32 index) -{ - static u8 buf[512]; - s32 result; - - ReadNCFG(index, buf); - MI_CpuCopy("abcdefg", buf, 7); - result = NCFG_WriteBackupMemory(index, buf, sizeof(buf)); - OS_TPrintf("NCFG_WriteBackupMemory(%d): %d\n", index, result); - OS_TPrintfEx("% 256.16b", buf); - OS_TPrintf("\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitDEMOSystem - - Description: コンソールの画面出力用の表示設定を行います。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitDEMOSystem(void) -{ - // 画面表示の初期化。 - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); -} diff --git a/build/debugsoft/Jpeg/Makefile b/build/debugsoft/Jpeg/Makefile deleted file mode 100644 index 3124add1..00000000 --- a/build/debugsoft/Jpeg/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = SdToPhoto - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/Jpeg/SdToPhoto/Makefile b/build/debugsoft/Jpeg/SdToPhoto/Makefile deleted file mode 100644 index 3707d142..00000000 --- a/build/debugsoft/Jpeg/SdToPhoto/Makefile +++ /dev/null @@ -1,138 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools - NandFiler -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - - - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED -SRCS = main.cpp -TARGET_NAME = sd2photo -TWLNMENU_ROOT ?= . - - -#------------------------- -#-- バナーデータを生成します -BANNER = ./banner/banner.bnr -BANNERSRC := $(wildcard ./banner/data/Cell/*.nce) -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = $(TARGET_NAME)$(ROM_SPEC_NAME_PART).autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - GameCode=4S01 \ - Secure=TRUE \ - BannerFile=./banner/banner.bnr \ - NANDAccess=TRUE \ - SDCardAccess=TRUE \ - TitleName=$(TARGET_NAME) - -#------------------------- -#-- CARD, NANDによるオプションの指定 - -TWL_NANDAPP = TRUE - -ifeq ($(APP_TYPE),) -APP_TYPE = CARD -endif - -ifeq ($(APP_TYPE),CARD) -MEDIA = GameCard -SUFFIX = .srl -endif - -ifeq ($(APP_TYPE),NAND) -MEDIA = NAND -SUFFIX = .tad -ROM_SPEC_NAME_PART := $(ROM_SPEC_NAME_PART).nand -endif - -ROM_SPEC_PARAM += Media=$(MEDIA) -TARGET_BIN = $(TARGET_NAME)$(SUFFIX) - -#------------------------- -# 対象拡張子のためのインクルードファイルを決定 -ifneq ($(SUFFIX_DEFINE),) -SUFFIX_FILE = $(SUFFIX_DEFINE) -else -SUFFIX_FILE = default_suffix.h -endif - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#------------------------- -# セキュア用 -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -MAKETAD_OPTION := -s - - -#------------------------- -# ビルドパラメータ -INCDIR = $(TWLSYSTEM_ROOT)/include \ - ./include - - -#------------------------- -# インストール指定 - -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(TARGET_NAME) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -#------------------------- -# 対象拡張子のためのインクルードファイルをビルドディレクトリにコピー -.PHONY: suffix - -suffix: - cp $(SUFFIX_FILE) ./include/suffix.h - -#------------------------- -# ビルド -do-build: suffix $(TARGETS) - -#------------------------- -#-- SRL を作成する前にバナーが作成されるようにします。 - -ifdef MAKE_BANNER -$(BINDIR)/$(TARGET_NAME)$(ROM_SPEC_NAME_PART).srl: $(BANNER) -endif - - -#------------------------- -#-- バナー作成用ターゲット - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/Jpeg/SdToPhoto/banner/banner.bnr b/build/debugsoft/Jpeg/SdToPhoto/banner/banner.bnr deleted file mode 100644 index c299ae43..00000000 Binary files a/build/debugsoft/Jpeg/SdToPhoto/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/Jpeg/SdToPhoto/default_suffix.h b/build/debugsoft/Jpeg/SdToPhoto/default_suffix.h deleted file mode 100644 index 9e83a577..00000000 --- a/build/debugsoft/Jpeg/SdToPhoto/default_suffix.h +++ /dev/null @@ -1,9 +0,0 @@ -namespace{ - const char* SUFFIX[] = - { - ".jpg", - ".jpeg", - ".JPG", - ".JPEG", - }; -} \ No newline at end of file diff --git a/build/debugsoft/Jpeg/SdToPhoto/readme.txt b/build/debugsoft/Jpeg/SdToPhoto/readme.txt deleted file mode 100644 index 6bdf0cb0..00000000 --- a/build/debugsoft/Jpeg/SdToPhoto/readme.txt +++ /dev/null @@ -1,28 +0,0 @@ -sd2photo - -*概要 -  SDカード内を走査して、指定した拡張子のファイルを探し、 -  "photo:/"以下へコピーするツールです。 - -*拡張子の指定方法 - コピー対象とする拡張子を記述したファイルをビルド時に指定します。 - 具体的な指定はmake時に下記の変数を渡すことで行ってください。 - - SUFFIX_DEFINE=hoge - - 省略すると、default_suffix.h が指定されます。(".jpg", ".jpeg", ".JPG", "JPEG"に対応します。) - -*操作方法 -  SDカードを挿入した状態でデバッガ等で起動してください。 - (SDを指さずに起動すると画面が赤くなり、SDが挿されるまで待ちます) - -  自動的に、ファイルの検索とコピーが始まります。 -   -  検索、コピー中は、画面の色が緑色になっています。 -  (SDを抜いたり電源を切ったりしないほうが無難です。) -  処理が終わったら青色になります。 - -*仕様 -  ・フォルダ構成をそのままコピーします。例えば、SD上で"/test/aa.jpg"があったとすれば、NAND上で"photo:/test/aa.jpg"が作成されます。 -  ・NAND上に同名のファイルが存在する場合、問答無用に上書きされます。 -  ・残り容量が少ない場合、上書きになる場合でもファイルをコピーできないことがあります。 diff --git a/build/debugsoft/Jpeg/SdToPhoto/src/main.cpp b/build/debugsoft/Jpeg/SdToPhoto/src/main.cpp deleted file mode 100644 index 0c5502cc..00000000 --- a/build/debugsoft/Jpeg/SdToPhoto/src/main.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - NandFiler - File: main.cpp - - 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 -#include -#include - -#include -#include -#include "suffix.h" - -inline void* operator new(size_t size) { return OS_Alloc(size); } -inline void* operator new[](size_t size) { return OS_Alloc(size); } -inline void operator delete(void* ptr) { OS_Free(ptr); } -inline void operator delete[](void* ptr) { OS_Free(ptr); } - -typedef std::list PathList; - -namespace -{ - void - InitInterrupt(void) - { - OS_EnableIrq(); - OS_EnableInterrupts(); - } - - void - InitAlloc(void) - { - OSHeapHandle hHeap; - void* lo = OS_GetMainArenaLo(); - void* hi = OS_GetMainArenaHi(); - - lo = OS_InitAlloc(OS_ARENA_MAIN, lo, hi, 1); - OS_SetArenaLo(OS_ARENA_MAIN, lo); - - hHeap = OS_CreateHeap(OS_ARENA_MAIN, lo, hi); - SDK_ASSERT( hHeap >= 0 ); - - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); - } -} - - - -static void InitInteruptSystem(); -static void InitFileSystem(); - -static void PickupTargetPath(const char* root, const char* suffix, PathList& out); -static void CopyTarget(const char* to, const char* header, PathList& out); -static void CopyFile(const char* src, const char* dest); - -void -TwlStartUp() -{ - OS_Init(); - InitAlloc(); -} - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: メイン関数です。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - InitInteruptSystem(); - InitFileSystem(); - - GX_DispOn(); - GXS_DispOn(); - - // SDがささってなかったら刺さるまで待つ - { - FSArchiveResource res; - while(!FS_GetArchiveResource("sdmc:/", &res)) - { - *(u16*)HW_PLTT = static_cast(0x001f); - *(u16*)HW_DB_PLTT = static_cast(0x001f); - } - } - - PathList path; - - for(u32 i = 0; i < sizeof(SUFFIX) / sizeof(char*); ++i) - { - PickupTargetPath("sdmc:/", SUFFIX[i], path); - } - CopyTarget("nand2:/photo", "sdmc:", path); - - - *(u16*)HW_PLTT = 0x001f << 10; - *(u16*)HW_DB_PLTT = 0x001f << 10; - // ランチャーに戻れるように、 終了しない - for (;;) - { - // フレーム更新。 - { - OS_WaitVBlankIntr(); - } - } - - OS_Terminate(); -} - -/*---------------------------------------------------------------------------* - Name: InitInteruptSystem - - Description: 割り込みを初期化します。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitInteruptSystem() -{ - // 個別割り込みフラグを全て不許可に - (void)OS_SetIrqMask(0); - - // マスター割り込みフラグを許可に - (void)OS_EnableIrq(); - - // IRQ 割り込みを許可します - (void)OS_EnableInterrupts(); - - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); -} - - -/*---------------------------------------------------------------------------* - Name: InitFileSystem - - Description: FS を初期化して rom にアクセスできるようにします。 - この関数を呼び出す前に InitInteruptSystem() が - 呼ばれている必要があります。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitFileSystem() -{ - // ARM7との通信FIFO割り込み許可 - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - - // ファイルシステム初期化 - FS_Init( FS_DMA_NOT_USE ); -} - - -static void PickupTargetPath(const char* root, const char* suffix, PathList& out) -{ - FSFile fp; - FSDirectoryEntryInfo fdei; - BOOL result; - - FS_InitFile(&fp); - // ディレクトリのオープン - result = FS_OpenDirectory(&fp, root, NULL); - if(!result) - { - OS_TPrintf("%s: Fail Open\nErrorCode:%d\n", root, FS_GetArchiveResultCode(root)); - return; - } - - while(FS_ReadDirectory(&fp, &fdei)) - { - if(STD_StrCmp(fdei.longname, ".") == 0 || STD_StrCmp(fdei.longname, "..") == 0) - continue; - - OS_TPrintf("%s:\n", fdei.longname); - // ディレクトリなら子を読む - if(fdei.attributes & FS_ATTRIBUTE_IS_DIRECTORY) - { - PickupTargetPath((std::string(root) + fdei.longname + "/").c_str(), suffix, out); - } - else // ファイルならoutに追加 - { - // 拡張子を判定 - if(std::string(fdei.longname).rfind(suffix) + STD_StrLen(suffix) == STD_StrLen(fdei.longname)) - { - out.push_back(std::string(root) + fdei.longname); - } - } - } - - FS_CloseDirectory(&fp); - -} - -static void CopyTarget(const char* to, const char* header, PathList& list) -{ - PathList::iterator itr = list.begin(), end = list.end(); - u16 color = 0; - for(; itr != end; ++itr) - { - std::string dest = std::string(to) + (*itr).substr(static_cast(STD_StrLen(header))); - - CopyFile((*itr).c_str(), dest.c_str()); - color = static_cast((color + 2) & 0x001f); - *(u16*)HW_PLTT = static_cast(color << 5); - *(u16*)HW_DB_PLTT = static_cast(color << 5); - } -} - -static void CopyFile(const char* src, const char* dest) -{ - FSFile sfp, dfp; - BOOL result; - std::string tmp_name = dest; - - tmp_name += "___tmp"; - - OS_TPrintf("Copying %s...", dest); - - // テンポラリファイルにコピー - FS_DeleteFile(tmp_name.c_str()); - result = FS_CreateFileAuto(tmp_name.c_str(), FS_PERMIT_R | FS_PERMIT_W); -// result = FS_CreateFileAuto(dest, FS_PERMIT_R | FS_PERMIT_W); - if(!result) - { - OS_TPrintf("%s:Cant create\n", tmp_name.c_str()); - return; - } - - result = FS_OpenFileEx(&sfp, src, FS_FILEMODE_R); - if(!result) - { - OS_TPrintf("%s:Cant open\n", src); - return; - } - - result = FS_OpenFileEx(&dfp, tmp_name.c_str(), FS_FILEMODE_W); - if(!result) - { - OS_TPrintf("%s:Cant open\n", src); - FS_CloseFile(&sfp); - return; - } - - const u32 BUFSIZE = 4096; - u8 buf[BUFSIZE]; - s32 count = 0; - while((count = FS_ReadFile(&sfp, buf, BUFSIZE)) > 0) - { - s32 write = FS_WriteFile(&dfp, buf, count); - if(write <= 0) - { - OS_TPrintf("Cant Write\n"); - FS_CloseFile(&sfp); - FS_CloseFile(&dfp); - FS_DeleteFile(tmp_name.c_str()); - return; - } - } - - FS_CloseFile(&sfp); - FS_CloseFile(&dfp); - - // テンポラリファイルをリネーム - // すでにファイルが存在するなら削除 - FS_DeleteFileAuto(dest); - FS_RenameFile(tmp_name.c_str(), dest); - - OS_TPrintf("...ok\n"); -} - diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set0.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set0.srl deleted file mode 100644 index c3b8101e..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set0.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set1.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set1.srl deleted file mode 100644 index 41454f33..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set1.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set2.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set2.srl deleted file mode 100644 index 1059b85f..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set3.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set3.srl deleted file mode 100644 index 96a7fa05..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set4.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set4.srl deleted file mode 100644 index 7a103aa6..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set5.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set5.srl deleted file mode 100644 index 7f706ebf..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/armadillo_set6.srl b/build/debugsoft/KeyCheck/Dev/armadillo_set6.srl deleted file mode 100644 index e98c1942..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/armadillo_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/mongoose_set2.srl b/build/debugsoft/KeyCheck/Dev/mongoose_set2.srl deleted file mode 100644 index def6ba70..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/mongoose_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/mongoose_set3.srl b/build/debugsoft/KeyCheck/Dev/mongoose_set3.srl deleted file mode 100644 index 5e79f94d..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/mongoose_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/mongoose_set4.srl b/build/debugsoft/KeyCheck/Dev/mongoose_set4.srl deleted file mode 100644 index 7b38ed22..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/mongoose_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/mongoose_set5.srl b/build/debugsoft/KeyCheck/Dev/mongoose_set5.srl deleted file mode 100644 index 4faf26e0..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/mongoose_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/mongoose_set6.srl b/build/debugsoft/KeyCheck/Dev/mongoose_set6.srl deleted file mode 100644 index bd8a9d41..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/mongoose_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/racoon_set2.srl b/build/debugsoft/KeyCheck/Dev/racoon_set2.srl deleted file mode 100644 index eb42d0d8..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/racoon_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/racoon_set3.srl b/build/debugsoft/KeyCheck/Dev/racoon_set3.srl deleted file mode 100644 index 1980084e..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/racoon_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/racoon_set4.srl b/build/debugsoft/KeyCheck/Dev/racoon_set4.srl deleted file mode 100644 index 27d56f8d..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/racoon_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/racoon_set5.srl b/build/debugsoft/KeyCheck/Dev/racoon_set5.srl deleted file mode 100644 index a8e2d1b9..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/racoon_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/racoon_set6.srl b/build/debugsoft/KeyCheck/Dev/racoon_set6.srl deleted file mode 100644 index 96cdd865..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/racoon_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/tarsier_set2.srl b/build/debugsoft/KeyCheck/Dev/tarsier_set2.srl deleted file mode 100644 index d9e10af8..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/tarsier_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/tarsier_set3.srl b/build/debugsoft/KeyCheck/Dev/tarsier_set3.srl deleted file mode 100644 index e93d4697..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/tarsier_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/tarsier_set4.srl b/build/debugsoft/KeyCheck/Dev/tarsier_set4.srl deleted file mode 100644 index cea13a31..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/tarsier_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/tarsier_set5.srl b/build/debugsoft/KeyCheck/Dev/tarsier_set5.srl deleted file mode 100644 index 70d0f78c..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/tarsier_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Dev/tarsier_set6.srl b/build/debugsoft/KeyCheck/Dev/tarsier_set6.srl deleted file mode 100644 index bf9f3126..00000000 Binary files a/build/debugsoft/KeyCheck/Dev/tarsier_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set0.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set0.srl deleted file mode 100644 index ede06b83..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set0.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set1.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set1.srl deleted file mode 100644 index 98e62e7c..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set1.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set2.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set2.srl deleted file mode 100644 index 21fe3d60..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set3.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set3.srl deleted file mode 100644 index 12db7e22..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set4.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set4.srl deleted file mode 100644 index 89b4086a..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set5.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set5.srl deleted file mode 100644 index 979532be..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/armadillo_set6.srl b/build/debugsoft/KeyCheck/Prod/armadillo_set6.srl deleted file mode 100644 index c939e469..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/armadillo_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/mongoose_set2.srl b/build/debugsoft/KeyCheck/Prod/mongoose_set2.srl deleted file mode 100644 index 37218915..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/mongoose_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/mongoose_set3.srl b/build/debugsoft/KeyCheck/Prod/mongoose_set3.srl deleted file mode 100644 index ca289e05..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/mongoose_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/mongoose_set4.srl b/build/debugsoft/KeyCheck/Prod/mongoose_set4.srl deleted file mode 100644 index 7fa5f3eb..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/mongoose_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/mongoose_set5.srl b/build/debugsoft/KeyCheck/Prod/mongoose_set5.srl deleted file mode 100644 index 90500aa5..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/mongoose_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/mongoose_set6.srl b/build/debugsoft/KeyCheck/Prod/mongoose_set6.srl deleted file mode 100644 index 69db2f21..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/mongoose_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/racoon_set2.srl b/build/debugsoft/KeyCheck/Prod/racoon_set2.srl deleted file mode 100644 index 8916c5dd..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/racoon_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/racoon_set3.srl b/build/debugsoft/KeyCheck/Prod/racoon_set3.srl deleted file mode 100644 index cd90c658..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/racoon_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/racoon_set4.srl b/build/debugsoft/KeyCheck/Prod/racoon_set4.srl deleted file mode 100644 index 073a68a6..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/racoon_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/racoon_set5.srl b/build/debugsoft/KeyCheck/Prod/racoon_set5.srl deleted file mode 100644 index 3a37b511..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/racoon_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/racoon_set6.srl b/build/debugsoft/KeyCheck/Prod/racoon_set6.srl deleted file mode 100644 index 44c72602..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/racoon_set6.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/tarsier_set2.srl b/build/debugsoft/KeyCheck/Prod/tarsier_set2.srl deleted file mode 100644 index c093fa3a..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/tarsier_set2.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/tarsier_set3.srl b/build/debugsoft/KeyCheck/Prod/tarsier_set3.srl deleted file mode 100644 index 6c00ec6e..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/tarsier_set3.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/tarsier_set4.srl b/build/debugsoft/KeyCheck/Prod/tarsier_set4.srl deleted file mode 100644 index e299cade..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/tarsier_set4.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/tarsier_set5.srl b/build/debugsoft/KeyCheck/Prod/tarsier_set5.srl deleted file mode 100644 index 3dd460e0..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/tarsier_set5.srl and /dev/null differ diff --git a/build/debugsoft/KeyCheck/Prod/tarsier_set6.srl b/build/debugsoft/KeyCheck/Prod/tarsier_set6.srl deleted file mode 100644 index 4f50af01..00000000 Binary files a/build/debugsoft/KeyCheck/Prod/tarsier_set6.srl and /dev/null differ diff --git a/build/debugsoft/Makefile b/build/debugsoft/Makefile deleted file mode 100644 index ae8ed58c..00000000 --- a/build/debugsoft/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = Jpeg \ - Wireless \ - Internet \ - ApplicationJump \ - TMPJump \ - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/MakerTitle/Makefile b/build/debugsoft/MakerTitle/Makefile deleted file mode 100644 index c43a41b4..00000000 --- a/build/debugsoft/MakerTitle/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = SaveData \ - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/Makefile b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/Makefile deleted file mode 100644 index 0bb8d479..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/Makefile +++ /dev/null @@ -1,188 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - save_data - DisplayVersion -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - -ifndef MODE -#------------------------------------------------------------------------ -# APP_TYPE の指定がないなら全てをビルドする - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something-build -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL= -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something-build: - +$(REMAKE) TWLSDK_PLATFORM=TWL MODE=SEQURE SKIP_SUBDIR=FALSE $(MY_GOAL) - rm `find -name *.lcf` - rm -rf depend - rm -rf obj - +$(REMAKE) TWLSDK_PLATFORM=TWL MODE=USER SKIP_SUBDIR=FALSE $(MY_GOAL) - -do-something: - +$(REMAKE) TWLSDK_PLATFORM=TWL MODE=SEQURE SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL MODE=USER SKIP_SUBDIR=FALSE $(MY_GOAL) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -else - - - -SUBDIRS = - - -#---------------------------------------------------------------------------- -TWL_NANDAPP := TRUE -MASTER_NAME := SaveDataTest -APP_NAME = $(MASTER_NAME)_$(MODE) - -SRCS = main.c font.c screen.c menu.c dataver.c - -LLIBRARIES = libnam$(TWL_LIBSUFFIX).a libes$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a - -#------------------------- -#-- セキュアアプリ、ユーザアプリの切り替え - -ifeq ($(MODE),USER) -MACRO_FLAGS += -DUSER_MODE -APP_TYPE := User -SEQURE := FALSE -GAME_CODE := 4S5A -endif - -ifeq ($(MODE),SEQURE) -APP_TYPE := System -SEQURE := TRUE -GAME_CODE := 4S4A -endif - - -TARGET_BIN = $(APP_NAME).tad - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = dispver.$(MODE).autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - TitleName=VER_CHECKER \ - GameCode=$(GAME_CODE) \ - BannerFile=./banner/banner_$(MODE).bnr \ - PublicSaveDataSize=16K \ - PrivateSaveDataSize=16K \ - WramMapping=MAP_TS_SCR \ - AppType=$(APP_TYPE) \ - Media=NAND \ - Secure=$(SEQURE) \ - - - -#------------------------- -#-- NAMを使うためにsecure componentを使う - -COMPONENT_NAME = armadillo -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/$(COMPONENT_NAME)/$(TWL_BUILDTYPE_ARM7)/$(COMPONENT_NAME) -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#------------------------- -# インストール指定 - -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(MASTER_NAME) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -#------------------------- -#-- カードアプリと同様に ROM-FS にファイルを持たせます。 - -#MAKEROM_ROMROOT = ./rom_data -#MAKEROM_ROMFILES = *.* - -#------------------------- -#-- バナーデータを生成します -BANNER = ./banner/banner.bnr -BANNERSRC := $(wildcard ./banner/data/Cell/*.nce) -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - -#------------------------- -# rom 内のファイルは全て自動生成なので clean で削除されるようにします -LDIRT_CLEAN = $(MAKEROM_ROMROOT) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -ifeq ($(MODE),USER) -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.exe # commondefs を include した後でなければならない -endif - -ifeq ($(MODE),SEQURE) -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe # commondefs を include した後でなければならない -MAKETAD_OPTION := -s # modulerules を include する前でなければならない -endif - -#---------------------------------------------------------------------------- - -#.PHONY: build_time - -do-build: $(TARGETS) - -#------------------------- -#-- SRL を作成する前にバナーが作成されるようにします。 - -$(BINDIR)/$(TARGET_BIN_BASENAME).$(TWL_ELF_EXT): make_dir -#$(BINDIR)/$(TARGET_BIN_BASENAME).$(TWL_ELF_EXT): make_dir $(BANNER) -#build_time - -#------------------------- -#-- rom_data/build_time.txt を作成します。 - -make_dir: - $(INSTALL) -d $(MAKEROM_ROMROOT) -#build_time: -# $(INSTALL) -d $(MAKEROM_ROMROOT) -# echo -n "build at `date \"+%Y/%m/%d %H:%M:%S\"` on \"`hostname`\"" > $(MAKEROM_ROMROOT)/build_time.txt - -#------------------------- -#-- バナー作成用ターゲット - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -endif - -#===== End of Makefile ===== diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_SEQURE.bnr b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_SEQURE.bnr deleted file mode 100644 index 8c1a6972..00000000 Binary files a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_SEQURE.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_USER.bnr b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_USER.bnr deleted file mode 100644 index 1383869a..00000000 Binary files a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/banner/banner_USER.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/dataver.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/dataver.h deleted file mode 100644 index 1ee7dfef..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/dataver.h +++ /dev/null @@ -1,43 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: dataver.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 DATAVER_H_ -#define DATAVER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -void GetAppVersionString(char *str); -BOOL GetPublicDataInfoStrings(char *verstr, char *timestr, char *datestr); -BOOL GetPrivateDataInfoStrings(char *verstr, char *timestr, char *datestr); -BOOL SetPublicDataTimeStamp(void); -BOOL SetPrivateDataTimeStamp(void); - -s32 GetOutNandAppInfo(void); -s32 GetOurNandAppNum(void); -BOOL GetOurNandAppVersionString(s32 no, char *verstr, char *inistr); -BOOL GetOurNandAppPublicDataInfoStrings(s32 no, char *verstr, char *timestr, char *datestr); -BOOL GetOurNandAppPrivateDataInfoStrings(s32 no, char *verstr, char *timestr, char *datestr); -BOOL SetOurNandAppPublicDataTimeStamp(s32 no); -BOOL SetOurNandAppPrivateDataTimeStamp(s32 no); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* DATAVER_H_ */ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/font.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/font.h deleted file mode 100644 index a323d9e1..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/font.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.h - - Copyright 2003 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/menu.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/menu.h deleted file mode 100644 index 8c9f7238..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/menu.h +++ /dev/null @@ -1,75 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: menu.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 MENU_H_ -#define MENU_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -//メニューに関する定義 -#define MENU_DEPTH_NUM 2 -#define MENU_ITEM_NUM 11 -#define MENU_ITEM_STRLEN 24 - -//ChangeMenuItemのパラメータ -#define MENU_ITEM_UP 0 -#define MENU_ITEM_DOWN 1 -#define MENU_DEPTH_UP 2 -#define MENU_DEPTH_DOWN 3 - - -typedef struct { - s16 nNext; // -1: これ以上枝はない - //char cItemStr[MENU_ITEM_STRLEN]; - char *cItemStr; -}menu_item_t; - -typedef struct { - s16 nPrev; // -1: 自分が親 - menu_item_t sItem[MENU_ITEM_NUM]; -}menu_sheet_t; - - -void DisplayMenuSet(void); -void InitMenu(void); -void ChangeMenuItem(u16 action); -void ExecMenuItem(void); -void ExecMenuItemB(void); -void ExecMenuItemX(void); -void ExecMenuItemRight(void); -void ExecMenuItemLeft(void); -void ExitMenuCancel(void); -void SetMenuString(u32 depth, u32 ipos, char *str); -void SetCurrentMenuString(char *str); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* MENU_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/screen.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/screen.h deleted file mode 100644 index 39b44f73..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/include/screen.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: screen.h - - Copyright 2003 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern u16 gScreen[32 * 32]; - -void ClearScreen(void); -void PrintString(s16 x, s16 y, u8 palette, char *text, ...); -void ColorString(s16 x, s16 y, s16 length, u8 palette); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/readme.txt b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/readme.txt deleted file mode 100644 index 4076b863..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/readme.txt +++ /dev/null @@ -1,21 +0,0 @@ -セーブデータバージョンチェックソフト - -このソフトはセーブデータのインポート・エクスポートを確認するためのソフトです。 -以下のことをします。 - ・アプリバージョンを表示する - ・アプリバージョンをパブリックセーブデータ・プライベートセーブデータに保存する - ・各セーブデータに保存したバージョン番号およびタイムスタンプを表示する - -これを使うことでアプリバージョンが変わった時のセーブデータの挙動を確認することができます。 - -【使い方】 -・ソフトを起動すると以下の表示を行います -  アプリバージョン -  パブリックセーブデータに保存したバージョン番号およびタイムスタンプ -  プライベートセーブデータに保存したバージョン番号およびタイムスタンプ -・矢印↑↓で項目を選択しAボタンを押すと該当するセーブデータを書き換えます -・Xボタンを押すと全セーブデータを書き換えます - -【制限事項】 -書き換えを実行してもタイムスタンプに2秒以内の時間のずれが発生します -(ファイルシステムは2秒間隔でしか設定しないため) diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/dataver.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/dataver.c deleted file mode 100644 index 0cd30162..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/dataver.c +++ /dev/null @@ -1,601 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: dataver.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 "dataver.h" -#include -#include -#include -#include - -//#define ACCESS_TEST_1 -//#define ACCESS_TEST_2 -//#define ACCESS_TEST_3 -//#define ACCESS_TEST_4 -//#define ACCESS_TEST_5 - -#define PUBDATA_VERSION_PATH "dataPub:/version" -#define PRVDATA_VERSION_PATH "dataPrv:/version" -#define OTHER_PUBDATA_VERSION_PATH "otherPub:/version" -#define OTHER_PRVDATA_VERSION_PATH "otherPrv:/version" -#define VERSION_LEN 3 -#define OUR_COMPANY_CODE 0x3031 // "01" : Nintendo -#define SELF_INITIAL_CODE 0x34564341 //"4VCA" - -static BOOL getDataInfoStrings(char *path, char *verstr, char *timestr, char *datestr); -static BOOL setDataTimeStamp(char *path); -static BOOL setOurNandAppDataTimeStamp(s32 no, BOOL pub); - -FSResult g_fs_result; -static s32 g_title_num; -static NAMTitleId g_title[40]; - -#ifdef USER_MODE -static const char* TARGET_APP = "4VDA"; -#endif - -void GetAppVersionString(char *str) -{ - u8 *pHeader, version; - - pHeader = (u8*)HW_TWL_ROM_HEADER_BUF; - version = *(pHeader + 0x1e); - - str[0] = (char)(version / 100 + 0x30); - str[1] = (char)((version % 100) / 10 + 0x30); - str[2] = (char)(version % 10 + 0x30); - str[3] = '\0'; -} - -BOOL GetPublicDataInfoStrings(char *verstr, char *timestr, char *datestr) -{ - return getDataInfoStrings(PUBDATA_VERSION_PATH, verstr, timestr, datestr); -} - -static BOOL getDataInfoStrings(char *path, char *verstr, char *timestr, char *datestr) -{ - FSFile file; - FSPathInfo info; - FSResult fresult; - - FS_InitFile( &file ); - - if( !FS_GetPathInfo(path, &info) ) - { - fresult = FS_GetArchiveResultCode(path); - return FALSE; - } - - STD_TSPrintf( timestr, "%04d/%02d/%02d", - info.mtime.year, info.mtime.month, info.mtime.day ); - STD_TSPrintf( datestr, "%02d:%02d:%02d", - info.mtime.hour, info.mtime.minute, info.mtime.second ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_R ) == FALSE ) - { - return FALSE; - } - - if( FS_ReadFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - return FALSE; - } - verstr[VERSION_LEN] = '\0'; - - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } - - return TRUE; -} - -BOOL GetPrivateDataInfoStrings(char *verstr, char *timestr, char *datestr) -{ - return getDataInfoStrings(PRVDATA_VERSION_PATH, verstr, timestr, datestr); -} - -BOOL SetPublicDataTimeStamp() -{ - return setDataTimeStamp(PUBDATA_VERSION_PATH); -} - -static BOOL setDataTimeStamp(char *path) -{ - FSFile file; - //FSPathInfo info; - char verstr[8]; - FSResult fresult; - - GetAppVersionString( verstr ); - - FS_InitFile( &file ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - if( !FS_CreateFile(path, FS_PERMIT_R | FS_PERMIT_W) ) - { - fresult = FS_GetArchiveResultCode(path); - g_fs_result = fresult; - return FALSE; - } - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - return FALSE; - } - } - - if( FS_WriteFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - return FALSE; - } - - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } - - return TRUE; -} - -BOOL SetPrivateDataTimeStamp() -{ - return setDataTimeStamp(PRVDATA_VERSION_PATH); -} - -s32 GetOutNandAppInfo(void) -{ - s32 i, j; - s32 appnum, ret; - NAMTitleInfo info; - NAMTitleId tmptitle[40]; - - NAM_Init(OS_AllocFromMain, OS_FreeToMain); - - appnum = NAM_GetNumTitles(); - if( appnum < 0 ) - return -1; - ret = NAM_GetTitleList( tmptitle, 40 ); - if( ret != NAM_OK ) - return -2; - for( i=0, j=0; i= g_title_num ) - return FALSE; - - // 該当NANDアプリのバージョンを得る - if( NAM_ReadTitleInfo( &info, g_title[no] ) != NAM_OK ) - return FALSE; - - // str に返す - //OS_TPrintf("app ver = 0x%x\n", info.version); - verstr[0] = (char)(info.version / 100 + 0x30); - verstr[1] = (char)((info.version % 100) / 10 + 0x30); - verstr[2] = (char)(info.version % 10 + 0x30); - verstr[3] = '\0'; - - ini = NAM_GetTitleIdLo(g_title[no]); - *(u32*)inistr = MI_SwapEndian32(ini); - inistr[4] = '\0'; - - return TRUE; -} - -static BOOL getOtherNandAppDataInfoStrings(s32 no, BOOL pub, char *verstr, char *timestr, char *datestr) -{ - BOOL ret = FALSE; - FSFile file; - FSPathInfo info; - FSResult fresult; - u32 ini; - NATitleArchive arc; - char *path; - const char pubpath[] = OTHER_PUBDATA_VERSION_PATH; - const char prvpath[] = OTHER_PRVDATA_VERSION_PATH; - - ini = MI_SwapEndian32( NAM_GetTitleIdLo(g_title[no]) ); - arc = pub ? NA_TITLE_ARCHIVE_DATAPUB : NA_TITLE_ARCHIVE_DATAPRV; -#ifdef USER_MODE - if( NA_LoadOtherTitleArchive( TARGET_APP, arc ) != FS_RESULT_SUCCESS ) - return FALSE; -#else - if( NA_LoadOtherTitleArchive( (char*)&ini, arc ) != FS_RESULT_SUCCESS ) - return FALSE; -#endif - path = pub ? (char*)pubpath : (char*)prvpath; - - FS_InitFile( &file ); - - if( !FS_GetPathInfo(path, &info) ) - { - fresult = FS_GetArchiveResultCode(path); - goto quit; - } - - STD_TSPrintf( timestr, "%04d/%02d/%02d", - info.mtime.year, info.mtime.month, info.mtime.day ); - STD_TSPrintf( datestr, "%02d:%02d:%02d", - info.mtime.hour, info.mtime.minute, info.mtime.second ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_R ) == FALSE ) - { - goto quit; - } - - if( FS_ReadFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - goto quit; - } - verstr[VERSION_LEN] = '\0'; - - if( FS_CloseFile( &file ) == FALSE ) - { - goto quit; - } - - ret = TRUE; - -quit: - NA_UnloadOtherTitleArchive(); - - return ret; -} - -BOOL GetOurNandAppPublicDataInfoStrings(s32 no, char *verstr, char *timestr, char *datestr) -{ - return getOtherNandAppDataInfoStrings(no, TRUE, verstr, timestr, datestr ); -} - -BOOL GetOurNandAppPrivateDataInfoStrings(s32 no, char *verstr, char *timestr, char *datestr) -{ - return getOtherNandAppDataInfoStrings(no, FALSE, verstr, timestr, datestr ); -} - - -static BOOL setOurNandAppDataTimeStamp(s32 no, BOOL pub) -{ - BOOL ret = FALSE; - FSFile file; - char verstr[8]; - //char inistr[8]; - FSResult fresult; - u32 ini; - NATitleArchive arc; - char *path; - const char pubpath[] = OTHER_PUBDATA_VERSION_PATH; - const char prvpath[] = OTHER_PRVDATA_VERSION_PATH; - - //GetOurNandAppVersionString( no, verstr, inistr ); - GetAppVersionString( verstr ); - ini = MI_SwapEndian32( NAM_GetTitleIdLo(g_title[no]) ); - - arc = pub ? NA_TITLE_ARCHIVE_DATAPUB : NA_TITLE_ARCHIVE_DATAPRV; -#ifdef USER_MODE - if( NA_LoadOtherTitleArchive( TARGET_APP, arc ) != FS_RESULT_SUCCESS ) - goto quit; -#else - if( NA_LoadOtherTitleArchive( (char*)&ini, arc ) != FS_RESULT_SUCCESS ) - goto quit; -#endif - path = pub ? (char*)pubpath : (char*)prvpath; - - FS_InitFile( &file ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - if( !FS_CreateFile(path, FS_PERMIT_R | FS_PERMIT_W) ) - { - fresult = FS_GetArchiveResultCode(path); - g_fs_result = fresult; - goto quit; - } - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - goto quit; - } - } - - if( FS_WriteFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - return FALSE; - } - - if( FS_CloseFile( &file ) == FALSE ) - { - goto quit; - } - - ret = TRUE; - -quit: - NA_UnloadOtherTitleArchive(); - - return ret; -} -BOOL SetOurNandAppPublicDataTimeStamp(s32 no) -{ - return setOurNandAppDataTimeStamp( no, TRUE ); -} - -BOOL SetOurNandAppPrivateDataTimeStamp(s32 no) -{ - return setOurNandAppDataTimeStamp( no, FALSE ); -} - -#if 0 -/* *INDENT-OFF* */ -static const char * const fs_result_strings[] = -{ - "FS_RESULT_SUCCESS", - "FS_RESULT_FAILURE", - "FS_RESULT_BUSY", - "FS_RESULT_CANCELED", - "FS_RESULT_UNSUPPORTED", - "FS_RESULT_ERROR", - "FS_RESULT_INVALID_PARAMETER", - "FS_RESULT_NO_MORE_RESOUCE", - "FS_RESULT_ALREADY_DONE", - "FS_RESULT_PERMISSION_DENIED", - "FS_RESULT_MEDIA_FATAL", - "FS_RESULT_NO_ENTRY", - "FS_RESULT_MEDIA_NOTHING", - "FS_RESULT_MEDIA_UNKNOWN", - "FS_RESULT_BAD_FORMAT", -}; -static const size_t fs_result_string_max = sizeof(fs_result_strings) / sizeof(*fs_result_strings); -SDK_COMPILER_ASSERT(fs_result_string_max == FS_RESULT_MAX); -/* *INDENT-ON* */ - -static void ReportLastErrorPath(const char *path) -{ - FSResult result = FS_GetArchiveResultCode(path); - - SDK_ASSERT((result >= 0) && (result < fs_result_string_max)); - OS_TPrintf("FS error:\n \"%s\"\n %s\n", - path, fs_result_strings[result]); -} - -static void ReportLastErrorFile(const FSFile *file) -{ - FSArchive *arc = FS_GetAttachedArchive(file); - FSResult result = FS_GetResultCode(file); - - SDK_ASSERT((result >= 0) && (result < fs_result_string_max)); - OS_TPrintf("FS error:\n (archive \"%s:\")\n %s\n", - FS_GetArchiveName(arc), fs_result_strings[result]); -} - -BOOL PubDataAccessTest(void) -{ - BOOL ret; - FSFile file, dir; - FSResult res; - FSArchiveResource resource; - static const char *testdir = "dataPub:/testdir"; - static const char *testfile = "dataPub:/testdir/test.txt"; - -#if defined(ACCESS_TEST_1) - FS_InitFile( &file ); - FS_InitFile( &dir ); - -#if 1 - if( FS_OpenDirectory( &dir, testdir, FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - OS_TPrintf("%s already exists\n", testdir); - FS_CloseDirectory( &dir ); - } - else if( FS_CreateDirectory( testdir, FS_PERMIT_R | FS_PERMIT_W ) == FALSE ) - { - res = FS_GetArchiveResultCode( testdir ); - return FALSE; - } -#endif - -#if 1 - if( FS_CreateFile( testfile, FS_PERMIT_R | FS_PERMIT_W ) == FALSE ) - { - OS_TPrintf("dataPub:/testdir/test.txt already exists\n"); - //return FALSE; - } - - // dataPub:/testdir/test.txt を開いてみる - if( FS_OpenFileEx( &file, testfile, FS_FILEMODE_W ) == FALSE ) - { - return FALSE; - } - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } -#endif -#elif defined(ACCESS_TEST_2) - if( FS_GetArchiveResource("rom:/", &resource) == FALSE ) - { - res = FS_GetArchiveResultCode( "dataPub:/" ); - return FALSE; - } -#elif defined(ACCESS_TEST_3) - { - FSArchive* FSi_GetArchiveChain(void); - FSArchive *arc; - - for (arc = FSi_GetArchiveChain(); arc ; arc = arc->next) - { - FSPathInfo info[1]; - char path[FS_ENTRY_LONGNAME_MAX]; - - OS_Printf("archive - %s\n", FS_GetArchiveName(arc)); - } - } -#elif defined(ACCESS_TEST_4) - { - static const char *basedir = "dataPub:/test"; - static const char *basedir2 = "dataPub:"; - char tmppath[FS_ENTRY_LONGNAME_MAX]; - FSArchiveResource resource; - static FSResult fresult; - - // at first, initialize FSFile structures. (equal to C++ constructor) - FSFile sfile[1]; - FSFile sdir[1]; - FS_InitFile(sfile); - FS_InitFile(sdir); - - if( !FS_GetArchiveResource(basedir2, &resource) ) - { - fresult = FS_GetArchiveResultCode(basedir2); - return FALSE; - } - - // DIRECTORY CREATION TEST - { - if (FS_OpenDirectory(sdir, basedir, FS_FILEMODE_R | FS_FILEMODE_W)) - { - OS_TPrintf("\"%s\" already exists.\n", basedir); - (void)FS_CloseDirectory(sdir); - } - else if (!FS_CreateDirectory(basedir, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(basedir); - OS_TPanic("FS_CreateDirectory(\"%s\") failed.\n", basedir); - } - else - { - int i; - OS_TPrintf("FS_CreateDirectory(\"%s\") succeeded.\n", basedir); - for (i = 1; i <= 3; ++i) - { - (void)STD_TSPrintf(tmppath, "%s/dir%d", basedir, i); - if (!FS_CreateDirectory(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_CreateDirectory(%s) failed.\n", tmppath); - } - else - { - OS_TPrintf("FS_CreateDirectory(%s) succeeded.\n", tmppath); - } - } - } - } - // DIRECTORY DELETION TEST - { - STD_TSPrintf(tmppath, "%s/tmp/", basedir); - if (!FS_CreateDirectory(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - OS_TPrintf("FS_CreateDirectory(\"%s\") failed.\n", tmppath); - } - if (!FS_DeleteDirectory(tmppath)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_DeleteDirectory(\"%s\") failed.\n", tmppath); - } - } - // DIRECTORY DELETE - if (!FS_DeleteDirectoryAuto(basedir)) - { - ReportLastErrorPath(basedir); - OS_TPanic("FS_DeleteDirectoryAuto(\"%s\") failed.\n", basedir); - } - } -#elif defined(ACCESS_TEST_5) - { - static const char *basedir = "dataPub:/test"; - char tmppath[FS_ENTRY_LONGNAME_MAX]; - - // at first, initialize FSFile structures. (equal to C++ constructor) - FSFile sfile[1]; - FSFile sdir[1]; - FS_InitFile(sfile); - FS_InitFile(sdir); - - // FILE CREATION TEST - { - enum { file_max = 3 }; - static const char *(message[file_max]) = - { - "hello, world!", - "foobar", - "hogehoge", - }; - int i; - for (i = 0; i < file_max; ++i) - { - STD_TSPrintf(tmppath, "%s/arm9%d.txt", basedir, i); - if (!FS_CreateFile(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - } - else - { - OS_TPrintf("FS_CreateFile(%s) succeeded.\n", tmppath); - if (!FS_OpenFileEx(sfile, tmppath, FS_FILEMODE_W)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_OpenFileEx(%s) failed.\n", tmppath); - } - else - { - if (FS_WriteFile(sfile, message[i], STD_GetStringLength(message[i])) < 0) - { - ReportLastErrorFile(sfile); - OS_TPanic("FS_WritFile() failed.\n"); - } - else - { - OS_TPrintf("FS_WritFile() succeeded.\n"); - } - } - (void)FS_CloseFile(sfile); - } - } - } - } -#endif - - return TRUE; -} -#endif diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/font.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/font.c deleted file mode 100644 index 30670436..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/font.c +++ /dev/null @@ -1,574 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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 "font.h" - -//---------------------------------------------------------------- -// Character data -// -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -//---------------------------------------------------------------- -// Palette data -// -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/main.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/main.c deleted file mode 100644 index d1fe1362..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/main.c +++ /dev/null @@ -1,255 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: main.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include -#include "font.h" -#include "screen.h" -#include "menu.h" - -static void myInit(void); -static void myVBlankIntr(void); -static void InitializeAllocateSystem(void); -static void PrintBootType(void); - -extern BOOL PubDataAccessTest(void); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: main - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - u16 trigger; - u16 preButton = PAD_Read(); - u16 button; - - //---------------- initialize - myInit(); - InitMenu(); - PrintBootType(); - -#if 0 - if( PubDataAccessTest() == FALSE ) - { - OS_Printf("Data access NG\n"); - return; - } -#endif - - //---------------- main loop - while (TRUE) - { - button = PAD_Read(); - trigger = (u16)((button ^ preButton) & button); - preButton = button; - - //---- clear screen buffer - ClearScreen(); - - //---- display menus - DisplayMenuSet(); - - //---- press UP key (toggle menu) - if(trigger & PAD_KEY_UP) - { - ChangeMenuItem(MENU_ITEM_UP); - } - - if(trigger & PAD_KEY_DOWN) - { - ChangeMenuItem(MENU_ITEM_DOWN); - } - if(trigger & PAD_KEY_RIGHT) - { - ExecMenuItemRight(); - } - if(trigger & PAD_KEY_LEFT) - { - ExecMenuItemLeft(); - } - - //---- push A - if (trigger & PAD_BUTTON_A) - { - ExecMenuItem(); - } - //---- push B - if (trigger & PAD_BUTTON_B) - { - ExecMenuItemB(); - } - //---- push X - if (trigger & PAD_BUTTON_X) - { - ExecMenuItemX(); - } - - OS_WaitVBlankIntr(); - } -} - -//---------------------------------------------------------------- -// myInit -// -void myInit(void) -{ - //---- init - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - RTC_Init(); - FX_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - InitializeAllocateSystem(); - - //---- init displaying - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- setting 2D for top screen - GX_SetBankForBG(GX_VRAM_BG_128_A); - - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - G2_BG0Mosaic(FALSE); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - - //---- setting 2D for bottom screen - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - G2S_BG0Mosaic(FALSE); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - //---- screen - MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen)); - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - //---- init interrupt - OS_SetIrqFunction(OS_IE_V_BLANK, myVBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - //---- FileSystemInit - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - FS_Init( FS_DMA_NOT_USE ); - - //---- start displaying - GX_DispOn(); - GXS_DispOn(); -} - -//---------------------------------------------------------------- -// myVBlankIntr -// vblank interrupt handler -// -static void myVBlankIntr(void) -{ - //---- upload pseudo screen to VRAM - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -static void PrintBootType(void) -{ - const OSBootType btype = OS_GetBootType(); - - switch( btype ) - { - case OS_BOOTTYPE_ROM: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_ROM\n"); break; - case OS_BOOTTYPE_NAND: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_NAND\n"); break; - default: - { - OS_Warning("unknown BootType(=%d)", btype); - } - break; - } -} - diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/menu.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/menu.c deleted file mode 100644 index 0a990fb6..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/menu.c +++ /dev/null @@ -1,652 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: menu.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 "font.h" -#include "screen.h" -#include "menu.h" -#include "dataver.h" -#include - -/* - * menu.c - * メニュー表示機能 - * - * テストアプリに適した簡単なメニュー表示を行う。メニュー階層は複数段可能。 - * - * なお、この機能を使用するためには、以下のソースが必要 - * font.c, font.h, screen.c, screen.h - * - * 導入手順: - * 1, menu.hの以下の定義値を変更する - * MENU_DEPTH_NUM : メニューの階層数 - * MENU_ITEM_NUM : メニュー項目の最大数 - * MENU_ITEM_STRLEN : メニュー表示文字列の最大長 - * 2, menu.cの以下の定義を変更する - * MENU_TITLE : メニューのタイトル - * 3, 以下の構造体を変更する - * MenuItem : メニュー表示内容および階層間情報 - * 4, 関数 ExecMenuItem() がメニュー項目に応じた処理を定義するハンドラなので、 - * 定義を行う - * 5, Mainから以下の関数を呼ぶ - * InitMenu : メニュー関連の初期化 - * DisplayMenuSet : メニュー機能の表示 - * ChangeMenuItem : メニュー選択項目の変更(この関数はキー操作時に呼び出すようにする) - * ExecMenuItem : メニュー項目に応じた処理の実行(この関数はキー操作時に呼び出すようにする) - * - * - * 不明な点は安田まで。 - */ - -#define MENU_TITLE "APP version viewer" -//#define NEW_MENU_POS // YASUDA -#define DRAW_LINE_AS_CHAR - -static char cItemStr[MENU_ITEM_NUM][MENU_ITEM_STRLEN]; -static char cItemSt2[MENU_ITEM_NUM][MENU_ITEM_STRLEN]; - -static menu_sheet_t MenuItem[MENU_DEPTH_NUM] = -{ - {-1, -1, cItemStr[0], -1, cItemStr[1], -1, cItemStr[2], -1, cItemStr[3], - -1, cItemStr[4], -1, cItemStr[5], -1, cItemStr[6], -1, cItemStr[7], - -1, cItemStr[8], -1, cItemStr[9], 1, cItemStr[10] }, - { 0, -1, cItemSt2[0], -1, cItemSt2[1], -1, cItemSt2[2], -1, cItemSt2[3], - -1, cItemSt2[4], -1, cItemSt2[5], -1, cItemSt2[6], -1, cItemSt2[7], - -1, cItemSt2[8], -1, cItemSt2[9], -1, cItemSt2[10] }, -}; - -static s16 MenuDepth; -static s16 MenuPos; -static u8 isMenuCancel = 0; - -//---- for RTC -static RTCTime myCurrentTime; -static int myResult; - -static void DisplayControlInfo(void); -static void DisplayMenu(void); -static void EnterMenuCancel(void); - -static void setAllItems(void); -static void setAppVerItem(void); -static void setPublicDataItem(void); -static void setPrivateDataItem(void); -static void setOtherDataItem(void); -static void setAllItems_OtherApp(void); -static void setOtherAppVerItem(void); -static void setOtherNandAppPublicDataItem(void); -static void setOtherNandAppPrivateDataItem(void); - -// YASUDA -extern FSResult g_fs_result; - -static s32 g_other_app_num = 0; -static s32 g_current_other_app = 0; - -#ifdef USER_MODE - char* APP_TYPE = "USER"; -#else - char* APP_TYPE = "SEQURE"; -#endif - - -//---------------------------------------------------------------- -// InitMenu -// -void InitMenu(void) -{ - MenuDepth = 0; - MenuPos = 2; - - GetOutNandAppInfo(); - - setAllItems(); -#if defined(DRAW_LINE_AS_CHAR) - STD_CopyString( MenuItem[0].sItem[1].cItemStr, "---------+------------" ); - STD_CopyString( MenuItem[0].sItem[5].cItemStr, "---------+------------" ); - STD_CopyString( MenuItem[0].sItem[9].cItemStr, "---------+------------" ); -#endif -} - -//---------------------------------------------------------------- -// DisplayMenuSet -// -void DisplayMenuSet(void) -{ - if(isMenuCancel > 0) - { - return; - } - - //PrintString(3, 3, 15, "parameter is %d", param); - DisplayMenu(); - - //---- display time - myResult = RTC_GetTime(&myCurrentTime); - if (myResult == 0 /*no error */ ) - { -#if !defined(NEW_MENU_POS) - PrintString(5, 21, 8, "%02d:%02d:%02d", - myCurrentTime.hour, myCurrentTime.minute, myCurrentTime.second); -#else - PrintString(5, 23, 8, "%02d:%02d:%02d", - myCurrentTime.hour, myCurrentTime.minute, myCurrentTime.second); -#endif - } - - //---- display counter - //PrintString(18, 20, 4, "%08X", OS_GetVBlankCount()); - - //---- display control infomation - DisplayControlInfo(); -} - -//---------------------------------------------------------------- -// DisplayControlInfo -// -static void DisplayControlInfo(void) -{ - if(MenuDepth == 0) - { - //---- display key description - PrintString(3, 2, 15, MENU_TITLE); - - if( MenuPos != 10 ) - { -#if !defined(NEW_MENU_POS) - PrintString(5, 17, 15, "[A] set current data"); - PrintString(5, 18, 15, "[X] set both data"); -#else - PrintString(5, 19, 15, "[A] set current data"); - PrintString(5, 20, 15, "[X] set both data"); -#endif - } - else - { -#if !defined(NEW_MENU_POS) - PrintString(5, 17, 15, "[A] show other app data"); - PrintString(5, 18, 15, "[X] set both data"); -#else - PrintString(5, 19, 15, "[A] show other app data"); - PrintString(5, 20, 15, "[X] set both data"); -#endif - } - } - else - { - //---- display key description - PrintString(3, 2, 15, "OTHER APP info"); - -#if !defined(NEW_MENU_POS) - PrintString(5, 17, 15, "[A/X] set data"); - PrintString(5, 18, 15, "[B] return main"); - PrintString(5, 19, 15, "[<-/->] switch apps"); -#else - PrintString(5, 19, 15, "[A/X] set data"); - PrintString(5, 20, 15, "[B] set both data"); - PrintString(5, 21, 15, "[<-/->] switch apps"); -#endif - } -} - -//---------------------------------------------------------------- -// DisplayMenu -// -static void DisplayMenu(void) -{ - u16 pos; - char *str; - - PrintString(0, 0, 14, APP_TYPE); - - - for(pos = 0; pos < MENU_ITEM_NUM; pos++) - { - str = MenuItem[MenuDepth].sItem[pos].cItemStr; - //---- display key description - if( str[0] != '\0' ) - { -#if !defined(DRAW_LINE_AS_CHAR) - PrintString(3, (s16)(5 + pos), 15, str); -#else - if( MenuDepth == 0 ) - { - if( (pos != 1) && (pos != 5) && (pos != 9) ) - { - PrintString(3, (s16)(5 + pos), 15, str); - } - else - { - PrintString(3, (s16)(5 + pos), 6, str); - } - } - else - { - if( (pos != 2) && (pos != 6) ) - { - PrintString(3, (s16)(5 + pos), 15, str); - } - else - { - PrintString(3, (s16)(5 + pos), 5, str); - } - } -#endif - } - - PrintString(1, (s16)(5 + MenuPos), 8, "#"); - } -} - - -//---------------------------------------------------------------- -// ChangeMenuItem -// -void ChangeMenuItem(u16 action) -{ - switch(action) - { - case MENU_ITEM_UP: - ColorString((s16)(1 + MenuPos), 5, 1, 0); - MenuPos--; - if(MenuPos < 0) - { - MenuPos = 0; - } - //動作のチューニング - if( MenuDepth == 0 ) - { - if( (MenuPos>=0) && (MenuPos<6) ){ - MenuPos = 2; - }else if( (MenuPos>=6) && (MenuPos<10) ){ - MenuPos = 6; - }else if( (MenuPos>=10) && (MenuPos<11) ){ - MenuPos = 10; - } - } - else - { - if( (MenuPos>=0) && (MenuPos<7) ){ - MenuPos = 3; - }else if( (MenuPos>=7) && (MenuPos<11) ){ - MenuPos = 7; - } - } - break; - case MENU_ITEM_DOWN: - ColorString((s16)(1 + MenuPos), 5, 1, 0); - MenuPos++; - if(MenuPos >= MENU_ITEM_NUM) - { - MenuPos--; - } - if(MenuItem[MenuDepth].sItem[MenuPos].cItemStr[0] == '\0') - { - MenuPos--; - } - //動作のチューニング - if( MenuDepth == 0 ) - { - if( (MenuPos>0) && (MenuPos<=2) ){ - MenuPos = 2; - }else if( (MenuPos>2) && (MenuPos<=6) ){ - MenuPos = 6; - }else if( (MenuPos>6) && (MenuPos<=10) ){ - MenuPos = 10; - } - } - else - { - if( (MenuPos>0) && (MenuPos<=3) ){ - MenuPos = 3; - }else if( (MenuPos>3) && (MenuPos<=10) ){ - MenuPos = 7; - } - } - break; - case MENU_DEPTH_UP: - MenuDepth = MenuItem[MenuDepth].nPrev; - MenuPos = 0; - if(MenuDepth < 0) - { - MenuDepth = 0; - } - break; - case MENU_DEPTH_DOWN: - { - s16 pos; - pos = MenuItem[MenuDepth].sItem[MenuPos].nNext; - if(pos >= 0) - { - MenuDepth = pos; - MenuPos = 0; - } - } - break; - } -} - - -//---------------------------------------------------------------- -// ExecMenuItem -// -void ExecMenuItem(void) -{ - switch(MenuDepth) - { - case 0: - switch(MenuPos) - { - case 0: - break; - case 2: - // Public data タイムスタンプ変更 - SetPublicDataTimeStamp(); - setPublicDataItem(); - break; - case 6: - // Private data タイムスタンプ変更 - SetPrivateDataTimeStamp(); - setPrivateDataItem(); - setOtherDataItem(); - break; - case 10: - // 他アプリデータ表示へ - ChangeMenuItem(MENU_DEPTH_DOWN); - MenuPos = 3; - setAllItems_OtherApp(); - break; - default: - break; - } - break; - case 1: - switch(MenuPos) - { - case 3: - // 該当アプリのPublic data タイムスタンプ変更 - SetOurNandAppPublicDataTimeStamp(g_current_other_app); - setOtherNandAppPublicDataItem(); - break; - case 7: - // 該当アプリのPrivate data タイムスタンプ変更 - SetOurNandAppPrivateDataTimeStamp(g_current_other_app); - setOtherNandAppPrivateDataItem(); - break; - default: - break; - } - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// ExecMenuItemB -// -void ExecMenuItemB(void) -{ - switch(MenuDepth) - { - case 1: - // メインメニューに戻る - ChangeMenuItem(MENU_DEPTH_UP); - MenuPos = 2; - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// ExecMenuItemX -// -void ExecMenuItemX(void) -{ - switch(MenuDepth) - { - case 0: - switch(MenuPos) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - // 両 data タイムスタンプ変更 - SetPublicDataTimeStamp(); - SetPrivateDataTimeStamp(); - setAllItems(); - break; - default: - break; - } - break; - case 1: - // 両 data タイムスタンプ変更 - SetOurNandAppPublicDataTimeStamp(g_current_other_app); - SetOurNandAppPrivateDataTimeStamp(g_current_other_app); - setAllItems_OtherApp(); - break; - default: - break; - } -} - - -//---------------------------------------------------------------- -// ExecMenuItemRight -// -void ExecMenuItemRight(void) -{ - switch(MenuDepth) - { - case 1: - // アプリ番号を変更 - if( g_other_app_num > 0 ) - { - if(++g_current_other_app >= g_other_app_num ) - { - g_current_other_app = 0; - } - // 表示書き換え - setAllItems_OtherApp(); - } - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// ExecMenuItemLeft -// -void ExecMenuItemLeft(void) -{ - switch(MenuDepth) - { - case 1: - // アプリ番号を変更 - if( g_other_app_num > 0 ) - { - if(--g_current_other_app < 0) - { - g_current_other_app = g_other_app_num - 1; - } - // 表示書き換え - setAllItems_OtherApp(); - } - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// EnterMenuCancel -// -static void EnterMenuCancel(void) -{ - isMenuCancel = 1; - ClearScreen(); -} - -//---------------------------------------------------------------- -// ExitMenuCancel -// -void ExitMenuCancel(void) -{ - if(isMenuCancel > 0){ - isMenuCancel = 0; - } -} - -void SetMenuString(u32 depth, u32 ipos, char *str) -{ - STD_CopyString( MenuItem[depth].sItem[ipos].cItemStr, str ); -} - -void SetCurrentMenuString(char *str) -{ - SetMenuString( MenuDepth, MenuPos, str ); -} - -static void setAllItems(void) -{ - setAppVerItem(); - setPublicDataItem(); - setPrivateDataItem(); - setOtherDataItem(); -} - -static void setAppVerItem(void) -{ - char ver[8]; - - GetAppVersionString(ver); - STD_TSPrintf( cItemStr[0], "APP ver : %s", ver ); -} - -static void setPublicDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetPublicDataInfoStrings( ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemStr[2], "PUB ver : %s", ver ); - STD_TSPrintf( cItemStr[3], " date : %s", time1 ); - STD_TSPrintf( cItemStr[4], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemStr[2], "PUB : NONE", ver ); - STD_TSPrintf( cItemStr[3], " " ); - STD_TSPrintf( cItemStr[4], " " ); - } -} - -static void setPrivateDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetPrivateDataInfoStrings( ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemStr[6], "PRV ver : %s", ver ); - STD_TSPrintf( cItemStr[7], " date : %s", time1 ); - STD_TSPrintf( cItemStr[8], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemStr[6], "PRV : NONE" ); - STD_TSPrintf( cItemStr[7], " " ); - STD_TSPrintf( cItemStr[8], " " ); - } -} - -static void setOtherDataItem(void) -{ - g_other_app_num = GetOurNandAppNum(); - STD_TSPrintf( cItemStr[10], "OTHER : %d apps", g_other_app_num ); -} - -static void setAllItems_OtherApp(void) -{ - setOtherAppVerItem(); - setOtherNandAppPublicDataItem(); - setOtherNandAppPrivateDataItem(); - -#if defined(DRAW_LINE_AS_CHAR) - STD_CopyString( MenuItem[1].sItem[2].cItemStr, "---------+-------------" ); - STD_CopyString( MenuItem[1].sItem[6].cItemStr, "---------+-------------" ); -#endif -} - -static void setOtherAppVerItem(void) -{ - char ver[8], ini[8]; - - if( g_other_app_num == 0 ) - { - STD_TSPrintf( cItemSt2[0], "OTHER APP : none" ); - } - else - { - GetOurNandAppVersionString( g_current_other_app, ver, ini ); - - STD_TSPrintf( cItemSt2[0], "No. : %02d/%02d (%s)", - g_current_other_app + 1, g_other_app_num, ini ); - STD_TSPrintf( cItemSt2[1], "APP ver : %s", ver ); - } -} - - -static void setOtherNandAppPublicDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetOurNandAppPublicDataInfoStrings( g_current_other_app, ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemSt2[3], "PUB ver : %s", ver ); - STD_TSPrintf( cItemSt2[4], " date : %s", time1 ); - STD_TSPrintf( cItemSt2[5], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemSt2[3], "PUB : NONE", ver ); - STD_TSPrintf( cItemSt2[4], " " ); - STD_TSPrintf( cItemSt2[5], " " ); - } -} - -static void setOtherNandAppPrivateDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetOurNandAppPrivateDataInfoStrings( g_current_other_app, ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemSt2[7], "PRV ver : %s", ver ); - STD_TSPrintf( cItemSt2[8], " date : %s", time1 ); - STD_TSPrintf( cItemSt2[9], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemSt2[7], "PRV : NONE" ); - STD_TSPrintf( cItemSt2[8], " " ); - STD_TSPrintf( cItemSt2[9], " " ); - } -} diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/screen.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/screen.c deleted file mode 100644 index 58b6c424..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion/src/screen.c +++ /dev/null @@ -1,115 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include "screen.h" - -u16 gScreen[32 * 32]; - -// ** these code are refer to rtc sample. thanks. -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: clear screen buffer - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast((void *)gScreen, sizeof(gScreen)); -} - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: enter string into screen buffer - string must be within 32 chars - - Arguments: x : x - y : y - palette : color (0-15) - text : string. end mark is NULL - - Returns: None. - *---------------------------------------------------------------------------*/ -void PrintString(s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2], *tempPtr; - s32 i; - u16 *p, *pLimit; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0; - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - tempPtr = &temp[0]; - - for (i = 0; *tempPtr; i++, tempPtr++) - { - *p = (u16)((palette << 12) | *tempPtr); - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} - -/*---------------------------------------------------------------------------* - Name: ColorString - - Description: change string color which is put in screen buffer - - Arguments: x : x - y : y - length : number of characters to change color - palette : color (0-15) - - Returns: None. - *---------------------------------------------------------------------------*/ -void ColorString(s16 x, s16 y, s16 length, u8 palette) -{ - s32 i; - u16 *p, *pLimit; - - if (length < 0) - return; - - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - - for (i = 0; i < length; i++) - { - u16 temp = *p; - temp &= 0x0fff; - temp |= (palette << 12); - *p = temp; - - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/Makefile b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/Makefile deleted file mode 100644 index 19d62810..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - save_data - DisplayVersion -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED -TWL_NANDAPP := TRUE - -SRCS = main.c font.c screen.c menu.c dataver.c -MASTER_NAME = SaveDataTest -APP_NAME = $(MASTER_NAME)_TARGET -TARGET_BIN = $(APP_NAME).tad - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = test.autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_nand.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - TitleName=VER_CHECKER \ - GameCode=4VDA \ - BannerFile=./banner/banner_TARGET.bnr \ - PublicSaveDataSize=16K \ - PrivateSaveDataSize=16K - - -#------------------------- -#-- カードアプリと同様に ROM-FS にファイルを持たせます。 - -#MAKEROM_ROMROOT = ./rom_data -#MAKEROM_ROMFILES = *.* - -#------------------------- -# インストール指定 - -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(MASTER_NAME) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -#------------------------- -#-- バナーデータを生成します -BANNER = ./banner/banner.bnr -BANNERSRC := $(wildcard ./banner/data/Cell/*.nce) -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - -#------------------------- -# rom 内のファイルは全て自動生成なので clean で削除されるようにします -LDIRT_CLEAN = $(MAKEROM_ROMROOT) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -#include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -#.PHONY: build_time - -do-build: $(TARGETS) - - -$(BINDIR)/$(TARGET_BIN_BASENAME).$(TWL_ELF_EXT): make_dir -#build_time - -#------------------------- -#-- rom_data/build_time.txt を作成します。 - -make_dir: - $(INSTALL) -d $(MAKEROM_ROMROOT) -#build_time: -# $(INSTALL) -d $(MAKEROM_ROMROOT) -# echo -n "build at `date \"+%Y/%m/%d %H:%M:%S\"` on \"`hostname`\"" > $(MAKEROM_ROMROOT)/build_time.txt - -#------------------------- -#-- バナー作成用ターゲット - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/banner/banner_TARGET.bnr b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/banner/banner_TARGET.bnr deleted file mode 100644 index 878bdab7..00000000 Binary files a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/banner/banner_TARGET.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/dataver.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/dataver.h deleted file mode 100644 index c8756072..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/dataver.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: dataver.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 DATAVER_H_ -#define DATAVER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -void GetAppVersionString(char *str); -BOOL GetPublicDataInfoStrings(char *verstr, char *timestr, char *datestr); -BOOL GetPrivateDataInfoStrings(char *verstr, char *timestr, char *datestr); -BOOL SetPublicDataTimeStamp(void); -BOOL SetPrivateDataTimeStamp(void); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* DATAVER_H_ */ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/font.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/font.h deleted file mode 100644 index a323d9e1..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/font.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.h - - Copyright 2003 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/menu.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/menu.h deleted file mode 100644 index c8a58ef2..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/menu.h +++ /dev/null @@ -1,72 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: menu.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 MENU_H_ -#define MENU_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -//メニューに関する定義 -#define MENU_DEPTH_NUM 1 -#define MENU_ITEM_NUM 9 -#define MENU_ITEM_STRLEN 24 - -//ChangeMenuItemのパラメータ -#define MENU_ITEM_UP 0 -#define MENU_ITEM_DOWN 1 -#define MENU_DEPTH_UP 2 -#define MENU_DEPTH_DOWN 3 - - -typedef struct { - s16 nNext; // -1: これ以上枝はない - //char cItemStr[MENU_ITEM_STRLEN]; - char *cItemStr; -}menu_item_t; - -typedef struct { - s16 nPrev; // -1: 自分が親 - menu_item_t sItem[MENU_ITEM_NUM]; -}menu_sheet_t; - - -void DisplayMenuSet(void); -void InitMenu(void); -void ChangeMenuItem(u16 action); -void ExecMenuItem(void); -void ExecMenuItemX(void); -void ExitMenuCancel(void); -void SetMenuString(u32 depth, u32 ipos, char *str); -void SetCurrentMenuString(char *str); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* MENU_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/screen.h b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/screen.h deleted file mode 100644 index 39b44f73..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/include/screen.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: screen.h - - Copyright 2003 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern u16 gScreen[32 * 32]; - -void ClearScreen(void); -void PrintString(s16 x, s16 y, u8 palette, char *text, ...); -void ColorString(s16 x, s16 y, s16 length, u8 palette); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/readme.txt b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/readme.txt deleted file mode 100644 index ef1ef7d5..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/readme.txt +++ /dev/null @@ -1,23 +0,0 @@ -セーブデータバージョンチェックソフトの相方 - -このソフトはDisplayVersionの相方です。 -以下のことをします。 - ・アプリバージョンを表示する - ・アプリバージョンをパブリックセーブデータ・プライベートセーブデータに保存する - ・各セーブデータに保存したバージョン番号およびタイムスタンプを表示する - -DisplayVersionとの違いは共有データアクセス機能がないこととイニシャルコードが違うこと -にあります。 - -【使い方】 -・ソフトを起動すると以下の表示を行います -  アプリバージョン -  パブリックセーブデータに保存したバージョン番号およびタイムスタンプ -  プライベートセーブデータに保存したバージョン番号およびタイムスタンプ -・矢印↑↓で項目を選択しAボタンを押すと該当するセーブデータを書き換えます -・Xボタンを押すと全セーブデータを書き換えます - -【制限事項】 -DisplayVersionと同様の制限事項があります。 -書き換えを実行してもタイムスタンプに2秒以内の時間のずれが発生します -(ファイルシステムは2秒間隔でしか設定しないため) diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/dataver.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/dataver.c deleted file mode 100644 index 65f53ae5..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/dataver.c +++ /dev/null @@ -1,379 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: dataver.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 "dataver.h" -#include - -#define ACCESS_TEST_1 -//#define ACCESS_TEST_2 -//#define ACCESS_TEST_3 -//#define ACCESS_TEST_4 -//#define ACCESS_TEST_5 - -#define PUBDATA_VERSION_PATH "dataPub:/version" -#define PRVDATA_VERSION_PATH "dataPrv:/version" -#define VERSION_LEN 3 - -static BOOL getDataInfoStrings(char *path, char *verstr, char *timestr, char *datestr); -static BOOL setDataTimeStamp(char *path); - -FSResult g_fs_result; - -void GetAppVersionString(char *str) -{ - u8 *pHeader, version; - - pHeader = (u8*)HW_TWL_ROM_HEADER_BUF; - version = *(pHeader + 0x1e); - - str[0] = (char)(version / 100 + 0x30); - str[1] = (char)((version % 100) / 10 + 0x30); - str[2] = (char)(version % 10 + 0x30); - str[3] = '\0'; -} - -BOOL GetPublicDataInfoStrings(char *verstr, char *timestr, char *datestr) -{ - return getDataInfoStrings(PUBDATA_VERSION_PATH, verstr, timestr, datestr); -} - -static BOOL getDataInfoStrings(char *path, char *verstr, char *timestr, char *datestr) -{ - FSFile file; - FSPathInfo info; - FSResult fresult; - - FS_InitFile( &file ); - - if( !FS_GetPathInfo(path, &info) ) - { - fresult = FS_GetArchiveResultCode(path); - return FALSE; - } - - STD_TSPrintf( timestr, "%04d/%02d/%02d", - info.mtime.year, info.mtime.month, info.mtime.day ); - STD_TSPrintf( datestr, "%02d:%02d:%02d", - info.mtime.hour, info.mtime.minute, info.mtime.second ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_R ) == FALSE ) - { - return FALSE; - } - - if( FS_ReadFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - return FALSE; - } - verstr[VERSION_LEN] = '\0'; - - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } - - return TRUE; -} - -BOOL GetPrivateDataInfoStrings(char *verstr, char *timestr, char *datestr) -{ - return getDataInfoStrings(PRVDATA_VERSION_PATH, verstr, timestr, datestr); -} - -BOOL SetPublicDataTimeStamp() -{ - return setDataTimeStamp(PUBDATA_VERSION_PATH); -} - -static BOOL setDataTimeStamp(char *path) -{ - FSFile file; - //FSPathInfo info; - char verstr[8]; - FSResult fresult; - - GetAppVersionString( verstr ); - - FS_InitFile( &file ); - - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - if( !FS_CreateFile(path, FS_PERMIT_R | FS_PERMIT_W) ) - { - fresult = FS_GetArchiveResultCode(path); - g_fs_result = fresult; - return FALSE; - } - if( FS_OpenFileEx( &file, path, FS_FILEMODE_W ) == FALSE ) - { - return FALSE; - } - } - - if( FS_WriteFile( &file, verstr, VERSION_LEN ) != VERSION_LEN ) - { - return FALSE; - } - - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } - - return TRUE; -} - -BOOL SetPrivateDataTimeStamp() -{ - return setDataTimeStamp(PRVDATA_VERSION_PATH); -} - - -#if 0 -/* *INDENT-OFF* */ -static const char * const fs_result_strings[] = -{ - "FS_RESULT_SUCCESS", - "FS_RESULT_FAILURE", - "FS_RESULT_BUSY", - "FS_RESULT_CANCELED", - "FS_RESULT_UNSUPPORTED", - "FS_RESULT_ERROR", - "FS_RESULT_INVALID_PARAMETER", - "FS_RESULT_NO_MORE_RESOUCE", - "FS_RESULT_ALREADY_DONE", - "FS_RESULT_PERMISSION_DENIED", - "FS_RESULT_MEDIA_FATAL", - "FS_RESULT_NO_ENTRY", - "FS_RESULT_MEDIA_NOTHING", - "FS_RESULT_MEDIA_UNKNOWN", - "FS_RESULT_BAD_FORMAT", -}; -static const size_t fs_result_string_max = sizeof(fs_result_strings) / sizeof(*fs_result_strings); -SDK_COMPILER_ASSERT(fs_result_string_max == FS_RESULT_MAX); -/* *INDENT-ON* */ - -static void ReportLastErrorPath(const char *path) -{ - FSResult result = FS_GetArchiveResultCode(path); - - SDK_ASSERT((result >= 0) && (result < fs_result_string_max)); - OS_TPrintf("FS error:\n \"%s\"\n %s\n", - path, fs_result_strings[result]); -} - -static void ReportLastErrorFile(const FSFile *file) -{ - FSArchive *arc = FS_GetAttachedArchive(file); - FSResult result = FS_GetResultCode(file); - - SDK_ASSERT((result >= 0) && (result < fs_result_string_max)); - OS_TPrintf("FS error:\n (archive \"%s:\")\n %s\n", - FS_GetArchiveName(arc), fs_result_strings[result]); -} - -BOOL PubDataAccessTest(void) -{ - BOOL ret; - FSFile file, dir; - FSResult res; - FSArchiveResource resource; - static const char *testdir = "dataPub:/testdir"; - static const char *testfile = "dataPub:/testdir/test.txt"; - -#if defined(ACCESS_TEST_1) - FS_InitFile( &file ); - FS_InitFile( &dir ); - -#if 1 - if( FS_OpenDirectory( &dir, testdir, FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - OS_TPrintf("%s already exists\n", testdir); - FS_CloseDirectory( &dir ); - } - else if( FS_CreateDirectory( testdir, FS_PERMIT_R | FS_PERMIT_W ) == FALSE ) - { - res = FS_GetArchiveResultCode( testdir ); - return FALSE; - } -#endif - -#if 1 - if( FS_CreateFile( testfile, FS_PERMIT_R | FS_PERMIT_W ) == FALSE ) - { - OS_TPrintf("dataPub:/testdir/test.txt already exists\n"); - //return FALSE; - } - - // dataPub:/testdir/test.txt を開いてみる - if( FS_OpenFileEx( &file, testfile, FS_FILEMODE_W ) == FALSE ) - { - return FALSE; - } - if( FS_CloseFile( &file ) == FALSE ) - { - return FALSE; - } -#endif -#elif defined(ACCESS_TEST_2) - if( FS_GetArchiveResource("rom:/", &resource) == FALSE ) - { - res = FS_GetArchiveResultCode( "dataPub:/" ); - return FALSE; - } -#elif defined(ACCESS_TEST_3) - { - FSArchive* FSi_GetArchiveChain(void); - FSArchive *arc; - - for (arc = FSi_GetArchiveChain(); arc ; arc = arc->next) - { - FSPathInfo info[1]; - char path[FS_ENTRY_LONGNAME_MAX]; - - OS_Printf("archive - %s\n", FS_GetArchiveName(arc)); - } - } -#elif defined(ACCESS_TEST_4) - { - static const char *basedir = "dataPub:/test"; - static const char *basedir2 = "dataPub:"; - char tmppath[FS_ENTRY_LONGNAME_MAX]; - FSArchiveResource resource; - static FSResult fresult; - - // at first, initialize FSFile structures. (equal to C++ constructor) - FSFile sfile[1]; - FSFile sdir[1]; - FS_InitFile(sfile); - FS_InitFile(sdir); - - if( !FS_GetArchiveResource(basedir2, &resource) ) - { - fresult = FS_GetArchiveResultCode(basedir2); - return FALSE; - } - - // DIRECTORY CREATION TEST - { - if (FS_OpenDirectory(sdir, basedir, FS_FILEMODE_R | FS_FILEMODE_W)) - { - OS_TPrintf("\"%s\" already exists.\n", basedir); - (void)FS_CloseDirectory(sdir); - } - else if (!FS_CreateDirectory(basedir, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(basedir); - OS_TPanic("FS_CreateDirectory(\"%s\") failed.\n", basedir); - } - else - { - int i; - OS_TPrintf("FS_CreateDirectory(\"%s\") succeeded.\n", basedir); - for (i = 1; i <= 3; ++i) - { - (void)STD_TSPrintf(tmppath, "%s/dir%d", basedir, i); - if (!FS_CreateDirectory(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_CreateDirectory(%s) failed.\n", tmppath); - } - else - { - OS_TPrintf("FS_CreateDirectory(%s) succeeded.\n", tmppath); - } - } - } - } - // DIRECTORY DELETION TEST - { - STD_TSPrintf(tmppath, "%s/tmp/", basedir); - if (!FS_CreateDirectory(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - OS_TPrintf("FS_CreateDirectory(\"%s\") failed.\n", tmppath); - } - if (!FS_DeleteDirectory(tmppath)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_DeleteDirectory(\"%s\") failed.\n", tmppath); - } - } - // DIRECTORY DELETE - if (!FS_DeleteDirectoryAuto(basedir)) - { - ReportLastErrorPath(basedir); - OS_TPanic("FS_DeleteDirectoryAuto(\"%s\") failed.\n", basedir); - } - } -#elif defined(ACCESS_TEST_5) - { - static const char *basedir = "dataPub:/test"; - char tmppath[FS_ENTRY_LONGNAME_MAX]; - - // at first, initialize FSFile structures. (equal to C++ constructor) - FSFile sfile[1]; - FSFile sdir[1]; - FS_InitFile(sfile); - FS_InitFile(sdir); - - // FILE CREATION TEST - { - enum { file_max = 3 }; - static const char *(message[file_max]) = - { - "hello, world!", - "foobar", - "hogehoge", - }; - int i; - for (i = 0; i < file_max; ++i) - { - STD_TSPrintf(tmppath, "%s/arm9%d.txt", basedir, i); - if (!FS_CreateFile(tmppath, FS_PERMIT_R | FS_PERMIT_W)) - { - ReportLastErrorPath(tmppath); - } - else - { - OS_TPrintf("FS_CreateFile(%s) succeeded.\n", tmppath); - if (!FS_OpenFileEx(sfile, tmppath, FS_FILEMODE_W)) - { - ReportLastErrorPath(tmppath); - OS_TPanic("FS_OpenFileEx(%s) failed.\n", tmppath); - } - else - { - if (FS_WriteFile(sfile, message[i], STD_GetStringLength(message[i])) < 0) - { - ReportLastErrorFile(sfile); - OS_TPanic("FS_WritFile() failed.\n"); - } - else - { - OS_TPrintf("FS_WritFile() succeeded.\n"); - } - } - (void)FS_CloseFile(sfile); - } - } - } - } -#endif - - return TRUE; -} -#endif diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/font.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/font.c deleted file mode 100644 index 30670436..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/font.c +++ /dev/null @@ -1,574 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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 "font.h" - -//---------------------------------------------------------------- -// Character data -// -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -//---------------------------------------------------------------- -// Palette data -// -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/main.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/main.c deleted file mode 100644 index ab15bdee..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/main.c +++ /dev/null @@ -1,216 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: main.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include -#include "font.h" -#include "screen.h" -#include "menu.h" - -static void myInit(void); -static void myVBlankIntr(void); -static void PrintBootType(void); - -extern BOOL PubDataAccessTest(void); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: main - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - u16 trigger; - u16 preButton = PAD_Read(); - u16 button; - - //---------------- initialize - myInit(); - InitMenu(); - PrintBootType(); - -#if 0 - if( PubDataAccessTest() == FALSE ) - { - OS_Printf("Data access NG\n"); - return; - } -#endif - - //---------------- main loop - while (TRUE) - { - button = PAD_Read(); - trigger = (u16)((button ^ preButton) & button); - preButton = button; - - //---- clear screen buffer - ClearScreen(); - - //---- display menus - DisplayMenuSet(); - - //---- press UP key (toggle menu) - if(trigger & PAD_KEY_UP) - { - ChangeMenuItem(MENU_ITEM_UP); - } - - if(trigger & PAD_KEY_DOWN) - { - ChangeMenuItem(MENU_ITEM_DOWN); - } - - //---- push A - if (trigger & PAD_BUTTON_A) - { - ExecMenuItem(); - } - //---- push X - if (trigger & PAD_BUTTON_X) - { - ExecMenuItemX(); - } - - OS_WaitVBlankIntr(); - } -} - -//---------------------------------------------------------------- -// myInit -// -void myInit(void) -{ - //---- init - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - RTC_Init(); - FX_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - //---- init displaying - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- setting 2D for top screen - GX_SetBankForBG(GX_VRAM_BG_128_A); - - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - G2_BG0Mosaic(FALSE); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - - //---- setting 2D for bottom screen - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - G2S_BG0Mosaic(FALSE); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - //---- screen - MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen)); - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - //---- init interrupt - OS_SetIrqFunction(OS_IE_V_BLANK, myVBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - //---- FileSystemInit - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - FS_Init( FS_DMA_NOT_USE ); - - //---- start displaying - GX_DispOn(); - GXS_DispOn(); -} - -//---------------------------------------------------------------- -// myVBlankIntr -// vblank interrupt handler -// -static void myVBlankIntr(void) -{ - //---- upload pseudo screen to VRAM - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -static void PrintBootType(void) -{ - const OSBootType btype = OS_GetBootType(); - - switch( btype ) - { - case OS_BOOTTYPE_ROM: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_ROM\n"); break; - case OS_BOOTTYPE_NAND: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_NAND\n"); break; - default: - { - OS_Warning("unknown BootType(=%d)", btype); - } - break; - } -} - diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/menu.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/menu.c deleted file mode 100644 index a81ad802..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/menu.c +++ /dev/null @@ -1,392 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: menu.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 "font.h" -#include "screen.h" -#include "menu.h" -#include "dataver.h" -#include - -/* - * menu.c - * メニュー表示機能 - * - * テストアプリに適した簡単なメニュー表示を行う。メニュー階層は複数段可能。 - * - * なお、この機能を使用するためには、以下のソースが必要 - * font.c, font.h, screen.c, screen.h - * - * 導入手順: - * 1, menu.hの以下の定義値を変更する - * MENU_DEPTH_NUM : メニューの階層数 - * MENU_ITEM_NUM : メニュー項目の最大数 - * MENU_ITEM_STRLEN : メニュー表示文字列の最大長 - * 2, menu.cの以下の定義を変更する - * MENU_TITLE : メニューのタイトル - * 3, 以下の構造体を変更する - * MenuItem : メニュー表示内容および階層間情報 - * 4, 関数 ExecMenuItem() がメニュー項目に応じた処理を定義するハンドラなので、 - * 定義を行う - * 5, Mainから以下の関数を呼ぶ - * InitMenu : メニュー関連の初期化 - * DisplayMenuSet : メニュー機能の表示 - * ChangeMenuItem : メニュー選択項目の変更(この関数はキー操作時に呼び出すようにする) - * ExecMenuItem : メニュー項目に応じた処理の実行(この関数はキー操作時に呼び出すようにする) - * - * - * 不明な点は安田まで。 - */ - -#define MENU_TITLE "APP version viewer" -//#define NEW_MENU_POS // YASUDA -#define DRAW_LINE_AS_CHAR - -static char cItemStr[9][MENU_ITEM_STRLEN]; - -static menu_sheet_t MenuItem[MENU_DEPTH_NUM] = -{ - {-1, 1, cItemStr[0], 2, cItemStr[1], 3, cItemStr[2], 4, cItemStr[3], - 5, cItemStr[4], 6, cItemStr[5], 7, cItemStr[6], 8, cItemStr[7], - -1, cItemStr[8] } -}; - -static s16 MenuDepth; -static s16 MenuPos; -static u8 isMenuCancel; - -//---- for RTC -static RTCTime myCurrentTime; -static int myResult; - -static void DisplayMenu(void); -static void EnterMenuCancel(void); - -static void setAllItems(void); -static void setAppVerItem(void); -static void setPublicDataItem(void); -static void setPrivateDataItem(void); - -// YASUDA -extern FSResult g_fs_result; - -//---------------------------------------------------------------- -// InitMenu -// -void InitMenu(void) -{ - MenuDepth = 0; - MenuPos = 2; - - setAllItems(); -#if defined(DRAW_LINE_AS_CHAR) - STD_CopyString( MenuItem[0].sItem[1].cItemStr, "---------+------------" ); - STD_CopyString( MenuItem[0].sItem[5].cItemStr, "---------+------------" ); -#endif -} - -//---------------------------------------------------------------- -// DisplayMenuSet -// -void DisplayMenuSet(void) -{ - if(isMenuCancel > 0) - { - return; - } - - //---- display key description - PrintString(3, 2, 15, MENU_TITLE); - //PrintString(3, 3, 15, "parameter is %d", param); - DisplayMenu(); - - //---- display time - myResult = RTC_GetTime(&myCurrentTime); - if (myResult == 0 /*no error */ ) - { -#if !defined(NEW_MENU_POS) - PrintString(5, 21, 8, "%02d:%02d:%02d", - myCurrentTime.hour, myCurrentTime.minute, myCurrentTime.second); -#else - PrintString(5, 23, 8, "%02d:%02d:%02d", - myCurrentTime.hour, myCurrentTime.minute, myCurrentTime.second); -#endif - } - - //---- display counter - //PrintString(18, 20, 4, "%08X", OS_GetVBlankCount()); - - //---- display control infomation -#if !defined(NEW_MENU_POS) - PrintString(5, 17, 15, "[A] set current data"); - PrintString(5, 18, 15, "[X] set both data"); - PrintString(5, 19, 15, "[up/down] switch item"); -#else - PrintString(5, 19, 15, "[A] set current data"); - PrintString(5, 20, 15, "[X] set both data"); - PrintString(5, 21, 15, "[up/down] switch item"); -#endif -} - -//---------------------------------------------------------------- -// DisplayMenu -// -static void DisplayMenu(void) -{ - u16 pos; - char *str; - - for(pos = 0; pos < MENU_ITEM_NUM; pos++) - { - str = MenuItem[MenuDepth].sItem[pos].cItemStr; - //---- display key description - if( str[0] != '\0' ) - { -#if !defined(DRAW_LINE_AS_CHAR) - PrintString(3, (s16)(5 + pos), 15, str); -#else - if( (pos != 1) && (pos != 5) ) - { - PrintString(3, (s16)(5 + pos), 15, str); - } - else - { - PrintString(3, (s16)(5 + pos), 6, str); - } -#endif - } - - PrintString(1, (s16)(5 + MenuPos), 8, "#"); - } -} - - -//---------------------------------------------------------------- -// ChangeMenuItem -// -void ChangeMenuItem(u16 action) -{ - switch(action) - { - case MENU_ITEM_UP: - ColorString((s16)(1 + MenuPos), 5, 1, 0); - MenuPos--; - if(MenuPos < 0) - { - MenuPos = 0; - } - //動作のチューニング - if( (MenuPos>=0) && (MenuPos<6) ) - { - MenuPos = 2; - } - if( (MenuPos>=6) && (MenuPos<9) ) - { - MenuPos = 6; - } - break; - case MENU_ITEM_DOWN: - ColorString((s16)(1 + MenuPos), 5, 1, 0); - MenuPos++; - if(MenuPos >= MENU_ITEM_NUM) - { - MenuPos--; - } - if(MenuItem[MenuDepth].sItem[MenuPos].cItemStr[0] == '\0') - { - MenuPos--; - } - //動作のチューニング - if( (MenuPos>0) && (MenuPos<=2) ) - { - MenuPos = 2; - } - if( (MenuPos>2) && (MenuPos<=9) ) - { - MenuPos = 6; - } - break; - case MENU_DEPTH_UP: - MenuDepth = MenuItem[MenuDepth].nPrev; - MenuPos = 0; - if(MenuDepth < 0) - { - MenuDepth = 0; - } - break; - case MENU_DEPTH_DOWN: - { - s16 pos; - pos = MenuItem[MenuDepth].sItem[MenuPos].nNext; - if(pos >= 0) - { - MenuDepth = pos; - MenuPos = 0; - } - } - break; - } -} - - -//---------------------------------------------------------------- -// ExecMenuItem -// -void ExecMenuItem(void) -{ - switch(MenuDepth) - { - case 0: - switch(MenuPos) - { - case 0: - break; - case 1: - case 2: - case 3: - // Public data タイムスタンプ変更 - SetPublicDataTimeStamp(); -#if 0 // YASUDA - STD_TSPrintf( cItemStr[1], "PUB err : %d", g_fs_result ); -#else - setPublicDataItem(); -#endif - break; - case 4: - case 5: - case 6: - // Private data タイムスタンプ変更 - SetPrivateDataTimeStamp(); - setPrivateDataItem(); - break; - default: - break; - } - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// ExecMenuItemX -// -void ExecMenuItemX(void) -{ - switch(MenuDepth) - { - case 0: - switch(MenuPos) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - // 両 data タイムスタンプ変更 - SetPublicDataTimeStamp(); - SetPrivateDataTimeStamp(); - setAllItems(); - break; - default: - break; - } - break; - default: - break; - } -} - -//---------------------------------------------------------------- -// EnterMenuCancel -// -static void EnterMenuCancel(void) -{ - isMenuCancel = 1; - ClearScreen(); -} - -//---------------------------------------------------------------- -// ExitMenuCancel -// -void ExitMenuCancel(void) -{ - if(isMenuCancel > 0){ - isMenuCancel = 0; - } -} - -void SetMenuString(u32 depth, u32 ipos, char *str) -{ - STD_CopyString( MenuItem[depth].sItem[ipos].cItemStr, str ); -} - -void SetCurrentMenuString(char *str) -{ - SetMenuString( MenuDepth, MenuPos, str ); -} - -static void setAllItems(void) -{ - setAppVerItem(); - setPublicDataItem(); - setPrivateDataItem(); -} - -static void setAppVerItem(void) -{ - char ver[8]; - - GetAppVersionString(ver); - STD_TSPrintf( cItemStr[0], "APP ver : %s", ver ); -} - -static void setPublicDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetPublicDataInfoStrings( ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemStr[2], "PUB ver : %s", ver ); - STD_TSPrintf( cItemStr[3], " date : %s", time1 ); - STD_TSPrintf( cItemStr[4], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemStr[2], "PUB : NONE", ver ); - STD_TSPrintf( cItemStr[3], " " ); - STD_TSPrintf( cItemStr[4], " " ); - } -} - -static void setPrivateDataItem(void) -{ - char ver[8], time1[16], time2[16]; - - if( GetPrivateDataInfoStrings( ver, time1, time2 ) == TRUE ) - { - STD_TSPrintf( cItemStr[6], "PRV ver : %s", ver ); - STD_TSPrintf( cItemStr[7], " date : %s", time1 ); - STD_TSPrintf( cItemStr[8], " : %s", time2 ); - } - else - { - STD_TSPrintf( cItemStr[6], "PRV : NONE" ); - STD_TSPrintf( cItemStr[7], " " ); - STD_TSPrintf( cItemStr[8], " " ); - } -} diff --git a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/screen.c b/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/screen.c deleted file mode 100644 index 58b6c424..00000000 --- a/build/debugsoft/MakerTitle/SaveData/DisplayVersion_target/src/screen.c +++ /dev/null @@ -1,115 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include "screen.h" - -u16 gScreen[32 * 32]; - -// ** these code are refer to rtc sample. thanks. -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: clear screen buffer - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast((void *)gScreen, sizeof(gScreen)); -} - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: enter string into screen buffer - string must be within 32 chars - - Arguments: x : x - y : y - palette : color (0-15) - text : string. end mark is NULL - - Returns: None. - *---------------------------------------------------------------------------*/ -void PrintString(s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2], *tempPtr; - s32 i; - u16 *p, *pLimit; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0; - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - tempPtr = &temp[0]; - - for (i = 0; *tempPtr; i++, tempPtr++) - { - *p = (u16)((palette << 12) | *tempPtr); - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} - -/*---------------------------------------------------------------------------* - Name: ColorString - - Description: change string color which is put in screen buffer - - Arguments: x : x - y : y - length : number of characters to change color - palette : color (0-15) - - Returns: None. - *---------------------------------------------------------------------------*/ -void ColorString(s16 x, s16 y, s16 length, u8 palette) -{ - s32 i; - u16 *p, *pLimit; - - if (length < 0) - return; - - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - - for (i = 0; i < length; i++) - { - u16 temp = *p; - temp &= 0x0fff; - temp |= (palette << 12); - *p = temp; - - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} diff --git a/build/debugsoft/MakerTitle/SaveData/Makefile b/build/debugsoft/MakerTitle/SaveData/Makefile deleted file mode 100644 index ec164d0e..00000000 --- a/build/debugsoft/MakerTitle/SaveData/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - save_data -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = DisplayVersion_target \ - DisplayVersion \ - - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/MakerTitle/SaveData/readme.txt b/build/debugsoft/MakerTitle/SaveData/readme.txt deleted file mode 100644 index 5290e288..00000000 --- a/build/debugsoft/MakerTitle/SaveData/readme.txt +++ /dev/null @@ -1,30 +0,0 @@ -同一メーカータイトルのセーブデータ検証アプリ - -【概要】 - -同一メーカータイトルアプリのセーブデータへのアクセスを検証するアプリケーションセットです。 - - -【アプリケーションリスト】 -コンパイルすると、/debugsoft/dispver以下に以下のファイルが生成されます。 - -・dispver_TARGET.tad [4VDA] -  … セーブデータをアクセスされるアプリ(ダミーアプリ) - -・dispver_SEQURE.tad [4S4A] -  … 同一メーカータイトルへのアクセスを行うセキュアアプリ -・dispver_USER.tad  [4S5A] -  … 同一メーカータイトルへのアクセスを行うユーザアプリ - - -【実行手順】 -Nmenu等を使って、3つのファイル全てをNANDにインポートします。 -その後、SEQURE, USERを起動すると、TARGETのアプリにアクセスできることが確認できます。 -アプリ自身の仕様については、/DisplayVersion 以下のreadme.txtを参照して下さい。 - - -【制限事項】 -・USERアプリについては、OTHERや APP Verなどの項目が正常には表示されません。 -・USERアプリについて、OTHER が 0 appsいなっていても、そこでAボタンを押すと、4VDAのセーブデータへアクセス可能です。これは正しい動作です。 - - diff --git a/build/debugsoft/MakerTitle/TitleList/Makefile b/build/debugsoft/MakerTitle/TitleList/Makefile deleted file mode 100644 index 1acd6ed2..00000000 --- a/build/debugsoft/MakerTitle/TitleList/Makefile +++ /dev/null @@ -1,294 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - save_data - DisplayVersion -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - - - -ifeq ($(ROM_NAME),) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something-build -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL= -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something-build: - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=A SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=B SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=C SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=D SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=E SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=F SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=G 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=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) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=B SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=C SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=D SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=E SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=F SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) TWLSDK_PLATFORM=TWL ROM_NAME=G 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=J SKIP_SUBDIR=FALSE $(MY_GOAL) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -else - -SUBDIRS = -MACRO_FLAGS := - -#---------------------------------------------------------------------------- -TWL_NANDAPP := TRUE -MASTER_NAME := TitleList -APP_NAME = $(MASTER_NAME)_$(ROM_NAME) - -SRCS = main.c font.c screen.c appmain.c - -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までのパラメータ設定 - -# デフォルトのロムパラメータ -PUB_SAVE := 16K -PRV_SAVE := 16K -MAKER_CODE := 01 -SEQURE := FALSE -APP_TYPE := User - -ifeq ($(ROM_NAME),A) -APP_TYPE := System -SEQURE := TRUE -endif - -ifeq ($(ROM_NAME),B) -APP_TYPE := System -endif - -ifeq ($(ROM_NAME),C) -endif - -ifeq ($(ROM_NAME),D) -PRV_SAVE := 0K -endif - -ifeq ($(ROM_NAME),E) -PUB_SAVE := 0K -endif - -ifeq ($(ROM_NAME),F) -PRV_SAVE := 0K -PUB_SAVE := 0K -endif - -ifeq ($(ROM_NAME),G) -MAKER_CODE := 02 -endif - -ifeq ($(ROM_NAME),H) -MAKER_CODE := 02 -PRV_SAVE := 0K -endif - -ifeq ($(ROM_NAME),I) -MAKER_CODE := 02 -PUB_SAVE := 0K -endif - -ifeq ($(ROM_NAME),J) -MAKER_CODE := 02 -PRV_SAVE := 0K -PUB_SAVE := 0K -endif - - - -ENABLE_PUB := TRUE -ENABLE_PRV := TRUE - -ifeq ($(ENABLE_PUB),0K) -ENABLE_PUB := FALSE -endif - -ifeq ($(ENABLE_PRV),0K) -ENABLE_PRV := FALSE -endif - - -GAME_CODE = 4K$(ROM_NAME)A -TARGET_BIN = $(APP_NAME).tad - - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = $(MASTER_NAME).$(ROM_NAME).autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=$(MAKER_CODE) \ - TitleName=TITLE_LIST_$(ROM_NAME) \ - GameCode=$(GAME_CODE) \ - BannerFile=./banner/banner_$(ROM_NAME).bnr \ - PublicSaveDataSize=$(PUB_SAVE) \ - PrivateSaveDataSize=$(PRV_SAVE) \ - WramMapping=MAP_TS_SCR \ - AppType=$(APP_TYPE) \ - Media=NAND \ - Secure=$(SEQURE) \ - - - -#------------------------- -#-- NAMを使うためにsecure componentを使う - -COMPONENT_NAME = armadillo -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/$(COMPONENT_NAME)/$(TWL_BUILDTYPE_ARM7)/$(COMPONENT_NAME) -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#------------------------- -# インストール指定 - -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(MASTER_NAME)/$(API_TYPE) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -#------------------------- -#-- カードアプリと同様に ROM-FS にファイルを持たせます。 - -#MAKEROM_ROMROOT = ./rom_data -#MAKEROM_ROMFILES = *.* - -#------------------------- -#-- バナーデータを生成します -BANNER = ./banner/banner_$(ROM_NAME).bnr -BANNERSRC := ./banner/data/Cell/Cell_$(ROM_NAME).nce -#BANNERSRC := $(wildcard ./banner/data/Cell/*.nce) -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - -#------------------------- -# rom 内のファイルは全て自動生成なので clean で削除されるようにします -LDIRT_CLEAN = $(MAKEROM_ROMROOT) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -ifeq ($(SEQURE),TRUE) -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe # commondefs を include した後でなければならない -MAKETAD_OPTION := -s # modulerules を include する前でなければならない -else -ifeq ($(APP_TYPE),System) -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.sys.exe # commondefs を include した後でなければならない -MAKETAD_OPTION := -s # modulerules を include する前でなければならない -else -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.exe # commondefs を include した後でなければならない -endif -endif -#---------------------------------------------------------------------------- - -#MACRO_FLAGS += -DMYCODE=\"$(GAME_CODE)\" -#MACRO_FLAGS += -DMYNAME=\"$(ROM_NAME)\" -#MACRO_FLAGS += -DENABLEPUB=$(ENABLE_PUB) -#MACRO_FLAGS += -DENABLEPRV=$(ENABLE_PRV) - - -do-build: rmlcf mycode $(TARGETS) -#do-build: rmlcf $(TARGETS) - -.PHONY: mycode rmlcf - -mycode: - echo -e "#ifndef MYCODE_\n#define MYCODE_\n#define MYCODE \"$(GAME_CODE)\"\n#define MYNAME \"$(ROM_NAME)\"\n#define ENABLEPUB $(ENABLE_PUB)\n#define ENABLEPRV $(ENABLE_PRV)\n\n#endif" > ./include/mycode.h - -#mycode: -# echo -e "#ifndef MYCODE_\n#define MYCODE_\n#define MYCODE \"$(GAME_CODE)\"\n#define MYNAME \"$(ROM_NAME)\"\n#define ENABLEPUB $(ENABLE_PUB)\n#define ENABLEPRV $(ENABLE_PRV)\n\n#endif" > ./include/mycode.h - - -rmlcf: - rm -rf $(BINDIR)/*.lcf - -#------------------------- -#-- SRL を作成する前にバナーが作成されるようにします。 - -$(BINDIR)/$(TARGET_BIN_BASENAME).$(TWL_ELF_EXT): make_dir -#$(BINDIR)/$(TARGET_BIN_BASENAME).$(TWL_ELF_EXT): $(BANNER) make_dir - -#------------------------- -#-- rom_data/build_time.txt を作成します。 - -make_dir: - $(INSTALL) -d $(MAKEROM_ROMROOT) -#build_time: -# $(INSTALL) -d $(MAKEROM_ROMROOT) -# echo -n "build at `date \"+%Y/%m/%d %H:%M:%S\"` on \"`hostname`\"" > $(MAKEROM_ROMROOT)/build_time.txt - -#------------------------- -#-- バナー作成用ターゲット - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -endif - -#===== End of Makefile ===== diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bnr deleted file mode 100644 index 1af566da..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bsf deleted file mode 100644 index 9fe5011a..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_A.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bnr deleted file mode 100644 index 5cec127e..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bsf deleted file mode 100644 index f8ea7018..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_B.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bnr deleted file mode 100644 index a5326216..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bsf deleted file mode 100644 index 59013f90..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_C.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bnr deleted file mode 100644 index bcc3a8a9..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bsf deleted file mode 100644 index 1c3d9973..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_D.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bnr deleted file mode 100644 index 683b9c0e..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bsf deleted file mode 100644 index 5ed0366b..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_E.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bnr deleted file mode 100644 index c220052d..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bsf deleted file mode 100644 index a0ee3ccd..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_F.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bnr deleted file mode 100644 index cf8a7efb..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bsf deleted file mode 100644 index 86916741..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_G.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bnr deleted file mode 100644 index 5bb665bd..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bsf deleted file mode 100644 index 6c4f8dff..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_H.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bnr deleted file mode 100644 index 961b5c7c..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bsf deleted file mode 100644 index 699b804e..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_I.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bnr b/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bnr deleted file mode 100644 index c02e0461..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bnr and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bsf b/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bsf deleted file mode 100644 index 14475cce..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/banner_J.bsf and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_A.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_A.nce deleted file mode 100644 index 34aa5f8f..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_A.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_B.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_B.nce deleted file mode 100644 index 4a31775b..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_B.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_C.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_C.nce deleted file mode 100644 index 5327b480..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_C.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_D.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_D.nce deleted file mode 100644 index a44c31bf..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_D.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_E.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_E.nce deleted file mode 100644 index a89d8f72..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_E.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_F.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_F.nce deleted file mode 100644 index b1c01841..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_F.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_G.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_G.nce deleted file mode 100644 index 1a426982..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_G.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_H.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_H.nce deleted file mode 100644 index 4fbd9ea5..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_H.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_I.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_I.nce deleted file mode 100644 index 68899287..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_I.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_J.nce b/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_J.nce deleted file mode 100644 index bff60169..00000000 Binary files a/build/debugsoft/MakerTitle/TitleList/banner/data/Cell/Cell_J.nce and /dev/null differ diff --git a/build/debugsoft/MakerTitle/TitleList/include/appmain.h b/build/debugsoft/MakerTitle/TitleList/include/appmain.h deleted file mode 100644 index 5aa7f062..00000000 --- a/build/debugsoft/MakerTitle/TitleList/include/appmain.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK_IPL - debugsoft - MakerTitle - TitleList - File: appmain.h - - Copyright 2003 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 APPMAIN_H_ -#define APPMAIN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -void DrawScreen(void); -void DoWritingTest(void); -void DoReadingTest(void); -void DeleteSaveDatas(void); -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/TitleList/include/font.h b/build/debugsoft/MakerTitle/TitleList/include/font.h deleted file mode 100644 index a323d9e1..00000000 --- a/build/debugsoft/MakerTitle/TitleList/include/font.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.h - - Copyright 2003 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/TitleList/include/screen.h b/build/debugsoft/MakerTitle/TitleList/include/screen.h deleted file mode 100644 index 0387a9ae..00000000 --- a/build/debugsoft/MakerTitle/TitleList/include/screen.h +++ /dev/null @@ -1,45 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: screen.h - - Copyright 2003 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern u16 gScreen[2][32 * 32]; - -void ClearScreen(void); -void ClearSubScreen(void); -void PrintString(s16 x, s16 y, u8 palette, char *text, ...); -void ColorString(s16 x, s16 y, s16 length, u8 palette); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/MakerTitle/TitleList/include/title.h b/build/debugsoft/MakerTitle/TitleList/include/title.h deleted file mode 100644 index 74d93621..00000000 --- a/build/debugsoft/MakerTitle/TitleList/include/title.h +++ /dev/null @@ -1,61 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK_IPL - debugsoft - MakerTitle - TitleList - File: title.h - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ - -// セーブデータチェック対象ロム -static char* GAMECODE_LIST[] = { - "4KAA", - "4KBA", - "4KCA", - "4KDA", - "4KEA", - "4KFA", - "4KGA", - "4KHA", - "4KIA", - "4KJA", -}; - -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 - {TRUE, TRUE}, // B - {TRUE, TRUE}, // C - {TRUE, FALSE}, // D - {FALSE, TRUE}, // E - {FALSE, FALSE}, // F - {TRUE, TRUE}, // G - {TRUE, FALSE}, // H - {FALSE, TRUE}, // I - {FALSE, FALSE}, // J - -}; - diff --git a/build/debugsoft/MakerTitle/TitleList/src/appmain.c b/build/debugsoft/MakerTitle/TitleList/src/appmain.c deleted file mode 100644 index 85bf2d27..00000000 --- a/build/debugsoft/MakerTitle/TitleList/src/appmain.c +++ /dev/null @@ -1,312 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK_IPL - debugsoft - MakerTitle - TitleList - File: appmain.c - - Copyright 2003 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 "appmain.h" -#include "screen.h" -#include "mycode.h" -#include "title.h" -#include -#include -#include -#include - -BOOL TestWriting(const char* code, BOOL out_results[2]); -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:/", -}; - - -const char* SAV_NAME[2] = { - "dataPub:/", - "dataPrv:/", -}; - -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, - }; -#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); - OS_TPrintf("%llu \n", TitleID); - OS_TPrintf("%lu lu\n", TitleID >> 32, TitleID); -#endif - out_results[i] = (res != FS_RESULT_SUCCESS) ? FALSE : TRUE; - if(res != FS_RESULT_SUCCESS) - { - OS_TPrintf("Mount Failed:%s\n", code); - OS_TPrintf("ErrorCode:%d\n", res); - continue; - } - - 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]; -} - -BOOL WriteFile(const char* arc_name, const char* file_name) -{ - FSFile fp; - char buf[256]; - s32 len = 0; - - STD_TSPrintf(buf, "%s%s", arc_name, file_name); - - FS_InitFile(&fp); - FS_CreateFile(buf, FS_PERMIT_W | FS_PERMIT_R); - - if(!FS_OpenFileEx(&fp, buf, FS_FILEMODE_RW)) - { - OS_TPrintf("Open Fail:%s\n", buf); - return FALSE; - } - - FS_SeekFileToEnd(&fp); - len = STD_TSPrintf(buf, "Written by [%s]\n", MYNAME); - FS_WriteFile(&fp, buf, len); - FS_CloseFile(&fp); - - return TRUE; -} - -void DrawScreen(void) -{ - PrintString(0, 0, 15, "GameCode:%s", MYCODE); - PrintString(0, 2, 15, "A - Writing test to other apps"); - PrintString(0, 3, 15, "B - Show my save data"); - if(STD_StrCmp("4KAA", MYCODE) == 0) - { - PrintString(0, 4, 15, "X - Clear save datas"); - } -} - -void DoWritingTest(void) -{ - BOOL results[TITLE_COUNT][2]; - s16 i = 0; - char* result_char[3] = {"O", "X", "-"}; - - MI_CpuClear8(results, sizeof(results)); - - ClearSubScreen(); - PrintString(0, 24, 15, "APP : PUB PRV WRITE"); - PrintString(0, 25, 15, "---------------------"); - for(i = 0; i < TITLE_COUNT; ++i) - { - char buf[256]; - char format[] = "ROM %c: %s %s %s"; - // 自分自身はチェックしない -// OS_TPrintf("%s %s\n", GAMECODE_LIST[i], MYCODE); - if(STD_StrCmp(GAMECODE_LIST[i], MYCODE) == 0){ - STD_TSPrintf(buf, format, 'A' + i, "-", "-", "-"); - } - else - { - s32 result_code[3] = {0, 0, 0}; - TestWriting(GAMECODE_LIST[i], results[i]); - result_code[0] = (!DATA_EXIST[i][0]) ? 2 : (results[i][0] ? 0 : 1); - result_code[1] = (!DATA_EXIST[i][1]) ? 2 : (results[i][1] ? 0 : 1); - result_code[2] = (result_code[0] == 2 && result_code[1] == 2) ? 2 : (result_code[0] != 1 && result_code[1] != 1) ? 0 : 1; - STD_TSPrintf(buf, format, 'A' + i, - result_char[result_code[0]], - result_char[result_code[1]], - result_char[result_code[2]] - ); - } - OS_TPrintf("%s\n", buf); - PrintString(0, (s16)(26 + i), 15, buf); - } -} - -void DoReadingTest(void) -{ - char read_buf[2048]; - - ClearSubScreen(); - - { - s32 i = 0; - BOOL result[2] = {FALSE, FALSE}; - - PrintString(0, 24, 15, "Public"); - PrintString(16, 24, 15, "Private"); - for(i = 0; i < 2; ++i) - { - MI_CpuClear8(read_buf, sizeof(read_buf)); - result[i] = ReadFile(SAV_NAME[i], FILE_NAME, read_buf, sizeof(read_buf)); -/* if(!result[i]) - { - continue; - }*/ - OS_TPrintf("%s%s\n", SAV_NAME[i], FILE_NAME); - OS_TPrintf("%s\n", read_buf); - OS_TPrintfEx("% 256.16b\n", read_buf); - - PrintResult(i * 16, 25, read_buf); - } - } -} - -BOOL ReadFile(const char* arc_name, const char* file_name, char* out, int len) -{ - FSFile fp; - char buf[256]; - - STD_TSPrintf(buf, "%s%s", arc_name, file_name); - - FS_InitFile(&fp); - - if(!FS_OpenFileEx(&fp, buf, FS_FILEMODE_R)) - { - FSResult res; - - res = FS_GetArchiveResultCode(buf); - OS_TPrintf("Code:%d\n", res); - OS_TPrintf("Open Fail:%s\n", buf); - if(res == FS_RESULT_ERROR) - { - STD_TSPrintf(out, "None.\n"); - } - else if(res == FS_RESULT_NO_ENTRY) - { - STD_TSPrintf(out, "File not found.\n"); - } - else - { - STD_TSPrintf(out,"Error:%d\n%s Open Failed\n", res, buf); - } - return FALSE; - } - - FS_ReadFile(&fp, out, len); - FS_CloseFile(&fp); - - return TRUE; -} - -void PrintResult(int x, int y, char* text) -{ - int len = 0, i = 0; - char *p = text, *next = NULL; - char buf[2048]; - while(*p != '\0') - { - next = STD_StrChr(p, '\n'); - STD_CopyLStringZeroFill(buf, p, next - p + 1); - OS_TPrintf("str:%s\n", buf); - PrintString((short)x, (short)y, 15, buf); - y++; - p = next + 1; - } -} - -void DeleteSaveDatas(void) -{ - int i = 0, j = 0, k = 0; -#ifndef USE_SPECIAL - const NATitleArchive arc[2] = { - NA_TITLE_ARCHIVE_DATAPUB, - NA_TITLE_ARCHIVE_DATAPRV, - }; -#else - const char* arc[2] = { - "otherPub", - "otherPrv", - }; - u32 lo = 0; - OSTitleId TitleID; -#endif - - - ClearSubScreen(); - for(i = 0; i < TITLE_COUNT; ++i) - { - for(j = 0; j < 2; ++j) - { - char path[256]; - FSResult res; -#ifndef USE_SPECIAL - res = NA_LoadOtherTitleArchive(GAMECODE_LIST[i], arc[j]); -#else - lo = MI_LoadBE32(GAMECODE_LIST[i]); - TitleID = (TITLE_ID_HIGH[i] << 32) | lo; - res = FSi_MountSpecialArchive(TitleID, arc[j], &archiveWork); -#endif - if(res != FS_RESULT_SUCCESS) - { - OS_TPrintf("Mount Failed:%s\n", GAMECODE_LIST[i]); - OS_TPrintf("ErrorCode:%d\n", res); - continue; - } - - STD_TSPrintf(path, "%s%s", ARC_NAME[j], FILE_NAME); - if(!FS_DeleteFile(path)) - { - OS_TPrintf("Delete Fail:%s\n", path); - } - else - { - OS_TPrintf("Deleted:%s %s\n", GAMECODE_LIST[i], path); - PrintString(0,(short) (24 + k++), 15, "Deleted:%s %s", GAMECODE_LIST[i], path); - } - FS_CreateFile(path, FS_PERMIT_W | FS_PERMIT_R); - -#ifndef USE_SPECIAL - NA_UnloadOtherTitleArchive(); -#else - FSi_MountSpecialArchive(TitleID, NULL, &archiveWork); -#endif - } - } -} diff --git a/build/debugsoft/MakerTitle/TitleList/src/font.c b/build/debugsoft/MakerTitle/TitleList/src/font.c deleted file mode 100644 index 30670436..00000000 --- a/build/debugsoft/MakerTitle/TitleList/src/font.c +++ /dev/null @@ -1,574 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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 "font.h" - -//---------------------------------------------------------------- -// Character data -// -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -//---------------------------------------------------------------- -// Palette data -// -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; diff --git a/build/debugsoft/MakerTitle/TitleList/src/main.c b/build/debugsoft/MakerTitle/TitleList/src/main.c deleted file mode 100644 index 0ce708a2..00000000 --- a/build/debugsoft/MakerTitle/TitleList/src/main.c +++ /dev/null @@ -1,267 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - yasuda - MenuTest - File: main.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include -#include -#include "font.h" -#include "screen.h" -#include "appmain.h" -#include "mycode.h" // Makeで自動生成されるはずのファイル. - -static void myInit(void); -static void myVBlankIntr(void); -static void InitializeAllocateSystem(void); -static void PrintBootType(void); - -extern BOOL PubDataAccessTest(void); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: main - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - u16 trigger; - u16 preButton = PAD_Read(); - u16 button; - - //---------------- initialize - myInit(); - PrintBootType(); - - ClearSubScreen(); - - //---------------- main loop - while (TRUE) - { - button = PAD_Read(); - trigger = (u16)((button ^ preButton) & button); - preButton = button; - - //---- clear screen buffer - ClearScreen(); - - if(trigger & PAD_BUTTON_A) - { - DoWritingTest(); - } - if(trigger & PAD_BUTTON_B) - { - DoReadingTest(); - } - - if((trigger & PAD_BUTTON_X) && STD_StrCmp("4KAA", MYCODE) == 0) - { - DeleteSaveDatas(); - } - - - //---- display menus - // DisplayMenuSet(); - - //---- press UP key (toggle menu) -/* if(trigger & PAD_KEY_UP) - { - ChangeMenuItem(MENU_ITEM_UP); - } - - if(trigger & PAD_KEY_DOWN) - { - ChangeMenuItem(MENU_ITEM_DOWN); - } - if(trigger & PAD_KEY_RIGHT) - { - ExecMenuItemRight(); - } - if(trigger & PAD_KEY_LEFT) - { - ExecMenuItemLeft(); - } - - //---- push A - if (trigger & PAD_BUTTON_A) - { - ExecMenuItem(); - } - //---- push B - if (trigger & PAD_BUTTON_B) - { - ExecMenuItemB(); - } - //---- push X - if (trigger & PAD_BUTTON_X) - { - ExecMenuItemX(); - }*/ - - DrawScreen(); - - OS_WaitVBlankIntr(); - } -} - -//---------------------------------------------------------------- -// myInit -// -void myInit(void) -{ - //---- init - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - RTC_Init(); - FX_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - InitializeAllocateSystem(); - - //---- init displaying - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- setting 2D for top screen - GX_SetBankForBG(GX_VRAM_BG_128_A); - - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - G2_BG0Mosaic(FALSE); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - - //---- setting 2D for bottom screen - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - G2S_BG0Mosaic(FALSE); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - //---- screen - MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen)); - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(&gScreen[0], 0, sizeof(gScreen) / 2); - GXS_LoadBG0Scr(&gScreen[1], 0, sizeof(gScreen) / 2); - - //---- init interrupt - OS_SetIrqFunction(OS_IE_V_BLANK, myVBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - //---- FileSystemInit - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - FS_Init( FS_DMA_NOT_USE ); - - //---- start displaying - GX_DispOn(); - GXS_DispOn(); -} - -//---------------------------------------------------------------- -// myVBlankIntr -// vblank interrupt handler -// -static void myVBlankIntr(void) -{ - //---- upload pseudo screen to VRAM - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(&gScreen[0], 0, sizeof(gScreen) / 2); - GXS_LoadBG0Scr(&gScreen[1], 0, sizeof(gScreen) / 2); - - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -static void PrintBootType(void) -{ - const OSBootType btype = OS_GetBootType(); - - switch( btype ) - { - case OS_BOOTTYPE_ROM: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_ROM\n"); break; - case OS_BOOTTYPE_NAND: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_NAND\n"); break; - default: - { - OS_Warning("unknown BootType(=%d)", btype); - } - break; - } -} - diff --git a/build/debugsoft/MakerTitle/TitleList/src/screen.c b/build/debugsoft/MakerTitle/TitleList/src/screen.c deleted file mode 100644 index 562bfe5a..00000000 --- a/build/debugsoft/MakerTitle/TitleList/src/screen.c +++ /dev/null @@ -1,124 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - os - reset-1 - File: font.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWL -#include -#else -#include -#endif -#include "screen.h" - -u16 gScreen[2][32 * 32]; - -// ** these code are refer to rtc sample. thanks. -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: clear screen buffer - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast((void *)gScreen[0], sizeof(gScreen) / 2); -} - -void ClearSubScreen(void) -{ - MI_CpuClearFast((void *)gScreen[1], sizeof(gScreen) / 2); -} - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: enter string into screen buffer - string must be within 32 chars - - Arguments: x : x - y : y - palette : color (0-15) - text : string. end mark is NULL - - Returns: None. - *---------------------------------------------------------------------------*/ -void PrintString(s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2], *tempPtr; - s32 i; - u16 *p, *pLimit; - u32 index = (u32)(y / 24); - y = (s16)(y % 24); - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0; - - p = &gScreen[index][((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[index][32 * 32]; - - tempPtr = &temp[0]; - - for (i = 0; *tempPtr; i++, tempPtr++) - { - *p = (u16)((palette << 12) | *tempPtr); - if (++p >= pLimit) - { - p = &gScreen[index][0]; - } - } -} - -/*---------------------------------------------------------------------------* - Name: ColorString - - Description: change string color which is put in screen buffer - - Arguments: x : x - y : y - length : number of characters to change color - palette : color (0-15) - - Returns: None. - *---------------------------------------------------------------------------*/ -void ColorString(s16 x, s16 y, s16 length, u8 palette) -{ - s32 i; - u16 *p, *pLimit; - u32 index = (u32)(y / 24); - y = (s16)(y % 24); - if (length < 0) - return; - p = &gScreen[index][((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[index][32 * 32]; - - for (i = 0; i < length; i++) - { - u16 temp = *p; - temp &= 0x0fff; - temp |= (palette << 12); - *p = temp; - - if (++p >= pLimit) - { - p = &gScreen[index][0]; - } - } -} diff --git a/build/debugsoft/NotLaunch/Makefile b/build/debugsoft/NotLaunch/Makefile deleted file mode 100644 index 39f3be22..00000000 --- a/build/debugsoft/NotLaunch/Makefile +++ /dev/null @@ -1,124 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - NotLaunch -# File: Makefile -# -# 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:$ -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL -override TWL_ARCHGEN = LIMITED - -ifeq ($(APP_TYPE),) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL=default -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something: - +$(REMAKE) -B APP_TYPE=SYSTEM CARD_REGION=ALL $(MY_GOAL) - +$(REMAKE) -B APP_TYPE=SYSTEM CARD_REGION=Japan $(MY_GOAL) - +$(REMAKE) -B APP_TYPE=SYSTEM CARD_REGION=America $(MY_GOAL) - +$(REMAKE) -B APP_TYPE=SYSTEM CARD_REGION=Europe $(MY_GOAL) - +$(REMAKE) -B APP_TYPE=SYSTEM CARD_REGION=Australia $(MY_GOAL) -# +$(REMAKE) -B APP_TYPE=USER CARD_REGION=ALL $(MY_GOAL) -# +$(REMAKE) -B APP_TYPE=USER CARD_REGION=Japan $(MY_GOAL) -# +$(REMAKE) -B APP_TYPE=USER CARD_REGION=America $(MY_GOAL) -# +$(REMAKE) -B APP_TYPE=USER CARD_REGION=Europe $(MY_GOAL) -# +$(REMAKE) -B APP_TYPE=USER CARD_REGION=Australia $(MY_GOAL) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -else - -TWL_NANDAPP = TRUE -TARGET_BIN = NotLaunch_$(APP_TYPE)_$(CARD_REGION).tad - -SRCDIR = ./src - -SRCS = main.c - -ROM_SPEC = NotLaunch.autogen.rsf - -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf - -#---------------------------------------------------------------------------- -# decide gamecode (region) - -ifeq ($(CARD_REGION),ALL) -GAME_CODE_R = A -endif - -ifeq ($(CARD_REGION),Japan) -GAME_CODE_R = J -endif - -ifeq ($(CARD_REGION),America) -GAME_CODE_R = E -endif - -ifeq ($(CARD_REGION),Europe) -GAME_CODE_R = P -endif - -ifeq ($(CARD_REGION),Australia) -GAME_CODE_R = U -endif - -ifeq ($(CARD_REGION),China) -GAME_CODE_R = C -endif - -ifeq ($(CARD_REGION),Korea) -GAME_CODE_R = K -endif -#---------------------------------------------------------------------------- - -ROM_SPEC_PARAM = MakerCode=01 \ - GameCode=457$(GAME_CODE_R) \ - Media=NAND \ - Launch=FALSE \ - CardRegion=$(CARD_REGION) - -ifeq ($(APP_TYPE),USER) -ROM_SPEC_PARAM += AppType=User -endif - -endif # ifeq ($(APP_TYPE),) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -ifeq ($(APP_TYPE),SYSTEM) -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.sys.exe -MAKETAD_OPTION := -s -endif - -do-build: $(TARGETS) - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -INSTALL_DIR = ./roms - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/NotLaunch/src/main.c b/build/debugsoft/NotLaunch/src/main.c deleted file mode 100644 index f84e0652..00000000 --- a/build/debugsoft/NotLaunch/src/main.c +++ /dev/null @@ -1,41 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - NotLaunch - 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 - - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------*/ - -void TwlMain(void) -{ - OS_Init(); - - - - OS_Terminate(); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/433A/libsyscall.a b/build/debugsoft/TMPJump/433A/libsyscall.a deleted file mode 100644 index 4f5ea2d2..00000000 Binary files a/build/debugsoft/TMPJump/433A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/433A/libsyscall_c.bin b/build/debugsoft/TMPJump/433A/libsyscall_c.bin deleted file mode 100644 index 37f0da7e..00000000 Binary files a/build/debugsoft/TMPJump/433A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/433A/rom_header_433a.template.sbin b/build/debugsoft/TMPJump/433A/rom_header_433a.template.sbin deleted file mode 100644 index 79e274b0..00000000 Binary files a/build/debugsoft/TMPJump/433A/rom_header_433a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/434A/libsyscall.a b/build/debugsoft/TMPJump/434A/libsyscall.a deleted file mode 100644 index ea73def6..00000000 Binary files a/build/debugsoft/TMPJump/434A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/434A/libsyscall_c.bin b/build/debugsoft/TMPJump/434A/libsyscall_c.bin deleted file mode 100644 index 4d28a4c2..00000000 Binary files a/build/debugsoft/TMPJump/434A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/434A/rom_header_434a.template.sbin b/build/debugsoft/TMPJump/434A/rom_header_434a.template.sbin deleted file mode 100644 index 546927d8..00000000 Binary files a/build/debugsoft/TMPJump/434A/rom_header_434a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/435A/libsyscall.a b/build/debugsoft/TMPJump/435A/libsyscall.a deleted file mode 100644 index 5c0bc8de..00000000 Binary files a/build/debugsoft/TMPJump/435A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/435A/libsyscall_c.bin b/build/debugsoft/TMPJump/435A/libsyscall_c.bin deleted file mode 100644 index d96b6dfb..00000000 Binary files a/build/debugsoft/TMPJump/435A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/435A/rom_header_435a.template.sbin b/build/debugsoft/TMPJump/435A/rom_header_435a.template.sbin deleted file mode 100644 index 7c855e67..00000000 Binary files a/build/debugsoft/TMPJump/435A/rom_header_435a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/436A/libsyscall.a b/build/debugsoft/TMPJump/436A/libsyscall.a deleted file mode 100644 index c82a882e..00000000 Binary files a/build/debugsoft/TMPJump/436A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/436A/libsyscall_c.bin b/build/debugsoft/TMPJump/436A/libsyscall_c.bin deleted file mode 100644 index c319bafc..00000000 Binary files a/build/debugsoft/TMPJump/436A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/436A/rom_header_436a.template.sbin b/build/debugsoft/TMPJump/436A/rom_header_436a.template.sbin deleted file mode 100644 index dadbde58..00000000 Binary files a/build/debugsoft/TMPJump/436A/rom_header_436a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/437A/libsyscall.a b/build/debugsoft/TMPJump/437A/libsyscall.a deleted file mode 100644 index ddd9ba9c..00000000 Binary files a/build/debugsoft/TMPJump/437A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/437A/libsyscall_c.bin b/build/debugsoft/TMPJump/437A/libsyscall_c.bin deleted file mode 100644 index e4247e1d..00000000 Binary files a/build/debugsoft/TMPJump/437A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/437A/rom_header_437a.template.sbin b/build/debugsoft/TMPJump/437A/rom_header_437a.template.sbin deleted file mode 100644 index 79c1b408..00000000 Binary files a/build/debugsoft/TMPJump/437A/rom_header_437a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/458A/libsyscall.a b/build/debugsoft/TMPJump/458A/libsyscall.a deleted file mode 100644 index f1e865af..00000000 Binary files a/build/debugsoft/TMPJump/458A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/458A/libsyscall_c.bin b/build/debugsoft/TMPJump/458A/libsyscall_c.bin deleted file mode 100644 index d6321e44..00000000 Binary files a/build/debugsoft/TMPJump/458A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/458A/rom_header_458a.template.sbin b/build/debugsoft/TMPJump/458A/rom_header_458a.template.sbin deleted file mode 100644 index 98335c71..00000000 Binary files a/build/debugsoft/TMPJump/458A/rom_header_458a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/459A/libsyscall.a b/build/debugsoft/TMPJump/459A/libsyscall.a deleted file mode 100644 index d768c1ce..00000000 Binary files a/build/debugsoft/TMPJump/459A/libsyscall.a and /dev/null differ diff --git a/build/debugsoft/TMPJump/459A/libsyscall_c.bin b/build/debugsoft/TMPJump/459A/libsyscall_c.bin deleted file mode 100644 index a416f3c0..00000000 Binary files a/build/debugsoft/TMPJump/459A/libsyscall_c.bin and /dev/null differ diff --git a/build/debugsoft/TMPJump/459A/rom_header_459a.template.sbin b/build/debugsoft/TMPJump/459A/rom_header_459a.template.sbin deleted file mode 100644 index 2ee7454a..00000000 Binary files a/build/debugsoft/TMPJump/459A/rom_header_459a.template.sbin and /dev/null differ diff --git a/build/debugsoft/TMPJump/AppforFailedTmpJump/Makefile b/build/debugsoft/TMPJump/AppforFailedTmpJump/Makefile deleted file mode 100644 index 14ceddc9..00000000 --- a/build/debugsoft/TMPJump/AppforFailedTmpJump/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - tmpjumpTest - AppforFailedTmpJump -# File: Makefile -# - -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_CODEGEN = ARM -TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE - -TARGET_BIN = Test_$(TARGET_PLATFORM)fail.srl - -INCDIR = ../include -SRCDIR = ../src -SRCS = common.c font.c screen.c main_f.c - -ifeq ($(ROMTYPE),MASTER) -MAKEROM_ROMROOT = ../mas_data -else -MAKEROM_ROMROOT = ../data -endif - -MAKEROM_ROMFILES = dummy.srl - - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -ifeq ($(TARGET_PLATFORM),TWL) -ROM_SPEC = main_459a.rsf -LIBSYSCALL = ../459A/libsyscall.a - -endif - -ifeq ($(TARGET_PLATFORM),NITRO) -ROM_SPEC = main_458a.rsf -LIBSYSCALL = ../458A/libsyscall.a - -endif - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) - -ifeq ($(ROMTYPE),MASTER) -INSTALL_DIR = ../mas_data -else -INSTALL_DIR = ../data -endif -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_458a.rsf b/build/debugsoft/TMPJump/AppforFailedTmpJump/main_458a.rsf deleted file mode 100644 index 11d12a58..00000000 --- a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_458a.rsf +++ /dev/null @@ -1,103 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).nef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7:r).sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7:r)_defs.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7:r)_table.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7:r).nef" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TJmpTest_NF - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../458A/rom_header_458a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "../banner/banner.bnr" - - # - # Permit TmpJump: for TWL "ApplicationJump" function - # - PermitTmpJump FALSE - - ### - ### - ### - #### END -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_459a.rsf b/build/debugsoft/TMPJump/AppforFailedTmpJump/main_459a.rsf deleted file mode 100644 index ce9917c4..00000000 --- a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_459a.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest_L - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../459A/rom_header_459a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "../banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 459A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_f.c b/build/debugsoft/TMPJump/AppforFailedTmpJump/main_f.c deleted file mode 100644 index 334c4500..00000000 --- a/build/debugsoft/TMPJump/AppforFailedTmpJump/main_f.c +++ /dev/null @@ -1,162 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - tmpjumpTest - AppforTmpJump - 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:$ - *---------------------------------------------------------------------------*/ - -#ifdef SDK_TWL -#include -#else -#include -#endif - -#include "common.h" -#include "screen.h" - -#define DMA_NO_FS 1 - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -static const char gRomPath[32] = "rom:/dummy.srl"; -static u64 gTargetId = 0x0003000434333441; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void DrawMainScene(void); -void VBlankIntr(void); - -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - InitCommon(); - InitScreen(); - - FS_Init(DMA_NO_FS); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // 一度空読み - ReadKey(&gKey); - - while(TRUE) - { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_A) - { -#ifdef SDK_TWL - BOOL success = TRUE; - FSFile src, dest; - void *buf; - s32 len = 0; - - // srl を NAND 上の OS_TMP_APP_PATH へコピー - FS_DeleteFile(OS_TMP_APP_PATH); - FS_CreateFile(OS_TMP_APP_PATH, FS_PERMIT_R | FS_PERMIT_W); - FS_InitFile( &src ); - FS_InitFile( &dest ); - if ( !FS_OpenFileEx( &src, gRomPath, FS_FILEMODE_R ) ) success = FALSE; - len = (s32)FS_GetFileLength( &src ); - - buf = OS_AllocFromMain((u32)len); - if (buf == NULL) - { - success = FALSE; - break; - } - - if ( -1 == FS_ReadFile( &src, buf, len ) ) - { - success = FALSE; - break; - } - - if ( !FS_CloseFile( &src ) ) success = FALSE; - - if ( !FS_OpenFileEx( &dest, OS_TMP_APP_PATH, FS_FILEMODE_W ) ) success = FALSE; - if ( -1 == FS_WriteFile( &dest, buf, len ) ) success = FALSE; - if ( !FS_CloseFile( &dest ) ) success = FALSE; - - if ( !success ) break; - - // TMP ジャンプを試みる - if ( !OS_DoApplicationJump( gTargetId, OS_APP_JUMP_TMP) ) - { - PutSubScreen(1, 10, 0xf1, "ERROR!: Failed to TMP jump"); - } - break; -#endif - } - - if (gKey.trg & PAD_BUTTON_B) - { -#ifdef SDK_TWL - // メインアプリへ戻る - if ( !OS_ReturnToPrevApplication() ) - { - PutSubScreen(1, 10, 0xf1, "ERROR!: Failed to return jump"); - } - break; -#endif - } - - DrawMainScene(); - - OS_WaitVBlankIntr(); - } - - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -static void DrawMainScene(void) -{ - PutMainScreen(1, 1, 0xf2, "Application on tmp dir"); -#ifdef SDK_TWL - PutMainScreen(1, 18, 0xff, "A : try TMP jump"); - PutMainScreen(1, 20, 0xff, "B : Return to Main App"); -#else - PutMainScreen(1, 20, 0xf8, "Can not return to Main (OK)"); -#endif -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - diff --git a/build/debugsoft/TMPJump/AppforTmpJump/Makefile b/build/debugsoft/TMPJump/AppforTmpJump/Makefile deleted file mode 100644 index f6fc5c92..00000000 --- a/build/debugsoft/TMPJump/AppforTmpJump/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - tmpjumpTest - AppforTmpJump -# File: Makefile -# - -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_CODEGEN = ARM -TWL_ARCHGEN = ALL - -TWL_NANDAPP = TRUE - -TARGET_BIN = TestApp$(TEST_ARCH).srl - -INCDIR = ../include -SRCDIR = ./ ../src -SRCS = common.c font.c screen.c main_2.c - -ifeq ($(ROMTYPE),MASTER) -MAKEROM_ROMROOT = ../mas_data -else -MAKEROM_ROMROOT = ../data -endif -MAKEROM_ROMFILES = dummy.srl - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -ifeq ($(TARGET_PLATFORM),TWL) -TEST_ARCH = _$(TWL_ARCHGEN) - -ifeq ($(TWL_ARCHGEN),HYBRID) - -ROM_SPEC = main_434a.rsf -LIBSYSCALL = ../434A/libsyscall.a - -else - -ROM_SPEC = main_435a.rsf -LIBSYSCALL = ../435A/libsyscall.a - -endif -# TARGET_PLATFORM = NITRO -endif - -ifeq ($(TARGET_PLATFORM),NITRO) - -TEST_ARCH = -ROM_SPEC = main_433a.rsf -LIBSYSCALL = ../433A/libsyscall.a - -endif - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) - -ifeq ($(ROMTYPE),MASTER) -INSTALL_DIR = ../mas_data -else -INSTALL_DIR = ../data -endif -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/TMPJump/AppforTmpJump/main_2.c b/build/debugsoft/TMPJump/AppforTmpJump/main_2.c deleted file mode 100644 index 334c4500..00000000 --- a/build/debugsoft/TMPJump/AppforTmpJump/main_2.c +++ /dev/null @@ -1,162 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - tmpjumpTest - AppforTmpJump - 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:$ - *---------------------------------------------------------------------------*/ - -#ifdef SDK_TWL -#include -#else -#include -#endif - -#include "common.h" -#include "screen.h" - -#define DMA_NO_FS 1 - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -static const char gRomPath[32] = "rom:/dummy.srl"; -static u64 gTargetId = 0x0003000434333441; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void DrawMainScene(void); -void VBlankIntr(void); - -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - InitCommon(); - InitScreen(); - - FS_Init(DMA_NO_FS); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // 一度空読み - ReadKey(&gKey); - - while(TRUE) - { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_A) - { -#ifdef SDK_TWL - BOOL success = TRUE; - FSFile src, dest; - void *buf; - s32 len = 0; - - // srl を NAND 上の OS_TMP_APP_PATH へコピー - FS_DeleteFile(OS_TMP_APP_PATH); - FS_CreateFile(OS_TMP_APP_PATH, FS_PERMIT_R | FS_PERMIT_W); - FS_InitFile( &src ); - FS_InitFile( &dest ); - if ( !FS_OpenFileEx( &src, gRomPath, FS_FILEMODE_R ) ) success = FALSE; - len = (s32)FS_GetFileLength( &src ); - - buf = OS_AllocFromMain((u32)len); - if (buf == NULL) - { - success = FALSE; - break; - } - - if ( -1 == FS_ReadFile( &src, buf, len ) ) - { - success = FALSE; - break; - } - - if ( !FS_CloseFile( &src ) ) success = FALSE; - - if ( !FS_OpenFileEx( &dest, OS_TMP_APP_PATH, FS_FILEMODE_W ) ) success = FALSE; - if ( -1 == FS_WriteFile( &dest, buf, len ) ) success = FALSE; - if ( !FS_CloseFile( &dest ) ) success = FALSE; - - if ( !success ) break; - - // TMP ジャンプを試みる - if ( !OS_DoApplicationJump( gTargetId, OS_APP_JUMP_TMP) ) - { - PutSubScreen(1, 10, 0xf1, "ERROR!: Failed to TMP jump"); - } - break; -#endif - } - - if (gKey.trg & PAD_BUTTON_B) - { -#ifdef SDK_TWL - // メインアプリへ戻る - if ( !OS_ReturnToPrevApplication() ) - { - PutSubScreen(1, 10, 0xf1, "ERROR!: Failed to return jump"); - } - break; -#endif - } - - DrawMainScene(); - - OS_WaitVBlankIntr(); - } - - OS_WaitVBlankIntr(); - OS_Terminate(); -} - -static void DrawMainScene(void) -{ - PutMainScreen(1, 1, 0xf2, "Application on tmp dir"); -#ifdef SDK_TWL - PutMainScreen(1, 18, 0xff, "A : try TMP jump"); - PutMainScreen(1, 20, 0xff, "B : Return to Main App"); -#else - PutMainScreen(1, 20, 0xf8, "Can not return to Main (OK)"); -#endif -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - diff --git a/build/debugsoft/TMPJump/AppforTmpJump/main_433a.rsf b/build/debugsoft/TMPJump/AppforTmpJump/main_433a.rsf deleted file mode 100644 index 2219b56a..00000000 --- a/build/debugsoft/TMPJump/AppforTmpJump/main_433a.rsf +++ /dev/null @@ -1,103 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - tmpjumpTest - AppforTmpJump -# File: main_433a.rsf -# -# 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$ -#---------------------------------------------------------------------------- -# -# Nitro ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).nef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7:r).sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7:r)_defs.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7:r)_table.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7:r).nef" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest_N - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../433A/rom_header_433a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "../banner/banner.bnr" - - # - # Permit TmpJump: for TWL "ApplicationJump" function - # - PermitTmpJump TRUE - - ### - ### - ### - #### END -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/build/debugsoft/TMPJump/AppforTmpJump/main_434a.rsf b/build/debugsoft/TMPJump/AppforTmpJump/main_434a.rsf deleted file mode 100644 index 70118126..00000000 --- a/build/debugsoft/TMPJump/AppforTmpJump/main_434a.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest_L - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../434A/rom_header_434a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "../banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 434A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/TMPJump/AppforTmpJump/main_435a.rsf b/build/debugsoft/TMPJump/AppforTmpJump/main_435a.rsf deleted file mode 100644 index bc264e1e..00000000 --- a/build/debugsoft/TMPJump/AppforTmpJump/main_435a.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest_L - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ../435A/rom_header_435a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "../banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 435A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/TMPJump/Makefile b/build/debugsoft/TMPJump/Makefile deleted file mode 100644 index 69b8368a..00000000 --- a/build/debugsoft/TMPJump/Makefile +++ /dev/null @@ -1,93 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - tmpjumpTest -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -TWL_ARCHGEN := LIMITED - -# GameCard, NAND の両方を作成する - -ifndef APP_TYPE - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL=default -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something: - +$(REMAKE) APP_TYPE=CARD SKIP_SUBDIR=FALSE $(MY_GOAL) - +$(REMAKE) APP_TYPE=NAND SKIP_SUBDIR=FALSE $(MY_GOAL) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -else # ifndef APP_TYPE - -TWL_NANDAPP = TRUE -TARGET_NAME = tmpjumpTest$(ROMTYPE) - -ifeq ($(APP_TYPE),NAND) -TARGET_BIN = $(TARGET_NAME).tad -ROM_SPEC = main_437a.rsf - -else -TARGET_BIN = $(TARGET_NAME).srl -ROM_SPEC = main_436a.rsf -endif - -endif # ifndef APP_TYPE - -INCDIR = ./include -SRCDIR = ./src - -SRCS = main.c common.c screen.c font.c - -ifeq ($(ROMTYPE),MASTER) -MAKEROM_ROMROOT = ./mas_data -else -MAKEROM_ROMROOT = ./data -endif - -MAKEROM_ROMFILES = TestApp.srl \ - TestApp_HYBRID.srl \ - TestApp_LIMITED.srl \ - Test_NITROfail.srl \ - Test_TWLfail.srl - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/TMPJumpTest -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/TMPJump/ReadMe.txt b/build/debugsoft/TMPJump/ReadMe.txt deleted file mode 100644 index 7926141d..00000000 --- a/build/debugsoft/TMPJump/ReadMe.txt +++ /dev/null @@ -1,60 +0,0 @@ -tmpjumpTest - -アプリジャンプ機能(TMPジャンプ)をテストするためのアプリセットです。 -======================================================== - -<概要> =============================================== -このテストでは、以下の 7つのアプリを使用します。 - ---------------------------------------------------------- -address | GameCode | Media | ---------------------------------+-----------+-----------+ -data/TestApp.srl | 433A | GameCard | -data/TestApp_HYBRID.srl | 434A | GameCard | -data/TestApp_LIMITED.srl | 435A | GameCard | tmp 格納用 ROM -data/TestApp_NTR_fail.srl | 458A | GameCard | -data/TestApp_TWL_fail.srl | 459A | GameCard | ---------------------------------------------------------- -bin/.../tmpjumpTest.srl | 436A | GameCard | 起動用 ROM -bin/.../tmpjumpTest.nand.tad | 437A | NAND | ---------------------------------------------------------- - -上の 5つのアプリは、下 2つのアプリに埋め込まれています。 - -<使い方> ============================================= - -まず、「フラッシュカードに書き込んだ 436A」または「インポートした 437A」を起動します。 - -436A, 437A では、選択したアプリを NAND の /tmp 以下へコピーし、TMPジャンプを実行します。 -TMP ジャンプ先のアプリからは、NITRO モードでビルドされている 433A を除く全てのアプリは -ジャンプ元のアプリへ戻ってくることができます。 - - - -(08/08/28 追加)アプリ2点追加、機能追加2点 -TMP ジャンプ先となるアプリとして、458A、459A の 2つを追加しました。 -これら 2つのアプリは「TMP ジャンプ不許可」のアプリなので、TMP ジャンプを実行すると -「必ず失敗」する仕様になっています。 - -TMP ジャンプ先のアプリから、さらに TMP ジャンプが実行できるようにしました。 -仕様では、「必ず失敗」するようになっています。 - -起動用 ROM で、リターンジャンプが可能になりました。 -一度 TMP ジャンプで飛んだあと、リターンジャンプによって起動用 ROM に戻り、 -再度リターンジャンプを実行すると、戻り先が設定されていないために -「必ず失敗」するはずです。 - -(09/06/05 追加)注意 -TMP アプリを NAND の tmp領域へ書き込むために FS_ReadFile() でバッファに読み出す際に -キャッシュ化けによりアプリデータの終端付近が壊れることがありました。 -TWL-SDK 5.2 PR で対策(※)がとられていますので、本テストアプリをビルドする際は仕様する -SDK バージョンに注意してください。 -なお TWL-SDK UIG branch には修正が入っていませんので本テストアプリのビルドに使用しないで下さい。 - -※…TWL-SDK リリースノート Note 72-14 (FS) ファイルアクセス時のキャッシュ操作に関する修正参照 - -<更新履歴>============================================ -2009/06/05 不具合についての情報を追記 -2008/08/28 仕様追加に伴う加筆修正 -2008/08/12 新規追加 - diff --git a/build/debugsoft/TMPJump/banner/banner.bnr b/build/debugsoft/TMPJump/banner/banner.bnr deleted file mode 100644 index e234d8cd..00000000 Binary files a/build/debugsoft/TMPJump/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/TestApp.srl b/build/debugsoft/TMPJump/data/TestApp.srl deleted file mode 100644 index d0ce9eb8..00000000 Binary files a/build/debugsoft/TMPJump/data/TestApp.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/TestApp_HYBRID.srl b/build/debugsoft/TMPJump/data/TestApp_HYBRID.srl deleted file mode 100644 index f9001dab..00000000 Binary files a/build/debugsoft/TMPJump/data/TestApp_HYBRID.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/TestApp_LIMITED.srl b/build/debugsoft/TMPJump/data/TestApp_LIMITED.srl deleted file mode 100644 index dcbaa000..00000000 Binary files a/build/debugsoft/TMPJump/data/TestApp_LIMITED.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/Test_NITROfail.srl b/build/debugsoft/TMPJump/data/Test_NITROfail.srl deleted file mode 100644 index 0574274f..00000000 Binary files a/build/debugsoft/TMPJump/data/Test_NITROfail.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/Test_TWLfail.srl b/build/debugsoft/TMPJump/data/Test_TWLfail.srl deleted file mode 100644 index 17f45a43..00000000 Binary files a/build/debugsoft/TMPJump/data/Test_TWLfail.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/data/dummy.srl b/build/debugsoft/TMPJump/data/dummy.srl deleted file mode 100644 index 54a62709..00000000 Binary files a/build/debugsoft/TMPJump/data/dummy.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/include/common.h b/build/debugsoft/TMPJump/include/common.h deleted file mode 100644 index f06d1e6e..00000000 --- a/build/debugsoft/TMPJump/include/common.h +++ /dev/null @@ -1,81 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 COMMON_H_ -#define COMMON_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#ifdef SDK_TWL -#include -#else -#include -#endif - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define KEY_REPEAT_START 25 // キーリピート開始までのフレーム数 -#define KEY_REPEAT_SPAN 10 // キーリピートの間隔フレーム数 - -/* アプリ間パラメータ関連 */ -#define APPJUMP_STRING_LENGTH 24 // 引数一つ分として受け渡しされる文字列の長さ制限 - -/*---------------------------------------------------------------------------* - 構造体 定義 - *---------------------------------------------------------------------------*/ - -// キー入力情報 -typedef struct KeyInfo -{ - u16 cnt; // 未加工入力値 - u16 trg; // 押しトリガ入力 - u16 up; // 離しトリガ入力 - u16 rep; // 押し維持リピート入力 -} KeyInfo; - -// アプリ間でバイナリデータとして引き渡す構造体 -typedef struct AppParam -{ - u32 jumpCount; // アプリジャンプの実行回数 - u8 isAutoJump; // 一定間隔で自動的にアプリジャンプを実行するかどうかのフラグ - u8 rsv[3]; // 4バイトアラインメントのため -} AppParam; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -void InitCommon(void); - -void ReadKey(KeyInfo* pKey); - -void VBlankIntr(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* COMMON_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/include/font.h b/build/debugsoft/TMPJump/include/font.h deleted file mode 100644 index 37699026..00000000 --- a/build/debugsoft/TMPJump/include/font.h +++ /dev/null @@ -1,41 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: font.h - - Copyright 2007 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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/include/screen.h b/build/debugsoft/TMPJump/include/screen.h deleted file mode 100644 index 0d08dffd..00000000 --- a/build/debugsoft/TMPJump/include/screen.h +++ /dev/null @@ -1,49 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.h - - Copyright 2007 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 SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 関数 定義 - *---------------------------------------------------------------------------*/ -void InitScreen(void); -void ClearScreen(void); -void ClearMainScreen(void); -void ClearSubScreen(void); -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...); -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...); -void UpdateScreen(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/main_436a.rsf b/build/debugsoft/TMPJump/main_436a.rsf deleted file mode 100644 index 5990b122..00000000 --- a/build/debugsoft/TMPJump/main_436a.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ./436A/rom_header_436a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "./banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 436A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/TMPJump/main_437a.rsf b/build/debugsoft/TMPJump/main_437a.rsf deleted file mode 100644 index c5a20aae..00000000 --- a/build/debugsoft/TMPJump/main_437a.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName TmpJmpTest - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate ./437A/rom_header_437a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile "./banner/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump TRUE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 437A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/debugsoft/TMPJump/mas_data/TestApp.srl b/build/debugsoft/TMPJump/mas_data/TestApp.srl deleted file mode 100644 index d0ce9eb8..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/TestApp.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/mas_data/TestApp_HYBRID.srl b/build/debugsoft/TMPJump/mas_data/TestApp_HYBRID.srl deleted file mode 100644 index aef61fdf..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/TestApp_HYBRID.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/mas_data/TestApp_LIMITED.srl b/build/debugsoft/TMPJump/mas_data/TestApp_LIMITED.srl deleted file mode 100644 index b8802444..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/TestApp_LIMITED.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/mas_data/Test_NITROfail.srl b/build/debugsoft/TMPJump/mas_data/Test_NITROfail.srl deleted file mode 100644 index 0574274f..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/Test_NITROfail.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/mas_data/Test_TWLfail.srl b/build/debugsoft/TMPJump/mas_data/Test_TWLfail.srl deleted file mode 100644 index c0c9c8ae..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/Test_TWLfail.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/mas_data/dummy.srl b/build/debugsoft/TMPJump/mas_data/dummy.srl deleted file mode 100644 index 8d5cce72..00000000 Binary files a/build/debugsoft/TMPJump/mas_data/dummy.srl and /dev/null differ diff --git a/build/debugsoft/TMPJump/src/common.c b/build/debugsoft/TMPJump/src/common.c deleted file mode 100644 index b1883893..00000000 --- a/build/debugsoft/TMPJump/src/common.c +++ /dev/null @@ -1,153 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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 "common.h" - -static void InitInterrupts(void); -static void InitHeap(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitCommon - - Description: 基本的な初期化関数をここで呼ぶ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitCommon(void) -{ - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - InitHeap(); - InitInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: ReadKey - - Description: キー入力情報を取得し、入力情報構造体を編集する。 - 押しトリガ、離しトリガ、押し継続リピートトリガ を検出する。 - - Arguments: pKey - 編集するキー入力情報構造体を指定する。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void ReadKey(KeyInfo* pKey) -{ - static u16 repeat_count[12]; - int i; - u16 r; - - r = PAD_Read(); - pKey->trg = 0x0000; - pKey->up = 0x0000; - pKey->rep = 0x0000; - - for (i = 0; i < 12; i++) - { - if (r & (0x0001 << i)) - { - if (!(pKey->cnt & (0x0001 << i))) - { - pKey->trg |= (0x0001 << i); // 押しトリガ - repeat_count[i] = 1; - } - else - { - if (repeat_count[i] > KEY_REPEAT_START) - { - pKey->rep |= (0x0001 << i); // 押し継続リピート - repeat_count[i] = (u16) (KEY_REPEAT_START - KEY_REPEAT_SPAN); - } - else - { - repeat_count[i]++; - } - } - } - else - { - if (pKey->cnt & (0x0001 << i)) - { - pKey->up |= (0x0001 << i); // 離しトリガ - } - } - } - - pKey->cnt = r; // 未加工キー入力 -} - -/*---------------------------------------------------------------------------* - Name: InitInterrupts - - Description: 割り込み設定を初期化する。 - V ブランク割り込みを許可し、割り込みハンドラを設定する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitInterrupts(void) -{ - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitHeap - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitHeap(void) -{ - void* tempLo; - OSHeapHandle hh; - - // メインメモリ上のアリーナにヒープをひとつ作成 - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - // ヒープ作成に失敗した場合は異常終了 - OS_Panic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/src/font.c b/build/debugsoft/TMPJump/src/font.c deleted file mode 100644 index 2111ca07..00000000 --- a/build/debugsoft/TMPJump/src/font.c +++ /dev/null @@ -1,585 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroWiFi - WCM - demos - wcm-list - File: font.c - - Copyright 2005,2006 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. - - $Log: font.c,v $ - Revision 1.2 2006/03/10 09:22:43 kitase_hirotake - INDENT SOURCE - - Revision 1.1 2005/07/21 08:21:06 adachi_hiroaki - 新規追加 - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/TMPJump/src/main.c b/build/debugsoft/TMPJump/src/main.c deleted file mode 100644 index 177d9543..00000000 --- a/build/debugsoft/TMPJump/src/main.c +++ /dev/null @@ -1,194 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - tmpjumpTest - 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 -#include "common.h" -#include "screen.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define DMA_NO_FS 1 -#define APP_NUM 5 // TMP ジャンプ先ロム数 - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -// キー入力 -static KeyInfo gKey; - -// tmp へコピーする srl -static u8 gSrlNumber = 0; - -// 各 srl の TitleID -static u64 gRomTitleIDList[APP_NUM] = -{ - 0x0003000434333341, // NTR GameCode 433A - 0x0003000434333441, // TWL-HYB GameCode 434A - 0x0003000434333541, // TWL-LTD GameCode 435A - 0x0003000434353841, // NTR (don't permit TMP jump) GameCode 458A - 0x0003000434353941 // TWL (don't permit TMP jump) GameCode 459A -}; - -// 各 srl の場所 -static const char gRomPath[APP_NUM][32] = -{ - "rom:/TestApp.srl", "rom:/TestApp_HYBRID.srl", "rom:/TestApp_LIMITED.srl", - "rom:/Test_NITROfail.srl", "rom:/Test_TWLfail.srl" -}; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void DrawMainScene(void); -void VBlankIntr(void); - -void TwlMain(void) -{ - InitCommon(); - InitScreen(); - - FS_Init(DMA_NO_FS); - - GX_DispOn(); - GXS_DispOn(); - - ClearScreen(); - - // 一度空読み - ReadKey(&gKey); - - while(TRUE) - { - ReadKey(&gKey); - - if (gKey.trg & PAD_BUTTON_A) - { - BOOL success = TRUE; - FSFile src, dest; - void *buf; - s32 len = 0; - - PutSubScreen(1, 8, 0xff, "now writing tmp app..."); - OS_WaitVBlankIntr(); - - // srl を NAND 上の OS_TMP_APP_PATH へコピー - FS_DeleteFile(OS_TMP_APP_PATH); - FS_CreateFile(OS_TMP_APP_PATH, FS_PERMIT_R | FS_PERMIT_W); - FS_InitFile( &src ); - FS_InitFile( &dest ); - if ( !FS_OpenFileEx( &src, gRomPath[gSrlNumber], FS_FILEMODE_R ) ) success = FALSE; - len = (s32)FS_GetFileLength( &src ); - - buf = OS_AllocFromMain((u32)len); - if (buf == NULL) - { - success = FALSE; - break; - } - - if ( -1 == FS_ReadFile( &src, buf, len ) ) - { - success = FALSE; - break; - } - - if ( !FS_CloseFile( &src ) ) success = FALSE; - - if ( !FS_OpenFileEx( &dest, OS_TMP_APP_PATH, FS_FILEMODE_W ) ) success = FALSE; - if ( -1 == FS_WriteFile( &dest, buf, len ) ) success = FALSE; - if ( !FS_CloseFile( &dest ) ) success = FALSE; - - if ( !success ) break; - - // アプリジャンプ - OS_DoApplicationJump( gRomTitleIDList[gSrlNumber], OS_APP_JUMP_TMP ); - // 失敗時にはエラーを下画面に出力して終了 - PutSubScreen(1, 10, 0xf1, "ERROR: TMP Jump failed!"); - break; - } - - if (gKey.trg & PAD_BUTTON_B) - { - // リターンジャンプを試みる - if(!OS_ReturnToPrevApplication()) - { - // 失敗時にはメッセージを表示 - PutSubScreen(1, 10, 0xf1, "ERROR: Return Jump failed!"); - break; - } - } - - // 方向キー上下で、OS_TMP_APP_PATH へコピーする srl を選択 - if (gKey.trg & PAD_KEY_DOWN) - { - gSrlNumber++; - if (gSrlNumber > APP_NUM - 1) - gSrlNumber = 0; - } - else if (gKey.trg & PAD_KEY_UP) - { - if (gSrlNumber == 0) - gSrlNumber = APP_NUM -1; - else - gSrlNumber--; - } - - ClearScreen(); - DrawMainScene(); - - OS_WaitVBlankIntr(); - } - - OS_WaitVBlankIntr(); - OS_Terminate(); -} - - -static void DrawMainScene(void) -{ - PutMainScreen(1, 1, 0xf2, "Application (Main)"); - PutMainScreen(2, 4, 0xff, "B BUTTON: try return jump"); - - PutMainScreen(3, 12, 0xff, "Tmp jump to NITRO rom"); - PutMainScreen(3, 14, 0xff, "Tmp jump to TWL-HYB rom"); - PutMainScreen(3, 16, 0xff, "Tmp jump to TWL-LTD rom"); - - PutMainScreen(3, 18, 0xfe, "Tmp jump to NITRO x rom"); - PutMainScreen(3, 20, 0xfe, "Tmp jump to TWL x rom"); - - // 選択中を示すカーソル描画 - PutMainScreen(1, gSrlNumber * 2 + 12, 0xf4, "*"); -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグをセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} diff --git a/build/debugsoft/TMPJump/src/screen.c b/build/debugsoft/TMPJump/src/screen.c deleted file mode 100644 index a9fec417..00000000 --- a/build/debugsoft/TMPJump/src/screen.c +++ /dev/null @@ -1,194 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.c - - Copyright 2007 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 -#include "screen.h" -#include "font.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define TEXT_SCREEN_SIZE 2048 - -/*---------------------------------------------------------------------------* - 内部変数 定義 - *---------------------------------------------------------------------------*/ - -// 仮想スクリーン[ 上下画面 ][ BG 枚数 ][ キャラクタ数 ] -static u16 gScreen[2 ][ 1 ][ TEXT_SCREEN_SIZE / sizeof(u16) ] ATTRIBUTE_ALIGN(32); - -/*---------------------------------------------------------------------------* - Name: InitScreen - - Description: 文字表示システムのために、表示設定を初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitScreen(void) -{ - // 各 V-RAM 初期化 - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - // OAM 初期化 - MI_CpuFillFast((void*)HW_OAM, 0xc0, HW_OAM_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, 0xc0, HW_DB_OAM_SIZE); - - // パレット初期化 - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - // 上画面設定 - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - - // 下画面設定 - GX_SetBankForSubBG(GX_VRAM_SUB_BG_32_H); - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_DB_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[1][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: 画面のテキスト表示をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -void ClearMainScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - -} -void ClearSubScreen(void) -{ - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -/*---------------------------------------------------------------------------* - Name: PutMainScreen - - Description: メイン画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[0][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: PrintSubScreen - - Description: サブ画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[1][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: UpdateScreen - - Description: 仮想スクリーンを V-RAM に反映する。 - V ブランク期間中での呼び出しを想定。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void UpdateScreen(void) -{ - // 仮想スクリーンを V-RAM に反映 - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/debugsoft/Wireless/Makefile b/build/debugsoft/Wireless/Makefile deleted file mode 100644 index e54149f6..00000000 --- a/build/debugsoft/Wireless/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = WifiIcon - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/debugsoft/Wireless/WifiIcon/Makefile b/build/debugsoft/Wireless/WifiIcon/Makefile deleted file mode 100644 index abf9410a..00000000 --- a/build/debugsoft/Wireless/WifiIcon/Makefile +++ /dev/null @@ -1,101 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools - WiFiIcon -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED -SRCS = main.c -TARGET_NAME := WiFiIcon -TARGET_BIN := main.tad -TWLNMENU_ROOT ?= . - -TWL_NANDAPP = TRUE - -#------------------------- -#-- バナーデータを生成します -BANNER = ./banner/banner.bnr -BANNERSRC := $(wildcard ./banner/data/Cell/*.nce) -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = $(TARGET_NAME).autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - GameCode=4S02 \ - BannerFile=./banner/banner.bnr \ - TitleName=$(TARGET_NAME) \ - Media=NAND \ - WiFiConnectionIcon=TRUE \ - Secure=TRUE -# DSWirelessIcon=TRUE \ - - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#------------------------- -# セキュア用 -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -MAKETAD_OPTION := -s - - -#------------------------- -# ビルドパラメータ -INCDIR = $(TWLSYSTEM_ROOT)/include \ - ./include - -#------------------------- -# インストール指定 -ifneq ($(TWL_IPL_RED_ROOT),) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/$(TARGET_NAME) -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - - -#------------------------- -# ビルド -do-build: $(TARGETS) - -#------------------------- -#-- SRL を作成する前にバナーが作成されるようにします。 - -#ifdef MAKE_BANNER -#$(BINDIR)/$(TARGET_NAME)$(ROM_SPEC_NAME_PART).srl: $(BANNER) -#endif - -#------------------------- -#-- バナー作成用ターゲット - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/Wireless/WifiIcon/banner/banner.bnr b/build/debugsoft/Wireless/WifiIcon/banner/banner.bnr deleted file mode 100644 index 2a5447a2..00000000 Binary files a/build/debugsoft/Wireless/WifiIcon/banner/banner.bnr and /dev/null differ diff --git a/build/debugsoft/Wireless/WifiIcon/readme.txt b/build/debugsoft/Wireless/WifiIcon/readme.txt deleted file mode 100644 index 4f4ce4e8..00000000 --- a/build/debugsoft/Wireless/WifiIcon/readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -WiFiIcon - -*概要 -  WiFiアイコン確認用のアプリ。 -  WiFiアイコンのフラグをオンにしてビルドされます。 -  アプリ自身の機能はありません。 diff --git a/build/debugsoft/Wireless/WifiIcon/src/main.c b/build/debugsoft/Wireless/WifiIcon/src/main.c deleted file mode 100644 index 5d509820..00000000 --- a/build/debugsoft/Wireless/WifiIcon/src/main.c +++ /dev/null @@ -1,103 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - WiFiIcon - 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 - -static void InitInterrupt(void) -{ - OS_EnableIrq(); - OS_EnableInterrupts(); -} - -static void InitAlloc(void) -{ - OSHeapHandle hHeap; - void* lo = OS_GetMainArenaLo(); - void* hi = OS_GetMainArenaHi(); - - lo = OS_InitAlloc(OS_ARENA_MAIN, lo, hi, 1); - OS_SetArenaLo(OS_ARENA_MAIN, lo); - - hHeap = OS_CreateHeap(OS_ARENA_MAIN, lo, hi); - SDK_ASSERT( hHeap >= 0 ); - - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); -} - -static void InitInteruptSystem(); - - -void -TwlStartUp() -{ - OS_Init(); - InitAlloc(); -} - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: メイン関数です。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - InitInteruptSystem(); - - GX_DispOn(); - GXS_DispOn(); - - *(u16*)HW_PLTT = 0x001f << 10; - *(u16*)HW_DB_PLTT = 0x001f << 10; - // ランチャーに戻れるように、 終了しない - for (;;) - { - // フレーム更新。 - { - OS_WaitVBlankIntr(); - } - } - - OS_Terminate(); -} - - -/*---------------------------------------------------------------------------* - Name: InitInteruptSystem - - Description: 割り込みを初期化します。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitInteruptSystem() -{ - // 個別割り込みフラグを全て不許可に - (void)OS_SetIrqMask(0); - - // マスター割り込みフラグを許可に - (void)OS_EnableIrq(); - - // IRQ 割り込みを許可します - (void)OS_EnableInterrupts(); - - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); -} diff --git a/build/debugsoft/treenand2sd/Makefile b/build/debugsoft/treenand2sd/Makefile deleted file mode 100644 index 93d53d6b..00000000 --- a/build/debugsoft/treenand2sd/Makefile +++ /dev/null @@ -1,71 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools - treenand -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIR_FLAGS = TWL_ARCHGEN=$(TWL_ARCHGEN) -SUBDIRS = $(SDLOG_DIR) - -TARGET_PLATFORM := TWL - -TWL_PROC := ARM9 -TWL_ARCHGEN := LIMITED -TARGET_BIN = treenand2sd.srl - -SRCS = main.cpp text.c MyStrings.c fontdata.c - -SDLOG_DIR = $(ROOT)/build/tests/sdlog/sdlog -LINCLUDES += $(SDLOG_DIR)/include -LLIBRARY_DIRS = $(SDLOG_DIR)/lib/$(TWL_BUILDTYPE) -LLIBRARIES += libsdlog$(NITRO_LIBSUFFIX).a\ - -ROM_SPEC = demo.autogen.rsf -ROM_SPEC_TEMPLATE = $(ROOT)/include/twl/specfiles/ROM-TS_sys.rsf -ROM_SPEC_PARAM = MakerCode=01 \ - GameCode=4NTA \ - NANDAccess=TRUE \ - SDCardAccess=TRUE \ - Secure=TRUE \ - CardRegion=ALL \ - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------- -# セキュアアプリ指定 - -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#---------------------------------------------------------------------------- - - -#---------------------------------------------------------------------------- -#追加するCCオプション -#---------------------------------------------------------------------------- -CCFLAGS += -w nounwanted - -ifeq ($(TWL_BUILD_TYPE),RELEASE) -INSTALL_DIR = $(ROOT)/bin/ARM9-TS/Release -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -endif - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/debugsoft/treenand2sd/include/MyStrings.h b/build/debugsoft/treenand2sd/include/MyStrings.h deleted file mode 100644 index aa698cea..00000000 --- a/build/debugsoft/treenand2sd/include/MyStrings.h +++ /dev/null @@ -1,84 +0,0 @@ -/************************************************************************* - -簡単な文字列表示する関数群 - - ************************************************************************/ -#include - -#include "basicdef.h" -#include "text.h" - -/************************************************************************ - 二重定義や宣言/参照を同じヘッダで使用するためのプリプロセッサ - ************************************************************************/ - -/* 多重インクルードの回避 */ -#ifndef MYSTRINGS_H_INCLUDED -#define MYSTRINGS_H_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************ - -☆使用する構造体 - - ************************************************************************/ - - -/* 画面出力するために使用するコンソール */ -typedef struct { - COORDINATE_TYPE Cursor; /* 現在のカーソル位置 */ - int Palette; /* 現在使用するパレット */ - - int ScrollStart; /* スクロール開始・終了位置 */ - int ScrollEnd; - - TEXT_VRAM_TYPE *Text; /* 書き込み先 */ - -} CONSOLE_TYPE; - - -/************************************************************************ - -☆参照宣言 - ************************************************************************/ - -extern CONSOLE_TYPE StdConsole; -extern CONSOLE_TYPE *Console; - - - -/************************************************************************ -☆パブリックと同等に使用するマクロ - ************************************************************************/ -#define wPuts( str__ ) wcPuts( &StdConsole, str__ ) -#define _Puts( str__ ) _cPuts( &StdConsole, str__ ) -#define wPutchar( character__ ) wcPutchar( &StdConsole, character__ ) -#define wPutcharNC( character__ ) wcPutcharNC( &StdConsole, character__ ) -#define wGotoxy( x__, y__ ) wcGotoxy( &StdConsole, x__, y__ ) -#define wSetPalette( Palette__ ) wcSetPalette( &StdConsole, Palette__ ); - - -/************************************************************************ -☆パブリック関数の宣言 - ************************************************************************/ -extern int wcPuts ( CONSOLE_TYPE *Console, const char *str ); -extern void _cPuts ( CONSOLE_TYPE *Console, const char *str ); -extern void wcGotoxy ( CONSOLE_TYPE *Console, int x, int y ); -extern void wcSetPalette( CONSOLE_TYPE *Console, int Palette ); -extern int wcPutchar ( CONSOLE_TYPE *Console, int Character ); -extern int wcPutcharNC ( CONSOLE_TYPE *Console, int Character ); -extern void wcPrintf ( CONSOLE_TYPE *Console, const char *fmt , ... ); -extern void wPrintf ( const char *fmt , ... ); -extern void swPrintf ( const char *fmt , ... ); -extern int wCountLine ( const char *Str ); - -#ifdef __cplusplus -} -#endif - -/* 多重インクルードの回避 */ -#endif - diff --git a/build/debugsoft/treenand2sd/include/basicdef.h b/build/debugsoft/treenand2sd/include/basicdef.h deleted file mode 100644 index 6670ec12..00000000 --- a/build/debugsoft/treenand2sd/include/basicdef.h +++ /dev/null @@ -1,123 +0,0 @@ -/************************************************************************** - - 基本定義ヘッダファイル - - 多くのソースファイルで使用する基本的な情報を記述しています。 - - - *************************************************************************/ - - -/* 多重インクルードの回避 */ -#ifndef __BASICDEF_H__ -#define __BASICDEF_H__ - -/************************************************************************** - 標準でインクルードするヘッダファイル - *************************************************************************/ -#include -#include // NULLを使用するため - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************** - #define系プリプロセッサ命令 記述領域 - *************************************************************************/ - -//V周期 -#define VERTICAL_CYCLE 16743 //単位μS - - -//画面関係の定義 -#define SCREEN_WIDTH 32 /* コンソールで使用するテキストRAMの列数 */ -#define SCREEN_HEIGHT 24 /* コンソールで使用するテキストRAMの行数 */ - -#define VIRTUAL_SCREEN_WIDTH 32 /* 仮想画面のサイズ */ -#define VIRTUAL_SCREEN_HEIGHT 32 - -#define CHARACTER_SIDE_LENGTH 8 /* キャラクタの一辺の長さ */ - -#define SCREEN_WIDTH_DOT 256 -#define SCREEN_HEIGHT_DOT 192 - -/************************************************************************** - 汎用マクロ定義 - *************************************************************************/ - -//配列の要素数を求める 'Code Complete 上 第二版 P379 から引用 -#define ARRAY_LENGTH(x) (sizeof(x)/sizeof(x[0])) - -/************************************************************************** - 型定義 - *************************************************************************/ - - -#if 0 -/* ブール型の設定 */ -#undef FALSE -#undef TRUE -typedef enum { FALSE=0, TRUE=1 } BOOL; -#endif - -/* 整数型座標構造体 */ -typedef struct { /* 座標を指定する構造体 */ - int x; /* X座標 */ - int y; /* Y座標 */ -} COORDINATE_TYPE; - -/* 各色の成分 */ -typedef enum { - RAW_COLOR_BLACK = 0x0000, - RAW_COLOR_RED = 0x001f, - RAW_COLOR_GREEN = 0x03e0, - RAW_COLOR_YELLOW = 0x03ff, - RAW_COLOR_BLUE = 0x7c00, - RAW_COLOR_MAGENTA = 0x7c1f, - RAW_COLOR_CYAN = 0x7fe0, - RAW_COLOR_WHITE = 0x7fff, - - RAW_COLOR_GRAY1 = 0x1004, - RAW_COLOR_GRAY2 = 0x2108, - RAW_COLOR_GRAY3 = 0x318c, - RAW_COLOR_GRAY4 = 0x4210, - RAW_COLOR_GRAY5 = 0x5294, - RAW_COLOR_GRAY6 = 0x6318 - -} RAW_COLOR; - -/* パレット設定 */ -typedef enum { - COLOR_TRANSLUCENT = 0, - COLOR_RED = 1, - COLOR_GREEN = 2, - COLOR_YELLOW = 3, - COLOR_BLUE = 4, - COLOR_MAGENTA = 5, - COLOR_CYAN = 6, - COLOR_WHITE = 7, - COLOR_BLACK = 8, - COLOR_GRAY1 = 9, - COLOR_GRAY2 =10, - COLOR_GRAY3 =11, - COLOR_GRAY4 =12, - COLOR_GRAY5 =13, - COLOR_GRAY6 =14 - - -} COLOR_TYPE; - -#define COLOR_GRAY COLOR_GRAY5 - -#ifdef __cplusplus -} -#endif - -/* 多重インクルードの回避 */ -#endif - - - - - diff --git a/build/debugsoft/treenand2sd/include/fontdata.h b/build/debugsoft/treenand2sd/include/fontdata.h deleted file mode 100644 index 33fcb71b..00000000 --- a/build/debugsoft/treenand2sd/include/fontdata.h +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************** - - 標準データの定義 - - - ********************************************************************/ -#ifndef _DATA_H -#define _DATA_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "basicdef.h" -/************************************************************************ - -☆外部公開変数 - - ***********************************************************************/ -extern const u16 PlttData_Sample[16][16]; -extern const u32 CharData_Sample[8*0x100]; - -#ifdef __cplusplus -} -#endif - -#endif /* _DATA_H */ diff --git a/build/debugsoft/treenand2sd/include/text.h b/build/debugsoft/treenand2sd/include/text.h deleted file mode 100644 index e8fa13b7..00000000 --- a/build/debugsoft/treenand2sd/include/text.h +++ /dev/null @@ -1,70 +0,0 @@ -/************************************************************************ - - テキストVRAMエミュレーション - - ************************************************************************/ -#include "basicdef.h" - -/************************************************************************ - 二重定義や宣言/参照を同じヘッダで使用するためのプリプロセッサ - ************************************************************************/ - -/* 多重インクルードの回避 */ -#ifndef TEXT_H_INCLUDED -#define TEXT_H_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************ -☆パブリック関数の宣言 - ************************************************************************/ -extern void wInitTextVram( void ); -extern void wSuspendTextVram( void ); -extern void wResumeTextVram( void ); - -extern void swSuspendTextVram( void ); -extern void swResumeTextVram( void ); - -extern void wRemoveTextVram( void ); - -/************************************************************************ -☆テキストVRAMで使用する定数値 - ************************************************************************/ - -#define CLEAR_CHARACTER ' ' /* 画面クリア時に使用するキャラクタ */ - -/************************************************************************ -☆テキストVRAMで使用する構造体 - ************************************************************************/ - - -/* - * テキストVRAM本体です。 - * Map :表示文字をアスキーコードで入力します - * - * 現在、他の属性はなし。 - */ - - -typedef struct { /* テキストVRAM操作用*/ - u16 Map[VIRTUAL_SCREEN_HEIGHT][VIRTUAL_SCREEN_WIDTH]; -} TEXT_VRAM_TYPE; - -/************************************************************************ -☆テキストVRAMの参照宣言 - ************************************************************************/ - -/* テキストVRAM本体 */ -extern TEXT_VRAM_TYPE wText; -extern TEXT_VRAM_TYPE swText; - -#ifdef __cplusplus -} -#endif - - - -/* 多重インクルードの回避 */ -#endif diff --git a/build/debugsoft/treenand2sd/src/MyStrings.c b/build/debugsoft/treenand2sd/src/MyStrings.c deleted file mode 100644 index 52398988..00000000 --- a/build/debugsoft/treenand2sd/src/MyStrings.c +++ /dev/null @@ -1,313 +0,0 @@ -/************************************************************************ - -タイトル: - 文字、文字列表示ルーチン集 - - ************************************************************************/ -#include -#include "basicdef.h" -#include "MyStrings.h" - -/************************************************************************ -☆動作モード - ************************************************************************/ -#define USE_SDK_PRINTF //SDKのPrintf関係を使用するときに定義 - -/************************************************************************ - -☆実体宣言 - ************************************************************************/ - -//標準のコンソール -CONSOLE_TYPE StdConsole = { { 0, 0}, - COLOR_BLACK, - 0, SCREEN_HEIGHT-2, - &wText - }; - -CONSOLE_TYPE *Console = &StdConsole; - -/************************************************************************ -☆プロトタイプ宣言 - ************************************************************************/ -static void ScrollDown( CONSOLE_TYPE *Console ); - -/************************************************************************ -************************************************************************* -************************************************************************* - - - - - -☆文字出力関係のユーティリティ - - - - - -************************************************************************* -************************************************************************* -*************************************************************************/ - -/************************************************************************ - - 一文字表示 - -概要: - 引数の文字コードをテキストVRAM上に表示させる - ( putchar とコンパチかな?) - -引数: - Console 表示コンソール - Character 文字コード - -戻り値: - 文字コード(putcharとなるべく仕様をあわせるため) - - ***********************************************************************/ -extern int wcPutchar( CONSOLE_TYPE *Console, int Character ){ - int i; - u16 *Pointer; - switch( Character ){ - - case '\n': /* 改行コードの処理 */ - Console->Cursor.y++; - Console->Cursor.x = 0; - break; - - case '\t': /* タブコードの処理(4タブ) */ - Console->Cursor.x +=4 - ( (StdConsole.Cursor.x) % 4 ); - break; - - case '\f': /* 改ページコードの処理 */ - Pointer = &(Console->Text->Map[0][0] ); - for( i=0 ; iText->Map[ Console->Cursor.y ][ Console->Cursor.x++ ] - = (u16)( (Console->Palette << 12 ) | Character ); - } - - /* 行あふれの処理 */ - if( Console->Cursor.x > SCREEN_WIDTH-1 ){ - Console->Cursor.x = 0; - Console->Cursor.y++; - } - - /* 列あふれの処理 */ - if( Console->Cursor.y > Console->ScrollEnd ){ - --Console->Cursor.y; - ScrollDown( Console ); - - } - return Character; -} - -/************************************************************************ - - 一文字表示(制御コード処理なし) - -概要: - 引数の文字コードをテキストVRAM上に表示させる - wcPutcharの制御コード判定なしバージョン - -引数: - Console 表示コンソール - Character 文字コード - -戻り値: - 文字コード(putcharとなるべく仕様をあわせるため) - - ***********************************************************************/ -extern int wcPutcharNC( CONSOLE_TYPE *Console, int Character ){ - - /* 文字の表示 */ - Console->Text->Map[ Console->Cursor.y ][ Console->Cursor.x++ ] - = (u16)( (Console->Palette << 12) | Character ); - /* 行あふれの処理 */ - if( Console->Cursor.x > SCREEN_WIDTH-1 ){ - Console->Cursor.x = 0; - Console->Cursor.y++; - } - - /* 列あふれの処理 */ - if( Console->Cursor.y > Console->ScrollEnd ){ - --Console->Cursor.y; - ScrollDown( Console ); - - } - return Character; -} - -/************************************************************************ - - 文字列表示(改行なし版) - -概要: - 引数の文字列を表示させる(最後に改行コードが入らないので注意) - -引数: - Console 表示コンソール - String 表示文字列 - -※ 0x80-0xffの文字コードに対応するため、(u8 *)へのキャストをしています。 - - ***********************************************************************/ -extern void _cPuts( CONSOLE_TYPE *Console, const char *String ){ - int CurrentCharacter; - while( CurrentCharacter = *(u8 *)String++ ) wcPutchar( Console, CurrentCharacter ); -} - -/************************************************************************ - - 文字列表示 - -概要: - 引数の文字列を画面に表示させる(最後に改行コードが入ります) - -引数: - Console 表示コンソール - String 表示文字列 - -戻り値: - 常に0 putsとのコンパチビリティを保つため - - ***********************************************************************/ -extern int wcPuts( CONSOLE_TYPE *Console, const char *String ){ - _cPuts( Console, String ); /* 文字列の表示 */ - _cPuts( Console, "\n" ); /* 改行 */ - return 0; -} - -/************************************************************************ - - テキスト画面を下にスクロールさせる - -引数: - Console 該当コンソール - - ***********************************************************************/ -static void ScrollDown( CONSOLE_TYPE *Console ){ - int i; - - for( i=Console->ScrollStart+1 ; i<=Console->ScrollEnd ; i++ ){ - /* 一列上にコピーする */ - memcpy( Console->Text->Map[i-1], Console->Text->Map[i], SCREEN_WIDTH* sizeof(u16) ); - } - - /* 最終行のクリア */ - for( i=0 ; iText->Map[ Console->ScrollEnd ][i] = CLEAR_CHARACTER; - } - -} - -/************************************************************************ - - カーソル位置の設定 - -引数: - Console 該当コンソール - x X座標 - y Y座標 - - ************************************************************************/ -extern void wcGotoxy( CONSOLE_TYPE *Console, int x, int y ){ - /* とりあえず座標のコピー */ - Console->Cursor.x = x; - Console->Cursor.y = y; - - /* 範囲制限をするこれをしないとオーバーランを起こす */ - if( Console->Cursor.x < 0 ) Console->Cursor.x = 0; - if( Console->Cursor.x > SCREEN_WIDTH-1 ) Console->Cursor.x = SCREEN_WIDTH-1; - if( Console->Cursor.y < 0 ) Console->Cursor.y = 0; - if( Console->Cursor.y > SCREEN_HEIGHT-1 ) Console->Cursor.y = SCREEN_HEIGHT-1; - -} -/************************************************************************ - - パレットの設定 - -引数: - Console 該当コンソール - Palette 設定パレット - - ************************************************************************/ -extern void wcSetPalette( CONSOLE_TYPE *Console, int Palette ){ - - Console->Palette = Palette; - -} - -/************************************************************************ - -☆Printf - -※NitroSDKのOS_Printfを参考にしています。 - - - Printfもどき - -※標準のコンソールに表示されます。 - -引数: - fmt: フォーマット付き文字列 - ...: パラメータ - - - ************************************************************************/ -extern void wPrintf( const char *fmt , ... ){ - - char common_buffer[0x100]; - - va_list vlist; - - //引数取得 - va_start( vlist, fmt ); - - //vprintf相当部分 -#ifdef USE_SDK_PRINTF - OS_VSNPrintf( common_buffer, sizeof(common_buffer), fmt, vlist ); -#else - vsnprintf( common_buffer, sizeof(common_buffer), fmt, vlist ); -#endif - _Puts( common_buffer ); - - //引数後処理 - va_end( vlist ); - -} - - -/************************************************************************ - - 文字列の行数のカウントする - -引数: - Str 文字列 - -戻り値: - 行数 - ************************************************************************/ -extern int wCountLine( const char *Str ){ - - int Line; - - if( *Str=='\0' ) return 0; //空文字列の判定 - - Line=1; - while( *Str!='\0' ){ - if( *Str=='\n' ) Line++; - Str++; - } - - return Line; -} - - - diff --git a/build/debugsoft/treenand2sd/src/fontdata.c b/build/debugsoft/treenand2sd/src/fontdata.c deleted file mode 100644 index ce0da841..00000000 --- a/build/debugsoft/treenand2sd/src/fontdata.c +++ /dev/null @@ -1,594 +0,0 @@ -/******************************************************************** - -タイトル: - 標準データの定義 - - - ********************************************************************/ -#include "basicdef.h" -#include "fontdata.h" - -/************************************************************************ - -☆プライベート宣言 - - ***********************************************************************/ - -/************************************************************************ - -☆データ定義 - - ***********************************************************************/ - -/************************************************************************ - - パレットデータ - -概要: - - 0は背景用パレットデータ - 1〜8はテキストVRAM用パレットデータ - 15はキャンパス用パレットデータ - 14はBG用パレットデータ - - ***********************************************************************/ -const u16 PlttData_Sample[16][16] = { - - { RAW_COLOR_WHITE, RAW_COLOR_BLACK }, // 背景用パレット - { RAW_COLOR_WHITE, RAW_COLOR_RED, }, // Palette 1 - { RAW_COLOR_WHITE, RAW_COLOR_GREEN }, // Palette 2 - { RAW_COLOR_WHITE, RAW_COLOR_YELLOW }, // Palette 3 - { RAW_COLOR_WHITE, RAW_COLOR_BLUE }, // Palette 4 - { RAW_COLOR_WHITE, RAW_COLOR_MAGENTA }, // Palette 5 - { RAW_COLOR_WHITE, RAW_COLOR_CYAN }, // Palette 6 - { RAW_COLOR_WHITE, RAW_COLOR_WHITE }, // Palette 7 - { RAW_COLOR_WHITE, RAW_COLOR_BLACK }, // Palette 8 - - { RAW_COLOR_WHITE}, // Palette 9 - { RAW_COLOR_WHITE}, // Palette 10 - { RAW_COLOR_WHITE}, // Palette 11 - { RAW_COLOR_WHITE}, // Palette 12 - { RAW_COLOR_WHITE}, // Palette 13 - { RAW_COLOR_WHITE}, // Palette 14 壁紙用 - - { RAW_COLOR_WHITE, RAW_COLOR_RED, // Palette 15 - RAW_COLOR_GREEN, RAW_COLOR_YELLOW, - RAW_COLOR_BLUE, RAW_COLOR_MAGENTA, - RAW_COLOR_CYAN, RAW_COLOR_WHITE, - RAW_COLOR_BLACK, RAW_COLOR_GRAY1, - RAW_COLOR_GRAY2, RAW_COLOR_GRAY3, - RAW_COLOR_GRAY4, RAW_COLOR_GRAY5, - RAW_COLOR_GRAY6, RAW_COLOR_WHITE, - }, // キャンパス用パレット -}; - - - -/************************************************************************ - - キャラクタデータ - - ***********************************************************************/ -const u32 CharData_Sample[8*0x100] = { - 0x00000000,0x00000000,0x00000000,0x00000000, //0000 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x11111111,0x11111111,0x11111111,0x11111111, //0001 - 0x11111111,0x11111111,0x11111111,0x11111111, - 0x00000000,0x00000000,0x00000000,0x00000000, //0002 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0003 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0004 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0005 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0006 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0007 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0008 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0009 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000A - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000B - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000C - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000D - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000E - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //000F - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0010 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0011 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0012 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0013 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0014 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0015 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0016 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0017 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0018 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0019 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001A - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001B - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001C - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001D - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001E - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //001F - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0020 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00011000,0x00011000,0x00011000,0x00011000, //0021 ! - 0x00000000,0x00011000,0x00011000,0x00000000, - 0x00011011,0x00011011,0x00010010,0x00000000, //0022 " - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00010100,0x00111110,0x00010100, //0023 # - 0x00010100,0x00111110,0x00010100,0x00000000, - 0x00001000,0x00111110,0x00001011,0x00111110, //0024 $ - 0x01101000,0x00111110,0x00001000,0x00000000, - 0x01100111,0x00110101,0x00011111,0x00001100, //0025 % - 0x01110110,0x01010011,0x01110001,0x00000000, - 0x00011100,0x00110110,0x00011100,0x00001110, //0026 & - 0x00011011,0x01110011,0x00111110,0x00000000, - 0x00000011,0x00000011,0x00000010,0x00000000, //0027 ' - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00011100,0x00000110,0x00000011,0x00000011, //0028 ( - 0x00000011,0x00000110,0x00011100,0x00000000, - 0x00011100,0x00110000,0x01100000,0x01100000, //0029 ) - 0x01100000,0x00110000,0x00011100,0x00000000, - 0x00000000,0x00000000,0x00001000,0x00101010, //002A * - 0x00011100,0x00101010,0x00001000,0x00000000, - 0x00000000,0x00000000,0x00001000,0x00001000, //002B + - 0x00111110,0x00001000,0x00001000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //002C , - 0x00000000,0x00000011,0x00000011,0x00000010, - 0x00000000,0x00000000,0x00000000,0x00000000, //002D - - 0x00111110,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //002E . - 0x00000000,0x00000011,0x00000011,0x00000000, - 0x01100000,0x00110000,0x00011000,0x00001100, //002F / - 0x00000110,0x00000011,0x00000001,0x00000000, - 0x00011100,0x00110010,0x01100011,0x01100011, //0030 0 - 0x01100011,0x00100110,0x00011100,0x00000000, - 0x00011000,0x00011100,0x00011110,0x00011000, //0031 1 - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x00111110,0x01100011,0x01100011,0x00111000, //0032 2 - 0x00001110,0x00000011,0x01111111,0x00000000, - 0x01111110,0x00110000,0x00011000,0x00111100, //0033 3 - 0x01100000,0x01100011,0x00111110,0x00000000, - 0x00110000,0x00111000,0x00111100,0x00110110, //0034 4 - 0x00110011,0x01111111,0x00110000,0x00000000, - 0x00111111,0x00000011,0x00000011,0x00111111, //0035 5 - 0x01100000,0x01100011,0x00111110,0x00000000, - 0x00111100,0x00000110,0x00000011,0x00111111, //0036 6 - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x01111111,0x01110000,0x00111000,0x00011100, //0037 7 - 0x00001100,0x00001100,0x00001100,0x00000000, - 0x00111110,0x01100011,0x01100011,0x00111110, //0038 8 - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x00111110,0x01100011,0x01100011,0x01111110, //0039 9 - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00000000,0x00011000,0x00011000,0x00000000, //003A : - 0x00000000,0x00011000,0x00011000,0x00000000, - 0x00000000,0x00011000,0x00011000,0x00000000, //003B ; - 0x00000000,0x00011000,0x00011000,0x00010000, - 0x01100000,0x00111000,0x00001110,0x00000011, //003C < - 0x00001110,0x00111000,0x01100000,0x00000000, - 0x00000000,0x00000000,0x00111110,0x00000000, //003D = - 0x00000000,0x00111110,0x00000000,0x00000000, - 0x00000011,0x00001110,0x00111000,0x01100000, //003E > - 0x00111000,0x00001110,0x00000011,0x00000000, - 0x01111110,0x11000011,0x11000011,0x01111000, //003F ? - 0x00011000,0x00000000,0x00011000,0x00000000, - 0x00111110,0x01100011,0x01011001,0x01010101, //0040 @ - 0x01011101,0x01110011,0x00011110,0x00000000, - 0x00111110,0x01100011,0x01100011,0x01111111, //0041 A - 0x01100011,0x01100011,0x01100011,0x00000000, - 0x00111111,0x01100011,0x01100011,0x00111111, //0042 B - 0x01100011,0x01100011,0x00111111,0x00000000, - 0x00111110,0x01100011,0x01100011,0x00000011, //0043 C - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x00111111,0x01100011,0x01100011,0x01100011, //0044 D - 0x01100011,0x01100011,0x00111111,0x00000000, - 0x01111111,0x00000011,0x00000011,0x00111111, //0045 E - 0x00000011,0x00000011,0x01111111,0x00000000, - 0x01111111,0x00000011,0x00000011,0x00111111, //0046 F - 0x00000011,0x00000011,0x00000011,0x00000000, - 0x00111110,0x01100011,0x00000011,0x01111011, //0047 G - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x01100011,0x01100011,0x01100011,0x01111111, //0048 H - 0x01100011,0x01100011,0x01100011,0x00000000, - 0x00011000,0x00011000,0x00011000,0x00011000, //0049 I - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x01100000,0x01100000,0x01100000,0x01100000, //004A J - 0x01100000,0x01100011,0x00111110,0x00000000, - 0x01100011,0x01110011,0x00111011,0x00011111, //004B K - 0x00111011,0x01110011,0x01100011,0x00000000, - 0x00000011,0x00000011,0x00000011,0x00000011, //004C L - 0x00000011,0x00000011,0x01111111,0x00000000, - 0x01100011,0x01100011,0x01110111,0x01110111, //004D M - 0x01111111,0x01101011,0x01101011,0x00000000, - 0x01100011,0x01100111,0x01101111,0x01111111, //004E N - 0x01111011,0x01110011,0x01100011,0x00000000, - 0x00111110,0x01100011,0x01100011,0x01100011, //004F O - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x00111111,0x01100011,0x01100011,0x00111111, //0050 P - 0x00000011,0x00000011,0x00000011,0x00000000, - 0x00111110,0x01100011,0x01100011,0x01100011, //0051 Q - 0x01100011,0x00111110,0x01110000,0x00000000, - 0x00111111,0x01100011,0x01100011,0x00111111, //0052 R - 0x01100011,0x01100011,0x01100011,0x00000000, - 0x00111110,0x01100011,0x00000011,0x00111110, //0053 S - 0x01100000,0x01100011,0x00111110,0x00000000, - 0x11111111,0x00011000,0x00011000,0x00011000, //0054 T - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x01100011,0x01100011,0x01100011,0x01100011, //0055 U - 0x01100011,0x01100011,0x00111110,0x00000000, - 0x01100011,0x01100011,0x00110110,0x00110110, //0056 V - 0x00011100,0x00011100,0x00001000,0x00000000, - 0x11011011,0x11011011,0x11011011,0x11011011, //0057 W - 0x11011011,0x01111110,0x01100110,0x00000000, - 0x01000001,0x01100011,0x00110110,0x00011100, //0058 X - 0x00011100,0x00110110,0x01100011,0x00000000, - 0x11000011,0x11000011,0x11100111,0x01111110, //0059 Y - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x01111111,0x00110000,0x00011000,0x00001100, //005A Z - 0x00000110,0x00000011,0x01111111,0x00000000, - 0x00001111,0x00000011,0x00000011,0x00000011, //005B [ - 0x00000011,0x00000011,0x00001111,0x00000000, - 0x01100110,0x01100110,0x11111111,0x00011000, //005C \' - 0x11111111,0x00011000,0x00011000,0x00000000, - 0x01111000,0x01100000,0x01100000,0x01100000, //005D ] - 0x01100000,0x01100000,0x01111000,0x00000000, - 0x00011100,0x00110110,0x00100010,0x00000000, //005E ^ - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //005F _ - 0x00000000,0x00000000,0x01111111,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x00000000, //0060 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x01111000,0x01100100, //0061 a - 0x01100110,0x01110110,0x01101110,0x00000000, - 0x00000110,0x00000110,0x00111110,0x01100110, //0062 b - 0x01100110,0x01100110,0x00111110,0x00000000, - 0x00000000,0x00000000,0x00111100,0x01100110, //0063 c - 0x00000110,0x01100110,0x00111100,0x00000000, - 0x01100000,0x01100000,0x01111100,0x01100110, //0064 d - 0x01100110,0x01100110,0x01111100,0x00000000, - 0x00000000,0x00000000,0x00111100,0x01100110, //0065 e - 0x01111110,0x00000110,0x00111100,0x00000000, - 0x01110000,0x00011000,0x01111110,0x00011000, //0066 f - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x00000000,0x00000000,0x00111100,0x01100110, //0067 g - 0x01100110,0x01111100,0x01100000,0x00111110, - 0x00000110,0x00000110,0x00000110,0x00111110, //0068 h - 0x01100110,0x01100110,0x01100110,0x00000000, - 0x00011000,0x00011000,0x00000000,0x00011000, //0069 i - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x00110000,0x00110000,0x00000000,0x00110000, //006A j - 0x00110000,0x00110000,0x00110011,0x00011110, - 0x00000011,0x01100011,0x00110011,0x00011111, //006B k - 0x00011111,0x00110011,0x01100011,0x00000000, - 0x00011000,0x00011000,0x00011000,0x00011000, //006C l - 0x00011000,0x00011000,0x00011000,0x00000000, - 0x00000000,0x00000000,0x01111111,0x11011011, //006D m - 0x11011011,0x11011011,0x11011011,0x00000000, - 0x00000000,0x00000000,0x00111110,0x01100110, //006E n - 0x01100110,0x01100110,0x01100110,0x00000000, - 0x00000000,0x00000000,0x00111100,0x01100110, //006F o - 0x01100110,0x01100110,0x00111100,0x00000000, - 0x00000000,0x00000000,0x00111110,0x01100110, //0070 p - 0x01100110,0x00111110,0x00000110,0x00000110, - 0x00000000,0x00000000,0x01111100,0x01100110, //0071 q - 0x01100110,0x01111100,0x01100000,0x01100000, - 0x00000000,0x00000000,0x00101100,0x00011100, //0072 r - 0x00001100,0x00001100,0x00001100,0x00000000, - 0x00000000,0x00000000,0x00111100,0x00000110, //0073 s - 0x00111100,0x01100000,0x00111100,0x00000000, - 0x00000000,0x00011000,0x00111100,0x00011000, //0074 t - 0x00011000,0x00011000,0x00110000,0x00000000, - 0x00000000,0x00000000,0x01100110,0x01100110, //0075 u - 0x01100110,0x01100110,0x01111100,0x00000000, - 0x00000000,0x00000000,0x01100110,0x01100110, //0076 v - 0x01100110,0x00111100,0x00011000,0x00000000, - 0x00000000,0x00000000,0x11011011,0x11011011, //0077 w - 0x11011011,0x11011011,0x01111110,0x00000000, - 0x00000000,0x00000000,0x01100110,0x00111100, //0078 x - 0x00011000,0x00111100,0x01100110,0x00000000, - 0x00000000,0x00000000,0x01100110,0x01100110, //0079 y - 0x01100110,0x01111100,0x01100000,0x00111110, - 0x00000000,0x00000000,0x01111110,0x00110000, //007A z - 0x00011000,0x00001100,0x01111110,0x00000000, - 0x00011100,0x00000110,0x00000110,0x00000111, //007B { - 0x00000110,0x00000110,0x00011100,0x00000000, - 0x00001000,0x00001000,0x00001000,0x00001000, //007C | - 0x00001000,0x00001000,0x00001000,0x00000000, - 0x00011100,0x00110000,0x00110000,0x01110000, //007D } - 0x00110000,0x00110000,0x00011100,0x00000000, - 0x01101100,0x00111110,0x00011011,0x00000000, //007E ~ - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //007F - 0x00000000,0x00000000,0x00000000,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x00000000, //0080 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0081 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0082 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0083 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0084 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0085 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0086 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0087 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0088 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0089 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008A - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008B - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008C - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008D - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008E - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //008F - 0x00000000,0x00000000,0x00000000,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x00000000, //0090 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0091 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0092 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0093 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0094 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0095 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0096 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0097 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0098 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //0099 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009A - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009B - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009C - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009D - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009E - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //009F - 0x00000000,0x00000000,0x00000000,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x00000000, //00A0 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00A1 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00A2 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00A3 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00A4 - 0x00000000,0x00000000,0x00000000,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x00001100, //00A5 ・ - 0x00001100,0x00000000,0x00000000,0x00000000, - 0x01111110,0x01000000,0x01111110,0x01000000, //00A6 ヲ - 0x01100000,0x00110000,0x00011100,0x00000000, - 0x00000000,0x00000000,0x00111110,0x00101000, //00A7 ァ - 0x00011000,0x00001000,0x00000100,0x00000000, - 0x00000000,0x00000000,0x00100000,0x00011000, //00A8 ィ - 0x00001110,0x00001000,0x00001000,0x00000000, - 0x00000000,0x00000000,0x00001000,0x00111110, //00A9 ゥ - 0x00100010,0x00110000,0x00011100,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00011100, //00AA ェ - 0x00001000,0x00001000,0x00111110,0x00000000, - 0x00000000,0x00000000,0x00010000,0x00111110, //00AB ォ - 0x00011000,0x00010100,0x00010010,0x00000000, - 0x00000000,0x00000000,0x00000100,0x00111110, //00AC ャ - 0x00100100,0x00010100,0x00000100,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00011100, //00AD ュ - 0x00010000,0x00010000,0x01111110,0x00000000, - 0x00000000,0x00000000,0x00111100,0x00100000, //00AE ョ - 0x00111100,0x00100000,0x00111100,0x00000000, - 0x00000000,0x00000000,0x00001010,0x00101010, //00AF ッ - 0x00100000,0x00110000,0x00011100,0x00000000, - 0x00000000,0x00000000,0x00000000,0x01111110, //00B0 ー - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x01111111,0x01000000,0x01100100,0x00111100, //00B1 ア - 0x00000100,0x00000110,0x00000011,0x00000000, - 0x01100000,0x00110000,0x00011100,0x00010111, //00B2 イ - 0x00010000,0x00010000,0x00010000,0x00000000, - 0x00001000,0x01111111,0x01000001,0x01000001, //00B3 ウ - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00000000,0x00111110,0x00001000,0x00001000, //00B4 エ - 0x00001000,0x00001000,0x01111111,0x00000000, - 0x00100000,0x01111111,0x00101000,0x00101100, //00B5 オ - 0x00100110,0x00100011,0x00110000,0x00000000, - 0x00000100,0x01111111,0x01000100,0x01000100, //00B6 カ - 0x01000100,0x01100110,0x00110011,0x00000000, - 0x00000100,0x01111111,0x00001000,0x00001000, //00B7 キ - 0x01111111,0x00010000,0x00010000,0x00000000, - 0x01111110,0x01000010,0x01000011,0x01000000, //00B8 ク - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00000010,0x01111110,0x00010010,0x00010001, //00B9 ケ - 0x00010000,0x00011000,0x00001110,0x00000000, - 0x01111111,0x01000000,0x01000000,0x01000000, //00BA コ - 0x01000000,0x01000000,0x01111111,0x00000000, - 0x00100010,0x01111111,0x00100010,0x00100010, //00BB サ - 0x00100000,0x00110000,0x00011110,0x00000000, - 0x00000011,0x01000000,0x01000011,0x01000000, //00BC シ - 0x01000000,0x01100000,0x00111111,0x00000000, - 0x00111111,0x00100000,0x00100000,0x00010000, //00BD ス - 0x00001000,0x00010100,0x01100011,0x00000000, - 0x00000010,0x01111111,0x01000010,0x01100010, //00BE セ - 0x00100010,0x00000110,0x01111100,0x00000000, - 0x01000001,0x01000011,0x01000010,0x01100000, //00BF ソ - 0x00110000,0x00011000,0x00001100,0x00000000, - 0x01111110,0x01000010,0x01000011,0x01111000, //00C0 タ - 0x01000000,0x01100000,0x00111110,0x00000000, - 0x00110000,0x00011110,0x00010000,0x01111111, //00C1 チ - 0x00010000,0x00011000,0x00001110,0x00000000, - 0x01000101,0x01000101,0x01000101,0x01000000, //00C2 ツ - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00111110,0x00000000,0x01111111,0x00001000, //00C3 テ - 0x00001000,0x00001100,0x00000110,0x00000000, - 0x00000010,0x00000010,0x00000010,0x00011110, //00C4 ト - 0x00100010,0x00000010,0x00000010,0x00000000, - 0x00001000,0x00001000,0x01111111,0x00001000, //00C5 ナ - 0x00001000,0x00001100,0x00000111,0x00000000, - 0x00111110,0x00000000,0x00000000,0x00000000, //00C6 ニ - 0x00000000,0x00000000,0x01111111,0x00000000, - 0x00111111,0x00100000,0x00110000,0x00011010, //00C7 ヌ - 0x00001100,0x00010110,0x00100011,0x00000000, - 0x00001000,0x01111111,0x01100000,0x00110000, //00C8 ネ - 0x00011100,0x01101010,0x01001001,0x00000000, - 0x00100000,0x00100000,0x00100000,0x00100000, //00C9 ノ - 0x00110000,0x00011000,0x00001110,0x00000000, - 0x00011000,0x00110000,0x01100001,0x01000001, //00CA ハ - 0x01000001,0x01000001,0x01000001,0x00000000, - 0x00000001,0x00000001,0x00111111,0x00000001, //00CB ヒ - 0x00000001,0x00000011,0x00111110,0x00000000, - 0x01111111,0x01000000,0x01000000,0x01000000, //00CC フ - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00000000,0x00000000,0x00001110,0x00011001, //00CD ヘ - 0x00110001,0x01100000,0x01000000,0x00000000, - 0x00001000,0x01111111,0x00001000,0x00001000, //00CE ホ - 0x01001001,0x01001001,0x01001001,0x00000000, - 0x01111111,0x01000000,0x01000000,0x01100011, //00CF マ - 0x00111110,0x00001100,0x00011000,0x00000000, - 0x00011111,0x01110000,0x00000110,0x00011100, //00D0 ミ - 0x00110000,0x00000111,0x01111100,0x00000000, - 0x00001100,0x00000110,0x00000010,0x01000011, //00D1 ム - 0x01000001,0x01000001,0x01111111,0x00000000, - 0x01000000,0x01100010,0x00110100,0x00011000, //00D2 メ - 0x00001100,0x00010110,0x00100011,0x00000000, - 0x01111111,0x00000100,0x01111111,0x00000100, //00D3 モ - 0x00000100,0x00001100,0x01111000,0x00000000, - 0x00000100,0x01111111,0x01000100,0x01100100, //00D4 ヤ - 0x00110100,0x00000100,0x00000100,0x00000000, - 0x00011110,0x00010000,0x00010000,0x00010000, //00D5 ユ - 0x00010000,0x00010000,0x01111111,0x00000000, - 0x01111110,0x01000000,0x01000000,0x01111110, //00D6 ヨ - 0x01000000,0x01000000,0x01111110,0x00000000, - 0x01111111,0x00000000,0x01111111,0x01000000, //00D7 ラ - 0x01000000,0x01100000,0x00111110,0x00000000, - 0x01000010,0x01000010,0x01000010,0x01000010, //00D8 リ - 0x01000000,0x01100000,0x00111100,0x00000000, - 0x00001010,0x00001010,0x00001010,0x00001010, //00D9 ル - 0x01001010,0x01101010,0x00111011,0x00000000, - 0x00000001,0x00000001,0x01000001,0x01100001, //00DA レ - 0x00110001,0x00011001,0x00001111,0x00000000, - 0x01111111,0x01000001,0x01000001,0x01000001, //00DB ロ - 0x01000001,0x01000001,0x01111111,0x00000000, - 0x01111111,0x01000001,0x01000001,0x01000000, //00DC ワ - 0x01100000,0x00110000,0x00011110,0x00000000, - 0x00000111,0x01000000,0x01000000,0x01000000, //00DD ン - 0x01100000,0x00110000,0x00011111,0x00000000, - 0x00001001,0x00010010,0x00000000,0x00000000, //00DE ゙ - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00001110,0x00001010,0x00001110,0x00000000, //00DF ゚ - 0x00000000,0x00000000,0x00000000,0x00000000, - - 0x00000000,0x00000000,0x00000000,0x11100000, //00E0 メニューの左上 - 0x11110000,0x00111000,0x00011000,0x00011000, - 0x00000000,0x00000000,0x00000000,0x00000111, //00E1 メニューの右上 - 0x00001111,0x00011100,0x00011000,0x00011000, - 0x00011000,0x00011000,0x00111000,0x11110000, //00E2 メニューの左下 - 0x11100000,0x00000000,0x00000000,0x00000000, - 0x00011000,0x00011000,0x00011100,0x00001111, //00E3 メニューの右下 - 0x00000111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x11111111, //00E4 メニューの縦線 - 0x11111111,0x00000000,0x00000000,0x00000000, - 0x00011000,0x00011000,0x00011000,0x00011000, //00E5 メニューの横線 - 0x00011000,0x00011000,0x00011000,0x00011000, - 0x11111111,0x11111111,0x11111111,0x11111111, //00E6 ■ - 0x11111111,0x11111111,0x11111111,0x11111111, - 0x10101010,0x10101010,0x10101010,0x10101010, //00E7 縦ストライプ - 0x10101010,0x10101010,0x10101010,0x10101010, - 0x11111111,0x00000000,0x11111111,0x00000000, //00E8 横ストライプ - 0x11111111,0x00000000,0x11111111,0x00000000, - 0x00000000,0x11111110,0x11111110,0x11111110, //00E9 LCD検査のΓ - 0x11111110,0x11111110,0x11111110,0x11111110, - 0x11111000,0x11111111,0x11111111,0x11111111, //00EA LCD検査の ̄ - 0x11111111,0x11111111,0x11111111,0x11111111, - 0x11111110,0x11111110,0x11111110,0x11111111, //00EB LCD検査のΙ - 0x11111111,0x11111111,0x11111111,0x11111111, - - 0x00000000,0x00000000,0x00000000,0x00000000, //00EC TPマーカの左上 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000001,0x00000001,0x00000001, //00ED TPマーカの右上 - 0x00000001,0x00000001,0x00000000,0x00000000, - 0x00111111,0x00000000,0x00000000,0x00000000, //00EE TPマーカの左下 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x11111001,0x00000000,0x00000000,0x00000001, //00EF TPマーカの右下 - 0x00000001,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F0 TP精度マーカの左上 - 0x11110000,0x11110000,0x00110000,0x00110000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F1 TP精度マーカの右上 - 0x00011111,0x00011111,0x00011000,0x00011001, - 0x10110000,0x00110000,0x00110000,0x11110000, //00F2 TP精度マーカの左下 - 0x11110000,0x00000000,0x00000000,0x00000000, - 0x00011011,0x00011001,0x00011000,0x00011111, //00F3 TP精度マーカの右下 - 0x00011111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x11111110,0x10000010,0x10000010, //00F4 □ - 0x10000010,0x10000010,0x10000010,0x11111110, - 0x00000000,0x11111110,0x11111110,0x11111110, //00F5 ■ - 0x11111110,0x11111110,0x11111110,0x11111110, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F6 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F7 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F8 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00F9 - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FA - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FB - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FC - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FD - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FE - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, //00FF - 0x00000000,0x00000000,0x00000000,0x00000000, -}; - - diff --git a/build/debugsoft/treenand2sd/src/main.cpp b/build/debugsoft/treenand2sd/src/main.cpp deleted file mode 100644 index 6f4ad204..00000000 --- a/build/debugsoft/treenand2sd/src/main.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - treenand - File: main.c - - Copyright 2007 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 -#include -#include -#include -#include -#include -#include - -#include -#include "text.h" -#include "MyStrings.h" - -inline void* operator new(size_t size) { return OS_Alloc(size); } -inline void* operator new[](size_t size) { return OS_Alloc(size); } -inline void operator delete(void* ptr) { OS_Free(ptr); } -inline void operator delete[](void* ptr) { OS_Free(ptr); } - -namespace -{ - void - InitInterrupt(void) - { - OS_EnableIrq(); - OS_EnableInterrupts(); - } - - void - InitAlloc(void) - { - OSHeapHandle hHeap; - void* lo = OS_GetMainArenaLo(); - void* hi = OS_GetMainArenaHi(); - - lo = OS_InitAlloc(OS_ARENA_MAIN, lo, hi, 1); - OS_SetArenaLo(OS_ARENA_MAIN, lo); - - hHeap = OS_CreateHeap(OS_ARENA_MAIN, lo, hi); - SDK_ASSERT( hHeap >= 0 ); - - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); - } - - void - MyInit(void) - { - OS_Init(); - FX_Init(); - - GX_Init(); - - (void)OS_EnableIrqMask( OS_IE_V_BLANK ); - (void)OS_EnableIrq(); - - FS_Init(MI_DMA_MAX_NUM); - - GX_DispOff(); - GXS_DispOff(); - - (void)GX_VBlankIntr(TRUE); // to generate VBlank interrupt request - //--------------------------------------------------------------------------- - // All VRAM banks to LCDC - //--------------------------------------------------------------------------- - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - - //--------------------------------------------------------------------------- - // Clear all LCDC space - //--------------------------------------------------------------------------- - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //--------------------------------------------------------------------------- - // Disable the banks on LCDC - //--------------------------------------------------------------------------- - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); // clear the standard palette - - MI_CpuFillFast((void*)HW_DB_OAM, 192, HW_DB_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); // clear the standard palette - - GX_DispOn(); - GXS_DispOn(); - - *(vu16 *) REG_IME_ADDR = 1; // IME セット - - wInitTextVram(); - - //SDの存在チェック - { - FSPathInfo info; - - if(FS_GetPathInfo( "sdmc:/", &info ) ) - { - if( (info.attributes&FS_ATTRIBUTE_IS_PROTECTED)==FS_ATTRIBUTE_IS_PROTECTED ) - { - wSetPalette(COLOR_RED); - wPrintf("\n\n SD CARD IS PROTECTED!!"); - OS_Terminate(); - } - else - { - return; - } - } - else - { - wSetPalette(COLOR_RED); - wPrintf("\n\n SD CARD NOTHING!!"); - OS_Terminate(); - } - } - - } -} - -namespace -{ - class DirEntry; - typedef std::vector EntryList; - class DirEntry - { - private: - FSDirectoryEntryInfo m_dei; - std::string m_path; - EntryList* m_pEntryList; - - public: - DirEntry(std::string parent, const FSDirectoryEntryInfo& dei) - : m_path(parent + "/" + dei.longname) - , m_dei(dei) - , m_pEntryList(NULL) - {} - ~DirEntry(){ delete m_pEntryList; } - bool operator <(const DirEntry& rhs) const - { - return this->m_path < rhs.m_path; - } - - std::string GetPath() const { return m_path; } - std::string GetName() const { return m_dei.longname; } - std::string GetShortName() const { return m_dei.shortname; } - u32 GetSize() const { return m_dei.filesize; } - - bool IsDirectory() const { return (m_dei.attributes & FS_ATTRIBUTE_IS_DIRECTORY) != 0; } - bool IsReadOnly() const { return (m_dei.attributes & FS_ATTRIBUTE_DOS_READONLY) != 0; } - bool IsHidden() const { return (m_dei.attributes & FS_ATTRIBUTE_DOS_HIDDEN) != 0; } - bool IsSystem() const { return (m_dei.attributes & FS_ATTRIBUTE_DOS_SYSTEM) != 0; } - bool IsVolume() const { return (m_dei.attributes & FS_ATTRIBUTE_DOS_VOLUME) != 0; } - bool IsArchive() const { return (m_dei.attributes & FS_ATTRIBUTE_DOS_ARCHIVE) != 0; } - - void SetEntryList(EntryList* pEntryList) - { - delete m_pEntryList; - m_pEntryList = pEntryList; - } - const EntryList& GetEntryList() const - { - return *m_pEntryList; - } - std::string GetDateTimeString() const - { - std::ostringstream oss; - - oss << std::setw(4) << std::setfill('0') << m_dei.mtime.year << "/"; - oss << std::setw(2) << std::setfill('0') << m_dei.mtime.month << "/"; - oss << std::setw(2) << std::setfill('0') << m_dei.mtime.day << " "; - oss << std::setw(2) << std::setfill('0') << m_dei.mtime.hour << ":"; - oss << std::setw(2) << std::setfill('0') << m_dei.mtime.minute << ":"; - oss << std::setw(2) << std::setfill('0') << m_dei.mtime.second; - - return oss.str(); - } - }; - - typedef std::vector EntryList; - - void - GetDirEntry(EntryList* pList, std::string path) - { - BOOL bSuccess; - FSFile dir; - FSDirectoryEntryInfo dei; - - pList->clear(); - - FS_InitFile(&dir); - bSuccess = FS_OpenDirectory(&dir, path.c_str(), FS_FILEMODE_R); - if( bSuccess ) - { - while( FS_ReadDirectory(&dir, &dei) ) - { - std::string name = dei.longname; - - if( (name == ".") || (name == "..") ) - { - continue; - } - - pList->push_back( DirEntry(path, dei) ); - } - - FS_CloseDirectory(&dir); - } - - std::sort(pList->begin(), pList->end()); - } - - void - GetDirEntryRecursive(EntryList* pList, std::string path) - { - EntryList::iterator i; - - GetDirEntry(pList, path); - - for( i = pList->begin(); i != pList->end(); ++i ) - { - if( i->IsDirectory() ) - { - EntryList* pSubEntryList = new EntryList; - GetDirEntryRecursive(pSubEntryList, i->GetPath()); - i->SetEntryList(pSubEntryList); - } - } - } - - void - DrawEntries(std::string prevPart, std::string prevPart2, const EntryList& elist) - { - EntryList::const_iterator i; - - for( i = elist.begin(); i != elist.end(); ++i ) - { - std::ostringstream oss, oss2; - const bool isLast = (i + 1 == elist.end()); - - oss << prevPart; - oss2<< prevPart2; - oss << (isLast ? "└": "├" ); - oss2<< "+"; - oss << " " << i->GetName(); - oss2<< " " << i->GetName(); - if( i->IsDirectory() ) - { - oss << "/"; - oss2<< "/"; - - }else - { - char str[0x100]=""; - char size[20]=""; - int offset,j; - - offset = 60-STD_StrLen(oss.str().c_str()); - for(j=0;jGetSize()); - STD_StrCat(str,size); - - oss << " " << str; - oss2<< " " << size; - } - oss << std::endl; - oss2<< std::endl; - - OS_PutString(oss.str().c_str()); - SDLOG_Printf(oss.str().c_str()); - wPrintf(oss2.str().c_str()); - OS_Sleep(100); - - if( i->IsDirectory() ) - { - DrawEntries(prevPart + (isLast ? " ": "| "), (prevPart2 + " "), i->GetEntryList()); - } - } - } - - void - TreeNand(const char* root) - { - EntryList elist; - GetDirEntryRecursive(&elist, root); - - OS_TPrintf("%s\n", root); - DrawEntries("","", elist); - } -} - - -void -TwlStartUp() -{ - OS_Init(); - InitAlloc(); -} - -// 文字表示 -static void PutString( char *format, ... ) -{ - u16 *dest = (u16*)G2_GetBG1ScrPtr(); - char temp[32+1]; - int i; - va_list va; - - va_start(va, format); - (void)OS_VSNPrintf(temp, sizeof(temp), format, va); - va_end(va); - - for (i = 0; i < 32 && temp[i]; i++) - { - dest[i] = (u16)((u8)temp[i] | (1 << 12)); - } -} - -#define BUFFER_SIZE 0x900 -#define PARTITION_SIZE 0x300 -char logBuffer[ (BUFFER_SIZE + 1) ]; -void -TwlMain(void) -{ - - MyInit(); - - if( !SDLOG_Init("sdmc:/treenand2sd/", logBuffer, BUFFER_SIZE, PARTITION_SIZE, SDLOG_WRITE_TYPE_CONTINUANCE) ) - { - OS_Panic("Error"); - } - - OS_TPrintf("treenand start.\n"); - OS_TPrintf("---------------------------------------------------------------\n"); - wPrintf("\fnand:\n"); - wPrintf("-------------------------------\n"); - TreeNand("nand:"); - - wPrintf("\n\nnand2:\n"); - wPrintf("-------------------------------\n"); - TreeNand("nand2:"); - OS_TPrintf("---------------------------------------------------------------\n"); - OS_TPrintf("treenand completed.\n"); - - SDLOG_Flush(); - SDLOG_Finish(); - OS_Printf("Program is finished!\n"); - - wSetPalette(COLOR_BLUE); - wPrintf("\n !Program is finished!\n"); - - OS_Terminate(); -} - diff --git a/build/debugsoft/treenand2sd/src/text.c b/build/debugsoft/treenand2sd/src/text.c deleted file mode 100644 index 0e8ba5b6..00000000 --- a/build/debugsoft/treenand2sd/src/text.c +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************** - -タイトル: - テキストVRAMエミュレーション - -********************************************************************/ -#include "fontdata.h" -#include "text.h" - -/************************************************************************ - -☆グローバル変数宣言 - - ************************************************************************/ -/* テキストVRAM本体 */ -TEXT_VRAM_TYPE wText; - -/************************************************************************ - -☆プロトタイプ宣言 - - ************************************************************************/ -static void UpdateTextVram( void ); -static void Init( void ); - - - -/************************************************************************ - -☆システム関数群 - - ************************************************************************/ - -/************************************************************************ - - 初期化 - -概要: - キャラ・パレットの転送 - BG0コントロール - - ***********************************************************************/ -static void Init( void ){ - - GX_SetBankForBG(GX_VRAM_BG_128_A); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - G2_SetBG0Priority(0); - G2_BlendNone(); // no 2D alpha blending or brightness change - G2_BG0Mosaic(FALSE); - GX_SetVisibleWnd(GX_WNDMASK_NONE); // ウインドウ無し - G2_SetBG0Offset(0, 0); //オフセット0 - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - - //表示リソースの再ロード - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode - GX_BG_SCRBASE_0x0000, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x04000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - GX_LoadBG0Char(CharData_Sample, 0, sizeof(CharData_Sample)); - GX_LoadBGPltt(PlttData_Sample, 0, sizeof(PlttData_Sample)); - -} - -/************************************************************************ - - テキストVRAMサービス初期化 - -注意事項: - プログラム開始時に一度だけコールしてください。 - - ***********************************************************************/ -extern void wInitTextVram( void ){ - - static BOOL Initialized = FALSE; - - if( !Initialized ){ - - /* 初期設定をおこなう */ - Init(); - - // Vブランク割り込み設定 - OS_InitIrqTable(); - OS_SetIrqFunction(OS_IE_V_BLANK, UpdateTextVram); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableInterrupts(); - - Initialized = TRUE; - } -} - -/************************************************************************ - - テキストVRAMの更新ルーチン - -注意事項: - 割込みのコールバックルーチンです。 - - 画面を自動的に更新するために定期的に呼び出してください。 - (上記のInitTextVramを使用する場合は不要) - - ***********************************************************************/ -static void UpdateTextVram( void ){ - - MI_CpuCopy16( wText.Map, G2_GetBG0ScrPtr(), sizeof(wText.Map) ); - DC_StoreRange( G2_GetBG0ScrPtr(), sizeof(wText.Map) ); - -} - diff --git a/build/tests/AppVersionViewer/ARM9/Makefile b/build/tests/AppVersionViewer/ARM9/Makefile deleted file mode 100644 index 5e20a362..00000000 --- a/build/tests/AppVersionViewer/ARM9/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 0 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0BZA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=N -DVERSION_VIEWER=TRUE -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCDIR = $(DISP_INFO)/ARM9/src - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_NAME = AppVersionViewer -TARGET_BIN = $(TARGET_NAME).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - liberrorlog$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE) -OBJDIR = ./obj/$(TWL_BUILDTYPE) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = $(DISP_INFO)/ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/AppVersionViewer/ARM9/main.rsf b/build/tests/AppVersionViewer/ARM9/main.rsf deleted file mode 100644 index 36a4c3fe..00000000 --- a/build/tests/AppVersionViewer/ARM9/main.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - HwAESSlotA_SSLClientCert $(DISPINFO_AES) - DisableDebug TRUE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) -# AppType SYSTEM - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) -# Media NAND - # - # Data only title : [TRUE/FALSE] - # don't have to edit - ##DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) -# Secure TRUE - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/AppVersionViewer/banner/Makefile b/build/tests/AppVersionViewer/banner/Makefile deleted file mode 100644 index a6a3b396..00000000 --- a/build/tests/AppVersionViewer/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/icon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/AppVersionViewer/banner/banner_v3.bsf b/build/tests/AppVersionViewer/banner/banner_v3.bsf deleted file mode 100644 index d3ede19a..00000000 Binary files a/build/tests/AppVersionViewer/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/AppVersionViewer/banner/icon/icon.bmp b/build/tests/AppVersionViewer/banner/icon/icon.bmp deleted file mode 100644 index b2ddda22..00000000 Binary files a/build/tests/AppVersionViewer/banner/icon/icon.bmp and /dev/null differ diff --git a/build/tests/CalcHMAC_forBroadOn/Makefile b/build/tests/CalcHMAC_forBroadOn/Makefile deleted file mode 100644 index 755280bf..00000000 --- a/build/tests/CalcHMAC_forBroadOn/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CalcHMAC_forBroadOn -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -SRCS = CalcHMAC_forBroadOn.c - -TARGET_BIN = CalcHMAC_forBroadOn.srl - -TITLEID_LO = 0BRA - -ROM_SPEC = main.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -LINCLUDES = $(ROOT)/build/libraries/lcfg/ARM9.TWL/include -LLIBRARIES = liblcfg$(TWL_LIBSUFFIX).a - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' -endif - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_IPL_RED_PRIVATE_ROOT)/keys/rsa' \ - -DCARD_REGION='$(CARD_REGION)' - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CalcHMAC_forBroadOn/main.rsf b/build/tests/CalcHMAC_forBroadOn/main.rsf deleted file mode 100644 index e35eb49e..00000000 --- a/build/tests/CalcHMAC_forBroadOn/main.rsf +++ /dev/null @@ -1,171 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - RomVersion 2 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 2G - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(PRIVKEY_PATH) - Root /key - File $(HWINFO_PRIVKEY) -} diff --git a/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c b/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c deleted file mode 100644 index 9019ea4e..00000000 --- a/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c +++ /dev/null @@ -1,368 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - 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 -#include -#include -#include -#include -#include -#include -#include "TWLStoreFile.h" - -// define data------------------------------------------------------------------ -#define HWINFO_PRIVKEY_PATH "rom:key/private_HWInfo.der" // 製品用秘密鍵 -#define RSA_KEY_LENGTH_1024 RSA_KEY_LENGTH -#define HWINFO_S_BODY_SIZE 0x1C - -#define PATH_K00A317_JP "sdmc:/hwinfo_s/HWInfo_S.K00A317_JP.dat" -#define PATH_K00A317_US "sdmc:/hwinfo_s/HWInfo_S.K00A317_US.dat" -#define PATH_K00A317_EU "sdmc:/hwinfo_s/HWInfo_S.K00A317_EU.dat" -#define PATH_K00A317_AU "sdmc:/hwinfo_s/HWInfo_S.K00A317_AU.dat" -#define PATH_K00A319_JP "sdmc:/hwinfo_s/HWInfo_S.K00A319_JP.dat" -#define PATH_K00A319_US "sdmc:/hwinfo_s/HWInfo_S.K00A319_US.dat" -#define PATH_K00A319_EU "sdmc:/hwinfo_s/HWInfo_S.K00A319_EU.dat" -#define PATH_K00A319_AU "sdmc:/hwinfo_s/HWInfo_S.K00A319_AU.dat" - -//------------------------------------------------------------------------------ -extern s32 CRYPTO_RSA_Sign_custom(CRYPTORSASignContext *context, CRYPTORSASignParam *param); - -//------------------------------------------------------------------------------ -static u8 s_privKey[ 4096 ] ATTRIBUTE_ALIGN(32); -static TSFHeader s_header; - -/*----------------------------------------------------------------------------*/ -static const u64 FuseID_K00A317 = 0x08a1080105112134LLU; -static const u64 FuseID_K00A319 = 0x08a1080105112122LLU; - -/*----------------------------------------------------------------------------*/ -static const u8 HWINFO_S_K00A317_JP[HWINFO_S_BODY_SIZE] = -{ - 0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x00, /* region */ - 'T', 'J', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'J', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_US[HWINFO_S_BODY_SIZE] = -{ - 0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x01, /* region */ - 'T', 'N', '5', '6', '3', '2', '0', '4', - '0', '2', '0', 0x00, 0x00, 'K', 0x00, /* serialNo */ - 'E', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_EU[HWINFO_S_BODY_SIZE] = -{ - 0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x02, /* region */ - 'T', 'E', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'P', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_AU[HWINFO_S_BODY_SIZE] = -{ - 0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x03, /* region */ - 'T', 'A', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'U', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - - -/*----------------------------------------------------------------------------*/ -static const u8 HWINFO_S_K00A319_JP[HWINFO_S_BODY_SIZE] = -{ - 0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x00, /* region */ - 'T', 'J', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'J', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_US[HWINFO_S_BODY_SIZE] = -{ - 0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x01, /* region */ - 'T', 'N', '3', '5', '3', '8', '9', '0', - '3', '3', '4', 0x00, 0x00, 'K', 0x00, /* serialNo */ - 'E', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_EU[HWINFO_S_BODY_SIZE] = -{ - 0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x02, /* region */ - 'T', 'E', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'P', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_AU[HWINFO_S_BODY_SIZE] = -{ - 0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x03, /* region */ - 'T', 'A', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'U', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -//================================================================================ - -static void CalcHWSecureInfoHMAC( void *pDstHMAC, const void* body, u64 fuseID ) -{ - u8 key[SVC_SHA1_DIGEST_SIZE]; - int i; - SVC_CalcSHA1(key, &fuseID, sizeof(u64)); - SVC_CalcHMACSHA1( pDstHMAC, body, HWINFO_S_BODY_SIZE, key, SVC_SHA1_DIGEST_SIZE); - - OS_TPrintf( "key : " ); - for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) { - OS_TPrintf( "%02x", key[ i ] ); - } - OS_TPrintf( "\n" ); - OS_TPrintf( "hmac: " ); - for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) { - OS_TPrintf( "%02x", ((u8 *)pDstHMAC)[ i ] ); - } - OS_TPrintf( "\n" ); - - return; -} - -// 署名算出(BERエンコードなし) -static BOOL CalcSignature( void *pDstSign, const void *pSrc, u32 len, const u8 *pPrivKeyDER, u32 keyFileLen, u32 keyLen ) -{ - CRYPTORSASignContext context; - CRYPTORSASignInitParam initParam; - CRYPTORSASignParam param; - int result_len; - - initParam.key = (void*)pPrivKeyDER; - initParam.key_len = keyFileLen; - if( CRYPTO_RSA_SignInit(&context, &initParam) != 0 ) { - return FALSE; - } - - param.in = (void *)pSrc; - param.in_len = len; - param.out = pDstSign; - param.out_size = keyLen; - - result_len = CRYPTO_RSA_Sign_custom(&context, ¶m); - if( result_len != keyLen ) { - return FALSE; - } - - return CRYPTO_RSA_SignTerminate(&context) == 0 ? TRUE : FALSE; -} - - -static BOOL LCFGi_THW_WriteSecureInfoCustom( char *pPath, const LCFGTWLHWSecureInfo *pSrcInfo, u64 fuseID, const u8 *pPrivKeyDER, u32 keyFileLen ) -{ - TSFHeader header; - - // ヘッダ初期化 - MI_CpuClear8( &header, sizeof(TSFHeader) ); - header.version = LCFG_TWL_HWINFO_SECURE_VERSION; - header.bodyLength = sizeof( LCFGTWLHWSecureInfo ); - - // ヘッダ署名算出 - { - u8 hmac_sha1[ SVC_SHA1_DIGEST_SIZE ]; - CalcHWSecureInfoHMAC( hmac_sha1, pSrcInfo, fuseID ); - if( !CalcSignature( (void *)header.digest.rsa, hmac_sha1, SVC_SHA1_DIGEST_SIZE, pPrivKeyDER, keyFileLen, RSA_KEY_LENGTH_1024 ) ) { - return FALSE; - } - } - - // ファイル生成 - (void)FS_CreateFileAuto( pPath, FS_PERMIT_R | FS_PERMIT_W ); - { -#define HWINFO_FILE_LEN ( 16 * 1024 ) - FSFile file[1]; - char *pBuffer = OS_Alloc( HWINFO_FILE_LEN ); - - if( !FS_OpenFileEx( file, pPath, FS_FILEMODE_RW ) ) { - return FALSE; - } - if( FS_SetFileLength( file, HWINFO_FILE_LEN ) != FS_RESULT_SUCCESS ) { - (void)FS_CloseFile( file ); - return FALSE; - } - if( pBuffer ) { - MI_CpuFillFast( pBuffer, 0xffffffff, HWINFO_FILE_LEN ); - (void)FS_WriteFile( file, pBuffer, HWINFO_FILE_LEN ); - } - (void)FS_CloseFile( file ); - } - - // ライト - if( !LCFGi_TSF_WriteFile( pPath, &header, (const void *)pSrcInfo, NULL ) ) { - return FALSE; - } - return TRUE; -} - - -// 秘密鍵のリード -static BOOL ReadPrivateKey( void *pBuffer, u32 *pKeyFileLen, char *pPath ) -{ - BOOL retval = TRUE; - FSFile file; - - FS_InitFile( &file ); - if( !FS_OpenFileEx( &file, pPath, FS_FILEMODE_R ) ) - { - OS_TPrintf( "PrivateKey read failed.\n" ); - retval = FALSE; - }else { - *pKeyFileLen = FS_GetFileLength( &file ); - if( *pKeyFileLen > 0 ) { - if( FS_ReadFile( &file, pBuffer, (s32)*pKeyFileLen ) == *pKeyFileLen ) { - OS_TPrintf( "PrivateKey read succeeded.\n" ); - }else { - OS_TPrintf( "PrivateKey read failed.\n" ); - retval = FALSE; - } - } - FS_CloseFile( &file ); - } - return retval; -} - -/*---------------------------------------------------------------------------* - Name: InitAllocSystem - - Description: ヒープを作成して OS_Alloc が使えるようにします。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitAllocSystem() -{ - void* newArenaLo; - OSHeapHandle hHeap; - - // メインアリーナのアロケートシステムを初期化 - newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetMainArenaLo(newArenaLo); - - // メインアリーナ上にヒープを作成 - hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); -} - -extern u64 g_HWInfoFuseROM; -extern char *g_pHwInfoPath; - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - BOOL retval; - u32 keyLen; - - OS_Init(); - InitAllocSystem(); - (void)OS_SetIrqMask(0); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - FS_Init( FS_DMA_NOT_USE ); - CRYPTO_SetMemAllocator( OS_AllocFromMain, OS_FreeToMain, NULL ); - - OS_TPrintf("---- HMAC over HWInfo_S for PROD boards @ BroadOn ----\n"); - - if( !ReadPrivateKey( s_privKey, &keyLen, HWINFO_PRIVKEY_PATH ) ) { - OS_TPrintf("PrivateKey read failed.\n"); - }else { - OS_TPrintf("TS-Board: K00A317\n"); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_JP, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_US, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_EU, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_AU, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - - OS_TPrintf("TS-Board: K00A319\n"); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_JP, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_US, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_EU, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_AU, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - } -#if 0 - OS_TPrintf("---- Verify phase ----\n"); - { - OS_TPrintf("TS-Board: K00A317\n"); - g_HWInfoFuseROM = FuseID_K00A317; - g_pHwInfoPath = PATH_K00A317_JP; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_US; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_EU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_AU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - - OS_TPrintf("TS-Board: K00A319\n"); - g_HWInfoFuseROM = FuseID_K00A319; - g_pHwInfoPath = PATH_K00A319_JP; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_US; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_EU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_AU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - } -#endif - OS_Terminate(); -} diff --git a/build/tests/CheckCardAccess/Makefile b/build/tests/CheckCardAccess/Makefile deleted file mode 100644 index a9bcdf87..00000000 --- a/build/tests/CheckCardAccess/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.off Makefile.normal Makefile.game - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.game b/build/tests/CheckCardAccess/Makefile.game deleted file mode 100644 index 336eafb1..00000000 --- a/build/tests/CheckCardAccess/Makefile.game +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.game -# -# 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$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_game -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = game_mode.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.normal b/build/tests/CheckCardAccess/Makefile.normal deleted file mode 100644 index 267b70f0..00000000 --- a/build/tests/CheckCardAccess/Makefile.normal +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.normal -# -# 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$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_normal -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = normal_mode.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.off b/build/tests/CheckCardAccess/Makefile.off deleted file mode 100644 index 4585c909..00000000 --- a/build/tests/CheckCardAccess/Makefile.off +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.off -# -# 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$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_slotpoweroff -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = slot_power_off.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/game_mode.rsf b/build/tests/CheckCardAccess/game_mode.rsf deleted file mode 100644 index f8d2dba8..00000000 --- a/build/tests/CheckCardAccess/game_mode.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C5A/rom_header_0c5a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - GameCardNitroMode TRUE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/normal_mode.rsf b/build/tests/CheckCardAccess/normal_mode.rsf deleted file mode 100644 index 888fbd4d..00000000 --- a/build/tests/CheckCardAccess/normal_mode.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C4A/rom_header_0c4a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - GameCardOn TRUE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/slot_power_off.rsf b/build/tests/CheckCardAccess/slot_power_off.rsf deleted file mode 100644 index b0013f6f..00000000 --- a/build/tests/CheckCardAccess/slot_power_off.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C3A/rom_header_0c3a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/src/font.c b/build/tests/CheckCardAccess/src/font.c deleted file mode 100644 index 9500697a..00000000 --- a/build/tests/CheckCardAccess/src/font.c +++ /dev/null @@ -1,579 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.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 "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CheckCardAccess/src/font.h b/build/tests/CheckCardAccess/src/font.h deleted file mode 100644 index b4a94093..00000000 --- a/build/tests/CheckCardAccess/src/font.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // FONT_H_ diff --git a/build/tests/CheckCardAccess/src/hotswTypes.h b/build/tests/CheckCardAccess/src/hotswTypes.h deleted file mode 100644 index 02d0843e..00000000 --- a/build/tests/CheckCardAccess/src/hotswTypes.h +++ /dev/null @@ -1,134 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: type.h - - Copyright 2007-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. - *---------------------------------------------------------------------------*/ -#ifndef __HOTSW_TYPES_H__ -#define __HOTSW_TYPES_H__ - -#include -#include -#include "romSpec.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -static inline void HOTSW_WaitCardCtrl(void) -{ - while( reg_MI_MCCNT1_A & REG_MI_MCCNT1_START_MASK ){} -} - -// Define ------------------------------------------------------------------- -// --- Boot Segment -#define BOOT_SEGMENT_SIZE 0x1000 - -// --- Secure Segment -#define SECURE_SEGMENT_START 0x4000 -#define SECURE_SEGMENT_SIZE 0x4000 -#define SECURE_SEGMENT_END (SECURE_SEGMENT_START + SECURE_SEGMENT_SIZE) - -// --- TWL Card -#define TWLCARD_BORDER_OFFSET 0x80000 - -// --- Page / Segment (Byte) -#define PAGE_SIZE 0x200 -#define ONE_SEGMENT_SIZE 0x1000 - -// --- Page / Segment (Word) -#define PAGE_WORD_SIZE 0x80 -#define ONE_SEGMENT_WORD_SIZE 0x400 - -// --- Rom Emulation -#define ROM_EMULATION_DATA_SIZE 0x20 - -// --- Thread -#define HOTSW_THREAD_STACK_SIZE (1024 * 2) -#define HOTSW_DMA_MSG_NUM 8 -#define HOTSW_INSERT_MSG_NUM 16 -#define HOTSW_PULLED_MSG_NUM 16 -#define HOTSW_CTRL_MSG_NUM 8 -#define HOTSW_MSG_BUFFER_NUM (HOTSW_INSERT_MSG_NUM + HOTSW_PULLED_MSG_NUM + HOTSW_CTRL_MSG_NUM) -#define HOTSW_POLLING_CTRL_BUFFER_NUM 4 - -// --- Card Control Reg 0 -#define HOTSW_E2PROM_CTRL_MASK 0x00ff - -// --- Card Control Reg 1 -#define START_FLG_MASK 0x80000000 -#define READY_FLG_MASK 0x00800000 - -#define LATENCY1_SHIFT 0 -#define LATENCY1_MASK 0x00001fff - -#define DS_SHIFT 13 -#define DS_MASK 0x00002000 - -#define SE_SHIFT 14 -#define SE_MASK 0x00004000 - -#define SCR_SHIFT 15 -#define SCR_MASK 0x00008000 - -#define LATENCY2_SHIFT 16 -#define LATENCY2_MASK 0x003f0000 - -#define CS_SHIFT 22 -#define CS_MASK 0x00400000 - -#define RDY_SHIFT 23 -#define RDY_MASK 0x00800000 - -#define PC_SHIFT 24 -#define PC_MASK 0x07000000 - -#define CT_SHIFT 27 -#define CT_MASK 0x08000000 - -#define TRM_SHIFT 28 -#define TRM_MASK 0x10000000 - -#define RESB_SHIFT 29 -#define RESB_MASK 0x20000000 - -#define WR_SHIFT 30 -#define WR_MASK 0x40000000 - -#define START_SHIFT 31 -#define START_MASK 0x80000000 - -#define SCRAMBLE_MASK 0x1040e000 // スクランブル関係のフラグマスク -#define SECURE_COMMAND_SCRAMBLE_MASK 0x00406000 // CS SE DSのマスク - -// --- Page Count -#define PAGE_0 0x0UL << PC_SHIFT -#define PAGE_1 0x1UL << PC_SHIFT -#define PAGE_2 0x2UL << PC_SHIFT -#define PAGE_4 0x3UL << PC_SHIFT -#define PAGE_8 0x4UL << PC_SHIFT -#define PAGE_16 0x5UL << PC_SHIFT -#define PAGE_32 0x6UL << PC_SHIFT -#define PAGE_STAT 0x7UL << PC_SHIFT - - -// union --------------------------------------------------------------------- -typedef union -{ - u64 dw; - u8 b[8]; -} Cmd64; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif // __HOTSW_TYPES_H__ \ No newline at end of file diff --git a/build/tests/CheckCardAccess/src/main.c b/build/tests/CheckCardAccess/src/main.c deleted file mode 100644 index a449884a..00000000 --- a/build/tests/CheckCardAccess/src/main.c +++ /dev/null @@ -1,768 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - CARD - hotswDebug - File: main_finalize.c - - Copyright 2007 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. - *---------------------------------------------------------------------------*/ - -#include -#include -#include "DEMO.h" -#include "hotswTypes.h" -#include "font.h" - -#define SDK_MAKERCODE '10' -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) - -#define MY_TEMP_BUFFER_SIZE 0x80000 -#define GAME_FIELD_START_ADDRESS 0x8000 - -#define ONE_SEGMENT_PAGE_NUM 8 - -#define READY_MASK 0x00800000 -#define CARD_COMMAND_MASK 0x07000000 - -#define MY_ROMHEADER_TWL ((ROM_Header_Short *)HW_TWL_CARD_ROM_HEADER_BUF) -#define MY_ROMHEADER_NTR ((ROM_Header_Short *)HW_CARD_ROM_HEADER) -#define MY_ROMHEADER_NAND ((ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF) - -// --------------------------------------------------------------- -// HMACSHA1の鍵 -static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = { - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24 -}; - -static u32 rhBuf[BOOT_SEGMENT_SIZE/sizeof(u32)]; -static u32 checkBuf[MY_TEMP_BUFFER_SIZE/sizeof(u32)]; - -static u16 card_lock_id; -static BOOL error, flxhash, ltdhash, romheader; -static BOOL isTwlApplication; -static BOOL isTwlCard; -static ROM_Header_Short *rh; - -static u16 screen[32 * 32] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE); - -// --------------------------------------------------------------- -static void CheckMirrorImage(void); -static int CompRomHeaderForNTR(void* buf); -static void CheckRomHeader(void); -static BOOL CheckHashValue(void* buf, u32 size, void* digest); -static void MY_LoadCard_arm7Static(void); -static void MY_LoadCard_arm7LtdStatic(void); -static void CheckBackupDevice(void); -static void ShowResult(void); -static void debugMessage(void); - -static void ReadBootSegNormal(void* buf); -static void SetCommand(Cmd64 *cndLE); -static void ReadPageGame(u32 start_addr, void* buf, u32 size); -static void ReadCardData(void* dest, s32 offset, s32 length); - -static void VBlankIntr (void); -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...); -static void VolumeSwitchCallback(SNDEXResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: メイン エントリポイント. - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - CARDRomHeader *card_header = (void*)CARD_GetRomHeader(); - - OS_Init(); - OS_InitTick(); - CARD_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - if ( card_header->maker_code == SDK_MAKERCODE ) - { - CARD_Enable(TRUE); - } - - /* 表示設定初期化 */ - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - MI_CpuFillFast((void*)HW_OAM, GX_LCD_SIZE_Y, HW_OAM_SIZE); - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, GX_LCD_SIZE_Y, HW_DB_OAM_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, // SCR ベースブロック 31 - GX_BG_CHARBASE_0x00000, // CHR ベースブロック 0 - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - MI_CpuClearFast((void*)screen, sizeof(screen)); - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* 割込み設定 */ - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* LCD 表示開始 */ - GX_DispOn(); - GXS_DispOn(); - - PrintString(0, 0, 0xc, "+++ Card Access Check +++"); - - // NANDアプリがHYBの場合 - if(MY_ROMHEADER_NAND->platform_code == 0x02){ - PrintString(0, 2, 0x5, ""); - } - else if(MY_ROMHEADER_NAND->platform_code == 0x03){ - PrintString(0, 2, 0x6, ""); - } - - // カードアプリタイプを判別。使うRom Header Buffer を切替える - if(MY_ROMHEADER_NTR->platform_code & PLATFORM_CODE_FLAG_TWL){ - PrintString(0, 5, 0xf, "- TWL Application -"); - isTwlApplication = TRUE; - rh = MY_ROMHEADER_TWL; - } - else{ - PrintString(0, 5, 0xf, "- NTR Application -"); - isTwlApplication = FALSE; - rh = MY_ROMHEADER_NTR; - } - - // カードタイプの判別 - isTwlCard = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_TWLROM_MASK) ? TRUE : FALSE; - - // 注:rhの初期化が終わってから呼び出す -// debugMessage(); - - // フラグの初期化 - error = FALSE; - flxhash = TRUE; - ltdhash = TRUE; - romheader = TRUE; - - // ロックIDを取得しておく - card_lock_id = (u16)OS_GetLockID(); - - if(isTwlApplication){ - MY_LoadCard_arm7Static(); - MY_LoadCard_arm7LtdStatic(); - } - else{ - CheckMirrorImage(); - } - - CheckRomHeader(); - CheckBackupDevice(); - - ShowResult(); - - while(1){ -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } -} - - -/*---------------------------------------------------------------------------* - Name: CheckMirrorImage - - Description: - - Gameモード時 → Gameコマンド OK - Normalコマンド All 1 - - Normalモード時 → Gameコマンド All 1 - Normalコマンド OK - - SlotPowerOff時 → Gameコマンド All 0 - Normalコマンド All 0 - *---------------------------------------------------------------------------*/ -static void CheckMirrorImage(void) -{ - u32 buf1[PAGE_SIZE/sizeof(u32)]; - u32 buf2[PAGE_SIZE/sizeof(u32)]; - u32 buf_ff[PAGE_SIZE/sizeof(u32)]; - u32 buf_00[PAGE_SIZE/sizeof(u32)]; - - MI_CpuFill8( buf_ff, 0xff, sizeof(buf_ff) ); - MI_CpuFill8( buf_00, 0x0, sizeof(buf_00) ); - - CARD_LockRom(card_lock_id); - - // GameモードのコマンドでKey Table領域とGame領域読む - ReadCardData(buf1, (s32)0x1000, (s32)PAGE_SIZE); - ReadCardData(buf2, (s32)0x8000, (s32)PAGE_SIZE); - - CARD_UnlockRom(card_lock_id); - - // GameモードでKey Table領域からGame領域のイメージが読めてなかったら、不明なモード - if(MI_CpuComp8( buf1, buf2, PAGE_SIZE )){ - error = TRUE; - PrintString(0, 7, 0x1, "Unknown Mode"); - } - else{ - // 同じデータでも ALL 1(GameMode時) or ALL 0(SlotPowerOff時)ならちゃんと読めてないので、Normalモード - if(!MI_CpuComp8( buf_ff, buf2, PAGE_SIZE ) || !MI_CpuComp8( buf_00, buf2, PAGE_SIZE )){ - flxhash = FALSE; - ltdhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - // Key Table領域読んで、Game領域のイメージが出てたらGameモード - else{ - flxhash = TRUE; - ltdhash = FALSE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - } -} - - -/*---------------------------------------------------------------------------* - Name: CheckRomHeader - - Description: - *---------------------------------------------------------------------------*/ -static void CheckRomHeader(void) -{ - int result; - u8* pBuf = (u8 *)rhBuf; - u8* romHeader = (u8 *)rh; - - CARD_LockRom(card_lock_id); - - ReadBootSegNormal(pBuf); - - CARD_UnlockRom(card_lock_id); - - // 実際に読んだRom HeaderとIPLで読んだRom Headerを比較 - if(isTwlApplication){ - result = MI_CpuComp8( pBuf, romHeader, HW_TWL_CARD_ROM_HEADER_BUF_SIZE ); - } - else{ - result = CompRomHeaderForNTR(pBuf); - } - - // 結果 - if(result){ - romheader = FALSE; - PrintString(0, 11, 0x1, "Boot Segment : Not Accessible"); - } - else{ - romheader = TRUE; - PrintString(0, 11, 0x8, "Boot Segment : Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -static int CompRomHeaderForNTR(void* buf){ - u8* pBuf = (u8 *)buf; - u8* romHeader = (u8 *)rh; - u32 remainSize = HW_CARD_ROM_HEADER_SIZE; - - while(remainSize){ - // マスクRomコントロール情報が変わってるので、そこは飛ばす。 - if((HW_CARD_ROM_HEADER_SIZE - remainSize) == 0x60){ - pBuf += 4; - romHeader += 4; - remainSize -= 4; - } - if(*pBuf == *romHeader){ - remainSize--; - } - else{ -// OS_TPrintf("Error (adr:0x%08x)\n", HW_CARD_ROM_HEADER_SIZE - remainSize); -// OS_TPrintf("read : 0x%02x real : 0x%02x\n", *pBuf, *romHeader); - break; - } - pBuf++; - romHeader++; - } - - return (int)remainSize; -} - - -/*---------------------------------------------------------------------------* - Name: CheckHashValue - - Description: モジュールハッシュチェック - *---------------------------------------------------------------------------*/ -static BOOL CheckHashValue(void* buf, u32 size, void* digest) -{ - u8 sha1data[DIGEST_SIZE_SHA1]; - BOOL retval = TRUE; - - // クリア - MI_CpuClear8(sha1data, sizeof(sha1data)); - - // ARM7常駐モジュールのHash値照合 - SVC_CalcHMACSHA1( sha1data, - buf, - size, - s_digestDefaultKey, - sizeof(s_digestDefaultKey) ); - - return SVC_CompareSHA1( sha1data, digest ); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7Static - - Description: ARM7常駐モジュール 読み出し・ハッシュチェック - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7Static(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_rom_offset, (s32)rh->sub_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(checkBuf, rh->sub_size, (void *)rh->sub_static_digest); - - if(result){ - flxhash = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - else{ - flxhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7LtdStatic - - Description: ARM7拡張常駐モジュール 読み出し・ハッシュチェック - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7LtdStatic(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_ltd_rom_offset, (s32)rh->sub_ltd_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(checkBuf, rh->sub_ltd_size, (void *)rh->sub_ltd_static_digest); - - if(result){ - ltdhash = TRUE; - PrintString(0, 9, 0x8, "Ltd Area : Accessible"); - } - else{ - ltdhash = FALSE; - PrintString(0, 9, 0x1, "Ltd Area : Not Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: CheckBackupDevice - - Description: Backup Device へのアクセスチェック - - 注:EEPROM 512 kbのサブ基盤と使って検査する - *---------------------------------------------------------------------------*/ -static void CheckBackupDevice(void) -{ - BOOL identify; - static CARDResult last_result = CARD_RESULT_SUCCESS; - - CARD_LockBackup(card_lock_id); - - identify = CARD_IdentifyBackup(CARD_BACKUP_TYPE_EEPROM_512KBITS); - if (!identify) - { - PrintString(0, 13, 0x1, "Backup Device Identify Error..."); - error = TRUE; - CARD_UnlockBackup(card_lock_id); - return; - } - - { - u32 pos = 0; - static u8 tmp_buf[65536]; - int i; - const u32 page_size = CARD_GetBackupPageSize(); - const u32 total_size = CARD_GetBackupTotalSize(); - - for (i = 0; i < page_size; ++i) - { - tmp_buf[i] = (u8)(pos * 3 + i); - } - - if (!CARD_IsBackupEeprom()){ - PrintString(0, 13, 0x1, "Please Use EEPROM..."); - error = TRUE; - return; - } - - PrintString(0, 13, 0xf, "Backup Device Check Start..."); -// DEMO_DrawFlip(); - - while(pos < total_size){ - CARD_WriteAndVerifyEepromAsync(pos, tmp_buf, page_size, NULL, NULL); - - (void)CARD_WaitBackupAsync(); - last_result = CARD_GetResultCode(); - - pos += page_size; - - if (last_result != CARD_RESULT_SUCCESS){ - break; - } - } - - if (last_result != CARD_RESULT_SUCCESS){ - PrintString(0, 14, 0x1, "Backup Device : Not Accessible"); - error = TRUE; - } - else{ - PrintString(0, 14, 0x8, "Backup Device : Accessible"); - } - } - - CARD_UnlockBackup(card_lock_id); - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: ReadBootSegNormal - - Description: ノーマルモードのBoot Segment読み込み - *---------------------------------------------------------------------------*/ -#define TIME_OUT 1000 - -static void ReadBootSegNormal(void* buf) -{ - u32 i, loop, pc, size, counter; - u64 page = 0; - Cmd64 cndLE; - BOOL isType1; - - OSTick start; - - isType1 = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_1TROM_MASK) ? FALSE : TRUE; - - if(isType1){ - loop = 0x1UL; - pc = 0x4UL; - size = BOOT_SEGMENT_SIZE; - } - else{ - loop = ONE_SEGMENT_PAGE_NUM; - pc = 0x1UL; - size = PAGE_SIZE; - } - - counter = 0; - - HOTSW_WaitCardCtrl(); - - for(i=0; i TIME_OUT){ - return; - } - } - *((u32 *)buf + counter++) = reg_MI_MCD1_A; - } - - page++; - - OS_SpinWait( 100 ); - } -} - - -/*---------------------------------------------------------------------------* - Name: HOTSWi_SetCommand - - Description: 引数で与えられたコマンドのエンディアンを変えてレジスタにセットする - *---------------------------------------------------------------------------*/ -static void SetCommand(Cmd64 *cndLE) -{ - Cmd64 cndBE; - - // ビッグエンディアンに直す - cndBE.b[7] = cndLE->b[0]; - cndBE.b[6] = cndLE->b[1]; - cndBE.b[5] = cndLE->b[2]; - cndBE.b[4] = cndLE->b[3]; - cndBE.b[3] = cndLE->b[4]; - cndBE.b[2] = cndLE->b[5]; - cndBE.b[1] = cndLE->b[6]; - cndBE.b[0] = cndLE->b[7]; - - // MCCMD レジスタ設定 - reg_MI_MCCMD0_A = *(u32*)cndBE.b; - reg_MI_MCCMD1_A = *(u32*)&cndBE.b[4]; -} - - -/*---------------------------------------------------------------------------* - Name: ReadPageGame - - Description: ゲームモードで、指定されたページを指定バッファに指定サイズ分を読み込む - *---------------------------------------------------------------------------*/ -static void ReadPageGame(u32 start_addr, void* buf, u32 size) -{ - u32 loop, counter=0; - u64 i, page; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - OSTick start; - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - page = (u32)(start_addr / PAGE_SIZE); - loop = (u32)(size / PAGE_SIZE); - loop = (size % PAGE_SIZE) ? loop + 1 : loop; - - HOTSW_WaitCardCtrl(); - - for(i=0; i TIME_OUT){ - return; - } - } - *((u32 *)buf + counter++) = reg_MI_MCD1_A; - } - } - - OS_SpinWait( 100 ); -} - - -/*---------------------------------------------------------------------------* - Name: ReadCardData - - Description: カードから中途半端なサイズ(page途中)のデータを読み出す関数 - エラーコードを返す - *---------------------------------------------------------------------------*/ -static void ReadCardData(void* dest, s32 offset, s32 length) -{ - static u8 page_buffer[512]; - u32 page_offset = (u32)(offset & -512); - u32 buffer_offset = (u32)(offset % 512); - u32 valid_length = 512 - buffer_offset; - u32 remain_length; - - // 開始アドレスがページの途中 - if ( offset % 512 ) - { - ReadPageGame(page_offset, page_buffer, 512); - - MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length)); - - dest = (u8*)dest + valid_length; - offset += valid_length; - length -= valid_length; - if ( length < 0) - { - return; - } - } - - remain_length = (u32)(length % 512); - ReadPageGame((u32)offset, dest, (u32)(length - remain_length)); - - // ケツがページ途中 - if( remain_length ){ - dest = (u8*)dest + (length - remain_length); - offset += length - remain_length; - - ReadPageGame((u32)offset, page_buffer, 512); - - MI_CpuCopy8(page_buffer, dest, remain_length); - } -} - - -/*---------------------------------------------------------------------------* - Name: ShowResult - - Description: Result表示 - *---------------------------------------------------------------------------*/ -static void ShowResult(void) -{ - PrintString(0, 16, 0xf, "-- Result --"); - - if(romheader && !flxhash && !ltdhash){ - PrintString(0, 18, 0x4, "Normal Mode"); - } - else if((!romheader && flxhash && !ltdhash) || - (!romheader && flxhash && ltdhash && !isTwlCard)){ - PrintString(0, 18, 0x5, "Game Mode"); - } - else if(!romheader && !flxhash && !ltdhash){ - PrintString(0, 18, 0x6, "Slot Power Off"); - } - else{ - PrintString(0, 18, 0x1, "Unknown Mode"); - } - - if(error){ - PrintString(0, 20, 0x1, "Backup Device Error"); - } - -// DEMO_DrawFlip(); -// OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: debugMessage - - Description: - *---------------------------------------------------------------------------*/ -static void debugMessage(void) -{ - PrintString(0, 4, 0xf, "amr7 NmlRomOfs : 0x%08x", rh->sub_rom_offset); - PrintString(0, 5, 0xf, "amr7 LtdRomOfs : 0x%08x", rh->sub_ltd_rom_offset); - - OS_TPrintf("amr7 NmlRomOfs : 0x%08x\n", rh->sub_rom_offset); - OS_TPrintf("amr7 NmlSize : 0x%08x\n", rh->sub_size); - OS_TPrintf("amr7 LtdRomOfs : 0x%08x\n", rh->sub_ltd_rom_offset); - OS_TPrintf("amr7 LtdSize : 0x%08x\n", rh->sub_ltd_size); -} - - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みベクトル。 - *---------------------------------------------------------------------------*/ -static void VBlankIntr (void) -{ - /* 仮想スクリーンを VRAM に反映 */ - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* IRQ チェックフラグをセット */ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - palette - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *((u16*)(&temp[32])) = 0x0000; - for (i = 0; ; i++) - { - if (temp[i] == 0x00) - { - break; - } - screen[((y * 32) + x + i) % (32 * 32)] = (u16)((palette << 12) | temp[i]); - } -} \ No newline at end of file diff --git a/build/tests/CheckCardAccess/src/romSpec.h b/build/tests/CheckCardAccess/src/romSpec.h deleted file mode 100644 index cb96f899..00000000 --- a/build/tests/CheckCardAccess/src/romSpec.h +++ /dev/null @@ -1,152 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: romSpec.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 __HOTSW_ROMSPEC_H__ -#define __HOTSW_ROMSPEC_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -// ROM memory map - -#define HOTSW_PAGE_SIZE 0x200 // 512B -#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB -#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB -#define HOTSW_KEYTABLE_AREA_SIZE 0x3000 // 12KB -#define HOTSW_KEYTABLE2_AREA_SIZE 0x3000 // 12KB -#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB -#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB -#define HOTSW_ROMEMU_INFO_SIZE 0x20 - -#define HOTSW_BOOTSEGMENT_AREA_OFS 0x0000 // 0KB -#define HOTSW_KEYTABLE_AREA_OFS 0x1000 // 4KB -#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB -#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB -#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB -#define HOTSW_GAME2_AREA_OFS 0x7000 // 28KB -#define HOTSW_ROMEMU_INFO_OFS (HOTSW_SECURE_AREA_OFS - HOTSW_PAGE_SIZE + 0x160) - - -// ROM ID - -#define HOTSW_ROMID_1TROM_MASK 0x80000000UL -#define HOTSW_ROMID_TWLROM_MASK 0x40000000UL -#define HOTSW_ROMID_RFSSUP_MASK 0x20000000UL -#define HOTSW_ROMID_SIZE_MASK 0x0000ff00UL - -// ROM STATUS - -#define HOTSW_ROMST_RFS_WARN_L1_MASK 0x00000004UL -#define HOTSW_ROMST_RFS_WARN_L2_MASK 0x00000008UL -#define HOTSW_ROMST_RFS_READY_MASK 0x00000020UL - - -// NORMAL command - -#define HSWOP_N_OP_MASK 0xff00000000000000ULL -#define HSWOP_N_OP_SIZE 8 - -#define HSWOP_N_OP_RD_ID 0x9000000000000000ULL -#define HSWOP_N_OP_RD_PAGE 0x0000000000000000ULL -#define HSWOP_N_OP_WR_PAGE 0x8000000000000000ULL -#define HSWOP_N_OP_LD_TABLE 0x9f00000000000000ULL -#define HSWOP_N_OP_RD_CACHE_START 0x5800000000000000ULL -#define HSWOP_N_OP_RD_CACHE 0x6000000000000000ULL -#define HSWOP_N_OP_RD_CACHE_LAST 0x6800000000000000ULL -#define HSWOP_N_OP_RD_STAT 0xd600000000000000ULL -#define HSWOP_N_OP_RFS_BLK 0xb500000000000000ULL -#define HSWOP_N_OP_CHG_MODE 0x3c00000000000000ULL -#define HSWOP_N_OP_CHG2_MODE 0x3d00000000000000ULL - -#define HSWOP_N_RD_ID_PAD 0x00ffffffffffffffULL -#define HSWOP_N_RD_PAGE_PAD 0x00fffffeff00ffffULL -#define HSWOP_N_CHG_MODE_PAD 0x00000000f00000ffULL -#define HSWOP_N_CHG2_MODE_PAD HSWOP_N_CHG_MODE_PAD - -#define HSWOP_N_RD_PAGE_ADDR_SHIFT 33 -#define HSWOP_N_RD_PAGE_ADDR_SIZE 23 -#define HSWOP_N_RD_PAGE_ADDR_MASK 0x00fffffe00000000ULL - -#define HSWOP_N_VAE_SHIFT 32 -#define HSWOP_N_VAE_SIZE 24 -#define HSWOP_N_VAE_MASK 0x00ffffff00000000ULL - -#define HSWOP_N_VBI_SHIFT 8 -#define HSWOP_N_VBI_SIZE 20 -#define HSWOP_N_VBI_MASK 0x000000000fffff00ULL - - -// SECURE command - -#define HSWOP_S_OP_MASK 0xf000000000000000ULL -#define HSWOP_S_OP_SIZE 4 - -#define HSWOP_S_OP_RD_ID 0x1000000000000000ULL -#define HSWOP_S_OP_RD_SEG 0x2000000000000000ULL -#define HSWOP_S_OP_PNG_ON 0x4000000000000000ULL -#define HSWOP_S_OP_PNG_OFF 0x6000000000000000ULL -#define HSWOP_S_OP_CHG_MODE 0xa000000000000000ULL - -#define HSWOP_S_VA_SHIFT HSWOP_S_VB_SIZE -#define HSWOP_S_VA_SIZE 24 -#define HSWOP_S_VA_MASK 0x00000ffffff00000ULL - -#define HSWOP_S_VB_SHIFT 0 -#define HSWOP_S_VB_SIZE 20 -#define HSWOP_S_VB_MASK 0x00000000000fffffULL - -#define HSWOP_S_VC_SHIFT (HSWOP_S_VA_SIZE + HSWOP_S_VB_SIZE) -#define HSWOP_S_VC_SIZE 16 -#define HSWOP_S_VC_MASK 0x0ffff00000000000ULL - -#define HSWOP_S_VD_SHIFT HSWOP_S_VA_SHIFT -#define HSWOP_S_VD_SIZE HSWOP_S_VA_SIZE -#define HSWOP_S_VD_MASK HSWOP_S_VA_MASK - - -// GAME command - -#define HSWOP_G_OP_MASK 0xff00000000000000ULL -#define HSWOP_G_OP_SIZE 8 - -#define HSWOP_G_OP_RD_ID 0xb800000000000000ULL -#define HSWOP_G_OP_RD_UID 0xb900000000000000ULL -#define HSWOP_G_OP_RD_PAGE 0xb700000000000000ULL -#define HSWOP_G_OP_WR_PAGE 0x8000000000000000ULL -#define HSWOP_G_OP_RD_CACHE_START HSWOP_N_OP_RD_CACHE_START -#define HSWOP_G_OP_RD_CACHE HSWOP_N_OP_RD_CACHE -#define HSWOP_G_OP_RD_CACHE_LAST HSWOP_N_OP_RD_CACHE_LAST -#define HSWOP_G_OP_RD_STAT HSWOP_N_OP_RD_STAT -#define HSWOP_G_OP_RFS_BLK HSWOP_N_OP_RFS_BLK - -#define HSWOP_G_RD_ID_PAD 0x00ffffffffffffffULL -#define HSWOP_G_RD_UID_PAD 0x00ffffffffffffffULL -#define HSWOP_G_RD_PAGE_PAD 0x00f0000000ffffffULL - -#define HSWOP_G_RD_PAGE_ADDR_SHIFT 33 -#define HSWOP_G_RD_PAGE_ADDR_SIZE 23 -#define HSWOP_G_RD_PAGE_ADDR_MASK 0x000ffffe00000000ULL - - -#ifdef __cplusplus -} /* extern "C" */ - -#endif - -/* __HOTSW_ROMSPEC_H__ */ -#endif diff --git a/build/tests/CheckCardMode/Makefile b/build/tests/CheckCardMode/Makefile deleted file mode 100644 index f63e8dc8..00000000 --- a/build/tests/CheckCardMode/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardMode -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -SRCS = ./src/main.c ./src/font.c - -TARGET_BIN = card_mode_check.srl - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardMode/src/font.c b/build/tests/CheckCardMode/src/font.c deleted file mode 100644 index 9500697a..00000000 --- a/build/tests/CheckCardMode/src/font.c +++ /dev/null @@ -1,579 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.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 "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CheckCardMode/src/font.h b/build/tests/CheckCardMode/src/font.h deleted file mode 100644 index b4a94093..00000000 --- a/build/tests/CheckCardMode/src/font.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.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 FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // FONT_H_ diff --git a/build/tests/CheckCardMode/src/hotswTypes.h b/build/tests/CheckCardMode/src/hotswTypes.h deleted file mode 100644 index 02d0843e..00000000 --- a/build/tests/CheckCardMode/src/hotswTypes.h +++ /dev/null @@ -1,134 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: type.h - - Copyright 2007-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. - *---------------------------------------------------------------------------*/ -#ifndef __HOTSW_TYPES_H__ -#define __HOTSW_TYPES_H__ - -#include -#include -#include "romSpec.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -static inline void HOTSW_WaitCardCtrl(void) -{ - while( reg_MI_MCCNT1_A & REG_MI_MCCNT1_START_MASK ){} -} - -// Define ------------------------------------------------------------------- -// --- Boot Segment -#define BOOT_SEGMENT_SIZE 0x1000 - -// --- Secure Segment -#define SECURE_SEGMENT_START 0x4000 -#define SECURE_SEGMENT_SIZE 0x4000 -#define SECURE_SEGMENT_END (SECURE_SEGMENT_START + SECURE_SEGMENT_SIZE) - -// --- TWL Card -#define TWLCARD_BORDER_OFFSET 0x80000 - -// --- Page / Segment (Byte) -#define PAGE_SIZE 0x200 -#define ONE_SEGMENT_SIZE 0x1000 - -// --- Page / Segment (Word) -#define PAGE_WORD_SIZE 0x80 -#define ONE_SEGMENT_WORD_SIZE 0x400 - -// --- Rom Emulation -#define ROM_EMULATION_DATA_SIZE 0x20 - -// --- Thread -#define HOTSW_THREAD_STACK_SIZE (1024 * 2) -#define HOTSW_DMA_MSG_NUM 8 -#define HOTSW_INSERT_MSG_NUM 16 -#define HOTSW_PULLED_MSG_NUM 16 -#define HOTSW_CTRL_MSG_NUM 8 -#define HOTSW_MSG_BUFFER_NUM (HOTSW_INSERT_MSG_NUM + HOTSW_PULLED_MSG_NUM + HOTSW_CTRL_MSG_NUM) -#define HOTSW_POLLING_CTRL_BUFFER_NUM 4 - -// --- Card Control Reg 0 -#define HOTSW_E2PROM_CTRL_MASK 0x00ff - -// --- Card Control Reg 1 -#define START_FLG_MASK 0x80000000 -#define READY_FLG_MASK 0x00800000 - -#define LATENCY1_SHIFT 0 -#define LATENCY1_MASK 0x00001fff - -#define DS_SHIFT 13 -#define DS_MASK 0x00002000 - -#define SE_SHIFT 14 -#define SE_MASK 0x00004000 - -#define SCR_SHIFT 15 -#define SCR_MASK 0x00008000 - -#define LATENCY2_SHIFT 16 -#define LATENCY2_MASK 0x003f0000 - -#define CS_SHIFT 22 -#define CS_MASK 0x00400000 - -#define RDY_SHIFT 23 -#define RDY_MASK 0x00800000 - -#define PC_SHIFT 24 -#define PC_MASK 0x07000000 - -#define CT_SHIFT 27 -#define CT_MASK 0x08000000 - -#define TRM_SHIFT 28 -#define TRM_MASK 0x10000000 - -#define RESB_SHIFT 29 -#define RESB_MASK 0x20000000 - -#define WR_SHIFT 30 -#define WR_MASK 0x40000000 - -#define START_SHIFT 31 -#define START_MASK 0x80000000 - -#define SCRAMBLE_MASK 0x1040e000 // スクランブル関係のフラグマスク -#define SECURE_COMMAND_SCRAMBLE_MASK 0x00406000 // CS SE DSのマスク - -// --- Page Count -#define PAGE_0 0x0UL << PC_SHIFT -#define PAGE_1 0x1UL << PC_SHIFT -#define PAGE_2 0x2UL << PC_SHIFT -#define PAGE_4 0x3UL << PC_SHIFT -#define PAGE_8 0x4UL << PC_SHIFT -#define PAGE_16 0x5UL << PC_SHIFT -#define PAGE_32 0x6UL << PC_SHIFT -#define PAGE_STAT 0x7UL << PC_SHIFT - - -// union --------------------------------------------------------------------- -typedef union -{ - u64 dw; - u8 b[8]; -} Cmd64; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif // __HOTSW_TYPES_H__ \ No newline at end of file diff --git a/build/tests/CheckCardMode/src/main.c b/build/tests/CheckCardMode/src/main.c deleted file mode 100644 index 4bd9f8d9..00000000 --- a/build/tests/CheckCardMode/src/main.c +++ /dev/null @@ -1,535 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - CARD - hotswDebug - File: main.c - - Copyright 2007 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. - *---------------------------------------------------------------------------*/ - -#include -#include -#include "DEMO.h" -#include "hotswTypes.h" -#include "font.h" - -#define SDK_MAKERCODE '10' -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) - -#define MY_TEMP_BUFFER_SIZE 0x80000 -#define GAME_FIELD_START_ADDRESS 0x8000 - -#define READY_MASK 0x00800000 -#define CARD_COMMAND_MASK 0x07000000 - -#define MY_ROMHEADER_TWL ((ROM_Header_Short *)HW_TWL_CARD_ROM_HEADER_BUF) -#define MY_ROMHEADER_NTR ((ROM_Header_Short *)HW_CARD_ROM_HEADER) - -// --------------------------------------------------------------- -// HMACSHA1の鍵 -static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = { - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24 -}; - -static u32 checkBuf[MY_TEMP_BUFFER_SIZE/sizeof(u32)] ATTRIBUTE_ALIGN(16); - -static ROM_Header_Short *rh; -static BOOL isTwlApplication; -static BOOL isTwlCard; -static BOOL flxhash, ltdhash, mirrorimage; -static u16 card_lock_id; - -static u16 screen[32 * 32] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE); - -// --------------------------------------------------------------- -static BOOL CheckHashValue(void* buf, u32 size, void* digest); -static void MY_LoadCard_arm7Static(void); -static void MY_LoadCard_arm7LtdStatic(void); -static void debugMessage(void); -static void ShowResult(void); - -static void SetCommand(Cmd64 *cndLE); -static void ReadIDGame(void); -static void ReadPageGame(u32 start_addr, void* buf, u32 size); -static void ReadCardData(void* dest, s32 offset, s32 length); -static void isGameModeForNTR(void); - -static void VBlankIntr (void); -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...); -static void VolumeSwitchCallback(SNDEXResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: メイン エントリポイント. - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - CARDRomHeader *card_header = (void*)CARD_GetRomHeader(); - - OS_Init(); - OS_InitTick(); - CARD_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - if ( card_header->maker_code == SDK_MAKERCODE ) - { - CARD_Enable(TRUE); - } - - /* 表示設定初期化 */ - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - MI_CpuFillFast((void*)HW_OAM, GX_LCD_SIZE_Y, HW_OAM_SIZE); - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, GX_LCD_SIZE_Y, HW_DB_OAM_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, // SCR ベースブロック 31 - GX_BG_CHARBASE_0x00000, // CHR ベースブロック 0 - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - MI_CpuClearFast((void*)screen, sizeof(screen)); - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* 割込み設定 */ - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* LCD 表示開始 */ - GX_DispOn(); - GXS_DispOn(); - - PrintString(0, 0, 0xa, "***** Card Mode Check *****"); - - // カードアプリタイプを判別。使うRom Header Buffer を切替える - if(MY_ROMHEADER_NTR->platform_code & PLATFORM_CODE_FLAG_TWL){ - PrintString(0, 2, 0xf, "- TWL Application -"); - isTwlApplication = TRUE; - rh = MY_ROMHEADER_TWL; - } - else{ - PrintString(0, 2, 0xf, "- NTR Application -"); - isTwlApplication = FALSE; - rh = MY_ROMHEADER_NTR; - } - - OS_Printf("Buf Adr : 0x%08x\n", checkBuf); - - // カードタイプの判別 - isTwlCard = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_TWLROM_MASK) ? TRUE : FALSE; - - // 注:rhの初期化が終わってから呼び出す - debugMessage(); - - // フラグの初期化 - flxhash = FALSE; - ltdhash = FALSE; - mirrorimage = FALSE; - - // ロックIDを取得しておく - card_lock_id = (u16)OS_GetLockID(); - - if(isTwlApplication){ - MY_LoadCard_arm7Static(); - MY_LoadCard_arm7LtdStatic(); - } - else{ - isGameModeForNTR(); - } - - ShowResult(); - - while(1){ - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } -} - - -/*---------------------------------------------------------------------------* - Name: ShowResult - - Description: - *---------------------------------------------------------------------------*/ -static void ShowResult(void) -{ - PrintString(0, 13, 0xf, "-- Result --"); - - if(flxhash && ltdhash){ - if(isTwlCard){ - PrintString(0, 15, 0x6, "Game2 Mode"); - } - else{ - PrintString(0, 15, 0x5, "Game Mode"); - } - } - else if(mirrorimage){ - PrintString(0, 15, 0x5, "Game Mode"); - } - else{ - PrintString(0, 15, 0x1, "Unknown Mode"); - } -} - - -/*---------------------------------------------------------------------------* - Name: debugMessage - - Description: - *---------------------------------------------------------------------------*/ -static void debugMessage(void) -{ - PrintString(0, 4, 0xf, "amr7 NmlRomOfs : 0x%08x", rh->sub_rom_offset); - PrintString(0, 5, 0xf, "amr7 LtdRomOfs : 0x%08x", rh->sub_ltd_rom_offset); - - OS_TPrintf("amr7 NmlRomOfs : 0x%08x\n", rh->sub_rom_offset); - OS_TPrintf("amr7 NmlSize : 0x%08x\n", rh->sub_size); - OS_TPrintf("amr7 LtdRomOfs : 0x%08x\n", rh->sub_ltd_rom_offset); - OS_TPrintf("amr7 LtdSize : 0x%08x\n", rh->sub_ltd_size); -} - - -/*---------------------------------------------------------------------------* - Name: CheckHashValue - - Description: モジュールハッシュチェック - *---------------------------------------------------------------------------*/ -static BOOL CheckHashValue(void* buf, u32 size, void* digest) -{ - u8 sha1data[DIGEST_SIZE_SHA1]; - BOOL retval = TRUE; - - // クリア - MI_CpuClear8(sha1data, sizeof(sha1data)); - - // ARM7常駐モジュールのHash値照合 - SVC_CalcHMACSHA1( sha1data, - buf, - size, - s_digestDefaultKey, - sizeof(s_digestDefaultKey) ); - - return SVC_CompareSHA1( sha1data, digest ); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7Static - - Description: ARM7常駐モジュール 読み出し・ハッシュチェック - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7Static(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_rom_offset, (s32)rh->sub_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(pBuf, rh->sub_size, (void *)rh->sub_static_digest); - - if(result){ - flxhash = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - else{ - flxhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7LtdStatic - - Description: ARM7拡張常駐モジュール 読み出し・ハッシュチェック - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7LtdStatic(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_ltd_rom_offset, (s32)rh->sub_ltd_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(pBuf, rh->sub_ltd_size, (void *)rh->sub_ltd_static_digest); - - if(result){ - ltdhash = TRUE; - PrintString(0, 9, 0x8, "Ltd Area : Accessible"); - } - else{ - ltdhash = FALSE; - PrintString(0, 9, 0x1, "Ltd Area : Not Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: isGameModeForNTR - - Description: Gameモードかどうか判定する - *---------------------------------------------------------------------------*/ -static void isGameModeForNTR(void) -{ - u32 buf1[PAGE_SIZE/sizeof(u32)]; - u32 buf2[PAGE_SIZE/sizeof(u32)]; - int result; - - /* Rom Header領域を読んで、Game領域のイメージが出てたらGameモード */ - ReadCardData(buf1, (s32)0, (s32)PAGE_SIZE); - ReadCardData(buf2, (s32)GAME_FIELD_START_ADDRESS, (s32)PAGE_SIZE); - - result = MI_CpuComp8( buf1, buf2, PAGE_SIZE ); - - if(result){ - mirrorimage = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - else{ - mirrorimage = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: HOTSWi_SetCommand - - Description: 引数で与えられたコマンドのエンディアンを変えてレジスタにセットする - *---------------------------------------------------------------------------*/ -static void SetCommand(Cmd64 *cndLE) -{ - Cmd64 cndBE; - - // ビッグエンディアンに直す - cndBE.b[7] = cndLE->b[0]; - cndBE.b[6] = cndLE->b[1]; - cndBE.b[5] = cndLE->b[2]; - cndBE.b[4] = cndLE->b[3]; - cndBE.b[3] = cndLE->b[4]; - cndBE.b[2] = cndLE->b[5]; - cndBE.b[1] = cndLE->b[6]; - cndBE.b[0] = cndLE->b[7]; - - // MCCMD レジスタ設定 - reg_MI_MCCMD0_A = *(u32*)cndBE.b; - reg_MI_MCCMD1_A = *(u32*)&cndBE.b[4]; -} - - -/*---------------------------------------------------------------------------* - Name: ReadIDGame - - Description: ゲームモードでIDを読み込む - *---------------------------------------------------------------------------*/ -static void ReadIDGame(void) -{ - u32 id; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - - // リトルエンディアンで作って - cndLE.dw = HSWOP_G_OP_RD_ID; - - // MCCMD レジスタ設定 - SetCommand(&cndLE); - - // MCCNT0 レジスタ設定 - reg_MI_MCCNT0_A = (u16)((reg_MI_MCCNT0_A & 0x00ff) | REG_MI_MCCNT0_E_MASK); - - // MCCNT1 レジスタ設定 - reg_MI_MCCNT1_A = rom_ctrl | START_MASK | PAGE_1; - - while(reg_MI_MCCNT1_A & START_MASK){ - while(!(reg_MI_MCCNT1_A & READY_MASK)){} - id = reg_MI_MCD1_A; - } - - OS_Printf("Card ID : 0x%08x\n", id); - - OS_SpinWait( 100 ); -} - - -/*---------------------------------------------------------------------------* - Name: ReadPageGame - - Description: ゲームモードで、指定されたページを指定バッファに指定サイズ分を読み込む - - CT=150ns Pagecount=1page Latency=RomHeaderで指定の値 - *---------------------------------------------------------------------------*/ -static void ReadPageGame(u32 start_addr, void* buf, u32 size) -{ - u32 loop, counter=0; - u64 i, page; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - page = (u32)(start_addr / PAGE_SIZE); - loop = (u32)(size / PAGE_SIZE); - loop = (size % PAGE_SIZE) ? loop + 1 : loop; - - for(i=0; i -#include - -#define HASH_PATH "/sign/DSHashTable.bin" - -/* - このサンプルはテスト用であり、CARD関数の代わりにFS関数で - DHTライブラリが実装されている前提である -*/ - -#define ROM_PATH "/srl" - -#define DS_HASH_TABLE_NUMS 3000 -#define DS_HASH_TABLE_SIZE (sizeof(DHTHeader) + DS_HASH_TABLE_NUMS * sizeof(DHTDatabase)) - -/* - DHTファイル読み込み先 -*/ -static u8 dht_buffer[DS_HASH_TABLE_SIZE] ATTRIBUTE_ALIGN(32); -static DHTFile *const dht = (DHTFile*)dht_buffer; -/* - Phase2用バッファ -*/ -static DHTPhase2Work p2work; - -/* - 実際にはアドレス固定 -*/ -#include -static ROM_Header_Short rom_header ATTRIBUTE_ALIGN(32); // 使うのは DHT_DS_HEADER_SIZE だけ -static u8 rom_arm9[3*1024*1024] ATTRIBUTE_ALIGN(32); -static u8 rom_arm7[1024*1024] ATTRIBUTE_ALIGN(32); -#include - -/* - デバイスアクセスAPI -*/ -#if 1 -// FS版 (arg == FSFile*) -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - FSFile* fp = arg; - s32 result; - if ( !FS_SeekFile(fp, offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to the offset (%d bytes).\n", offset); - return FALSE; - } - result = FS_ReadFile(fp, dest, length); - if ( result != length ) - { - OS_TPrintf("Cannot read the data (%d bytes).\n", length); - return FALSE; - } - return TRUE; -} -static BOOL ReadImageEx(SVCHMACSHA1Context* ctx, s32 offset, s32 length, void* arg) -{ - if ( !ReadImage(p2work.buffer, offset, length, arg) ) - { - return FALSE; - } - DHT_CheckHashPhase2ExUpdate(ctx, p2work.buffer, length); - return TRUE; -} -#else -#ifdef SDK_ARM9 -#define PAGE_SIZE 512 -// CARD版 (arg == dma no) -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - u32 dma = (u32)arg; - CARD_ReadRom(dma, (void*)offset, dest, (u32)length); - return TRUE; -} -#else -// HOTSW版 (arg == CardBootData* cdb) -#include -#include -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - HotSwState retval; - if ( offset % 512 ) - { - static u8 page_buffer[512]; - u32 page_offset = (u32)(offset & -512); - u32 buffer_offset = (u32)(offset % 512); - u32 valid_length = 512 - buffer_offset; - retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512); - if (retval != HOTSW_SUCCESS) - { - return FALSE; - } - MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length)); - dest = (u8*)dest + valid_length; - offset += valid_length; - length -= valid_length; - if ( length < 0) - { - return TRUE; - } - } - retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)length); - return (retval == HOTSW_SUCCESS); -} -#endif -#endif - -static void VBlankIntr( void ) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/* - 検証本番のうち、実際にはオーバーヘッドにならない処理 -*/ -static BOOL CheckValidation(FSFile* fp) -{ - const DHTDatabase *db; - s32 result; - - // ヘッダの読み込み - result = FS_ReadFile(fp, &rom_header, DHT_DS_HEADER_SIZE); - if ( result != DHT_DS_HEADER_SIZE ) - { - OS_TPrintf("Cannot read ROM header.\n"); - return FALSE; - } - // ARM9部分 - if ( rom_header.main_size > sizeof(rom_arm9) ) - { - OS_TPrintf("Too large main size (%d > %d).\n", rom_header.main_size, sizeof(rom_arm9)); - return FALSE; - } - if ( !FS_SeekFile(fp, (s32)rom_header.main_rom_offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to ARM9 static.\n"); - return FALSE; - } - result = FS_ReadFile(fp, rom_arm9, (s32)rom_header.main_size); - if ( result != rom_header.main_size ) - { - OS_TPrintf("Cannot read ARM9 static.\n"); - return FALSE; - } - // ARM7部分 - if ( rom_header.sub_size > sizeof(rom_arm7) ) - { - OS_TPrintf("Too large sub size (%d > %d).\n", rom_header.sub_size, sizeof(rom_arm7)); - return FALSE; - } - if ( !FS_SeekFile(fp, (s32)rom_header.sub_rom_offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to ARM7 static.\n"); - return FALSE; - } - result = FS_ReadFile(fp, rom_arm7, (s32)rom_header.sub_size); - if ( result != rom_header.sub_size ) - { - OS_TPrintf("Cannot read ARM7 static.\n"); - return FALSE; - } - - // データベースの検索 - db = DHT_GetDatabase(dht, &rom_header); - if ( !db ) - { - return FALSE; - } -//OS_TPrintf("FOUND: 0x%08X: %.4s(%d)\n", db, db->game_code, db->rom_version); - // ハッシュ計算 (1) - 隠蔽可能なはず - if ( !DHT_CheckHashPhase1(db->hash[0], &rom_header, rom_arm9, rom_arm7) ) - { - return FALSE; - } - // ハッシュ計算 (2) - 隠蔽は難しいか - if ( !DHT_CheckHashPhase2(db->hash[1], &rom_header, &p2work, ReadImage, fp) ) - { - // ハッシュ計算 (2ex) - 隠蔽は難しいか (失敗した場合も見ておく) - if ( !DHT_CheckHashPhase2Ex(db->hash[1], &rom_header, (DHTPhase2ExWork*)&p2work, ReadImage, ReadImageEx, fp) ) - { - return FALSE; - } - return FALSE; - } - // ハッシュ計算 (2ex) - 隠蔽は難しいか - if ( !DHT_CheckHashPhase2Ex(db->hash[1], &rom_header, (DHTPhase2ExWork*)&p2work, ReadImage, ReadImageEx, fp) ) - { - return FALSE; - } - - return TRUE; -} - -void TwlMain(void) -{ - OS_Init(); - OS_InitTick(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - // 割り込み許可---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - FS_Init(FS_DMA_NOT_USE); - { - FSFile file; - if ( !FS_OpenFileEx(&file, HASH_PATH, FS_FILEMODE_R) ) - { - OS_TPanic("Cannot open %s.\n", HASH_PATH); - } - // 署名ロード - if ( !DHT_PrepareDatabase(dht, &file) ) - { - OS_TPanic("Cannot prepare the database.\n"); - } - FS_CloseFile(&file); - } - - // 本番 - { - FSFile dir; - FSDirectoryEntryInfo info; - BOOL result; - result = FS_OpenDirectory(&dir, ROM_PATH, FS_FILEMODE_R); - if ( !result ) - { - OS_TPanic("Cannot open " ROM_PATH ".\n"); - } - while ( FS_ReadDirectory(&dir, &info) ) - { - FSFile file; - OSTick begin; - char path[FS_ENTRY_LONGNAME_MAX+sizeof(ROM_PATH)+1]; - if ( info.attributes & FS_ATTRIBUTE_IS_DIRECTORY ) - { - OS_TPrintf("%s is directory.\n", info.longname); - continue; - } - STD_CopyString(path, ROM_PATH "/"); - STD_ConcatenateString(path, info.longname); - if (!FS_OpenFileEx(&file, path, FS_FILEMODE_R)) - { - OS_TPrintf("Cannot open %s.\n", path); - continue; - } - OS_TPrintf("\nTrying %s...\n", path); - begin = OS_GetTick(); - if ( !CheckValidation(&file) ) - { - OS_TPrintf("Failed. %d msec (includes loading static data).\n", (int)OS_TicksToMilliSeconds(OS_GetTick()-begin)); - } - else - { - OS_TPrintf("Success. %d msec (includes loading static data).\n", (int)OS_TicksToMilliSeconds(OS_GetTick()-begin)); - } - FS_CloseFile(&file); - } - FS_CloseDirectory(&dir); - } - - OS_TPrintf("\nDone.\n"); - OS_Terminate(); -} - diff --git a/build/tests/CheckPreloadParameters/Makefile b/build/tests/CheckPreloadParameters/Makefile deleted file mode 100644 index 15e918ad..00000000 --- a/build/tests/CheckPreloadParameters/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_PLATFORM = TWL - -SRCS = main.c -TARGET_BIN = main.tad - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckPreloadParameters/banner/Makefile b/build/tests/CheckPreloadParameters/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/CheckPreloadParameters/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CheckPreloadParameters/banner/banner_v3.bsf b/build/tests/CheckPreloadParameters/banner/banner_v3.bsf deleted file mode 100644 index 86449213..00000000 Binary files a/build/tests/CheckPreloadParameters/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp b/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp deleted file mode 100644 index 8ec56f1c..00000000 Binary files a/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CheckPreloadParameters/src/main.c b/build/tests/CheckPreloadParameters/src/main.c deleted file mode 100644 index 7f4f7499..00000000 --- a/build/tests/CheckPreloadParameters/src/main.c +++ /dev/null @@ -1,457 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - CheckPreloadParameters - File: main.c - - Copyright 2007 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 -#include - -void VBlankIntr(void); - -OSOwnerInfoEx s_owner; -static char *s_strCountry[ 256 ]; -static char *s_strRegion[ OS_TWL_REGION_MAX ]; -static char *s_strUserColor[ OS_FAVORITE_COLOR_MAX ]; -static char *s_strRatingOgn[ OS_TWL_PCTL_OGN_MAX ]; -static char *s_strLanguage[ OS_LANGUAGE_CODE_MAX ]; - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - char string[ 256 ]; - int srcLen, dstLen; - OS_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - OS_GetOwnerInfoEx( &s_owner ); - OS_TPrintf( "Language : %02x %s\n", s_owner.language, s_strLanguage[ s_owner.language ] ); - OS_TPrintf( "UserColor : %02x %s\n", s_owner.favoriteColor, s_strUserColor[ s_owner.favoriteColor ] ); - OS_TPrintf( "Birthday : %02d/%02d\n", s_owner.birthday.month, s_owner.birthday.day ); - { - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)s_owner.nickNameLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, s_owner.nickName, &srcLen, NULL ); - OS_TPrintf( "Nickname : %s\n", string ); - - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)s_owner.commentLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, s_owner.comment, &srcLen, NULL ); - OS_TPrintf( "Comment : %s\n", string ); - } - OS_TPrintf( "Country : %s\n", s_strCountry[ s_owner.country ] ); - - OS_TPrintf( "IsAgreeEULA : %s\n", OS_IsAgreeEULA() ? "Agree" : "Not agree" ); - OS_TPrintf( "AgreedEULAVersion : %d\n", OS_GetAgreedEULAVersion() ); - OS_TPrintf( "ROMHeaderEULAVersion : %d\n", OS_GetROMHeaderEULAVersion() ); - - OS_TPrintf( "AvailableWireless : %s\n", OS_IsAvailableWireless() ? "TRUE" : "FALSE" ); - PMi_SetWirelessLED( OS_IsAvailableWireless() ? PM_WIRELESS_LED_ON : PM_WIRELESS_LED_OFF ); - - { - const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *)OS_GetParentalControlInfoPtr(); - - OS_TPrintf( "ParentalControls :\n"); - OS_TPrintf( " isSetParentalControl : %s\n", pPC->flags.isSetParentalControl ? "TRUE" : "FALSE" ); - OS_TPrintf( " PictoChat : %s\n", pPC->flags.pictoChat ? "TRUE" : "FALSE" ); - OS_TPrintf( " DS Download : %s\n", pPC->flags.dsDownload ? "TRUE" : "FALSE" ); - OS_TPrintf( " Browser : %s\n", pPC->flags.browser ? "TRUE" : "FALSE" ); - OS_TPrintf( " WiiPoint : %s\n", pPC->flags.wiiPoint ? "TRUE" : "FALSE" ); - OS_TPrintf( " PhotoExchange : %s\n", pPC->flags.photoExchange ? "TRUE" : "FALSE" ); - OS_TPrintf( " UGC : %s\n", pPC->flags.ugc ? "TRUE" : "FALSE" ); - OS_TPrintf( " RatingOgn : %s\n", pPC->ogn < LCFG_TWL_PCTL_OGN_MAX ? s_strRatingOgn[ pPC->ogn ] : s_strRatingOgn[ LCFG_TWL_PCTL_OGN_MAX ] ); - OS_TPrintf( " RatingAge : %d\n", pPC->ratingAge ); - OS_TPrintf( " SecretQ ID : %d\n", pPC->secretQuestionID ); - OS_TPrintf( " Password : %s\n", pPC->password ); - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)pPC->secretAnswerLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, pPC->secretAnswer, &srcLen, NULL ); - OS_TPrintf( " SecretAnswer : %s\n", string ); - } - - { - int i; - const u8 *p = OS_GetMovableUniqueIDPtr(); - OS_TPrintf( "MovableUniqueID :" ); - for( i = 0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN; i++ ) { - if( ( i & 0x0f ) == 0 ) { - OS_TPrintf( "\n" ); - } - OS_TPrintf( " %02x,", *p++ ); - } - OS_TPrintf( "\n" ); - } - OS_TPrintf( "ForceDisableWireless : %s\n", OS_IsForceDisableWireless() ? "TRUE" : "FALSE" ); - OS_TPrintf( "Region : %02x %s\n", OS_GetRegion(), ( OS_GetRegion() == 0xff ) ? "Invalid" : s_strRegion[ OS_GetRegion() ] ); - { - u8 string[ 16 ]; - OS_GetSerialNo( string ); - OS_TPrintf( "SerialNo : %s\n", string ); - } - - OS_TPrintf("***End of demo\n"); - OS_Terminate(); -} - - - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - - - -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_strRatingOgn[] = { - "CERO", - "ESRB", - "RESERVED2", - "USK", - "PEGI_GENERAL", - "RESERVED5", - "PEGI_PORTUGAL", - "PEGI_BBFC", - "OFLC", - "GRB", - "RESERVED_A", - "RESERVED_B", - "RESERVED_C", - "RESERVED_D", - "RESERVED_E", - "UNKNOWN", -}; - -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 ", -}; - diff --git a/build/tests/CheckSharedFont/Makefile b/build/tests/CheckSharedFont/Makefile deleted file mode 100644 index 2087d1e2..00000000 --- a/build/tests/CheckSharedFont/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - FS - overlay -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c loadSharedFont.c - -LLIBRARIES += libsharedfont$(TWL_LIBSUFFIX).a libna$(TWL_LIBSUFFIX).a - -ROM_SPEC = ROM-TS_nand.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckSharedFont/ROM-TS_nand.rsf b/build/tests/CheckSharedFont/ROM-TS_nand.rsf deleted file mode 100644 index 546adb61..00000000 --- a/build/tests/CheckSharedFont/ROM-TS_nand.rsf +++ /dev/null @@ -1,263 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckSharedFont/src/loadSharedFont.c b/build/tests/CheckSharedFont/src/loadSharedFont.c deleted file mode 100644 index 6d858c85..00000000 --- a/build/tests/CheckSharedFont/src/loadSharedFont.c +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.c - - Copyright 2007 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 -#include "loadSharedFont.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- -#define FONT_LOAD_THREAD_PRIO 13 -#define THREAD_STACK_SIZE 1024 - -// function's prototype------------------------------------------------------- - -// global variable------------------------------------------------------------- -BOOL g_isSucceededLoad[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; - -const char *str_fontname[ OS_SHARED_FONT_CN_KR_MAX + 1 ] = { - "SHARE_FONT_WW_L", - "SHARE_FONT_WW_M", - "SHARE_FONT_WW_S", - "SHARE_FONT_CN_L", - "SHARE_FONT_CN_M", - "SHARE_FONT_CN_S", - "SHARE_FONT_KR_L", - "SHARE_FONT_KR_M", - "SHARE_FONT_KR_S", - "SHARE_FONT_CN_KR_MAX", -}; - -// static variable------------------------------------------------------------- -static u64 s_fontLoadThreadStack[THREAD_STACK_SIZE / sizeof(u64)]; -static OSThread s_fontLoadThread; -static OSTick s_fontLoadStartTick; -static u8 *s_pFontBuffer[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; // 読み込みはテストなのでロード先はstatic変数にしている。 -static BOOL s_isStarted = FALSE; - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// 共有フォントロード -// ============================================================================ -BOOL LoadSharedFontInit( void ) -{ - u8 *pBuffer; - int size; - - s_fontLoadStartTick = OS_GetTick(); - - // ロードスレッド生成 - OS_CreateThread(&s_fontLoadThread, - LoadSharedFontThread, - NULL, - s_fontLoadThreadStack + THREAD_STACK_SIZE / sizeof(u64), - THREAD_STACK_SIZE, FONT_LOAD_THREAD_PRIO); - - // フォントロード準備 - if( !OS_InitSharedFont() ) { - OS_TPrintf( "OS_InitSharedFont failed.\n" ); - return FALSE; - } - size = OS_GetSharedFontTableSize(); - if( size < 0 ) { - OS_TPrintf( "OS_GetSharedTableSize failed.\n" ); - return FALSE; - } - - pBuffer = OS_Alloc( (u32)size ); - if( pBuffer == NULL ) { - OS_TPrintf( "malloc failed.\n" ); - return FALSE; - } - if( !OS_LoadSharedFontTable( pBuffer ) ) { - OS_TPrintf( "OS_LoadSharedTable failed.\n" ); - return FALSE; - } - - // ロードスレッド起動 - OS_WakeupThreadDirect(&s_fontLoadThread); - s_isStarted = TRUE; - return TRUE; -} - - -void LoadSharedFontThread( void *arg ) -{ -#pragma unused(arg) - BOOL retval = TRUE; - OSSharedFontIndex i; - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_CN_KR_MAX + 1; i++ ) { - int size; - - OS_TPrintf( "%s read.\n", str_fontname[ i ] ); - - size = OS_GetSharedFontSize( i ); - if( size < 0 ) { - OS_TPrintf( " get font size failed.\n" ); - retval = FALSE; - } - - // FSのキャッシュが怪しそうなので、とりあえずアラインメントをとっておく。 - size = MATH_ROUNDUP( size, 32 ); - - s_pFontBuffer[ i ] = OS_Alloc( (u32)size ); - if( s_pFontBuffer[ i ] == NULL ) { - OS_TPrintf( " malloc failed.\n" ); - retval = FALSE; - } - - if( OS_LoadSharedFont( i, s_pFontBuffer[ i ] ) ) { - OS_TPrintf( " load succeeded.\n" ); - g_isSucceededLoad[ i ] = TRUE; - }else { - OS_TPrintf( " load failed.\n" ); - g_isSucceededLoad[ i ] = FALSE; - retval = FALSE; - } - } - OS_TPrintf( "Shared Font load time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - s_fontLoadStartTick ) ); -} - - -BOOL IsFinishedLoadSharedFont( void ) -{ - if( s_isStarted ) { - return OS_IsThreadTerminated( &s_fontLoadThread ); - }else { - return TRUE; - } -} - diff --git a/build/tests/CheckSharedFont/src/loadSharedFont.h b/build/tests/CheckSharedFont/src/loadSharedFont.h deleted file mode 100644 index fb350e47..00000000 --- a/build/tests/CheckSharedFont/src/loadSharedFont.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.h - - Copyright 2007 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_SHARED_FONT_H__ -#define __LOAD_SHARED_FONT_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// define data------------------------------------------------------- -// global variables-------------------------------------------------- -extern BOOL g_isSucceededLoad[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; -extern const char *str_fontname[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; - -// function---------------------------------------------------------- -BOOL LoadSharedFontInit( void ); -void LoadSharedFontThread( void *arg ); -BOOL IsFinishedLoadSharedFont( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_SHARED_FONT_H__ diff --git a/build/tests/CheckSharedFont/src/main.c b/build/tests/CheckSharedFont/src/main.c deleted file mode 100644 index 0d2f9185..00000000 --- a/build/tests/CheckSharedFont/src/main.c +++ /dev/null @@ -1,98 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - FS - overlay - File: main.c - - Copyright 2007 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 - -#include "DEMO.h" -#include "loadSharedFont.h" - -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: アプリケーションメインエントリ - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - - OS_Init(); - OS_InitTick(); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - { - OSHeapHandle hh; - void *tmp; - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_TPanic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); - } - - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); - - FS_Init(FS_DMA_NOT_USE); - - OS_TPrintf("--------------------------------\n" - "Shared Font sample.\n"); - - if( LoadSharedFontInit() ) { - - while( !IsFinishedLoadSharedFont() ) { - OS_WaitVBlankIntr(); - } - - // 結果表示 - { - int i; - int ox = 10; - int oy = 60; - DEMOFillRect(0, 0, GX_LCD_SIZE_X, GX_LCD_SIZE_Y, DEMO_RGB_CLEAR); - DEMOSetBitmapTextColor(GX_RGBA(0, 31, 0, 1)); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawFrame(ox, oy, 240, 10 + ( OS_SHARED_FONT_CN_KR_MAX + 1 ) * 10, GX_RGBA( 0, 31, 0, 1)); - for (i = 0; i < OS_SHARED_FONT_CN_KR_MAX + 1; ++i) - { - DEMODrawText(ox + 10, oy + 5 + i * 10, "%s load %s", - str_fontname[ i ], g_isSucceededLoad[ i ] ? "suceeded" : "failed"); - } - } - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } - - OS_Terminate(); -} - - diff --git a/build/tests/CreateDevKp/ARM9/Makefile b/build/tests/CreateDevKp/ARM9/Makefile deleted file mode 100644 index d776bcac..00000000 --- a/build/tests/CreateDevKp/ARM9/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = CreateDevKP -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = CDKP -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main.rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/CreateDevKp/ARM9/main.rsf b/build/tests/CreateDevKp/ARM9/main.rsf deleted file mode 100644 index af290caa..00000000 --- a/build/tests/CreateDevKp/ARM9/main.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c b/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c deleted file mode 100644 index ec236dca..00000000 --- a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 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 -#include -#include "misc.h" -#include "RomTypeTest.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define ENABLE_CONTENT 0 -#define ENABLE_SHARED2 0 - -#if (ENABLE_CONTENT == 1) -#define CTRUE TRUE -#else -#define CTRUE FALSE -#endif - -#if (ENABLE_SHARED2 == 1) -#define STRUE TRUE -#else -#define STRUE FALSE -#endif - -#define TEST_NUM 15 - -typedef enum AccessPermission { - PERMISSION_NA = 0, - PERMISSION_RO, - PERMISSION_RW, - PERMISSION_ERROR, - PERMISSION_MAX -} -AccessPermission; - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static AccessPermission RWExTestCore( char *path, char *testfile ); -static AccessPermission SRLTest( void ); -static AccessPermission ContentTest( void ); -static void FinalizeRWTest( FSFile *file, char* filename ); -static AccessPermission RWTestCore( char *path, char *testfile ); -static AccessPermission RWTest( char *path ); -static void TestFSPermission( void ); - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- - -// const data ----------------------------------------- - -static BOOL CreateFile( void ) -{ - int len; - FSFile file[1]; - - FS_InitFile( file ); - - // ファイル作成テスト - if ( FS_CreateFile("nand:/sys/dev.kp", FS_PERMIT_R | FS_PERMIT_W) ) - { - // ファイルオープン - if ( !FS_OpenFileEx( file, "nand:/sys/dev.kp", FS_FILEMODE_W ) ) - { - // ファイルオープン失敗 - OS_TPrintf("%s:open failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - // ファイルライト - len = FS_WriteFile( file, "test", 5); - if( len != 5 ) - { - // ライト失敗 - OS_TPrintf("%s:write failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - // ファイルクローズ - if( !FS_CloseFile( file ) ) - { - // クローズ失敗 - OS_TPrintf("%s:close failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - }else - { - OS_TPrintf("%s:create failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - - return TRUE; -} - -// テストプログラムの初期化 -void RomTypeTestInit( void ) -{ - BOOL res; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PrintfSJIS( 1 * 8, 9 * 8, TXT_COLOR_BLACK, "CreateFile"); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - res = CreateFile(); - - if(res) - { - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"Succeed." ); - }else - { - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"NG." ); - } - -} - - diff --git a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h b/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h deleted file mode 100644 index 39905e52..00000000 --- a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 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 __ROM_TYPE_TEST_H__ -#define __ROM_TYPE_TEST_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void RomTypeTestInit( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __ROM_TYPE_TEST_H__ diff --git a/build/tests/CreateDevKp/ARM9/src/main.c b/build/tests/CreateDevKp/ARM9/src/main.c deleted file mode 100644 index 4b651a3c..00000000 --- a/build/tests/CreateDevKp/ARM9/src/main.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 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 -#include "misc.h" -#include "RomTypeTest.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // 初期化---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON - - // 割り込み許可---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // デバイス初期化------------------------------- - TP_Init(); - (void)RTC_Init(); - - // システムの初期化------------------ - InitAllocator(); - - InitBG(); - RomTypeTestInit(); - // メインループ---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - ReadTP(); // TP入力の取得 - - } -} - - -// ============================================================================ -// 割り込み処理 -// ============================================================================ - -// Vブランク割り込み -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット -} - diff --git a/build/tests/CreateDevKp/Makefile b/build/tests/CreateDevKp/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/CreateDevKp/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/CreateDevKp/banner/Makefile b/build/tests/CreateDevKp/banner/Makefile deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/CreateDevKp/banner/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CreateDevKp/banner/icon/gameIcon.bmp b/build/tests/CreateDevKp/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/CreateDevKp/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin b/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf b/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index 347fe362..00000000 Binary files a/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile b/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile deleted file mode 100644 index 3aec1362..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -##override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -override TARGET_CODEGEN = ARM - -ifndef TWLSDK_NOCRYPTO -#---------------------------------------------------------------------------- - -SRCS = main.c \ - kami_pxi.c \ - formatter.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template - -CRT0_O = crt0.SCR.TWL.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - ../common/include \ - ../../../systemMenu_tools/common/ARM7/include \ - -SRCDIR += ../../../systemMenu_tools/common/ARM7/src - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -endif #ifndef TWLSDK_NOCRYPTO - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf b/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf deleted file mode 100644 index 177f5206..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf +++ /dev/null @@ -1,86 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/kami_pxi.o - Object $(OBJDIR)/formatter.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a -# Library libwm_sp$(LIBSUFFIX).a -# Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h b/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h deleted file mode 100644 index cbce8090..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 TWL_CAMERA_TEST_CAMERATEST_H_ -#define TWL_CAMERA_TEST_CAMERATEST_H_ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -void KamiPxiInit( void ); - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_CAMERA_TEST_CAMERATEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c b/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c deleted file mode 100644 index c3caa3f1..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c +++ /dev/null @@ -1,262 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 -#include -#include "kami_pxi.h" -#include "fifo.h" -#include "twl/cdc.h" -#include "formatter.h" -#include -#include -#include -#include -#include - -typedef unsigned char byte; /* Don't change */ -typedef unsigned short word; /* Don't change */ -typedef unsigned long dword; /* Don't change */ -#define BOOLEAN int - -extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading); -extern BOOL sdmcFormatNandLog( BOOL verify_flag); - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define KAMITEST_MESSAGE_ARRAY_MAX 4 // スレッド同期用メッセージキューのサイズ -#define KAMITEST_THREAD_STACK_SIZE 2048 // スレッドのスタックサイズ - -#define KAMITEST_THREAD_PRIORITY 6 - -// アライメント調整してコピーする -#define KAMI_UNPACK_U16(d, s) \ - (*(d) = (u16)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8))) -#define KAMI_UNPACK_U32(d, s) \ - (*(d) = (u32)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8) | (((u8*)s)[2] << 16) | (((u8*)s)[3] << 24))) - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL result; - u32 total; - u32 current; - KamiCommand command; - u8 data[KAMITEST_PXI_DATA_SIZE_MAX]; // 後続データ格納用 - - OSMessageQueue msgQ; // スレッド同期用メッセージキュー - OSMessage msgArray[KAMITEST_MESSAGE_ARRAY_MAX]; - // メッセージを格納するバッファ - OSThread thread; // KAMI用スレッド - u64 stack[KAMITEST_THREAD_STACK_SIZE / sizeof(u64)]; - // KAMI用スレッドのスタック -} -KamiWork; - -/*---------------------------------------------------------------------------* - 静的変数定義 - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result); -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data); -static void KamiThread(void *arg); - -void KamiPxiInit(void) -{ - if (kamiInitialized) - { - return; - } - kamiInitialized = TRUE; - - PXI_Init(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - - OS_InitMessageQueue(&kamiWork.msgQ, kamiWork.msgArray, KAMITEST_MESSAGE_ARRAY_MAX); - OS_CreateThread(&kamiWork.thread, KamiThread, 0, - (void *)(kamiWork.stack + (KAMITEST_THREAD_STACK_SIZE / sizeof(u64))), - KAMITEST_THREAD_STACK_SIZE, KAMITEST_THREAD_PRIORITY); - OS_WakeupThreadDirect(&kamiWork.thread); -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - return; - } - if (data & KAMITEST_PXI_START_BIT) // 先頭データ - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.data[kamiWork.current++] = (u8)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // 後続データ - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - if (kamiWork.current >= kamiWork.total) - { - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - case KAMI_NAND_IO: - case KAMI_CLEAR_NAND_ERRORLOG: - case KAMI_GET_IS_TOOL_TYPE: - if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((1 << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - (((size+1) << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - int i; - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - for (i = 0; i < size; i+= 3) - { - pxiData = (u32)((data[i] << 16) | (data[i+1] << 8) | data[i+2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - } -} - -static void KamiThread(void *arg) -{ -#pragma unused( arg ) - OSMessage msg; - BOOL result; - - while (TRUE) - { - (void)OS_ReceiveMessage(&kamiWork.msgQ, &msg, OS_MESSAGE_BLOCK); - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - { - result = ExeFormat((FormatMode)kamiWork.data[0]); // Quick or Full - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_NAND_IO: - { - BOOL is_read; - u32 block; - void* buffer; - u32 count; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&block, &kamiWork.data[1]); - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]); - KAMI_UNPACK_U32(&count, &kamiWork.data[9]); - - result = FATFSi_nandRtfsIo( 0, block, buffer, (u16)count, is_read ); - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_CLEAR_NAND_ERRORLOG: - { - if (sdmcFormatNandLog(TRUE)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_GET_IS_TOOL_TYPE: - { - IsToolType type = IS_TOOL_TYPE_ERROR; - u8 temp = I2C_ReadRegister( I2C_SLAVE_DEBUGGER, 0); - if (temp != (u8)(-1)) // 赤箱、キャプチャ以外は通信エラー - { - if (temp == 0x44) - { - type = IS_TOOL_TYPE_DEBUGGER; - } - else if (temp == 0x43) - { - type = IS_TOOL_TYPE_CAPTURE; - } - } - - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(IsToolType), (u8*)&type); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -#include diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c b/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c deleted file mode 100644 index a68e6750..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c +++ /dev/null @@ -1,576 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "kami_pxi.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -/* 各スレッド優先度 */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // 暫定 -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_HOTSW 11 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM 内登録エリアの拡張言語コード */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* 使用 DMA 番号 */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM 3 - -/* カードチャタリングカウンタ */ -#define CHATTERING_COUNTER 0x1988 // 100ms分 (0x1988 * 15.3us = 100000us) - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: 起動ベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - /* OS 初期化 */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM からユーザー情報読み出し */ - ReadUserInfo(); - - /* ヒープ領域設定 */ - heapHandle = InitializeAllocateSystem(); - - /* ボタン入力サーチ初期化 */ - (void)PAD_InitXYButton(); - - /* 割込み許可 */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* 各ライブラリ初期化 */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA - FS_Init(FS_DMA_NOT_USE); // FS for CARD - FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS -// InitializeNwm(heapHandle); // TWL 無線 - MCU_InitIrq(THREAD_PRIO_MCU); // マイコン - CDC_InitLib(); // CODECライブラリ初期化 - CAMERA_Init(); // カメラ - - SND_Init(THREAD_PRIO_SND); // サウンド - SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張 - RTC_Init(THREAD_PRIO_RTC); // RTC -// WVR_Begin(heapHandle); // NITRO 無線 - SPI_Init(THREAD_PRIO_SPI); - -/////////////// -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); -#endif -/////////////// - - while (TRUE) - { - OS_Halt(); - - /* ソフトウェアリセット要求は監視しない */ - /* AGB カートリッジの挿抜チェックは行わない */ - /* DS カードの挿抜チェックは行わない */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 コンポーネントの情報をデバッグ出力する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: メモリ割当てシステムを初期化する。 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB アリーナを SUBPRIV アリーナに吸収 */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* アリーナを 0 クリア */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ヒープ作成初期化 */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* カレントヒープに設定 */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ヒープサイズの確認 */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSライブラリを初期化する。FATFS初期化関数内でスレッド休止 - する為、休止中動作するダミーのスレッドを立てる。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - // FATFSライブラリの初期化 - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } -} - -//#ifdef WM_PRECALC_ALLOWEDCHANNEL -//extern u16 WMSP_GetAllowedChannel(u16 bitField); -//#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。 - ミラーリングされているバッファが両方壊れている場合は、 - 共有領域のユーザー情報格納場所をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // オフセット読み出し -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCDEx(temp); -#else - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // アプリケーションの起動を抑制 - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ニックネームを補正 - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // コメントを補正 - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // 共有領域にストア - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // 共有領域をクリア - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // 無線MACアドレスをユーザー情報の後ろに展開 - { - u8 wMac[6]; - - // NVRAMからMACアドレスを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // 展開先アドレスを計算 - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // 共有領域に展開 - MI_CpuCopy8(wMac, p, 6); - } -/* -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // 使用可能チャンネルから使用許可チャンネルを計算 - { - u16 enableChannel; - u16 allowedChannel; - - // 使用可能チャンネルを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // 使用許可チャンネルを計算 - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // 展開先アドレスを計算(MACアドレスの後ろの2バイト) - p = (u8 *)((u32)p + 6); - // 共有領域に展開 - *((u16 *)p) = allowedChannel; - } -#endif -*/ -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。 - - Arguments: None. - - Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。 - 無効である場合はFALSEを返す。 - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ - に関する情報を抽出する。 - - Arguments: None. - - Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している - 言語コードのビットマップを返す。DSカードが拡張言語 - コードに対応していない場合は 0 を返す。 - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM内登録エリアの拡張言語コードを確認 - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - 3: アプリの起動を抑制すべき。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPLが拡張言語コードに対応しているか - if (IsValidConfigEx()) - { - // IPLが拡張言語コードに対応している場合 - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断 - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // 拡張言語コードで通常言語コードを上書き - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、 - // IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制 - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPLが拡張言語コードに対応していない場合 - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制 - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - crc_flag |= (1 << i); - } - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // 各ミラーデータのCRC & saveCount正当性チェック - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRCが正しく、saveCount値が0x80未満のデータを正当と判断。 - crc_flag |= (1 << i); - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ブランク割り込みベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf b/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf deleted file mode 100644 index 35e3fba0..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: ARM9-TS.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address $(ADDRESS_STATIC) - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) - StackSize 4096 4096 -} - -Autoload ITCM -{ - Address $(ADDRESS_ITCM) - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) - Object $(OBJS_AUTOLOAD) (.init) - Object $(OBJS_AUTOLOAD) (.ctor) - Object $(OBJS_AUTOLOAD) (.sinit) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL 共有のオーバーレイが在る場合は、さらにその後ろに配置する必要があります。 - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile b/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile deleted file mode 100644 index 08a2e0c7..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -#============================================================================ -#製品鍵を使った書き込みを行う場合は、TwlIPL/build/buildtools/commondefsの"FIRM_USE_PRODUCT_KEYS=TRUE"を有効にしてください。 -#============================================================================ - -# COMPILE SWITCH for build SystemUpdater -IGNORE_VERSION_CHECK ?= TRUE - -# MAKEROM SWITCH for build SystemUpdater -SYSM_DISABLE_DEBUG ?= TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#TARGET_CODEGEN = THUMB - -TITLEID_LO = 0SUA -#TARGET_TAD = - -TARGET_BIN = CustomSystemUpdater_$(SYSM_REGION).srl -LCFILE_SPEC = ARM9-TS.lsf -ROM_SPEC = main.rsf - -MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -SRCS = main.c \ - font_data.c \ - graphics.c \ - kami_font.c \ - import.c \ - hwi.c \ - kami_pxi.c \ - kami_write_nandfirm.c \ - hw_info.c \ - keypad.c \ - kami_copy_file.c \ - debugger_hw_reset_control.c \ - debugger_card_rom.c - -LINCLUDES = include \ - ../common/include \ - $(ROOT)/build/libraries/lcfg/ARM9.TWL/include \ - $(ROOT)/build/libraries/fs/common/include \ - ../../../systemMenu_tools/common/ARM9/include \ - -SRCDIR = src \ - ../../../systemMenu_tools/HWInfoWriter/ARM9/src \ - ../../../systemMenu_tools/common/ARM9/src \ - -#LCFILE = # using default - -DATA_ROOT = ../data -ROMSET_FILE = ../romset -ROM_CHECKER = ../romchecker.rb - -SUMAKER = ../sumaker.rb custom -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -ifdef FIRM_USE_PRODUCT_KEYS -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' \ - -DHWID_PRIVKEY='private_HWID.der' -else -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' \ - -DHWID_PRIVKEY='private_HWID_dev.der' -endif -endif - -ifeq ($(IGNORE_VERSION_CHECK),TRUE) -MACRO_FLAGS += -DIGNORE_VERSION_CHECK -endif - - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' \ - -DCARD_REGION='$(CARD_REGION)' \ - -DDISABLE_DEBUG='$(SYSM_DISABLE_DEBUG)' - -MAKETAD_FLAGS += -s - -SYSMENU_LIBS = \ - libnamut$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - liblcfg$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -#INSTALL_DIR = $(SDK_NMENU_DATADIR) -INSTALL_DIR = ../bin - -#---------------------------------------------------------------------------- - - -#include $(ROMSET_FILE) - -.PHONY: build_time check_rom sumaker - -check_rom: -ifeq ($(DISABLE_ROMCHECK),) - $(ROM_CHECKER) $(ROMSET) $(SYSM_REGION) - $(ROM_CHECKER) $(ROMSET) VERUP -endif -#ifeq ($(DISABLE_ROMCHECK),) -# $(ROM_CHECKER) $(DATA_ROOT)/$(ROMSET) -#endif - -build_time: - echo -n "#define BUILD_TIME \"`date \"+%Y/%m/%d %H:%M:%S\"`\"" > include/build_time.h - -sumaker: - $(SUMAKER) $(ROMSET) $(SYSM_REGION) - -do-build: sumaker check_rom build_time $(TARGETS) - -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h deleted file mode 100644 index f76dfeb1..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: graphics.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 GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); -void DrawQuad(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); -void DrawResult(BOOL result); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h deleted file mode 100644 index 1c43c56e..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h +++ /dev/null @@ -1,71 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: process_hw_info.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 HW_INFO_H_ -#define HW_INFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: HW情報全体のライト - - Description: - - Arguments: region : - wirelessForceOff : 無線強制OFFならTRUEを指定 - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ); - - -/*---------------------------------------------------------------------------* - Name: HWInfoファイルの削除 - - Description: - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL DeleteHWInfoFile( void ); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* HW_INFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h deleted file mode 100644 index 8c04f1f6..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h +++ /dev/null @@ -1,49 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: import.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 PROCESS_IMPORT_H_ -#define PROCESS_IMPORT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -s32 kamiImportTad(int no, int total, const char* path); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* PROCESS_IMPORT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h deleted file mode 100644 index d2fb008c..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h +++ /dev/null @@ -1,41 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - File: kami_copy_file.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 KAMI_COPY_FILE_H_ -#define KAMI_COPY_FILE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -BOOL kamiCopyFile(char* srcPath, char* dstPath); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_COPY_FILE_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h deleted file mode 100644 index ad5095e2..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h +++ /dev/null @@ -1,94 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapハンドル; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// 上画面コンソール文字列用パレット -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// 下画面フォント用パレット -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// 下画面背景用パレット -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h deleted file mode 100644 index c05de9d4..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h +++ /dev/null @@ -1,89 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 TWL_KAMI_TEST_KAMITEST_H_ -#define TWL_KAMI_TEST_KAMITEST_H_ - -#include "fifo.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -// 処理結果定義 -typedef enum KAMIResult -{ - KAMI_RESULT_SUCCESS = 0, - KAMI_RESULT_SUCCESS_TRUE = 0, - KAMI_RESULT_SUCCESS_FALSE, - KAMI_RESULT_INVALID_COMMAND, - KAMI_RESULT_INVALID_PARAMETER, - KAMI_RESULT_ILLEGAL_STATUS, - KAMI_RESULT_BUSY, - KAMI_RESULT_FATAL_ERROR, - KAMI_RESULT_SEND_ERROR, - KAMI_RESULT_MAX -} -KAMIResult; - - -typedef enum { - FORMAT_MODE_QUICK, // Quickフォーマット - FORMAT_MODE_FULL // Fullフォーマット(各パーティション内を0xFFで埋める) -} FormatMode; - -// コールバック -typedef void (*KAMICallback)(KAMIResult result, void *arg); - - -void KamiPxiInit( void ); - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback); -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); -KAMIResult kamiClearNandErrorLog( void ); -KAMIResult kamiGetIsToolType( IsToolType *pType ); - -// (重要) -// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。 -// -static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, TRUE); -} -static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, FALSE); -} - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_KAMITEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h deleted file mode 100644 index 90fe68bd..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_write_nandfirm.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 KAMI_WRITE_NAND_FIRM -#define KAMI_WRITE_NAND_FIRM - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -typedef void* (*KAMIAlloc)(u32 size); -typedef void (*KAMIFree)(void* ptr); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFunc); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_WRITE_NAND_FIRM */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c deleted file mode 100644 index 54031a91..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: font_data.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 - -/*---------------------- BGスクリーン ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- パレットデータ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// 上画面コンソール文字列パレット -const u16 PlttDataMain[16][16] = { - {RGB555(31, 31, 31), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 5, 5, 5), RGB555( 5, 5, 5), RGB555( 5, 5, 5), RGB555(31, 31, 31),}, // Black -}; - -// 下画面コンソール文字列パレット -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // 背景カラーはこの16番パレット - // 白 黒 灰 むらさき ピンク みずいろ 緑 青紫 赤 黄 - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- キャラクタデータ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c deleted file mode 100644 index 0064e83d..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c +++ /dev/null @@ -1,199 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: praphics.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 -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: 表示の初期化処理 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM クリア - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAMとパレットクリア - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- OBJバンクの設定 - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- BGバンクの設定 - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- 表示モード設定 - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D初期化 - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(3); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KバイトのOBJで2Dマップモードで使用 - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // スクリーンオフセット及びキャラクターオフセットの設定 - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- データロード - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: 三角ポリゴンで線を描画 - - Arguments: sx - 描画する線の開始点のx座標 - sy - 描画する線の開始点のy座標 - ex - 描画する線の終点のx座標 - ey - 描画する線の終点のy座標 - color - 描画する線の色 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} - -/*---------------------------------------------------------------------------* - Name: DrawQuad - - Description: 四角ポリゴンを描画 - - Arguments: sx - 描画する線の開始点のx座標 - sy - 描画する線の開始点のy座標 - ex - 描画する線の終点のx座標 - ey - 描画する線の終点のy座標 - color - 描画する線の色 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawQuad(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_QUADS); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - - G3_Color( color ); - G3_Vtx(fex, fsy, 0); - - G3_Color( color ); - G3_Vtx(fex, fey, 0); - - G3_Color( color ); - G3_Vtx(fsx, fey, 0); - } - G3_End(); -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c deleted file mode 100644 index ed50cbac..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - File: hw_info.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 -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "kami_pxi.h" -#include "hwi.h" -#include "hw_info.h" -// -#include "TWLHWInfo_api.h" -#include "TWLSettings_api.h" -// -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 内部関数宣言 - *---------------------------------------------------------------------------*/ - -BOOL WriteHWNormalInfoFile( void ); -BOOL WriteHWSecureInfoFile( u8 region ); -BOOL DeleteHWInfoFile( void ); - -/*---------------------------------------------------------------------------* - Name: HW情報全体のライト - - Description: - - Arguments: region : - - Returns: None. - *---------------------------------------------------------------------------*/ - -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ) -{ - static const char *pMsgSecureWriting = "Writing Secure File..."; - static const char *pMsgNormalWriting = "Writing Normal File..."; - static const char *pMsgSignWriting = "Writing Sign File..."; - static const char *pMsgSucceeded = "Success!\n"; - static const char *pMsgFailed = "Failed!\n"; - u32 installedSoftBoxCount = 0; - BOOL result = TRUE; - - // セキュアファイルのライト - if( HWI_WriteHWSecureInfoFile( region, NULL, wirelessForceOff ) ) { // とりあえず無線は有効で。 -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // ノーマルファイルのライト(移行可能なユニークIDのためにセキュアファイルの後で書き込む) - if( HWI_WriteHWNormalInfoFile() ) { -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // HWID署名ファイルのライト - if( HWI_WriteHWIDSignFile() ) { -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // CFGデータの修正 - if (!HWI_ModifyLanguage( region )) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "Fail! Write TWLSettings\n" ); - result = FALSE; - } - - return result; -} - -/*---------------------------------------------------------------------------* - Name: HWInfoファイルの削除 - - Description: - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ - -BOOL DeleteHWInfoFile( void ) -{ - static const char *pMsgNormalDeleting = "Deleting Normal File..."; - static const char *pMsgSecureDeleting = "Deteting Secure File..."; - static const char *pMsgSucceeded = "Success!\n"; - static const char *pMsgFailed = "Failed!\n"; - BOOL result = TRUE; - - // ノーマルファイル - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgNormalDeleting ); - if( HWI_DeleteHWNormalInfoFile() ) { - OS_TPrintf( "%s delete succeeded.\n", (char *)LCFG_TWL_HWINFO_NORMAL_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - OS_TPrintf( "%s delete failed.\n", (char *)LCFG_TWL_HWINFO_NORMAL_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // セキュアファイル - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSecureDeleting ); - if( HWI_DeleteHWSecureInfoFile() ) { - OS_TPrintf( "%s delete succeeded.\n", (char *)LCFG_TWL_HWINFO_SECURE_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - OS_TPrintf( "%s delete failed.\n", (char *)LCFG_TWL_HWINFO_SECURE_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - return result; -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c deleted file mode 100644 index b422e173..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c +++ /dev/null @@ -1,194 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: process_import.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 -#include -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "import.h" -#include "hw_info.h" -#include "TWLHWInfo_api.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define THREAD_STACK_SIZE (16*1024) - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u32 sCurrentProgress; -static vu8 sNowImport = FALSE; -static vu8 sProgress = FALSE; -static u8 sStack[THREAD_STACK_SIZE]; - -/*---------------------------------------------------------------------------* - 内部関数宣言 - *---------------------------------------------------------------------------*/ - -static void ProgressThread(void* arg); -static void Destructor(void* arg); -void ProgressDraw(f32 ratio); - -/*---------------------------------------------------------------------------* - 処理関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: kamiImportTad - - Description: .tad ファイルインポート - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ - -s32 kamiImportTad(int no, int total, const char* path) -{ - NAMTadInfo tadInfo; - OSThread thread; - s32 nam_result; - - kamiFontPrintfMain( 4, 9, 8, "Now Updating... %d / %d", no, total ); - kamiFontLoadScreenData(); - - // tadファイルの情報取得 - nam_result = NAM_ReadTadInfo(&tadInfo, path); - if ( nam_result != NAM_OK ) - { - return nam_result; - } - - // ESの仕様で古い e-ticket があると新しい e-ticket を使ったインポートができない - // 暫定対応として該当タイトルを完全削除してからインポートする - nam_result = NAM_DeleteTitleCompletely(tadInfo.titleInfo.titleId); - if ( nam_result != NAM_OK ) - { - kamiFontPrintfConsole(CONSOLE_RED, "Fail! RetCode=%x\n", nam_result); - return FALSE; - } - - // インポート開始フラグを立てる - sNowImport = TRUE; - - // 進捗スレッド作成 - MI_CpuClear8(sStack, THREAD_STACK_SIZE); - OS_CreateThread(&thread, ProgressThread, NULL, - (void*)((u32)sStack + THREAD_STACK_SIZE), THREAD_STACK_SIZE, OS_GetCurrentThread()->priority - 1); - OS_WakeupThreadDirect(&thread); - - // Import開始 - nam_result = NAM_ImportTad( path ); - - // インポート開始フラグを下げる - sNowImport = FALSE; - - // 進捗スレッドの自力終了を待つ - while (sProgress){}; - - // InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。 - (void)NAMUT_UpdateSoftBoxCount(); - - return nam_result; -} - -/*---------------------------------------------------------------------------* - Name: ProgressThread - - Description: .tad ファイルインポートの進捗を表示するスレッド。 - 進捗が100%に達すると処理を抜ける。 - - Arguments: arg - 使用しない。 - - Returns: None. - *---------------------------------------------------------------------------*/ - -static void ProgressThread(void* /*arg*/) -{ - u32 currentSize; - u32 totalSize = 0; - u32 totalSizeBk = 0; - - sProgress = TRUE; - - while (sNowImport) - { - NAM_GetProgress(¤tSize, &totalSize); - - if ((totalSize > 0 && totalSize == currentSize) || totalSizeBk > totalSize) - { - // 既にインポートが終了 - ProgressDraw((f32)1.0); - break; - } - else if (totalSize > 0) - { - ProgressDraw((f32)currentSize/totalSize); - } - - totalSizeBk = totalSize; - - // Vブランク待ち - OS_WaitVBlankIntr(); - } - - sProgress = FALSE; -} - -/*---------------------------------------------------------------------------* - Name: ProgressDraw - - Description: インポートの進捗を表示します - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ - -void ProgressDraw(f32 ratio) -{ - s16 x = (s16)(30 + (226 - 30)*ratio); - - // 3D初期化 - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - // グリーンバー - DrawQuad( 30, 90, x, 95, GX_RGB(12, 25, 12)); - - // グレーバー - DrawQuad( 30, 90, 226, 95, GX_RGB(28, 28, 28)); - - // グレーダイアログ - DrawQuad( 20, 60, 236, 110, GX_RGB(25, 25, 25)); - - // 3Dスワップ - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c deleted file mode 100644 index c9365276..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_copy_file.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 -#include -#include -#include -#include "kami_font.h" -#include "kami_copy_file.h" - -/*---------------------------------------------------------------------------* - マクロ - *---------------------------------------------------------------------------*/ - -#define ROUND_UP(value, alignment) \ - (((u32)(value) + (alignment-1)) & ~(alignment-1)) - -/*---------------------------------------------------------------------------* - 処理関数定義 - *---------------------------------------------------------------------------*/ - -BOOL kamiCopyFile(char* srcPath, char* dstPath) -{ - FSFile file; - BOOL open_is_ok; - BOOL read_is_ok; - void* pTempBuf; - u32 file_size; - u32 alloc_size; - BOOL result = TRUE; - - // ROMファイルオープン - FS_InitFile(&file); - open_is_ok = FS_OpenFile(&file, srcPath); - if (!open_is_ok) - { - OS_Printf("FS_OpenFile(\"%s\") ... ERROR!\n", srcPath); - return FALSE; - } - - // ROMファイルリード - file_size = FS_GetFileLength(&file) ; - alloc_size = ROUND_UP(file_size, 32) ; - pTempBuf = OS_Alloc( alloc_size ); - SDK_NULL_ASSERT(pTempBuf); - DC_InvalidateRange(pTempBuf, alloc_size); - read_is_ok = FS_ReadFile( &file, pTempBuf, (s32)file_size ); - if (!read_is_ok) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_ReadFile(\"%s\") ... ERROR!\n", srcPath); - FS_CloseFile(&file); - OS_Free(pTempBuf); - return FALSE; - } - - // ROMファイルクローズ - FS_CloseFile(&file); - - // 一旦対象データを削除する - (void)FS_DeleteFile(dstPath); - - // ターゲットファイル作成 - if (!FS_CreateFile(dstPath, FS_PERMIT_R | FS_PERMIT_W)) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_CreateFile(%s) failed.\n", dstPath); - result = FALSE; - } - else - { - // ターゲットファイルオープン - FS_InitFile(&file); - open_is_ok = FS_OpenFileEx(&file, dstPath, FS_FILEMODE_W); - if (!open_is_ok) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_OpenFile(%s) failed.\n", dstPath); - result = FALSE; - } - // nand:sys/TWLFontTable.dat書き込み - else if (FS_WriteFile(&file, pTempBuf, (s32)file_size) == -1) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_WritFile() failed.\n"); - result = FALSE; - } - (void)FS_CloseFile(&file); - } - - OS_Free(pTempBuf); - - return result; -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - 内部関数宣言 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // 背景用キャラクタデータ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // 背景用スクリーンデータセット - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // 背景キャラクタデータ書き換え - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: 仮想スクリーンに - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // 終端追加 - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // 改行コード - kamiFontReturnConsole(); - } - else - { - // 一文字ずつ書き込み - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // X座標が右端に到達した場合は改行処理 - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - OS_Printfもついでに実行する。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: 仮想コンソールにおける改行処理を行う - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // 次の行へ - sYPos++; - } - else - { - // 既に最終行に到達している場合シフトを行う - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c deleted file mode 100644 index f3ce7f2a..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c +++ /dev/null @@ -1,370 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 -#include "kami_pxi.h" -#include "fifo.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -// 詰めてコピーする -#define KAMI_PACK_U16(d, s) \ - ((d)[0] = (u8)((*((u16*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u16*)s) >> 8) & 0xFF)) - -#define KAMI_PACK_U32(d, s) \ - ((d)[0] = (u8)((*((u32*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u32*)s) >> 8) & 0xFF), \ - (d)[2] = (u8)((*((u32*)s) >> 16) & 0xFF), \ - (d)[3] = (u8)((*((u32*)s) >> 24) & 0xFF)) - - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL lock; - - KamiCommand command; - KAMIPxiResult result; - KAMICallback callback; - void* arg; - - u32 total; - u32 current; - u8* data; -} -KamiWork; - -/*---------------------------------------------------------------------------* - 静的変数定義 - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data); -static void KamiSendPxiData(u8 *pData); -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiDone(KAMIResult result); -static void KamiWaitBusy(void); - - -void KamiPxiInit( void ) -{ - kamiWork.lock = FALSE; - - PXI_Init(); - while ( !PXI_IsCallbackReady(PXI_FIFO_TAG_KAMITEST, PXI_PROC_ARM7 )) - { - } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - if ( 0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, KAMITEST_PXI_START_BIT | (KAMI_TEST_COMMAND << KAMITEST_PXI_COMMAND_SHIFT), 0)) - { - return; - } -} - -/*---------------------------------------------------------------------------* - Name: フォーマット実行関数 - - Description: - - Arguments: FormatMode - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = callback; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode) == FALSE) - { - return KAMI_RESULT_SEND_ERROR; - } - return KAMI_RESULT_SUCCESS; -} - -/*---------------------------------------------------------------------------* - Name: NANDアクセス関数 - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - // データ作成 - KAMI_PACK_U32(&data[0], &block); - KAMI_PACK_U32(&data[4], &buffer); - KAMI_PACK_U32(&data[8], &count); - - if (KamiSendPxiCommand(KAMI_NAND_IO, 12, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiClearNandErrorLog - - Description: NVRAMのNANDエラー情報をクリアします。 - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiClearNandErrorLog( void ) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetIsToolType - - Description: IS-TWL-DEBUGGER or CAPTURE を取得します(同期版) - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetIsToolType( IsToolType *pType ) -{ - OSIntrMode enabled; - - if (pType == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)pType; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_IS_TOOL_TYPE, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - PXI関連 - *---------------------------------------------------------------------------*/ - -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((size << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((data << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - return FALSE; - } - return TRUE; -} - -static void KamiSendPxiData(u8 *pData) -{ - u32 pxiData = (u32)((pData[0] << 16) | (pData[1] << 8) | pData[2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (data & KAMITEST_PXI_START_BIT) // 先頭データ - { - if (data & KAMITEST_PXI_RESULT_BIT) - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.result = (KAMIPxiResult)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // 未知のデータ - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - } - else // 後続データ - { - if (kamiWork.data == NULL) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - } - if (kamiWork.current == kamiWork.total-1) - { - KAMIResult result; - switch (kamiWork.result) - { - case KAMI_PXI_RESULT_SUCCESS: // alias KAMI_PXI_RESULT_SUCCESS_TRUE - result = KAMI_RESULT_SUCCESS; // alias KAMI_RESULT_SUCCESS_TRUE - break; - case KAMI_PXI_RESULT_SUCCESS_FALSE: - result = KAMI_RESULT_SUCCESS_FALSE; - break; - case KAMI_PXI_RESULT_INVALID_COMMAND: - result = KAMI_RESULT_INVALID_COMMAND; - break; - case KAMI_PXI_RESULT_INVALID_PARAMETER: - result = KAMI_RESULT_INVALID_PARAMETER; - break; - case KAMI_PXI_RESULT_ILLEGAL_STATUS: - result = KAMI_RESULT_ILLEGAL_STATUS; - break; - case KAMI_PXI_RESULT_BUSY: - result = KAMI_RESULT_BUSY; - break; - default: - result = KAMI_RESULT_FATAL_ERROR; - } - KamiDone(result); - return; - } -} - -extern void PXIi_HandlerRecvFifoNotEmpty(void); -static void KamiWaitBusy(void) -{ - volatile BOOL *p = &kamiWork.lock; - - while (*p) - { - if (OS_GetCpsrIrq() == OS_INTRMODE_IRQ_DISABLE) - { - PXIi_HandlerRecvFifoNotEmpty(); - } - } -} - -static void KamiDone(KAMIResult result) -{ - KAMICallback callback = kamiWork.callback; - void* arg = kamiWork.arg; - kamiWork.callback = NULL; - kamiWork.arg = NULL; - if (kamiWork.lock) - { - kamiWork.lock = FALSE; - } - if (callback) - { - callback(result, arg); - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c deleted file mode 100644 index cac9c5ee..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c +++ /dev/null @@ -1,332 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_write_nandfirm.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 -#include -#include -#include -#include -#include "kami_font.h" -#include "kami_pxi.h" - -#include -#include "kami_write_nandfirm.h" - -/*---------------------------------------------------------------------------* - マクロ定義 - *---------------------------------------------------------------------------*/ - -// NANDファーム書き込みの際にNVRAMの未割り当て領域+予約領域を0クリアする場合は定義します(開発用) -//#define CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define NAND_BLOCK_BYTE 0x200 -#define NAND_FIRM_START_OFFSET 0x200 -#define NAND_FIRM_START_OFFSET_IN_FILE 0x200 - -#define NVRAM_PAGE_SIZE 0x100 -#define NVRAM_NORFIRM_RESERVED_ADDRESS 0x200 -#define NVRAM_NORFIRM_NANDBOOT_FLAG_OFFSET 0xff -#define NVRAM_NORFIRM_NANDBOOT_FLAG 0x80 - -#define NVRAM_NON_ASIGNED_AREA_ADDRESS 0x300 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u8 sNvramPageSizeBuffer[NVRAM_PAGE_SIZE] ATTRIBUTE_ALIGN(32); // ARM7からアクセスするためスタックでは駄目 -static u32 sReservedAreaEndAddress; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ - -void kamiEraseNandfirmVersion( u32 nandfirmsize ); - -/*---------------------------------------------------------------------------* - Name: kamiWriteNandfirm - - Description: - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFunc) -{ - FSFile file; - - BOOL open_is_ok; - BOOL read_is_ok; - u8* pTempBuf; - u32 file_size; - u32 nandfirm_size; - u32 alloc_size; - u32 write_block; - BOOL result = TRUE; - u16 crc_w1, crc_w2; - u16 crc_r1, crc_r2; - u16 crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r; -#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - u32 write_offset; -#endif // CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - - // .nandファイルオープン - FS_InitFile(&file); - open_is_ok = FS_OpenFile(&file, pFullPath); - if (!open_is_ok) - { - OS_Warning("Failure! FS_OpenFile"); - return FALSE; - } - - // サイズチェック - file_size = FS_GetFileLength(&file) ; - if (file_size > (800*1024)) - { - kamiFontPrintfConsoleEx(1, "too big file size!\n"); - FS_CloseFile(&file); - return FALSE; - } - - nandfirm_size = file_size - NAND_FIRM_START_OFFSET_IN_FILE; - - // バッファ確保 - // 書き込みがブロック単位(512byte)であることを考慮し512アライメントを確保 - alloc_size = MATH_ROUNDUP(file_size, 512); - pTempBuf = allocFunc( alloc_size ); - if (pTempBuf == NULL) - { - kamiFontPrintfConsoleEx(1, "Fail Alloc()!\n"); - FS_CloseFile(&file); - return FALSE; - } - - MI_CpuClear8( pTempBuf, alloc_size ); - - // .nandファイルリード - DC_FlushRange(pTempBuf, alloc_size); - read_is_ok = FS_ReadFile( &file, pTempBuf, (s32)file_size ); - DC_FlushRange(pTempBuf, file_size); - if (!read_is_ok) - { - kamiFontPrintfConsoleEx(1, "Fail FS_ReadFile!\n"); - FS_CloseFile(&file); - freeFunc(pTempBuf); - return FALSE; - } - - // ファイルクローズ - FS_CloseFile(&file); - - // 書き込み前のCRCを計算 - crc_w1 = SVC_GetCRC16( 0xffff, pTempBuf, sizeof(NORHeaderDS) ); - crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+NAND_FIRM_START_OFFSET_IN_FILE, nandfirm_size ); - - // まずNORHeaderDS領域を書き込む(40byte?) - if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - // CRCを計算するので念のためにクリアしてからリードする - MI_CpuClear8( pTempBuf, sizeof(NORHeaderDS) ); - DC_FlushRange(pTempBuf, sizeof(NORHeaderDS)); - - // CRCチェックのためNvramからリード - if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()!\n"); - } - DC_FlushRange(pTempBuf, sizeof(NORHeaderDS)); - - // 書き込み後のCRCを計算 - crc_r1 = SVC_GetCRC16( 0xffff, pTempBuf, sizeof(NORHeaderDS) ); - - // NVRAM先頭部分のCRC比較 - if ( crc_w1 != crc_r1 ) - { - freeFunc(pTempBuf); - kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w1, crc_r1); - return FALSE; - } - - // nandfirm 起動フラグを立てる - MI_CpuClear8( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - sNvramPageSizeBuffer[NVRAM_NORFIRM_NANDBOOT_FLAG_OFFSET] = NVRAM_NORFIRM_NANDBOOT_FLAG; - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - - // NORファームリザーブ領域の書き込みデータのCRCを計算 - crc_norfirm_reserved_area_w = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - // CRCを計算するので念のためにクリアしてからリードする - MI_CpuClear8( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - // 読み込みはARM7が直接メモリに書き出すため - DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - - if (NVRAMi_Read(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - - // 書き込み後のCRCを計算 - DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - crc_norfirm_reserved_area_r = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - // NORファームリザーブ領域のCRC比較 - if ( crc_norfirm_reserved_area_w != crc_norfirm_reserved_area_r ) - { - kamiFontPrintfConsoleEx(1, "Fail! Norfirm Reserved Area CRC check %x!=%x\n", crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r); - result = FALSE; - } - -#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - // 未割り当て領域+予約領域を0クリアします(開発用) - if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFi設定 + NTR WiFi設定 を差し引く - //OS_Printf("end = %x\n", sReservedAreaEndAddress); - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - for (write_offset=NVRAM_NON_ASIGNED_AREA_ADDRESS; write_offset < sReservedAreaEndAddress; write_offset += NVRAM_PAGE_SIZE) - { - if (NVRAMi_Write(write_offset, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - } - //OS_Printf("write_offset = %x\n", write_offset); -#else - // 未割り当て領域先頭256byte+予約領域を0クリアします - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(NVRAM_NON_ASIGNED_AREA_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFi設定 + NTR WiFi設定 を差し引く - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(sReservedAreaEndAddress - 0x100, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } -#endif - - // NANDログ情報のクリア - if (kamiClearNandErrorLog() != KAMI_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail kamiClearNandErrorLog()\n"); - result = FALSE; - } - - // nandfirmバージョンの消去(デバッグ用) - kamiEraseNandfirmVersion(nandfirm_size); - -// kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n"); - - // NAND書き込み - write_block = nandfirm_size/NAND_BLOCK_BYTE + (nandfirm_size % NAND_BLOCK_BYTE != 0); - kamiNandWrite( NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf+NAND_FIRM_START_OFFSET, write_block ); // ブロック単位、バイト単位、ブロック単位 - kamiFontLoadScreenData(); - - // CRCを計算するので念のためにクリアしてからリードする - MI_CpuClear8( pTempBuf, nandfirm_size ); - DC_FlushRange(pTempBuf, nandfirm_size); - - // CRCチェックのためNandからリード - if (kamiNandRead(NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf, write_block ) == KAMI_RESULT_SEND_ERROR) - { - kamiFontPrintfConsoleEx(1, "kamiNandRead ... %s!\n", "ERROR"); - } - DC_FlushRange(pTempBuf, nandfirm_size); - - // 書き込み後のCRCを計算 - crc_r2 = SVC_GetCRC16( 0xffff, pTempBuf, nandfirm_size ); - - // NAND部分についてのCRCチェック - if (crc_w2 == crc_r2) - { -// kamiFontPrintfConsoleEx(0, "Success! CRC check %x==%x\n", crc_w2, crc_r2); - } - else - { - result = FALSE; - kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w2, crc_r2); - } - - // メモリ解放 - freeFunc(pTempBuf); - - return result; -} - -/*---------------------------------------------------------------------------* - Name: kamiEraseNandfirmVersion - - Description: nandfirmのバージョン情報を消去します。(デバッグ用) - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ -void kamiEraseNandfirmVersion( u32 nandfirmsize ) -{ - u8 buffer[NAND_BLOCK_BYTE]; - u32 blockNo; - - if ((nandfirmsize % NAND_BLOCK_BYTE)==0) - { - blockNo = NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE + nandfirmsize/NAND_BLOCK_BYTE; - MI_CpuClear8( buffer, NAND_BLOCK_BYTE ); - DC_FlushRange(buffer, NAND_BLOCK_BYTE); - kamiNandWrite( blockNo, buffer, 1 ); // ブロック単位、バイト単位、ブロック単位 - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 -#include "keypad.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/CustomSystemUpdater/Makefile b/build/tests/CustomSystemUpdater/Makefile deleted file mode 100644 index 9ae3341f..00000000 --- a/build/tests/CustomSystemUpdater/Makefile +++ /dev/null @@ -1,123 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = THUMB -override TWL_ARCHGEN = LIMITED - - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -#.PHONY: no_rom_set -#no_rom_set: -# echo "Usage: make ROMSET=dirname" -# -#ifeq ($(ROMSET),) -# no_rom_set -#endif -# - -# リージョンが指定されてなかったら全部やる -ifeq ($(REGION),) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL= -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something: - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=JPN ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=AUS ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=USA ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=EUR ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -else - -LAUNCHER_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(TWL_IPL_RED_ROOT)/build/nandfirm/menu-launcher - - - -# 既存データを使用する場合はTRUEを指定 -SKIP_CREATE_DATA = TRUE - -ifeq ($(SKIP_CREATE_DATA),FALSE) -SUBDIRS = $(LAUNCHER_DIR) \ - $(MACHINESETTINGS_DIR) \ - $(WLANFIRM_DIR) \ - $(DS_HASH_TABLE) \ - $(SHARED_FONT_DIR) \ - $(NANDFIRM_DIR) \ - data \ - banner \ - ARM7.TWL \ - ARM9.TWL -else -SUBDIRS = banner \ - ARM7.TWL \ - ARM9.TWL -endif - -# CustomSystemUpdater -export SYSM_REGION = $(REGION) -export ROMSET := $(ROMSET) -export DISABLE_ROMCHECK := $(DISABLE_ROMCHECK) - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = TRUE -export SYSM_DISABLE_WDS_SCAN = FALSE -export SYSM_IGNORE_WLFIRM_SIGNCHECK = FALSE -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = FALSE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -endif - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/banner/Makefile b/build/tests/CustomSystemUpdater/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/CustomSystemUpdater/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr b/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr deleted file mode 100644 index 4828a00d..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr b/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr deleted file mode 100644 index c4d8d0fc..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr b/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr deleted file mode 100644 index 4480b5e0..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_USA.bnr b/build/tests/CustomSystemUpdater/banner/banner_USA.bnr deleted file mode 100644 index 110376b6..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_USA.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_v3.bsf b/build/tests/CustomSystemUpdater/banner/banner_v3.bsf deleted file mode 100644 index d1c48580..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp b/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp deleted file mode 100644 index 7bba6103..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/common/include/fifo.h b/build/tests/CustomSystemUpdater/common/include/fifo.h deleted file mode 100644 index 892475dd..00000000 --- a/build/tests/CustomSystemUpdater/common/include/fifo.h +++ /dev/null @@ -1,90 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - include - File: fifo.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 TWL_KAMI_TEST_FIFO_H_ -#define TWL_KAMI_TEST_FIFO_H_ - -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define PXI_FIFO_TAG_KAMITEST PXI_FIFO_TAG_USER_1 - -#define KAMI_PXI_CONTINUOUS_PACKET_MAX 10 -#define KAMITEST_PXI_DATA_SIZE_MAX ((KAMI_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // 最大データ数 - -#define KAMITEST_PXI_START_BIT 0x02000000 // 先頭パケットを意味する -#define KAMITEST_PXI_RESULT_BIT 0x00008000 // PXIの応答を示す - -#define KAMITEST_PXI_COMMAND_SHIFT 8 // コマンド格納部分の位置 -#define KAMITEST_PXI_COMMAND_MASK 0x00007f00 // コマンド格納部分のマスク -#define KAMITEST_PXI_DATA_NUMS_MASK 0x00ff0000 // データ数領域 -#define KAMITEST_PXI_DATA_NUMS_SHIFT 16 // データ数位置 -#define KAMITEST_PXI_1ST_DATA_MASK 0x000000ff // 先頭パケットのデータ領域 -#define KAMITEST_PXI_1ST_DATA_SHIFT 0 // 先頭パケットのデータ位置 - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -typedef enum KAMIPxiResult -{ - KAMI_PXI_RESULT_SUCCESS = 0, // 処理成功 (void/void*型) // 場合により後続パケットあり - KAMI_PXI_RESULT_SUCCESS_TRUE = 0, // 処理成功 (BOOL型) - KAMI_PXI_RESULT_SUCCESS_FALSE, // 処理成功 (BOOL型) - KAMI_PXI_RESULT_INVALID_COMMAND, // 不正なPXIコマンド - KAMI_PXI_RESULT_INVALID_PARAMETER, // 不正なパラメータ - KAMI_PXI_RESULT_ILLEGAL_STATUS, // KAMIの状態により処理を実行不可 - KAMI_PXI_RESULT_BUSY, // 他のリクエストを実行中 - KAMI_PXI_RESULT_FATAL_ERROR, // その他何らかの原因で処理に失敗 - KAMI_PXI_RESULT_MAX -} -KAMIPxiResult; - - -typedef enum KamiCommand -{ - KAMI_TEST_COMMAND, - KAMI_EXE_FORMAT, - KAMI_NAND_IO, - KAMI_CLEAR_NAND_ERRORLOG, - KAMI_GET_IS_TOOL_TYPE -} -KamiCommand; - -typedef enum _IsToolType -{ - IS_TOOL_TYPE_ERROR, - IS_TOOL_TYPE_DEBUGGER, - IS_TOOL_TYPE_CAPTURE -} -IsToolType; - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_FIFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/custom_base.yaml b/build/tests/CustomSystemUpdater/custom_base.yaml deleted file mode 100644 index 7624d9d2..00000000 --- a/build/tests/CustomSystemUpdater/custom_base.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -:DataPath: . -:NandFirm: nandfirm_rcplus.nand -:TargetPath: . -:TemplatePath: template -:RSF: ARM9.TWL/main.rsf -:TadFiles: -:SRC: ARM9.TWL/src/main.c -:FontFile: TWLFontTable.dat -:Region: EUR diff --git a/build/tests/CustomSystemUpdater/default.yaml b/build/tests/CustomSystemUpdater/default.yaml deleted file mode 100644 index de8a0c89..00000000 --- a/build/tests/CustomSystemUpdater/default.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -:SRC: ARM9.TWL/src/main.c -:FontFile: TWLFontTable.dat -:DataPath: data -:NandFirm: menu_launcher.nand -:TargetPath: . -:TemplatePath: template -:RSF: ARM9.TWL/main.rsf -:TadFiles: -- HNAA.tad -- HNBA.tad -- HNCA.tad -- HNLA.tad -- HNHA.tad diff --git a/build/tests/CustomSystemUpdater/makecsu.sh b/build/tests/CustomSystemUpdater/makecsu.sh deleted file mode 100755 index c8a17d1f..00000000 --- a/build/tests/CustomSystemUpdater/makecsu.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: autoupload.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -gen_updater(){ -#ruby sumaker.rb custom $1 $2 -make ROMSET=$1 REGION=$2 -rm `find . -name "*autogen*"` -} - - -if [ $# -lt 1 ]; -then - echo "Usage: makecsu vername" - exit -fi - - -gen_updater $1 JPN -gen_updater $1 USA -gen_updater $1 AUS -gen_updater $1 EUR diff --git a/build/tests/CustomSystemUpdater/romchecker.rb b/build/tests/CustomSystemUpdater/romchecker.rb deleted file mode 100755 index 18da809c..00000000 --- a/build/tests/CustomSystemUpdater/romchecker.rb +++ /dev/null @@ -1,207 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: romchecker.rb -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -ALL_REGION = [ - "C", "D", "E", "H", -] - -FIX_REGION = [ - "A", "B", "F", "G", "I", "J", "K", "L", -] - -HEADER = "HN" - -ROM_DATA = { - "#{HEADER}A" => ["Launcher", "00030017"], - "#{HEADER}B" => ["本体設定", "00030015"], - "#{HEADER}C" => ["無線ファーム", "0003000f"], - "#{HEADER}D" => ["DSダウンロードプレイ", "00030005"], - "#{HEADER}E" => ["ピクトチャット", "00030005"], - "#{HEADER}F" => ["ショップ", "00030015"], - "#{HEADER}G" => ["フルブラウザ", "00030004"], - "#{HEADER}H" => ["DSハッシュリスト", "0003000f"], - "#{HEADER}I" => ["写真帳", "00030005"], - "#{HEADER}J" => ["ホットスポット", "00030005"], - "#{HEADER}K" => ["DSサウンド", "00030005"], - "#{HEADER}L" => ["バージョンデータ", "0003000f"], -} - -REGION_DIRS = { - "AUS" => ["aus", "U"], - "EUR" => ["euro", "P"], - "JPN" => ["jp", "J"], - "USA" => ["usa", "E"], - "VERUP" => ["verup", "UPJE"], -} - -REG_PATH = /[a-zA-Z0-9\.\-_]+\/[a-zA-Z0-9\.\-_*]+\z/ -NAND_FIRM = "*.nand" -FONT_DATA = "*.dat" - -# ファイルを検索し、ROM内に含まれるべきかどうかを判定する -# 条件に一致したファイル名の配列の要素数で判定 -# 0 個 ファイルがない -# 1 個 正常っぽい -# 2 個以上 バージョン違いや、リージョン違いが混ざっている -def check_pickuped(path, print_success) - ret = true - files = Dir.glob(path) - p_path = path.slice(REG_PATH) - #p files - case - when files.size == 0 - $stdout.printf( "NG:#{p_path} -- #{p_path} is not included ***********\n") - ret = false - when files.size == 1 && print_success - $stdout.printf( "OK:#{files[0].slice(REG_PATH)}\n") - when files.size >= 2 - $stdout.printf("NG:") - files.each{|file| - $stdout.printf( "#{file.slice(REG_PATH)} ") - } - $stdout.printf("-- Too many files are included ***********\n") - ret = false - end - ret -end - -def add_rom_list(rom_list, code, region, version, size) - rom_list << [code, region, version, size] -end - -def make_rom_list(target_dir, region) - region_dir = REGION_DIRS[region][0] - region_codes = (REGION_DIRS[region][1] + "A").unpack("A" * (REGION_DIRS[region][1].size + 1)) - #p region_codes - # 出力用リスト - rom_list = [] - - (ALL_REGION + FIX_REGION).each{|app_code| - region_codes.each{|region_code| - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad") - files = Dir.glob(search_path) - files.each{|tad| - add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(tad), File.stat(tad).size) - } - } - } - write_rom_list(rom_list, "rom_list_#{region}.txt") -end - -def write_rom_list(rom_list, file_name) - region_name = { - "A" => "ALL", "E" => "USA", "U" => "AUS", "J" => "JPN", "P" => "EUR" - } - out = "" - sp = [8, 20, 10, 17, 10, 14] - line = "" - sp.each{|s| - line += "+#{"-" * s}" - } - line += "+\n" - out += line - out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%#{sp[2]}s|%-#{sp[3]}s|%#{sp[4]}s|%#{sp[5]}s|\n", - "コード", "名前", "リージョン", "タイトルID", "バージョン", "ファイルサイズ") - out += line - rom_list.each{|rom| - rom_data = ROM_DATA[rom[0]] - size = (rom[3].to_s).reverse.scan(/.{1,3}/).join(",").reverse - out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%-#{sp[2]}s|%8s %8x|%#{sp[4]}s|%#{sp[5]}s|\n", - rom[0] + rom[1], rom_data[0],region_name[rom[1]], rom_data[1], (rom[0] + rom[1]).unpack("N")[0], rom[2], size); - } - out += line - File.open(file_name, "w") {|file| - file.puts out - } -end - -def get_rom_version(path) - files = Dir.glob(path) - files[0].slice(/v[0-9]+/).delete("v") -end - -def check(target_dir, region) - ret = true - if REGION_DIRS[region] == nil - puts "Invalid region, [JPN, USA, EUR, AUS, VERUP]" - return false - end - region_dir = REGION_DIRS[region][0] - region_code = REGION_DIRS[region][1] - - # 出力用リスト - rom_list = [] - - ALL_REGION.each{|app_code| - # オールリージョンのロムが含まれているかのチェック - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}A*.tad") - #if ret &= check_pickuped(search_path, false) - #add_rom_list(rom_list, "#{HEADER}#{app_code}", "A", get_rom_version(search_path)) - #end - check_pickuped(search_path, false) - } - FIX_REGION.each{|app_code| - # 各リージョン固有のロムが含まれているかのチェック - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad") - #if ret &= check_pickuped(search_path, false) - #add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(search_path)) - #end - ret &= check_pickuped(search_path, false) - } - (ALL_REGION + FIX_REGION).each{|app_code| - # HNxy が 各リージョンごと1つだけ存在するかのチェック - # HNxA と HNxU など、aとuが混在していたりするとここでひっかかる - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}*.tad") - ret &= check_pickuped(search_path, false) - } - - # nand firm, font のチェック - search_path = File.join(target_dir, region_dir, NAND_FIRM) - ret &= check_pickuped(search_path, false) - search_path = File.join(target_dir, region_dir, FONT_DATA) - ret &= check_pickuped(search_path, false) - $stdout.printf("\n") - - # CSUに含まれているロムの一覧を書き出す -# write_rom_list(rom_list, "rom_list_#{region}.txt") - -# make_rom_list(target_dir, region) - - ret -end - -# こっからメイン - -if ARGV.size < 2 - p "Usage: #{__FILE__} targetdir region" - exit -1 -end - -# カレントディレクトリの変更 -Dir.chdir(File.dirname(File.expand_path(__FILE__))) - - -target = ARGV[0] -region = ARGV[1] -make_rom_list(target, region) -if region == "VERUP" - exit 0 -else - exit check(target,region) ? 0 : -1 -end - diff --git a/build/tests/CustomSystemUpdater/sumaker.rb b/build/tests/CustomSystemUpdater/sumaker.rb deleted file mode 100755 index 8d630ebf..00000000 --- a/build/tests/CustomSystemUpdater/sumaker.rb +++ /dev/null @@ -1,212 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: sumaker.rb -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -require "yaml" -require "fileutils" -require "tempfile" - -DEFAULT_CONFIG = "default.yaml" -CUSTOM_CONFIG = "custom.yaml" - -FILE_MATCH = /[a-zA-Z0-9\-_\.]+\z/ - -REGION = { - "JPN" => "OS_TWL_REGION_JAPAN", - "EUR" => "OS_TWL_REGION_EUROPE", - "AUS" => "OS_TWL_REGION_AUSTRALIA", - "USA" => "OS_TWL_REGION_AMERICA", -} - -REGION_PATH = { - "JPN" => "jp", - "EUR" => "euro", - "AUS" => "aus", - "USA" => "usa", -} - -# デフォルト設定の作成 -def make_default_config - config = { - :TadFiles => [ - "HNAA.tad", - "HNBA.tad", - "HNCA.tad", - "HNLA.tad", - "HNHA.tad", - ], - :FontFile => "TWLFontTable.dat", - :NandFirm => "menu_launcher.nand", - :TargetPath => ".", - :TemplatePath => "template", - :RSF => "ARM9.TWL/main.rsf", - :SRC => "ARM9.TWL/src/main.c", - :DataPath => ".", - :Region => "JPN", - } - write_config(DEFAULT_CONFIG, config) - -end - -# ファイル名にスクリプトを置いてあるディレクトリをくっつける -def calc_path(filename) -# File.join(File.dirname(File.expand_path(__FILE__)), filename) -filename -end - -# コンフィグファイルを読んで展開 -def read_config(filename) - YAML.load(File.read(calc_path(filename))) -end - -# コンフィグのライト -def write_config(filename, data) - File.open(calc_path(filename), "w") {|file| - file.write data.to_yaml - } -end - -# データ内の文字列を置き換える -def replace_data(src, mark, data) - while src.index(/%#{mark}%/) != nil do - src = src.sub(/%#{mark}%/, data) - end - src -end - - -# ファイルを書き込む -def write_data(filename, data) - temp = Tempfile.new("temp") - temp.puts data - temp.close - FileUtils.cp(temp.path, calc_path(filename)) -end - -# main.rsfの書き換え -def make_rsf(config) - tadlist = config[:TadFiles].dup - tadlist << config[:FontFile] << config[:NandFirm] - tadlist = tadlist.join(" ") - src = File.read(File.join(config[:TemplatePath], config[:RSF])) - #src = File.read(config[:TemplatePath] + "/" + config[:RSF]) - src = replace_data(src, "datapath", config[:DataPath]) - src = replace_data(src, "regionname", config[:Region]) - write_data(File.join(config[:TargetPath], config[:RSF]), replace_data(src, "filelist", tadlist)) - #write_data(config[:TargetPath] + "/" + config[:RSF], replace_data(src, "filelist", tadlist)) -end - -# main.c の書き換え -def make_main(config) - filelist = config[:TadFiles] - data = [] - for t in filelist do - data.push("\t\"rom:/data/" + t + "\", \n") - end - data = data.join - #src = File.read(config[:TemplatePath] + "/" + config[:SRC]) - src = File.read(File.join(config[:TemplatePath], config[:SRC])) - mod = replace_data(src, "tadlist", data) - mod = replace_data(mod, "nandfirm", config[:NandFirm]) - mod = replace_data(mod, "fontfile", config[:FontFile]) - - # region - region_name = (config[:Region] != nil) ? config[:Region] : "JPN" - region = (REGION[region_name] != nil) ? REGION[region_name] : REGION["JPN"] - mod = replace_data(mod, "region", region) - mod = replace_data(mod, "regionname", region_name) - #write_data(config[:TargetPath] + "/" + config[:SRC], mod) - write_data(File.join(config[:TargetPath], config[:SRC]), mod) - -end - -# SystemUpdaterを作成する -def make_updater(filename) - config = read_config(filename) - make_rsf(config) - make_main(config) -end - -# ディレクトリ内のtadを検索 -def pickup_files(target_dir, name) - Dir.glob(target_dir + name) -end - - -# こっからメイン - -#sumaker mode [filename] - -if ARGV.size == 0 - p "Usage: sumaker mode [filename]" - exit -end - -mode = ARGV[0] - -case mode -when "default" then - # デフォルト設定で作成 - make_default_config - make_updater(DEFAULT_CONFIG) -when "custom" then - if ARGV.size < 3 - p "Usage: sumaker custom target_dir region" - exit -1 - end - # カスタム設定で作成 - config = "custom_base.yaml" - region = ARGV[2] - - # カレントディレクトリ変更 - Dir.chdir(File.dirname(File.expand_path(__FILE__))) - - - # ベースコンフィグに、dataディレクトリ内のtadとnandを追加 - config = read_config(config) - if config[:TadFiles] == nil - config[:TadFiles] = [] - end - - - #config[:DataPath] += "/#{ARGV[1]}/#{REGION_PATH[region]}" - config[:DataPath] = File.join(config[:DataPath], ARGV[1], REGION_PATH[region]) - config[:Region] = region - tads = pickup_files(config[:DataPath], "/*.tad") - nand = pickup_files(config[:DataPath], "/*.nand") - font = pickup_files(config[:DataPath], "/*.dat") -# フォントファイル名変更 - system("mv #{font} #{File.join(config[:DataPath], "TWLFontTable")}.dat") - font = pickup_files(config[:DataPath], "/*.dat") - - if nand.size > 0 - config[:NandFirm] = nand[0].slice(FILE_MATCH) - end - if font.size > 0 - config[:FontFile] = font[0].slice(FILE_MATCH) - end - for tad in tads do - tad = tad.slice(FILE_MATCH) - config[:TadFiles] << tad - end - config[:TadFiles] = config[:TadFiles].uniq - write_config(CUSTOM_CONFIG, config) - make_updater(CUSTOM_CONFIG) - - exit 0 -end - diff --git a/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf b/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf deleted file mode 100644 index 1e5df836..00000000 --- a/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf +++ /dev/null @@ -1,229 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: main.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - RomSize 64M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_%regionname%.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - # ========= SystemUpdaterは特別な鍵を使う ========= - CommonClientKey TRUE - #CommonClientKeyForDebugger TRUE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - HwAESSlotC TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # DisableDebug :最終ROMでは、実行時にデバッグできないようにTRUEにする必要があります。 - # - DisableDebug $(DISABLE_DEBUG) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../%datapath% - Root /data - File %filelist% - HostRoot $(PRIVKEY_PATH) - Root /key - File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) -} diff --git a/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c b/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c deleted file mode 100644 index 0825e574..00000000 --- a/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c +++ /dev/null @@ -1,765 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - 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 // atoi -#include -#include -#include -#include -#include -#include -#include "kami_pxi.h" -#include "kami_font.h" -#include "kami_write_nandfirm.h" -#include "kami_copy_file.h" -#include "import.h" -#include "hw_info.h" -#include "graphics.h" -#include "hwi.h" -#include "keypad.h" -#include "debugger_hw_reset_control.h" -#include "debugger_card_rom.h" -#include "build_time.h" - -#define SCRAMBLE_MASK 0x00406000 - -extern const char *g_strIPLSvnRevision; -extern const char *g_strSDKSvnRevision; - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -typedef struct _SystemUpdaterLog -{ - int magic_code; - int sdk_version; - int ipl_version; - int reserve[5]; -} SystemUpdaterLog; - -typedef struct _CopyFileList -{ - char* srcPath; - char* dstPath; -} CopyFileList; - -/*---------------------------------------------------------------------------* - 内部定数定義 - *---------------------------------------------------------------------------*/ - -#define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log" -#define NAND_FIRM_PATH_IN_ROM "rom:/data/%nandfirm%" - -#define SYSTEM_UPDATER_MAGIC_CODE 44001111 - -// リトライ回数 -#define MAX_RETRY_COUNT 2 - -static const char* ImportTadFileList[] = -{ -%tadlist% -}; - -static const CopyFileList sCopyFileList[] = -{ - { "rom:/data/%fontfile%", "nand:sys/%fontfile%" } -}; - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static NAMTitleId titleId; -static s16 printLine; -static vu8 sIsFormatFinish; -static u8 sFormatResult; -static s32 sLockId; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); -static BOOL IgnoreRemoval(void); -static void DrawWaitButtonA(void); -static void DrawInvalidConsole(void); -static void DrawCancel(void); -static void DrawAlready(SystemUpdaterLog* log); -static void DrawResult(BOOL result); -static void FormatCallback(KAMIResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - BOOL result; - BOOL hw_info_result; - BOOL nand_firm_result; - int tadNum; - int i,j; - - // 製品ビルドランチャー&デバッガ上での起動対応 - if ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) - { - ROM_Header *dh = (void *)HW_ROM_HEADER_BUF; - dh->s.game_cmd_param &= ~SCRAMBLE_MASK; - } - - OS_Init(); - OS_InitThread(); - OS_InitTick(); - OS_InitAlarm(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - FX_Init(); - SND_Init(); - TP_Init(); - RTC_Init(); - - KamiPxiInit(); /* 独自PXI初期化 */ - - // Vブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - InitAllocation(); - - // NAMライブラリ初期化 - NAM_Init( OS_AllocFromMain, OS_FreeToMain ); - NAMUT_Init( OS_AllocFromMain, OS_FreeToMain ); // SoftBoxCountの計算に必要 - - // 表示関連初期化 - InitGraphics(); - kamiFontInit(); - - // メインスレッドのカードロックID取得 - sLockId = OS_GetLockID(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - // コンソールチェック - { - u32 console = OS_GetRunningConsoleType(); - enum { IS_TWL_DEBUGGER=0, IS_TWL_CAPTURE, TWL, UNKNOWN }; - int running = UNKNOWN; - - // SystemUpdaterはデバッグ不可で作成されるためOS_CONSOLE_TWLが取得される - // 赤箱にカードを挿してSystemUpdaterを実行した場合も同様(但しOS_CONSOLE_TWLTYPE_RETAILにはならない) - // デバッガかどうかの判定はメモリサイズチェックにより行う - // 念のためOS_CONSOLE_TWLTYPE_RETAILでないことも確認する - - if ((console & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_32MB) - { - if ((console & OS_CONSOLE_TWLTYPE_MASK) != OS_CONSOLE_TWLTYPE_RETAIL) - { - IsToolType type; - kamiGetIsToolType(&type); - if (type == IS_TOOL_TYPE_DEBUGGER) - { - running = IS_TWL_DEBUGGER; - } - else if (type == IS_TOOL_TYPE_ERROR) // TSボードプラス + 旧仕様デバッガ - { - running = IS_TWL_DEBUGGER; - } - else if (type == IS_TOOL_TYPE_CAPTURE) - { - running = IS_TWL_CAPTURE; - } - } - } - else if ((console & OS_CONSOLE_MASK) == OS_CONSOLE_TWL) - { - IsToolType type; - kamiGetIsToolType(&type); - if (type == IS_TOOL_TYPE_CAPTURE) - { - running = IS_TWL_CAPTURE; - } - else - { - running = TWL; - } - } - - switch (running) - { - case IS_TWL_DEBUGGER: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on IS_TWL_DEBUGGER."); - break; - case IS_TWL_CAPTURE: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on IS_TWL_CAPTURE."); - break; - case TWL: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on TWL CONSOLE."); - break; - case UNKNOWN: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on UNKNOWN."); - break; - } - -#ifdef SYSM_BUILD_FOR_DEBUGGER - // デバッガ向けSystemUpdaterは実機とキャプチャでは動作させない - if (running != IS_TWL_DEBUGGER) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on TWL-CONSOLE. "); - DrawInvalidConsole(); - } -#else - // 実機向けSystemUpdaterはデバッガでは動作させない - if (running == IS_TWL_DEBUGGER) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on IS-TWL-DEBUGGER."); - DrawInvalidConsole(); - } -#endif // SYSM_BUILD_FOR_DEBUGGER - - // UNKNOWNはは動作させない - if (running == UNKNOWN) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on UNKNOWN CONSOLE."); - DrawInvalidConsole(); - } - } - - // (更新可能条件) - // 1.ログが存在しない - // 2.ログが存在し、ログに記載のマジックコードが不正(初版SystemUpdater実行後の状態) - // 2.ログが存在し、ログに記載のマジックコードが正しくかつログに記載の - // SDK & IPL のバージョンが SystemUpdater のそれ以下である - -#ifdef IGNORE_VERSION_CHECK - if( 0 ) -#endif // IGNORE_VERSION_CHECK - { - SystemUpdaterLog log; - FSFile file; - FS_InitFile( &file ); - - if (FS_OpenFileEx(&file, SYSTEM_UPDATER_LOG_PATH, FS_FILEMODE_R) == TRUE) - { - DC_InvalidateRange(&log, sizeof(log)); - - if (FS_ReadFile(&file, &log, sizeof(log)) == sizeof(log)) - { - // ログリード成功 - OS_Printf("[%d, %d]\n", log.sdk_version, log.ipl_version); - - // 初版SystemUpdater実行状態でないことをマジックコードで判別する - if (log.magic_code == SYSTEM_UPDATER_MAGIC_CODE) - { - // マジックコード、SDKバージョン、IPLバージョンの確認 - if (log.sdk_version > atoi(g_strSDKSvnRevision) || - log.ipl_version > atoi(g_strIPLSvnRevision)) - { - // 更新不可 - DrawAlready(&log); - } - } - } - else - { - // ログリード失敗 - OS_Warning("Failure! FS_ReadFile"); - } - - FS_CloseFile(&file); - } - } - - // Aボタン待ち - DrawWaitButtonA(); - - // TWLの更新処理を実行中です - CARD_LockRom((u16)sLockId); - (void)CARDi_ReadRomIDCoreEx(DEBUGGER_COMMAND_NOW_UPDATE); - CARD_UnlockRom((u16)sLockId); - - // ISデバッガのハードウェアリセットを禁止する - DEBUGGER_HwResetDisable(); - - // HWInfo関連の前準備 - switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain )) - { - case HWI_INIT_FAILURE: - OS_Warning(" Fail! : HWI_INIT()"); - break; - case HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE: - break; - case HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE: - break; - case HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE: - break; - } - - result = TRUE; - - // 完全に消去 - NAMUT_Format(); - - // フォーマット実行 - sIsFormatFinish = FALSE; - ExeFormatAsync(FORMAT_MODE_QUICK, FormatCallback); - kamiFontPrintfMain( 7, 11, 8, "Now Format..."); - while(!sIsFormatFinish){}; - if (sFormatResult) - { - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "NAND Format Success."); - } - else - { - kamiFontPrintf( 0, printLine++, FONT_COLOR_RED, "NAND Format Failure!"); - } - kamiFontPrintfMain( 7, 11, 8, " "); - - // フォーマット後はESに必要なファイルがなくなっているため - // ES_InitLibを呼び出すことで作成しておく - NAM_End( NULL, NULL ); - NAM_Init( OS_AllocFromMain, OS_FreeToMain ); - - // 全ハードウェア情報の更新 - for (i=0;isdk_version, log->ipl_version ); - kamiFontPrintfMain( 3, 13, 1, "--------------------------"); - - while(1) - { - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - DrawQuad( 10, 50, 246, 128, GX_RGB(28, 28, 28)); - - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); - - OS_WaitVBlankIntr(); - } -} - -/*---------------------------------------------------------------------------* - Name: DrawResult - - Description: 処理結果を表示します。 - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ -static void DrawResult(BOOL result) -{ - // 3D初期化 - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - // "Now Updating.." を消去 - kamiFontPrintfMain( 0, 9, 7, " "); - - if (result) - { - kamiFontPrintfMain( 9, 10, 7, "Update Success!"); - // グリーンダイアログ - DrawQuad( 50, 50, 206, 120, GX_RGB(12, 25, 12)); - } - else - { - kamiFontPrintfMain( 9, 10, 7, "Update Failure!"); - // レッドダイアログ - DrawQuad( 50, 50, 206, 120, GX_RGB(31, 0, 0)); - } - - kamiFontLoadScreenData(); - - // 3Dスワップ - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); -} - -/*---------------------------------------------------------------------------* - Name: FormatCallback - - Description: フォーマットコールバック - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ -static void FormatCallback(KAMIResult result, void* /*arg*/) -{ - if ( result == KAMI_RESULT_SUCCESS_TRUE ) - { - sFormatResult = TRUE; - } - else - { - sFormatResult = FALSE; - } - - sIsFormatFinish = TRUE; -} diff --git a/build/tests/CustomSystemUpdater/work/aftercls.sh b/build/tests/CustomSystemUpdater/work/aftercls.sh deleted file mode 100755 index 2ec65c6e..00000000 --- a/build/tests/CustomSystemUpdater/work/aftercls.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: aftercls.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -AQUA='//10.116.1.5' -CLSED_PATH="${AQUA}/TWL_debug/sysmenu/rom/debug_rom/CLS_processed" -DAILY_CLSED_DIR=`date +'%Y%m%d'`_cls - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - -echo "tocsu.sh" -./tocsu.sh $1 - -echo "toaqua.rb" -./toaqua.rb $1 - -# Aquaへコピー -echo "Copying to Aqua" -cp -r $1_foraqua ${CLSED_PATH}/${DAILY_CLSED_DIR} - -# Shop ROM のコピー -shopdir="${AQUA}/TWL_debug/shop/rom/cls/${DAILY_CLSED_DIR}" -/bin/mkdir ${shopdir} -/bin/cp $1_foraqua/verup/tad/shop* ${shopdir} - -# NZV ROM のコピー -nzvdir="${AQUA}/TWL_debug/nintendo_spot/rom/clsprocessed/"`date +'%Y%m%d'` -/bin/mkdir ${nzvdir} -/bin/cp -r $1/HNJ* ${nzvdir} \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/cls.sh b/build/tests/CustomSystemUpdater/work/cls.sh deleted file mode 100755 index d58e276f..00000000 --- a/build/tests/CustomSystemUpdater/work/cls.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: conv2svnDir.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -move_data_to_tmp() { - tmp=tmp/$1 - install -d $tmp - for src in `find $1 -name v* -type d` - do - mv $src $tmp - done -} - -do_cls() { - tmp=tmp/$1 - for target in `find $tmp -name v* -type d | sort -t / -n -k 3.2` - do - cp -rp $target $1 - t=`echo "$target" | cut -c 5-` - if [ -f $t/*.cls ]; then - echo "$t:Already cls processed" - else - genLic $1 - fi -# genLic $1 - done -} - -for app in `find . -maxdepth 1 -mindepth 1 -type d` -do - name=`echo "$app" | cut -c 3-` - move_data_to_tmp $name - do_cls $name -done - -rm -rf tmp diff --git a/build/tests/CustomSystemUpdater/work/mkcls.py b/build/tests/CustomSystemUpdater/work/mkcls.py deleted file mode 100644 index 668f22af..00000000 --- a/build/tests/CustomSystemUpdater/work/mkcls.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import sys, os, struct -import string, random -import re, shutil, binascii - -def roundup(val, align): - return int((val+align-1)/align)*align - -def randstr(n): - words = ''.join([string.digits,string.letters,'.','+']) - return ''.join(random.choice(words) for i in xrange(n)) - -def main(): - try: - tadfile = sys.argv[1] - except: - print '%s : please specfy the tad file' % (sys.argv[0]) - exit(-1) - - #--- parse *.tad - fin = open(tadfile, 'rb') - try: - tadData = fin.read() - except: - fin.close() - start, end = 0, struct.calcsize('>l2sh6l') - (hdrSize, tadType, tadVersion, certSize, crlSize, ticketSize, tmdSize, - contentSize, metaSize) = struct.unpack('>l2sh6l', tadData[start:end]) - certOffset = roundup(hdrSize, 64) - crlOffset = roundup(certOffset + certSize, 64) - ticketOffset = roundup(crlOffset + crlSize, 64) - tmdOffset = roundup(ticketOffset + ticketSize, 64) - contentOffset = roundup(tmdOffset + tmdSize, 64) - metaOffset = roundup(contentOffset + contentSize, 64) - fileSize = roundup(metaOffset + metaSize, 64) - - #print '-'*20+'\n' - #print ' hdrSize %s\n' % hdrSize, - #print ' tadType %s\n' % tadType, - #print ' tadVersion, %s\n' % tadVersion, - #print ' certSize, %s\n' % certSize, - #print ' crlSize, %s\n' % crlSize, - #print ' ticketSize, %s\n' % ticketSize, - #print ' tmdSize, %s\n' % tmdSize, - #print ' contentSize, %s\n' % contentSize, - #print ' metaSize %s' - #print '\n'+'-'*20 - #open("cert.bin", 'wb').write(tadData[certOffset:certOffset+certSize]) - #open("crl.bin", 'wb').write(tadData[crlOffset:crlOffset+crlSize]) - #open("ticket.bin", 'wb').write(tadData[ticketOffset:ticketOffset+ticketSize]) - #open("tmd.bin", 'wb').write(tadData[tmdOffset:tmdOffset+tmdSize]) - #open("content.bin", 'wb').write(tadData[contentOffset:contentOffset+contentSize]) - #open("meta.bin", 'wb').write(tadData[metaOffset:metaOffset+metaSize]) - - #--- parse TMD - tmd = tadData[tmdOffset:tmdOffset+tmdSize] - - #--- RSA2048 signature - (sigB, sigE) = (0, struct.calcsize('>i256s60s64s')) - (IOSCCertSigType, IOSCRsaSig2048, IOSCSigDummy, IOSCName)\ - = struct.unpack('>i256s60s64s', tmd[sigB:sigE]) - - #print "=== RSA2048 signature ===============" - #print "IOSCCertSigType : %x" % IOSCCertSigType - #print "IOSCRsaSig2048 : %s" % IOSCRsaSig2048 - #print "IOSCSigDummy : %s" % IOSCSigDummy - #print "IOSCName : %s" % IOSCName - - #--- ESTitleMetaHeader - (tmhB, tmhE) = (sigE, sigE+struct.calcsize('>4B5iH62si3H')) - (version, - caCrlVersion, - signerCrlVersion, - dummy, - sysVersion_H, - sysVersion_L, - titleId_H, - titleId_L, - titleType, - groupID, - reserved, - accessRights, - titleVersion, - numContents, - bootIndex) = struct.unpack('>4B5iH62si3H',tmd[tmhB:tmhE]) - - print "=== ESTitleMetaHeader ===============" - #print ('version : %d ') % version - #print ('caCrlVersion : %d ') % caCrlVersion - #print ('signerCrlVersion : %d ') % signerCrlVersion - #print ('dummy : %s ') % dummy - #print ('sysVersion_H : %x ') % sysVersion_H - #print ('sysVersion_L : %x ') % sysVersion_L - print ('titleId_H : %08x ') % titleId_H - print ('titleId_L : %08x ') % titleId_L - #print ('titleType : %x ') % titleType - print ('groupID : %x ') % groupID - #print ('reserved[62] : %s ') % reserved - #print ('accessRights : %d ') % accessRights - print ('titleVersion : %d ') % titleVersion - #print ('numContents : %d ') % numContents - #print ('bootIndex : %d ') % bootIndex - - #--- make directory for cls - tadpath = os.path.dirname(tadfile) - gamecode = binascii.unhexlify('%x'%titleId_L) - keycode = gamecode[:3] - sysdic = { 'HNA':'menu', - 'HNB':'setting', - 'HNC':'wfirm', - 'HND':'dlplay', - 'HNE':'pchat', - 'HNF':'shop', - 'HNG':'browser', - 'HNH':'whlist', - 'HNI':'photo', - 'HNJ':'nzv', - 'HNK':'sound', - 'HNL':'verdata', - } - try: - suffix = sysdic.get(keycode) - if suffix: - clsdir = ''.join(['./',gamecode,'-',suffix]) - else: - clsdir = ''.join(['./',gamecode]) - os.mkdir(clsdir) - except: - print '%s : can not create dir %s' % (sys.argv[0],clsdir) - - #--- write properties - properties = open(''.join([clsdir,'/properties']),'w') - properties.write('TITLE_ID\t\t\t\t%08x%08x\n' % (titleId_H, titleId_L)) - properties.write('TITLE_NAME\t\t\t\t%s\n' % gamecode) - properties.write('TITLE_TYPE\t\t\t\t%s\n' % 'TWL_SYS') - properties.write('PASSWORD\t\t\t\t%s\n' % randstr(64)) - properties.write('ALLOW_COMMON_TICKET\t\t%s\n' % '1') - - #--- make version dir - verdir = ''.join([clsdir,'/v',str(titleVersion)]) - try: - os.mkdir(verdir) - except: - print '%s : can not create dir %s' % (sys.argv[0],verdir) - else: - shutil.copy(tadfile,verdir) - -if __name__ == '__main__': - sys.exit(main() or 0) \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh b/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh deleted file mode 100755 index 98479574..00000000 --- a/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -#! bash -f - -#---- commands -LS='/bin/ls' -ECHO='/bin/echo' -HEAD='/bin/head' -FIND='/bin/find' -COPY='/bin/cp' -DATE='/bin/date' -XARGS='/bin/xargs' -MKDIR='/bin/mkdir' -CHDIR='cd' - -#---- values -aqua_server='//10.116.1.5' -debug_dir="${aqua_server}/TWL_debug/sysmenu/rom/debug_rom" -redroms="${debug_dir}/sd.roms.template*" -clsbase="${debug_dir}/CLS_base" -datedir=`${DATE} +%Y%m%d` -regions='jp usa euro aus' - -#---- call pickup_tad.pl -${ECHO} "===== getting latest apps files =====" -perl ./pickup_tad.pl - -#---- gets the latest sd.roms.template roms -#redrom_dir=`${LS} -d --full-time ${redroms} | sort -k 7,10 | tail -n 1` -redrom_dir=`${LS} -dt ${redroms} | ${HEAD} -n 1` -${ECHO} -e "===== getting sd.roms.template* rom files =====" -${ECHO} -e "sd.roms.template dir : ${redrom_dir}" -${ECHO} -e "copy *.(tad|dat|nand) file -> ${datedir} dir\n" -${FIND} ${redrom_dir} -regextype posix-egrep -regex ".*.(tad|dat|nand)" | ${XARGS} ${COPY} -fut ${datedir} > /dev/null - -#---- gets the cls base roms -${ECHO} -e "===== getting sd.roms.template* rom files =====" -${ECHO} -e "CLS_base dir : ${clsbase}" -${ECHO} -e "copy *.tad file -> ${datedir} dir" -${FIND} ${clsbase} -name "*.tad" | ${XARGS} ${COPY} -fut ${datedir} > /dev/null - -#---- call mkcls.py -${ECHO} -e "===== create forcls dirs =====" -${MKDIR} ${datedir}_forcls -${CHDIR} ${datedir}_forcls -${FIND} ../${datedir} -name "*.tad" -exec ../mkcls.py {} \; - -${ECHO} -e "===== copy *.nand *.dat files -> (jp|usa|euro|aus) dirs =====\n" -for region in ${regions} -do - ${MKDIR} ${region} - ${COPY} ../${datedir}/*.nand ${region} - ${COPY} ../${datedir}/*.dat ${region} -done - -${COPY} ../cls.sh ./ \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/pickup_tad.pl b/build/tests/CustomSystemUpdater/work/pickup_tad.pl deleted file mode 100755 index b003899e..00000000 --- a/build/tests/CustomSystemUpdater/work/pickup_tad.pl +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/perl -w -I/usr/local/bin -use File::Copy; -use File::Copy::Recursive qw(fcopy rcopy dircopy); -use Class::Struct; -use POSIX 'strftime'; -use File::Find; - -require "util.pl"; - -my @apps = ("download_play", - "full_browser", - "nintendo_spot", - "photo", - "pictchat", - "shop", - "sound", - "sysmenu"); - -my $flgDate = 0; - -my $i; -my $date_dir = ""; -my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -my $str_today = sprintf("%04d%02d%02d", $year+1900, $mon+1, $mday); -my $flghelp = 0; -my $err; -my @list_tad; - - -for ($i = 0; $i < $#ARGV+1; $i++) { - - my $opt = $ARGV[$i]; - - if ( $opt eq "-d" ) { - $flgDate = 1; - unless ( $#ARGV <= $i ) { - #$date_dir = $aqua_dir."/SD_".$ARGV[$i+1]; - $str_today = $ARGV[$i+1]; - $err = [ 1, "Not date (\"$date_dir\") !!"] if ( $date_dir !~ /[0-9]{8}/ ); - $i++; - - } else { - $err = [1,"No argument after -d !!"]; - } - } elsif ( $opt eq "-h" ) { - &show_help; - exit 0; - } else { - print "Unknown option: $opt\n"; - &show_help; - exit 1; - } - do { - print "*** Error *** : $err->[1]"; - exit 1; - } if ( $err->[0] ); -} - -# each application directory -foreach $app ( @apps ) -{ - my $dir_date; - #$dir_app = sprintf('//Aqua/TWL_debug/%s/rom/tad', $app); -$dir_app = sprintf('//10.116.1.5/TWL_debug/%s/rom/tad', $app); - $dir_app_date = &search_date_dir($dir_app); - - print "* $dir_app\n - $dir_app_date\n\n"; - - find( sub - { - do { - push @list_tad, $File::Find::name }if (/\.tad$/); - }, $dir_app_date - ); - #foreach ( @list_tad ) { print " * $_\n"; } -} - -#print "Date: $date_dir\n"; - -# Actually not today -mkdir($str_today); - -# copy to the local date directory -foreach ( @list_tad ) { - print("$_\n"); - copy($_, $str_today); -} - -# -exit 0; - -#----------------------------------------------------------------------- -# name : show_help -# function : -#----------------------------------------------------------------------- -sub show_help -{ -print <<__MSG_HELP__; -Usage: -\$ perl pickup_tad.pl [-d yyyymmdd] -__MSG_HELP__ -} - -#----------------------------------------------------------------------- -# name : search_date_dir -# function : -#----------------------------------------------------------------------- -sub search_date_dir -{ - my $root_dir; - my $date_dir; - my $prefix = ($#_<1) ? "" : $_[1]; - my $full_prefix; - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - - $year += 1900; - $mon += 1; - - $root_dir = ( $#_ < 0 ) ? "." : $_[0]; - - $full_prefix = $root_dir."/".$prefix; - $date_dir = $full_prefix.sprintf("%04d%02d%02d", $year, $mon, $mday); - - # search directory on going back date - while ( $year >= 2000 ) { - if ( -e "$date_dir" and -d "$date_dir") { - return "$date_dir"; - } else { - $mday -= 1; - $date_dir = $full_prefix.sprintf("%04d%02d%02d", $year, $mon, $mday); - } - do { - $mday = 31; # constant - $mon -= 1; - unless ( $mon ) { - $mon = 12; - $year -= 1; - } - } unless ( $mday ) ; - } - print "*** Error *** : Can't find the date directory !!\n"; - return 0; -} - -__END__ - diff --git a/build/tests/CustomSystemUpdater/work/toaqua.rb b/build/tests/CustomSystemUpdater/work/toaqua.rb deleted file mode 100755 index 3840ed68..00000000 --- a/build/tests/CustomSystemUpdater/work/toaqua.rb +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: toaqua.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -require "find" -require "fileutils" - -REGION_DIR = { - "U" => ["aus"], - "E" => ["usa"], - "J" => ["jp"], - "P" => ["euro"], - "A" => ["aus", "usa", "jp", "euro"], -} - -VERUP_DIR = "verup" -VERUP_CLS = "#{VERUP_DIR}/cls" -VERUP_TAD = "#{VERUP_DIR}/tad" - -def proc(target_dir, output_dir) - Find.find(target_dir){ |path| - next unless File.file?(path) && (/[a-z0-9A-Z]{4}-.*v[0-9]+\.tad\.out/ =~ path) != nil -# p path - src = path - - # ディレクトリ内のtadファイルの.tadより前を取り出す - dest = "" - version = "" - Find.find(File.split(src)[0]){|tad| - # .tad が見つかった - if (/.*\.tad\z/ =~ tad) != nil - dest = File.split(tad)[1] - end - if (/.*\.cls\z/ =~ tad) != nil - p tad - version = tad.slice(/v[0-9]+/) - end - } - dest = /\.tad/.match(dest).pre_match + "-" + version + ".tad" - # リージョンを判別してコピー - regions = REGION_DIR[File.split(src)[1][3..3]] - for region in regions do - if version != "v0" - p version - p src - system("cp #{src} #{[output_dir, "#{VERUP_TAD}", dest].join("/")}") - system("cp #{src.sub(/\.tad\.out/, ".cls")} #{[output_dir, "#{VERUP_CLS}", dest.sub(/\.tad/, ".cls")].join("/")}") - else - system("cp #{src} #{[output_dir, region, dest].join("/")}") - end - end - } - -end - -# こっからメイン - -if ARGV.size < 1 - $stdout.printf("Usage:#{__FILE__} target_clsed_dir output_dir") - exit -1 -end -src = ARGV[0].sub(/\/\z/, "") -out = "#{src}_foraqua" -system("mkdir #{out}") -system("mkdir #{out}/aus") -system("mkdir #{out}/usa") -system("mkdir #{out}/euro") -system("mkdir #{out}/jp") -system("mkdir #{out}/#{VERUP_DIR}") -system("mkdir #{out}/#{VERUP_CLS}") -system("mkdir #{out}/#{VERUP_TAD}") - -system("cp -rf #{src}/aus #{out}") -system("cp -rf #{src}/usa #{out}") -system("cp -rf #{src}/euro #{out}") -system("cp -rf #{src}/jp #{out}") - -proc(src, out) - diff --git a/build/tests/CustomSystemUpdater/work/tocls.sh b/build/tests/CustomSystemUpdater/work/tocls.sh deleted file mode 100755 index b7725bb5..00000000 --- a/build/tests/CustomSystemUpdater/work/tocls.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: conv2svnDir.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - -target=`echo $1 | sed -e 's/\/$//'` -target=$target"_forcls" -echo $target - -mkdir $target -cd $target -find ../$1 -name "*.tad" -exec ../mkcls.py {} \; -cp ../cls.sh ./ - -# nandファームと、フォントを一応リージョン毎にコピー -mkdir jp -mkdir aus -mkdir usa -mkdir euro - -cp `find ../$1/jp -name "*.nand"` jp -cp `find ../$1/jp -name "*.nand"` aus -cp `find ../$1/jp -name "*.nand"` usa -cp `find ../$1/jp -name "*.nand"` euro -cp `find ../$1/jp -name "*.dat"` jp -cp `find ../$1/jp -name "*.dat"` aus -cp `find ../$1/jp -name "*.dat"` usa -cp `find ../$1/jp -name "*.dat"` euro - - diff --git a/build/tests/CustomSystemUpdater/work/tocsu.sh b/build/tests/CustomSystemUpdater/work/tocsu.sh deleted file mode 100755 index c4d9ea7d..00000000 --- a/build/tests/CustomSystemUpdater/work/tocsu.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: tocsu.sh -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - - - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - - -target=`echo $1 | sed -e 's/\/$//'` -target=$target"_forcsu" -echo $target - - -tmp=`echo $1 | sed -e 's/\/$//'`_tmp -mkdir $target -cd $target - -mkdir jp -mkdir aus -mkdir usa -mkdir euro - -cp -rf ../$1/jp . -cp -rf ../$1/aus . -cp -rf ../$1/usa . -cp -rf ../$1/euro . - -mkdir verup -mkdir $tmp - -find ../$1 -name "*.out" -exec cp {} $tmp \; - -find $tmp -regex "[^/]*/...[jaJA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s jp/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > jp.sh -find $tmp -regex "[^/]*/...[uaUA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s aus/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > aus.sh -find $tmp -regex "[^/]*/...[paPA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s euro/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > euro.sh -find $tmp -regex "[^/]*/...[eaEA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s usa/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > usa.sh -find $tmp -regex "[^/]*/.*v[^0][0-9]*\.tad\.out" | gawk -F/ '{printf("cp %s verup/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > verup.sh - -./jp.sh -./aus.sh -./euro.sh -./usa.sh -./verup.sh - -mv $tmp ../ -rm -rf *.sh diff --git a/build/tests/CustomSystemUpdater/work/util.pl b/build/tests/CustomSystemUpdater/work/util.pl deleted file mode 100755 index e6d9a075..00000000 --- a/build/tests/CustomSystemUpdater/work/util.pl +++ /dev/null @@ -1,110 +0,0 @@ - -package util; - -#----------------------------------------------------------------------- -# name : get_title_version -# function : get the title version from the specified tad file -#----------------------------------------------------------------------- -sub get_title_version { - - my $titleVersion = 0 ; - my $cmdPython = "/usr/bin/python.exe"; - my $scrpPython = "/usr/local/bin/mkcls.py"; - $tad = $_[0]; - - open(PY, "$cmdPython $scrpPython $tad | ") or die "$!"; - $titleVersion = $1 if ( =~ /([0-9]{1,})/) ; - close(PY); - - $titleVersion; -} - -#----------------------------------------------------------------------- -# name : get_nlist -# function : get the list of the specified directory except "." and ".." -#----------------------------------------------------------------------- -sub get_nlist { - my $dirname = ( $#_ < 0) ? "." : $_[0]; - my @list; - - unless ( opendir(DIR, "$dirname") ) { - print "Can't open directory: $dirname\n"; - return ""; - } - - foreach $node ( readdir(DIR) ) { - push(@list, $node) unless ( $node =~ /^\.{1,2}$/ ); - } - closedir(DIR); - - @list; -} - - -#----------------------------------------------------------------------- -# name : fecheck -# function : check the specified file existence (Error if no file) -#----------------------------------------------------------------------- -sub fecheck { - my $filename = $_[0]; - unless ( -e $filename ) { -print < - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_START 25 // キーリピート開始までのフレーム数 -#define KEY_REPEAT_SPAN 10 // キーリピートの間隔フレーム数 - -/*---------------------------------------------------------------------------* - 構造体 定義 - *---------------------------------------------------------------------------*/ - -// キー入力情報 -typedef struct KeyInfo -{ - u16 cnt; // 未加工入力値 - u16 trg; // 押しトリガ入力 - u16 up; // 離しトリガ入力 - u16 rep; // 押し維持リピート入力 -} KeyInfo; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -void InitCommon(void); - -void ReadKey(KeyInfo* pKey); - -void VBlankIntr(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* COMMON_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/include/font.h b/build/tests/DisableDebugFlgChecker/include/font.h deleted file mode 100644 index d4f23ed2..00000000 --- a/build/tests/DisableDebugFlgChecker/include/font.h +++ /dev/null @@ -1,41 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: font.h - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/include/screen.h b/build/tests/DisableDebugFlgChecker/include/screen.h deleted file mode 100644 index 4b758ee9..00000000 --- a/build/tests/DisableDebugFlgChecker/include/screen.h +++ /dev/null @@ -1,67 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.h - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#ifndef SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -// フォントの色 -#define COLOR_BLACK 0x10 -#define COLOR_RED 0x11 -#define COLOR_GREEN 0x12 -#define COLOR_BLUE 0x13 -#define COLOR_YELLOW 0x14 -#define COLOR_PURPLE 0x15 -#define COLOR_L_BLUE 0x16 -#define COLOR_D_RED 0x17 -#define COLOR_D_GREEN 0x18 -#define COLOR_D_BLUE 0x19 -#define COLOR_D_YELLOW 0x1a -#define COLOR_D_PURPLE 0x1b -#define COLOR_D_L_BLUE 0x1c -#define COLOR_GRAY 0x1d -#define COLOR_D_GRAY 0x1e -#define COLOR_WHITE 0x1f - -/*---------------------------------------------------------------------------* - 関数 定義 - *---------------------------------------------------------------------------*/ -void InitScreen(void); -void ClearScreen(void); -void ClearMainScreen(void); -void ClearSubScreen(void); -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...); -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...); -void UpdateScreen(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/main.rsf b/build/tests/DisableDebugFlgChecker/main.rsf deleted file mode 100644 index 2a3fe85c..00000000 --- a/build/tests/DisableDebugFlgChecker/main.rsf +++ /dev/null @@ -1,244 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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:: 2008-09-04#$ -# $Rev: 2394 $ -# $Author: aoki_ryoma $ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "FatalChecker" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile ../banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - LockSCFG FALSE - - DisableDebug TRUE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media gamecard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0G6A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/build/tests/DisableDebugFlgChecker/src/common.c b/build/tests/DisableDebugFlgChecker/src/common.c deleted file mode 100644 index c1b7c958..00000000 --- a/build/tests/DisableDebugFlgChecker/src/common.c +++ /dev/null @@ -1,156 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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:: 2008-08-25#$ - $Rev: 8074 $ - $Author: nishimoto_takashi $ - *---------------------------------------------------------------------------*/ -#include "common.h" - -static void InitInterrupts(void); -static void InitHeap(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitCommon - - Description: 基本的な初期化関数をここで呼ぶ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitCommon(void) -{ - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - CARD_Init(); // 新規追加 - CARD_Enable(TRUE); // 新規追加 - - InitHeap(); - InitInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: ReadKey - - Description: キー入力情報を取得し、入力情報構造体を編集する。 - 押しトリガ、離しトリガ、押し継続リピートトリガ を検出する。 - - Arguments: pKey - 編集するキー入力情報構造体を指定する。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void ReadKey(KeyInfo* pKey) -{ - static u16 repeat_count[12]; - int i; - u16 r; - - r = PAD_Read(); - pKey->trg = 0x0000; - pKey->up = 0x0000; - pKey->rep = 0x0000; - - for (i = 0; i < 12; i++) - { - if (r & (0x0001 << i)) - { - if (!(pKey->cnt & (0x0001 << i))) - { - pKey->trg |= (0x0001 << i); // 押しトリガ - repeat_count[i] = 1; - } - else - { - if (repeat_count[i] > KEY_REPEAT_START) - { - pKey->rep |= (0x0001 << i); // 押し継続リピート - repeat_count[i] = (u16) (KEY_REPEAT_START - KEY_REPEAT_SPAN); - } - else - { - repeat_count[i]++; - } - } - } - else - { - if (pKey->cnt & (0x0001 << i)) - { - pKey->up |= (0x0001 << i); // 離しトリガ - } - } - } - - pKey->cnt = r; // 未加工キー入力 -} - -/*---------------------------------------------------------------------------* - Name: InitInterrupts - - Description: 割り込み設定を初期化する。 - V ブランク割り込みを許可し、割り込みハンドラを設定する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitInterrupts(void) -{ - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitHeap - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitHeap(void) -{ - void* tempLo; - OSHeapHandle hh; - - // メインメモリ上のアリーナにヒープをひとつ作成 - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - // ヒープ作成に失敗した場合は異常終了 - OS_Panic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/src/font.c b/build/tests/DisableDebugFlgChecker/src/font.c deleted file mode 100644 index ebc10e7b..00000000 --- a/build/tests/DisableDebugFlgChecker/src/font.c +++ /dev/null @@ -1,585 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroWiFi - WCM - demos - wcm-list - File: font.c - - Copyright 2005-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. - - $Log: font.c,v $ - Revision 1.2 2006/03/10 09:22:43 kitase_hirotake - INDENT SOURCE - - Revision 1.1 2005/07/21 08:21:06 adachi_hiroaki - 新規追加 - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/src/main.c b/build/tests/DisableDebugFlgChecker/src/main.c deleted file mode 100644 index 41e7deaf..00000000 --- a/build/tests/DisableDebugFlgChecker/src/main.c +++ /dev/null @@ -1,274 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Nand-2 - 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:: 2008-09-03#$ - $Rev: 8251 $ - $Author: nishimoto_takashi $ - *---------------------------------------------------------------------------*/ -#include -#include -#include - -#include "application_jump_private.h" -#include "common.h" -#include "screen.h" - -#define DMA_NO_FS 1 -#define CHECK_APP_NUM 10 -#define REGION_NUM 4 - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -static u8 gRegion; - -static u8 gDisableDebugFlg[CHECK_APP_NUM]; -static BOOL gError[CHECK_APP_NUM]; -static NAMTitleInfo gInfo[CHECK_APP_NUM]; - -static NAMTitleId titleID[CHECK_APP_NUM] = { - 0x00030017484e4100, // ランチャ - 0x00030015484e4200, // 本体設定 - 0x00030005484e4441, // DSダウンロードプレイ all region - 0x00030005484e4541, // ピクトチャット all region - 0x00030015484e4600, // ショップ - 0x00030005484e4900, // カメラ - 0x00030005484e4a00, // ゾーン - 0x00030005484e4b00, // サウンド - 0x00030015344e4641, // NandFiler all region - 0x0003001534544E41, // TwlNMenu all region -}; - -const static u32 regioncode[REGION_NUM] = { - 0x4A, // 日本 - 0x45, // アメリカ - 0x50, // 欧州 - 0x55, // オーストラリア -}; - -// スペースの都合MAX 7文字で -char *gAppName[CHECK_APP_NUM] = { - "Menu", - "Setting", - "DL play", - "PctChat", - "Shop", - "Camera", - "NinZone", - "Sound", - "NFiler", - "NMenu" -}; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void DrawScene(void); -static void* AllocForNAM(u32 size); -static void FreeForNAM(void* ptr); -static void CheckDisableDebugFlg(void); -/*---------------------------------------------------------------------------*/ - - -void TwlMain(void) -{ - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - FS_Init(DMA_NO_FS); - NAM_Init(AllocForNAM, FreeForNAM); - - ClearScreen(); - - gRegion = OS_GetRegion(); - - OS_TPrintf("Region : %d\n", gRegion); - - CheckDisableDebugFlg(); - - while(TRUE) - { - // 画面描画 - DrawScene(); - - // Vブランク待ち - OS_WaitVBlankIntr(); - - // 画面クリア - ClearScreen(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - - -static void CheckDisableDebugFlg(void) -{ - char file_path[FS_ENTRY_LONGNAME_MAX]; - u8 buf[0x1000]; - u32 i; - - for(i=0; is.disable_debug){ - gDisableDebugFlg[i] = '1'; - } - else{ - gDisableDebugFlg[i] = '0'; - } - OS_TPrintf("DisableFlg( %c )", gDisableDebugFlg[i]); - - // ファイルクローズ - bSuccess = FS_CloseFile(&f); - - OS_TPrintf(" File Read/Close Success\n"); - gError[i] = FALSE; - } - else{ - OS_TPrintf(" ng \n"); - gError[i] = TRUE; - gDisableDebugFlg[i] = '-'; - } - - // tadバージョンの取得 - if( NAM_ReadTitleInfo( &gInfo[i], titleID[i] ) != NAM_OK ) - { - OS_TPrintf("[0x%08x] ReadTitleInfo failed...\n", titleID[i]); - } - } -} - - -static void DrawScene(void) -{ - s32 i; - u8 color; - u8 *p; - u8 hi, lo; - BOOL success = TRUE; - - for(i=0; i> 8); - lo = (u8)(gInfo[i].version & 0xff); - - PutMainScreen(20, 8+i, color, "%d.%d", hi, lo); - } - else - { - PutMainScreen(20, 8+i, color, "---", gInfo[i].version); - } - - if(gDisableDebugFlg[i] == '0') - { - PutMainScreen(28, 8+i, 0xf1, "NG"); - } - } - PutMainScreen( 0,18, color, "-------------------------------"); -} - - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: Vブランク割込みハンドラ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグ47をセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -static void* AllocForNAM(u32 size) -{ - void* ptr; - ptr = OS_AllocFromMain(size); - - if (ptr == NULL) - { - OS_Panic("alloc failed."); - } - - return ptr; - -} - -static void FreeForNAM(void* ptr) -{ - OS_FreeToMain(ptr); -} - - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DisableDebugFlgChecker/src/screen.c b/build/tests/DisableDebugFlgChecker/src/screen.c deleted file mode 100644 index c00a4a75..00000000 --- a/build/tests/DisableDebugFlgChecker/src/screen.c +++ /dev/null @@ -1,194 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.c - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#include -#include "screen.h" -#include "font.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define TEXT_SCREEN_SIZE 2048 - -/*---------------------------------------------------------------------------* - 内部変数 定義 - *---------------------------------------------------------------------------*/ - -// 仮想スクリーン[ 上下画面 ][ BG 枚数 ][ キャラクタ数 ] -static u16 gScreen[2 ][ 1 ][ TEXT_SCREEN_SIZE / sizeof(u16) ] ATTRIBUTE_ALIGN(32); - -/*---------------------------------------------------------------------------* - Name: InitScreen - - Description: 文字表示システムのために、表示設定を初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitScreen(void) -{ - // 各 V-RAM 初期化 - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - // OAM 初期化 - MI_CpuFillFast((void*)HW_OAM, 0xc0, HW_OAM_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, 0xc0, HW_DB_OAM_SIZE); - - // パレット初期化 - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - // 上画面設定 - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - - // 下画面設定 - GX_SetBankForSubBG(GX_VRAM_SUB_BG_32_H); - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_DB_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[1][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: 画面のテキスト表示をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -void ClearMainScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - -} -void ClearSubScreen(void) -{ - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -/*---------------------------------------------------------------------------* - Name: PutMainScreen - - Description: メイン画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[0][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: PrintSubScreen - - Description: サブ画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[1][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: UpdateScreen - - Description: 仮想スクリーンを V-RAM に反映する。 - V ブランク期間中での呼び出しを想定。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void UpdateScreen(void) -{ - // 仮想スクリーンを V-RAM に反映 - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/DispOwnerInfo/Makefile b/build/tests/DispOwnerInfo/Makefile deleted file mode 100644 index 24f22784..00000000 --- a/build/tests/DispOwnerInfo/Makefile +++ /dev/null @@ -1,97 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: debugIPL2 -# File: Makefile -# -# Copyright 2003,2004 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. -# -# $Log: Makefile,v $ -# Revision 1.10.2.1 2006/02/01 05:10:42 yosiokat -# ビルドソースにIPLType.cを追加。 -# -# Revision 1.10 2005/04/14 05:53:29 yosiokat -# NITRO設定データ関係を強制的に中国版にするスイッチFORCE_CHINAを追加。 -# -# Revision 1.9 2005/04/07 02:23:25 yosiokat -# リリースタイム更新用のルール追加。 -# -# Revision 1.8 2005/04/06 02:19:03 yosiokat -# ソースのcheckFontData.cをcheckIPL2Font.cに変更。 -# -# Revision 1.7 2005/04/05 08:05:14 yosiokat -# BUILD_MAINTEスイッチによって、共通ソースからDebugToolForIPL2とMaintenanceToolForIPL2 -# をビルドできるよう変更。 -# -# Revision 1.6 2005/03/31 05:45:12 yosiokat -# rev.1.5は間違いNitroConfigData.cに戻す。 -# -# Revision 1.5 2005/03/31 05:44:17 yosiokat -# NitroConfigData.cをnitroConfigData.cに戻す。 -# -# Revision 1.4 2005/03/28 09:34:12 yosiokat -# バナー追加。 -# -# Revision 1.3 2005/03/09 04:44:11 yosiokat -# 機能追加。 -# -# Revision 1.2 2004/09/23 11:27:45 yosiokat -# small fix. -# -# Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat -# no message -# -# -# $NoKeywords: $ -#---------------------------------------------------------------------------- - -SUBDIRS = banner - -#---------------------------------------------------------------------------- - -TARGET_NEF = DispOwnerInfo.nef -TARGET_BIN = DispOwnerInfo.srl - -SRCS = main.c initFunc.c font.c data.c dispNCD.c myFunc.c myChar.c - -FONT_DIR = font -FONTS = f08han.dat f08zen.dat f10han.dat f10zen.dat f12han.dat f12zen.dat f16han.dat f16zen.dat -FONT_DATAS = $(addprefix $(FONT_DIR)/, $(FONTS)) -FONT_OBJS = $(FONT_DATAS:.dat=.o) - -ROM_SPEC = main.rsf - -#LCFILE_SPEC = # using default -#SRCDIR = # using default - -# makerom settings -MAKEROM_ROMROOT = ./data -MAKEROM_ROMFILES = *.bin - -LINCLUDES += include -LLIBRARY_DIRS += mlib/$(NITRO_LIBTYPE) $(FONT_DIR) -LLIBRARIES += libfnt.a $(FONTS:.dat=.o) - -LDIRT_CLEAN = $(FONT_DIR)/*.o - -include $(NITROSDK_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -do-build: $(FONT_OBJS) $(TARGETS) - -include $(NITROSDK_ROOT)/build/buildtools/modulerules - -$(TARGETS) : $(MAKEROM_ARM7) - -$(FONT_DIR)/%.o : $(FONT_DIR)/%.dat - $(CW_BINDIR)/BinToElf.exe $< -aligndata 4 -endian little -output $@ - - -#===== End of Makefile ===== diff --git a/build/tests/DispOwnerInfo/banner/Makefile b/build/tests/DispOwnerInfo/banner/Makefile deleted file mode 100644 index c0dd732c..00000000 --- a/build/tests/DispOwnerInfo/banner/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: NitroSDK - tools -# File: Makefile -# -# Copyright 2003,2004 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. -# -# $Log: Makefile,v $ -# Revision 1.3 2005/04/14 05:58:28 yosiokat -# NITRO設定データ関係を強制的に中国版にするスイッチFORCE_CHINAを追加。 -# -# Revision 1.2 2005/04/02 10:00:08 yosiokat -# BUILD_MAINTE=TRUE時には、バナータイトルを変えるようにする。 -# -# Revision 1.1 2005/03/28 09:36:16 yosiokat -# バナー追加。 -# -# Revision 1.2 2004/10/18 05:37:51 yasu -# Fix how to make banners -# -# Revision 1.1 2004/09/21 02:02:53 yasu -# Demo for building final rom -# -# Revision 1.1 2004/09/17 09:10:59 yasu -# Build default banner file for SDK demos -# -# $NoKeywords: $ -#--------------------------------------------------------------------------- -include $(NITROSDK_ROOT)/build/buildtools/commondefs - -BANNER_ICON = myGameIcon.bmp -BANNER_SPEC = myGameBanner.bsf -TARGETS = myGameBanner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(NITROSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -#---------------------------------------------------------------------------- -# test -#---------------------------------------------------------------------------- -#include $(NITROSDK_ROOT)/build/buildtools/commondefs.emtype.ISD - -test: $(TARGETS) - $(ADDBANNER) $(TARGETS) $(TARGETS:.bnr=.srl) -ifdef ISD_NITLOAD - $(ISD_NITLOAD) $(TARGETS:.bnr=.srl) -endif - -# diff --git a/build/tests/DispOwnerInfo/banner/myGameBanner.bsf b/build/tests/DispOwnerInfo/banner/myGameBanner.bsf deleted file mode 100644 index 3c65700e..00000000 Binary files a/build/tests/DispOwnerInfo/banner/myGameBanner.bsf and /dev/null differ diff --git a/build/tests/DispOwnerInfo/banner/myGameIcon.bmp b/build/tests/DispOwnerInfo/banner/myGameIcon.bmp deleted file mode 100644 index 0b2bcfd1..00000000 Binary files a/build/tests/DispOwnerInfo/banner/myGameIcon.bmp and /dev/null differ diff --git a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp b/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp deleted file mode 100644 index 29754732..00000000 Binary files a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp and /dev/null differ diff --git a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr b/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr deleted file mode 100644 index 36525719..00000000 Binary files a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f08han.dat b/build/tests/DispOwnerInfo/font/f08han.dat deleted file mode 100644 index 11a56ec7..00000000 Binary files a/build/tests/DispOwnerInfo/font/f08han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f08zen.dat b/build/tests/DispOwnerInfo/font/f08zen.dat deleted file mode 100644 index c36ef492..00000000 Binary files a/build/tests/DispOwnerInfo/font/f08zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f10han.dat b/build/tests/DispOwnerInfo/font/f10han.dat deleted file mode 100644 index 8917e0f0..00000000 Binary files a/build/tests/DispOwnerInfo/font/f10han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f10zen.dat b/build/tests/DispOwnerInfo/font/f10zen.dat deleted file mode 100644 index 256b04c1..00000000 Binary files a/build/tests/DispOwnerInfo/font/f10zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f12han.dat b/build/tests/DispOwnerInfo/font/f12han.dat deleted file mode 100644 index 08bd466f..00000000 Binary files a/build/tests/DispOwnerInfo/font/f12han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f12zen.dat b/build/tests/DispOwnerInfo/font/f12zen.dat deleted file mode 100644 index ee38836d..00000000 Binary files a/build/tests/DispOwnerInfo/font/f12zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f16han.dat b/build/tests/DispOwnerInfo/font/f16han.dat deleted file mode 100644 index 6477fda3..00000000 Binary files a/build/tests/DispOwnerInfo/font/f16han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f16zen.dat b/build/tests/DispOwnerInfo/font/f16zen.dat deleted file mode 100644 index 2e1f78f7..00000000 Binary files a/build/tests/DispOwnerInfo/font/f16zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/include/fnt.h b/build/tests/DispOwnerInfo/include/fnt.h deleted file mode 100644 index 3f9d6b63..00000000 --- a/build/tests/DispOwnerInfo/include/fnt.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef FNT_H_ -#define FNT_H_ - -#include "fnt/fnt_enum.h" -#include "fnt/fnt_struct.h" -#include "fnt/fnt_func.h" -#include "fnt/fnt_data.h" - -#endif // FNT_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_data.h b/build/tests/DispOwnerInfo/include/fnt/fnt_data.h deleted file mode 100644 index e4a7f162..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_data.h +++ /dev/null @@ -1,32 +0,0 @@ -extern u8 NITRO_LC_Font_t_bncmp[]; -extern u8 NITRO_LC_Font_t_bncmp_end[]; -extern u8 NITRO_LC_Font_t_bnfr[]; -extern u8 NITRO_LC_Font_t_bnfr_end[]; -extern u8 NITRO_LC_Font_s_bncmp[]; -extern u8 NITRO_LC_Font_s_bncmp_end[]; -extern u8 NITRO_LC_Font_s_bnfr[]; -extern u8 NITRO_LC_Font_s_bnfr_end[]; -extern u8 NITRO_LC_Font_Chinese_t_bncmp[]; -extern u8 NITRO_LC_Font_Chinese_t_bncmp_end[]; -extern u8 NITRO_LC_Font_Chinese_t_bnfr[]; -extern u8 NITRO_LC_Font_Chinese_t_bnfr_end[]; -extern u8 NITRO_LC_Font_Chinese_s_bncmp[]; -extern u8 NITRO_LC_Font_Chinese_s_bncmp_end[]; -extern u8 NITRO_LC_Font_Chinese_s_bnfr[]; -extern u8 NITRO_LC_Font_Chinese_s_bnfr_end[]; -extern u8 NITRO_LC_Font_Hangul_t_bncmp[]; -extern u8 NITRO_LC_Font_Hangul_t_bncmp_end[]; -extern u8 NITRO_LC_Font_Hangul_t_bnfr[]; -extern u8 NITRO_LC_Font_Hangul_t_bnfr_end[]; -extern u8 NITRO_LC_Font_Hangul_s_bncmp[]; -extern u8 NITRO_LC_Font_Hangul_s_bncmp_end[]; -extern u8 NITRO_LC_Font_Hangul_s_bnfr[]; -extern u8 NITRO_LC_Font_Hangul_s_bnfr_end[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bncmp[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bncmp_end[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bnfr[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bnfr_end[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bncmp[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bncmp_end[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bnfr[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bnfr_end[]; diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h b/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h deleted file mode 100644 index e78252fc..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef FNT_ENUM_H_ -#define FNT_ENUM_H_ - -enum tFntDrawContextType -{ - FNT_DCTYPE_4BITS, - FNT_DCTYPE_8BITS, - FNT_DCTYPE_LAST -}; - -enum tFntPosXOrigin -{ - FNT_POSX_ORIGIN_LEFT, - FNT_POSX_ORIGIN_CENTER, - FNT_POSX_ORIGIN_RIGHT, - FNT_POSX_ORIGIN_LAST -}; - -enum tFntPosYOrigin -{ - FNT_POSY_ORIGIN_TOP, - FNT_POSY_ORIGIN_CENTER, - FNT_POSY_ORIGIN_BOTTOM, - FNT_POSY_ORIGIN_LAST -}; - -enum tFntTextHAlign -{ - FNT_H_ALIGN_LEFT, - FNT_H_ALIGN_CENTER, - FNT_H_ALIGN_RIGHT, - FNT_H_ALIGN_LAST -}; - -#endif // FNT_ENUM_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_func.h b/build/tests/DispOwnerInfo/include/fnt/fnt_func.h deleted file mode 100644 index 196749b5..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_func.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef FNT_FUNC_H_ -#define FNT_FUNC_H_ - -// fnt_utils.c -extern int fnt_GetLeftFromOrigin( tFntPosition posx, int width ); -extern int fnt_GetTopFromOrigin ( tFntPosition posy, int height ); - -// fnt_font.c -extern void fnt_CreateFont ( tFntEntry* font, const void* fontRsrc, const void* cmapRsrc ); -extern void fnt_CreateDrawContext( tFntDrawContext* dc, u16* canvas, u16 width, u16 height, int type, tFntEntry* font ); - -extern void fnt_DrawLetter ( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 letter, int palette ); -extern void fnt_DrawLetterGlyph( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 glyph, int palette ); -extern void fnt_DrawString ( tFntEntry* font, tFntDrawContext* dc, tFntPosition posx, tFntPosition posy, int step_x, int step_y, const u16* str, int palette ); -extern int fnt_GetLetterWidth ( tFntEntry* font, u16 letter ); -extern int fnt_GetLetterOffset( tFntEntry* font, u16 letter ); -extern void fnt_DrawLetterGlyphFast( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 glyph, int palette ); -extern BOOL fnt_SetDefaultLetter( tFntEntry* font, u16 letter ); - -extern const u16* fnt_GetLineWidth ( tFntEntry* font, const u16* str, int* pwidth, int step_x ); -extern int fnt_GetStringWidth ( tFntEntry* font, const u16* str, int step_x ); -extern int fnt_GetStringHeight( tFntEntry* font, const u16* str, int step_y ); - -extern void fnt_ClearRect( tFntDrawContext* dc, u16 x, u16 y, u16 height, u16 width ); - - -// fnt_layout.c -extern void fnt_DrawMessage ( tFntDrawContext* dc, tFntMessage* message, const u16* mes_data ); -extern void fnt_DrawLetterLayout( tFntDrawContext* dc, const void* layout ); -extern tFntMessage* fnt_GetFntMessage ( const void* layout, int index ); -extern const u16* fnt_GetMessage ( const void* layout, int index ); -extern int fnt_GetMessageNum ( const void* layout ); -extern int fnt_LoadCelltoOam ( const void* celldata, GXOamAttr* poam, tFntPosition posx, tFntPosition posy, int cell_index ); -extern int fnt_DrawCellLayout ( const void* celldata, const void* layout, GXOamAttr* poam ); - -// fnt_celldata.c -extern int fnt_GetCellOamNum ( const void* celldata, int index ); -extern tFntCellCharInfo* fnt_GetCellCharInfo ( const void* celldata, int index ); -extern tFntCellCharOam* fnt_GetCellOam ( const void* celldata, int index ); -extern const void* fnt_GetCellObjChar ( const void* celldata ); -extern u32 fnt_GetCellObjCharSizeAll( const void* celldata ); -extern int fnt_GetCellCharVramMode ( const void* celldata ); -extern int fnt_GetCellCharNameShift ( const void* celldata ); - -// fnt_touch.c -extern int fnt_GetFntRegionNum ( const void* base ); -extern tFntRegion* fnt_GetFntRegion ( const void* base, int index ); -extern int fnt_GetHitFntRegionIndex( const void* base, int x, int y ); - -#endif // FNT_FUNC_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h b/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h deleted file mode 100644 index 9ff11878..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h +++ /dev/null @@ -1,224 +0,0 @@ -#ifndef FNT_STRUCT_H_ -#define FNT_STRUCT_H_ - -/** -------------------------------------------------------------------- - セル情報構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntCellInfo -{ - u16 width : 5; // 最大32 - u16 height : 5; // 最大32 - u16 dummy : 6; -} tFntCellInfo; - -/** -------------------------------------------------------------------- - 幅情報構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntWidthEntry -{ - u16 offset : 8; // オフセット(書きはじめまでのピクセル数) - u16 width : 8; // 幅 -} tFntWidthEntry; - -/** -------------------------------------------------------------------- - フォントCMAPの連続領域用構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntCtEntry -{ - u16 start; - u16 end; -} tFntCtEntry; - -/** -------------------------------------------------------------------- - フォント管理構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntEntry -{ - const u16* font_image; // フォントイメージへのポインタ - const u16* cmap; // コード->glyph変換用cmapへのポインタ - tFntCtEntry* ctmap; // コード->glyph変換用cmapへのポインタ - tFntWidthEntry* width_table; // 幅テーブル - u16 glyph_num; // glyph数 - u16 default_glyph; // 見つからなかったときに使われる文字のglyph - s16 cell_size; // 一文字のセルサイズ(ワード単位) - tFntCellInfo cell_info; // セルの情報 - u16 cmap_num; // glyph_comp == 1のときのcmapの数 - u16 ctmap_num; // glyph_comp == 1のときのctmapの数 - u32 glyph_sort : 1; // グリフがソートされているかどうか - u32 glyph_comp : 1; // グリフの連続されている部分が圧縮されているかどうか -} tFntEntry; - -/** -------------------------------------------------------------------- - 描画する先のデバイスコンテキスト管理構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntDrawContext -{ - u16* canvas; - u16 width; - u16 height; - u16 canvas_type; - u8 pad[2]; - tFntEntry* font; -} tFntDrawContext; - - -/** -------------------------------------------------------------------- - レイアウト表示用の構造体 - ----------------------------------------------------------------------*/ -/** -------------------------------------------------------------------- - レイアウトヘッダー - ----------------------------------------------------------------------*/ -typedef struct tagFntLayoutHeader -{ - u8 name[4]; - u16 version; - u16 table_num; -} tFntLayoutHeader; - -/** -------------------------------------------------------------------- - CMAPヘッダー - ----------------------------------------------------------------------*/ -typedef struct tagFntCmapHeader -{ - u32 ct_offset; - u32 cm_offset; -} tFntCmapHeader; - -/** -------------------------------------------------------------------- - レイアウト表示のためのメッセージ構造体 - ----------------------------------------------------------------------*/ -typedef struct tagFntPosition -{ - s16 pos : 12; - u16 pos_origin : 2; - u16 text_align : 2; -} tFntPosition; // この宣言でも、2Bytesにきちんと収まる。処理系によっては、sizeof()でチェックすること。 - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - 文字レイアウトを表示するための構造体。 - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - メッセージ構造体 - - メッセージデータは、 - tFntLayoutHeader header; - tFntMessage message[header.table_num]; - で構成されます。 - ----------------------------------------------------------------------*/ -typedef struct tagFntMessage -{ - // 位置 - tFntPosition x; - tFntPosition y; - - // 文字間隔 - s16 spacing_x : 8; - s16 spacing_y : 8; - - // 色 - u16 color : 8; - u16 palette : 4; - u16 font : 4; - - // メッセージへのオフセット - u32 offset; -} tFntMessage; - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - OBJのセルを扱うための構造体 - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - セル情報構造体 - - セルデータは、 - tFntLayoutHeader header; - tFntCell cell[header.table_num]; - で構成されます。 - ----------------------------------------------------------------------*/ -typedef struct tagFntCell -{ - // 位置 - tFntPosition x; - tFntPosition y; - - // セルキャラクタへのインデックス - u32 cell_index; -} tFntCell; - -/** -------------------------------------------------------------------- - セルキャラクタ情報構造体 - - セルキャラクタデータは、 - tFntLayoutHeader header; - tFntCellCharHeader char_header; - tFntCellCharInfo cellchar_info[header.table_num]; - tFntCellCharOam cellchar_oam[]; - u16 char_data[]; - で構成されます。 - ----------------------------------------------------------------------*/ -/** -------------------------------------------------------------------- - セルキャラクタヘッダ - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharHeader -{ - u32 cell_offset; // tFntCellChar配列へのオフセット - u32 oam_offset; // tFntOamChar配列へのオフセット - u32 char_offset; // キャラクタデータへのオフセット - u32 char_size; // キャラクタデータのサイズ - u32 char_mode : 3; // OBJVRAMMODE_CHAR_1DのEXOBJフラグ -} tFntCellCharHeader; - -/** -------------------------------------------------------------------- - セルキャラクタ情報 - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharInfo -{ - u16 width : 8; // セルの大きさ情報。 - u16 height : 8; - u16 oam_index; // oam_offset[oam_index] から、 - u16 oam_num; // oam_num分だけのoamを使用します。 -} tFntCellCharInfo; - -/** -------------------------------------------------------------------- - OAM情報 - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharOam -{ - GXOamAttr attr; // CharNameの部分は、使用しません。(ロード位置をユーザ定義にするため。) - u16 char_index; // キャラクタデータのインデックス。 - u16 char_num; // キャラクタデータの数。(最大、64ぐらい) -} tFntCellCharOam; - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - タッチの場所を取得するための構造体 - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - リージョン情報 - ----------------------------------------------------------------------*/ -typedef struct tagFntRegion -{ - // 位置 - tFntPosition x; - tFntPosition y; - - // サイズ - u16 width : 8; // セルの大きさ情報。 - u16 height : 8; -} tFntRegion; - -#endif // FNT_STRUCT_H_ diff --git a/build/tests/DispOwnerInfo/main.rsf b/build/tests/DispOwnerInfo/main.rsf deleted file mode 100644 index cc22e856..00000000 --- a/build/tests/DispOwnerInfo/main.rsf +++ /dev/null @@ -1,41 +0,0 @@ -# -# Nitro ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).sbin" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.sbin" - OverlayTable "$(MAKEROM_ARM9:r)_table.sbin" - Nef "$(MAKEROM_ARM9:r).nef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7:r).sbin" - OverlayDefs "$(MAKEROM_ARM7:r)_defs.sbin" - OverlayTable "$(MAKEROM_ARM7:r)_table.sbin" - Nef "$(MAKEROM_ARM7:r).nef" -} - -Property -{ - BannerFile ./banner/myGameBanner.bnr -# ForChina TRUE -# ForKorea TRUE -# RomSpeedType MROM -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - - Align 512 - Padding 0xFF - - HostRoot data - Root /data - File *.bncmp *.bnfr -} - diff --git a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a b/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a deleted file mode 100644 index 8a3c5675..00000000 Binary files a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a and /dev/null differ diff --git a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a b/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a deleted file mode 100644 index 6d345064..00000000 Binary files a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a and /dev/null differ diff --git a/build/tests/DispOwnerInfo/readme.txt b/build/tests/DispOwnerInfo/readme.txt deleted file mode 100644 index 13d1e7b0..00000000 --- a/build/tests/DispOwnerInfo/readme.txt +++ /dev/null @@ -1,28 +0,0 @@ -コンポーネントの中韓対応情報 - -WW版のみ:rev.1より - - サンプル NitroSDK 2.00 : rev.1.34 - -中国対応:rev.1.35より - サンプル NitroSDK 2.01 : rev.1.38 - -韓国対応:rev.1.43より - サンプル TwlSDK 5.1PR1 : rev.* - - - -ビルド方法 - -NitroSDK2.00, 2.01は、CW1.00fcでビルドしてください。 -TwlSDK5.1PR1は、CW1.02でビルドしてください。また、TWLSDK_PLATFORM=NITROの環境でビルドしてください。 - -作成するバイナリの種類 -下記組み合わせでバイナリを作成します。 - -SDK | WW | CN | KR | --------------|----|----|----| -NitroSDK2.00 | ○ | × | × | -NitroSDK2.01 | ○ | ○ | × | -TwlSDK5.1PR1 | ○ | ○ | ○ | - diff --git a/build/tests/DispOwnerInfo/src/NitroConfigData.h b/build/tests/DispOwnerInfo/src/NitroConfigData.h deleted file mode 100644 index 23ff02f9..00000000 --- a/build/tests/DispOwnerInfo/src/NitroConfigData.h +++ /dev/null @@ -1,679 +0,0 @@ -/********************************************************************/ -/* NitroConfigData.h */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - NITR設定データ定義 ヘッダ - - - $Log: NitroConfigData.h,v $ - Revision 1.4.2.2.4.1.4.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2への対応。 - - Revision 1.4.2.5 2006/06/26 02:57:54 yosiokat - ・言語コードを韓国語に対応させる。 - ・一部の定義データの名称変更。 - - Revision 1.4.2.4 2006/02/06 11:34:56 yosiokat - NCD_GetIPL2BM7RomAddr関数の追加。 - - Revision 1.4.2.3 2006/02/06 08:27:19 yosiokat - IPL2バージョンの定義をIPLType.hの定義値を使うよう変更。 - - Revision 1.4.2.2 2005/10/31 08:49:57 yosiokat - USG_BACKLIGHT_DEFAULTを"2"に変更。 - - Revision 1.4.2.1 2005/10/25 08:14:41 yosiokat - USG対応のため、以下の変更を行う。 - ・NitroConfigData構造体にbackLightBrightnessを追加。 - ・IPL2_TYPE判定用の定数定義にUSGのものを追加。 - - Revision 1.4 2005/04/01 05:45:04 yosiokat - 最新版に更新。 - - Revision 1.3 2005/03/31 06:06:54 yosiokat - NitroConfigDataアクセス関数の全面改定。 - - Revision 1.31.2.2 2005/03/16 00:36:01 yosiokat - 言語コードの中国語追加に伴うNitroConfigDataExの新設とNitroConfigDataの取扱いの変更。 - - Revision 1.31.2.1 2005/03/11 11:08:56 yosiokat - 中国語の追加。 - - Revision 1.31 2005/02/15 02:38:27 yosiokat - NCD_CorrectDataの削除。 - - Revision 1.30 2005/02/07 11:12:03 yosiokat - NCD_CorrectDataの追加。 - - Revision 1.29 2004/09/25 10:42:54 Yosiokat - NvOption内のrsv領域にrtcOffset算出用パラメータrtcLastSetYearを保存するよう変更。 - - Revision 1.28 2004/09/16 07:02:51 Yosiokat - オーナー情報のニックネーム、好きな色、誕生日をクリアするNCD_ClearOwnerInfoの追加。 - - Revision 1.27 2004/09/01 09:18:35 Yosiokat - ・NvOptionにdestroyFlashFlagを追加。 - ・上記アクセス関数NCD_GetDestroyFlash、NCD_SetDestroyFlashを追加。 - - Revision 1.26 2004/08/31 09:52:38 Yosiokat - small fix. - - Revision 1.25 2004/08/27 12:36:08 Yosiokat - IPL2_BUILD_をSDK_SMALL_BUILDに変更。 - - Revision 1.24 2004/08/25 09:27:41 Yosiokat - ・必要なくなった下記要素をrsvに変更。(フォーマットの互換を保つため、データは詰めない) - NvAlarm.second - NvAlarm.enableWeek - NvOption.detectPullOutCardFlag - NvOption.detectPullOutCtrdgFlag - NvOption.timezone - - Revision 1.23 2004/08/25 05:12:20 Yosiokat - ブランチタグred_ipl2_2004_08_24_pp2_isdbg_fixとのマージ。 - - Revision 1.22 2004/08/25 01:28:23 Yosiokat - ・NvOption.backLightOffFlagがビットフィールドになっていなかったのを修正。 - ・NvOption.input_birthdayフラグを追加。アクセス関数NCD_GetInputBirthday、NCD_SetInputBirthday - ・NCDStoreを32byte単位のサイズになるよう調整。(キャッシュラインにあわせる) - - Revision 1.21 2004/08/23 08:24:23 Yosiokat - バックライトON,OFFフラグをIPl2_workから再度NitroConfigDataに戻す。 - - Revision 1.20 2004/08/19 06:06:02 yosiokat - NitroConfigDataにビットフィールドが使われているため、他コンパイラで問題が出る可能性がある。 - とりあえず、SDK_CWが定義されていなければ、ヘッダを切ってエラーを出させることで、他コンパイラで問題がないかを確認できるようにしておく。 - - Revision 1.19 2004/08/18 07:33:00 Yosiokat - ・NCD_FAVORITE_COLOR_MAX_NUM追加。 - ・NitroConfigData.option.input_favoriteColor追加。 - - Revision 1.18 2004/08/17 05:44:19 Nakasima - ・topLcdBackLightOffをNitroConfigDataからIPL2_workへ移動。 - ・detectPullOutFlagを削除し、detectPullOutCardFlaとdetectPullOutCtrdgFlagを追加。 - - Revision 1.17 2004/08/16 10:13:09 Yosiokat - pullCardFlagをdetectPullOutFlagに変更。 - - Revision 1.16 2004/08/16 10:09:34 Yosiokat - NvOptionにpullCardFlagを追加。 - - Revision 1.15 2004/08/13 07:41:30 Yosiokat - ・NvOwnerInfoからsexを削除。 - ・NvOptionからbottomLcdBackLightOffを削除。 - ・NvOptionにautoBootFlagを追加。 - ・NCD_SetSex, NCD_GetSexを削除。 - ・NCD_GetRtcClockAdjust、NCD_GetAutoBootFlag、NCD_SetRtcClockAdjust、NCD_SetAutoBootFlagの追加。 - - Revision 1.14 2004/07/29 04:53:18 Yosiokat - 構造体のパディングを明示的に追加。 - - Revision 1.13 2004/07/18 10:55:13 Yosiokat - NITRO設定データのセット関数を用意。 - - Revision 1.12 2004/07/17 09:00:14 Yosiokat - ・構造体サイズのコメント修正。 - - Revision 1.11 2004/07/15 12:47:33 Yosiokat - ・オーナー情報の誕生日の「年」を削除。 - - Revision 1.10 2004/07/15 12:26:43 Yosiokat - ・NITRO設定データのフォーマットを変更。 - ・オーナー情報を以下のように変更。 -  a)ニックネーム長を10に変更。 -  b)コメントデータを追加 -  c)血液型データを削除。 -  d)好きな色データを追加。(中身は未定) - e)性別データをビットフィールドに。 - ・アラーム情報を追加。 - ・タッチパネルキャリブレーション情報の各要素を詳細に定義。 - ・その他の情報をオプション情報にまとめる。(言語コードもビットフィールドとしてここに入れる。) - - Revision 1.9 2004/07/13 00:20:15 Yosiokat - ・small fix. - - Revision 1.8 2004/07/05 02:29:23 Yosiokat - 言語コードをFRENCHに修正。 - - Revision 1.7 2004/06/28 01:56:17 Yosiokat - ・バックライトON,OFF設定の値を追加。 - ・TP、言語設定、RTC、オーナー情報の入力済みフラグを追加。 - ・バージョンを"3"に。 - - Revision 1.6 2004/06/14 04:55:10 yosiokat - NitroConfigDataのrtcOffsetをintからs64に変更。 - これに伴いNCDフォーマットのバージョンを"2"に変更。 - - Revision 1.5 2004/06/07 10:51:58 Yosiokat - オーナー情報のニックネームをSJISからUnicode(UTF16)に変更したため、バージョンを1に上げる。 - - Revision 1.4 2004/05/21 06:12:17 Yosiokat - ヘッダのC++対応部分で「};」のセミコロンがエラーになっていたので、削除。 - - Revision 1.3 2004/05/21 05:37:46 Yosiokat - TPキャリブレーションをNVRAMに保存するデータにLCDの左上ポイント+LCDの右下ポイントを含めるよう変更。(サイズが8->12byteへ) - また、SDKにconfig.hの名前でNitroConfigData.hと同一ファイルが入っていたので、これをインクルードしないよう、Makefileでコンパイル時にIPL2_BUILD_シンボルを与えるよう変更。 - - Revision 1.2 2004/05/19 08:25:28 yosiokat - 更新ログの追加。 - - -*/ - - -#ifndef NITRO_CONFIG_DATA_H_ -#define NITRO_CONFIG_DATA_H_ -#if defined(SDK_CW) // NitroConfigDataにビットフィールドを使っているので、コンパイラ依存で不具合が発生する可能性がある。 - // よって、CW以外のコンパイラの場合は、このヘッダを無効にしてエラーを出させるようにして再確認する。 -#ifdef __cplusplus -extern "C" { -#endif - - -#include - -#define USING_COMPONENT // IPL2上ではないので、このスイッチを有効に。 - - -// define data ------------------------------------ -#define NITRO_CONFIG_DATA_VERSION 5 // NITRO設定データフォーマットバージョン -#define NITRO_CONFIG_DATA_EX_VERSION 1 // 拡張NITRO設定データフォーマットバージョン -#define NCD_NICKNAME_LENGTH 10 // ニックネーム長 -#define NCD_COMMENT_LENGTH 26 // コメント長 -#define NCD_FAVORITE_COLOR_MAX_NUM 16 // 好きな色の最大数 - -#define NCD_ROM_ADDR_SHIFT 3 // IPL2ヘッダのNitroConfigData格納アドレスのシフト値 -#define FONT_ROM_ADDR_SHIFT 2 // IPL2ヘッダのフォントデータ格納アドレスのシフト値 -#define NCD_SYS_RSV_SIZE 1024 // システム予約領域サイズ -#define NCD_APP_RSV_SIZE 512 // アプリ 予約領域サイズ - // NCD_SYS_RSV_ROM_ADDR = ncd_rom_addr - NCD_SYS_RSV_SIZE - // NCD_APP_RSV_ROM_ADDR = ncd_rom_addr - NCD_SYS_RSV_SIZE - NCD_APP_RSV_SIZE -#define USG_BACKLIGHT_DEFAULT 2 // USGのバックライトデフォルト値 - - -// 言語設定コード -typedef enum NvLangCode{ - LANG_JAPANESE =0, // 日本語 - LANG_ENGLISH, // 英語 - LANG_FRENCH, // フランス語 - LANG_GERMAN, // ドイツ語 - LANG_ITALIAN, // イタリア語 - LANG_SPANISH, // スペイン語 - LANG_CHINESE, // 中国語 - LANG_HANGUL, // 韓国語 - LANG_CODE_MAX -}NvLangCode; - -#define LANG_CODE_MAX_WW LANG_CHINESE // 中国版以前の通常版IPL2でのLANG_CODE_MAX - -#define LANG_BITMAP_WW ( ( 0x0001 << LANG_JAPANESE ) \ - | ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_ITALIAN ) \ - | ( 0x0001 << LANG_SPANISH ) ) // 通常版での対応言語ビットマップ - -#define LANG_BITMAP_CN ( ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_ITALIAN ) \ - | ( 0x0001 << LANG_SPANISH ) \ - | ( 0x0001 << LANG_CHINESE ) ) // 中国版での対応言語ビットマップ - -#define LANG_BITMAP_KR ( ( 0x0001 << LANG_JAPANESE ) \ - | ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_SPANISH ) \ - | ( 0x0001 << LANG_HANGUL ) ) // 韓国版での対応言語ビットマップ - -// 日付データ -typedef struct NvDate{ - u8 month; // 月:01〜12 - u8 day; // 日:01〜31 -}NvDate; // 2byte - -// ニックネーム -typedef struct NvNickname{ - u16 str[NCD_NICKNAME_LENGTH]; // ニックネーム(Unicode(UTF16)で最大10文字、終端コードなし) - u8 length; // 文字数 - u8 rsv; -}NvNickname; // 22byte - -// コメント -typedef struct NvComment{ - u16 str[NCD_COMMENT_LENGTH]; //コメント(Unicode(UTF16)で最大26文字、終端コードなし) - u8 length; // 文字数 - u8 rsv; -}NvComment; // 54byte - -// オーナー情報 -typedef struct NvOwnerInfo{ - u8 favoriteColor : 4; // 好きな色 - u8 rsv : 4; // 予約。 - NvDate birthday; // 生年月日 - u8 pad; - NvNickname nickname; // ニックネーム - NvComment comment; // コメント -}NvOwnerInfo; // 80byte - -// IPL用目覚まし時計データ -typedef struct NvAlarm{ - u8 hour; // アラーム時:00〜23 - u8 minute; // アラーム分:00〜59 - u8 rsv1; // 予約 - u8 pad; - u16 alarmOn : 1; // アラームON,OFF(0:OFF, 1:ON) - u16 rsv2 : 15; // 予約 -}NvAlarm; // 6byte - -// タッチパネルキャリブレーションデータ -typedef struct NvTpCalibData{ - u16 raw_x1; // 第1キャリブレーション点のTP取得値X - u16 raw_y1; //     〃        TP取得値Y - u8 dx1; //     〃        LCD座標 X - u8 dy1; //     〃        LCD座標 Y - u16 raw_x2; // 第2キャリブレーション点のTP取得値X - u16 raw_y2; //     〃        TP取得値Y - u8 dx2; //     〃        LCD座標 X - u8 dy2; //     〃        LCD座標 Y -}NvTpCalibData; // 12byte - -// オプション情報 -typedef struct NvOption{ - u16 language : 3; // 言語コード(LANG_SPANISHまでの標準言語コードが入る) - u16 agbLcd : 1; // AGBモードで起動する時にどちらのLCDで起動するか?(0:TOP,1:BOTTOM) - u16 backLightBrightness : 2; // バックライト輝度データ - u16 autoBootFlag : 1; // 起動シーケンスで、メニュー停止なしで自動起動するかどうか?(0:OFF, 1:ON) - u16 backLightOffFlag : 1; // バックライトON,OFFフラグ(0:ON, 1:OFF) - u16 rsv2 : 1; // 予約。 - u16 destroyFlashFlag : 1; // フラッシュ壊れシーケンス中フラグ - u16 input_birthday : 1; // 誕生日が入力されたか? - u16 input_favoriteColor : 1; // 好きな色が入力されたか? - u16 input_tp : 1; // タッチパネルがキャリブレーションされたか?( 〃 ) - u16 input_language : 1; // 言語入力がされたか?  (0:未設定, 1:設定済み) - u16 input_rtc : 1; // RTC設定がされたか? ( 〃      ) - u16 input_nickname : 1; // ニックネームが入力されたか? ( 〃      ) - u8 rtcLastSetYear; // RTCの前回設定年 - u8 rtcClockAdjust; // RTCクロック調整値 - s64 rtcOffset; // RTC設定時のオフセット値(ユーザーがRTC設定を変更する度にその値に応じて増減します。) -}NvOption; // 12byte - -// NITRO各種設定データ -typedef struct NitroConfigData{ - u8 version; // フラッシュ格納データフォーマットのバージョン - u8 pad; - NvOwnerInfo owner; // オーナー情報 - NvAlarm alarm; // IPL用目覚まし時計データ - NvTpCalibData tp; // タッチパネルキャリブレーションデータ - NvOption option; // オプション -}NitroConfigData; // 112byte - -// NITRO各種設定データのNVRAM保存時フォーマット -typedef struct NCDStore{ - NitroConfigData ncd; // NITRO各種設定データ - u16 saveCount; // 0x00-0x7fをループしてカウントし、カウント値が新しいデータが有効。 - u16 crc16; // NITRO各種設定データの16bitCRC - u8 pad[ 128 - sizeof(NitroConfigData) - 4]; -}NCDStore; // 128byte // ※本来なら、saveCountとcrc16は256byteの最後に付加して、間にパディングを埋める方がいい。 - - -//---------------------------------------------- -// IPL2中国版での拡張フォーマット -//---------------------------------------------- -// 拡張NITRO設定データ -typedef struct NitroConfigDataEx{ - u8 version; // バージョン - u8 language; // 言語コード(LANG_CHINESE以降に拡張された値が入る。) - u16 valid_language_bitmap; // 本IPL2で有効な言語コードを示したビットマップ - u8 pad[ 256 - sizeof(NitroConfigData) - 4 - 4 - 2 ]; // 4:saveCount+crc16, 2:NCDEx.version+NCDEx.language, 2:crc16_ex -}NitroConfigDataEx; // 138bytes - -// NITRO各種設定データのNVRAM保存時フォーマット -typedef struct NCDStoreEx{ - NitroConfigData ncd; // NITRO各種設定データ - u16 saveCount; // 0x00-0x7fをループしてカウントし、カウント値が新しいデータが有効。 - u16 crc16; // NITRO各種設定データの16bitCRC - NitroConfigDataEx ncd_ex; - u16 crc16_ex; -}NCDStoreEx; // 256byte // ※本来なら、saveCountとcrc16は256byteの最後に付加して、間にパディングを埋める方がいい。 - - -typedef struct NCDTimeStamp { - u8 minute; - u8 hour; - u8 day; - u8 month; - u8 year; -}NCDTimeStamp; - - -//========================================================= -// NVRAMへのリードライト関数 -//========================================================= -#ifdef SDK_ARM9 -extern int NVRAMm_ReadNitroConfigData (NitroConfigData *dstp); -extern void NVRAMm_WriteNitroConfigData(NitroConfigData *dstp); -#endif - - -//========================================================= -// NITRO設定データへのアクセス関数 -//========================================================= -extern NitroConfigDataEx ncdEx; -extern u16 valid_lang_bitmap; - -#define GetNcdWorkAddr() ( (NitroConfigData *)( HW_NVRAM_USER_INFO ) ) -#define GetNcdExWorkAddr() ( &ncdEx ) - // NITRO設定データ領域のアドレス獲得 - -extern void NCD_ClearOwnerInfo( void ); // ニックネーム・誕生日・好きな色のクリア - -#ifdef USING_COMPONENT -extern void NCD_ReadIPL2Header ( void ); // IPL2ヘッダの読み出し。 -extern u8 NCD_GetIPL2Type ( void ); // IPL2タイプの取得。 -extern u16 NCD_GetIPL2TypeEx ( void ); // 拡張IPL2タイプの取得。 -extern u8 *NCD_GetIPL2Version ( void ); // IPL2バージョンの取得。 -extern u32 NCD_GetNCDRomAddr ( void ); // NCD格納ROMアドレスの取得。 -extern u32 NCD_GetSysRsvRomAddr( void ); // システム予約領域ROMアドレスの取得。 -extern u32 NCD_GetAppRsvRomAddr( void ); // アプリ 予約領域ROMアドレスの取得。 -extern u32 NCD_GetIPL2BM7RomAddr( void ); // ブートメニューARM7コードROMアドレスの取得。 -extern u32 NCD_GetIPL2DataRomAddr( void ); // IPL2データROMアドレスの取得。 -extern u32 NCD_GetFontBncmpRomAddr( void ); // フォントデータbncmpのROMアドレス取得。(中国版、日本向け試遊台版でのみ有効。) -extern u32 NCD_GetFontBnfrRomAddr( void ); // フォントデータbnfr のROMアドレス取得。(中国版、日本向け試遊台版でのみ有効。) -#endif - -//========================================================= -// データ取得 -//========================================================= - -//----------------------------------- -// オーナー情報全体の取得。 -static inline NvOwnerInfo *NCD_GetOwnerInfo(void) -{ - return &GetNcdWorkAddr()->owner; -} - -// 好きな色の取得。 -static inline u8 NCD_GetFavoriteColor(void) -{ - return (u8)GetNcdWorkAddr()->owner.favoriteColor; -} - -// 誕生日の取得。 -static inline NvDate *NCD_GetBirthday(void) -{ - return &GetNcdWorkAddr()->owner.birthday; -} - -// ニックネームの取得。 -static inline NvNickname *NCD_GetNickname(void) -{ - return &GetNcdWorkAddr()->owner.nickname; -} - -// コメントの取得。 -static inline NvComment *NCD_GetComment(void) -{ - return &GetNcdWorkAddr()->owner.comment; -} - - -//----------------------------------- -// アラーム情報の取得。 -static inline NvAlarm *NCD_GetAlarmData(void) -{ - return &GetNcdWorkAddr()->alarm; -} - - -//----------------------------------- -// タッチパネルキャリブレーションデータの取得。 -static inline NvTpCalibData *NCD_GetTPCalibration(void) -{ - return &GetNcdWorkAddr()->tp; -} - - -//----------------------------------- -// オプション情報の取得。 - -// 言語コードの取得 -static inline NvLangCode NCD_GetLanguageOrg(void) -{ - return (NvLangCode)GetNcdWorkAddr()->option.language; -} - -static inline NvLangCode NCD_GetLanguage(void) -{ - return (NvLangCode)GetNcdExWorkAddr()->language; -} - - -// RTCオフセット値の取得 -static inline s64 NCD_GetRtcOffset(void) -{ - return GetNcdWorkAddr()->option.rtcOffset; -} - -// RTCクロック調整値の取得 -static inline u8 NCD_GetRtcClockAdjust(void) -{ - return GetNcdWorkAddr()->option.rtcClockAdjust; -} - -// RTCの前回セットした年の取得 -static inline u8 NCD_GetRtcLastSetYear(void) -{ - return GetNcdWorkAddr()->option.rtcLastSetYear; -} - -// 起動シーケンスの自動起動ONか?(0:OFF, 1:ON) -static inline int NCD_GetAutoBootFlag(void) -{ - return (int)GetNcdWorkAddr()->option.autoBootFlag; -} - -// バックライトOFFか?(0:ON, 1:OFF) -static inline int NCD_GetBackLightOffFlag(void) -{ - return (int)GetNcdWorkAddr()->option.backLightOffFlag; -} - -// フラッシュ壊れシーケンス中かどうか? -static inline int NCD_GetDestroyFlash(void) -{ - return (int)GetNcdWorkAddr()->option.destroyFlashFlag; -} - -// 誕生日データがセットされているか? -static inline int NCD_GetInputBirthday(void) -{ - return (int)GetNcdWorkAddr()->option.input_birthday; -} - -// 好きな色データがセットされているか? -static inline int NCD_GetInputFavoriteColor(void) -{ - return (int)GetNcdWorkAddr()->option.input_favoriteColor; -} - -// TPキャリブレーションデータがセットされているか? -static inline int NCD_GetInputTP(void) -{ - return (int)GetNcdWorkAddr()->option.input_tp; -} - -// 言語コードがセットされているか? -static inline int NCD_GetInputLanguage(void) -{ - return (int)GetNcdWorkAddr()->option.input_language; -} - -// RTCデータがセットされているか? -static inline int NCD_GetInputRTC(void) -{ - return (int)GetNcdWorkAddr()->option.input_rtc; -} - -// オーナー情報のニックネームがセットされているか? -static inline int NCD_GetInputNickname(void) -{ - return (int)GetNcdWorkAddr()->option.input_nickname; -} - -//========================================================= -// データセット -//========================================================= -//----------------------------------- -// オーナー情報全体のセット。 -static inline void NCD_SetOwnerInfo(NvOwnerInfo *owinfop) -{ - SVC_CpuCopy( owinfop, &GetNcdWorkAddr()->owner, sizeof(NvOwnerInfo), 16); -} - -// 好きな色のセット。 -static inline void NCD_SetFavoriteColor(u8 favoriteColor) -{ - GetNcdWorkAddr()->owner.favoriteColor = favoriteColor; -} - -// 誕生日のセット。 -static inline void NCD_SetBirthday(NvDate *birthp) -{ - GetNcdWorkAddr()->owner.birthday.month = birthp->month; - GetNcdWorkAddr()->owner.birthday.day = birthp->day; -} - -// ニックネームのセット。 -static inline void NCD_SetNickname(NvNickname *namep) -{ - SVC_CpuCopy( namep, &GetNcdWorkAddr()->owner.nickname, sizeof(NvNickname), 16); -} - -// コメントのセット。 -static inline void NCD_SetComment(NvComment *commentp) -{ - SVC_CpuCopy( commentp, &GetNcdWorkAddr()->owner.comment, sizeof(NvComment), 16); -} - - -//----------------------------------- -// アラーム情報のセット。 -static inline void NCD_SetAlarmData(NvAlarm *alarmp) -{ - SVC_CpuCopy( alarmp, &GetNcdWorkAddr()->alarm, sizeof(NvAlarm), 16); -} - - -//----------------------------------- -// タッチパネルキャリブレーションデータのセット。 -static inline void NCD_SetTPCalibration(NvTpCalibData *tp_calibp) -{ - SVC_CpuCopy( tp_calibp, &GetNcdWorkAddr()->tp, sizeof(NvTpCalibData), 16); -} - - -//----------------------------------- -// オプション情報のセット。 - -// 言語コードのセット -#if 0 -static inline void NCD_SetLanguage(NvLangCode language) -{ - GetNcdExWorkAddr()->language = language; - GetNcdExWorkAddr()->valid_language_bitmap = LANG_BITMAP_CHINESE; - - if( language == LANG_CHINESE ) { - GetNcdWorkAddr()->option.language = LANG_ENGLISH; - }else { - GetNcdWorkAddr()->option.language = language; - } -} -#endif - -// RTCオフセット値のセット -static inline void NCD_SetRtcOffset(s64 rtcOffset) -{ - GetNcdWorkAddr()->option.rtcOffset = rtcOffset; -} - -// RTCクロック調整値のセット -static inline void NCD_SetRtcClockAdjust(u8 rtcClockAdjust) -{ - GetNcdWorkAddr()->option.rtcClockAdjust = rtcClockAdjust; -} - - -// RTCのLastSetYearへのセット -static inline void NCD_SetRtcLastSetYear(u8 rtcLastSetYear) -{ - GetNcdWorkAddr()->option.rtcLastSetYear = rtcLastSetYear; -} - - -// 起動シーケンスの自動起動ON,OFFフラグをセット。 -static inline void NCD_SetAutoBootFlag(BOOL autoBootFlag) -{ - GetNcdWorkAddr()->option.autoBootFlag = (u16)autoBootFlag; -} - -// バックライトON,OFFフラグをセット。 -static inline void NCD_SetBackLightOffFlag(BOOL backLightOffFlag) -{ - GetNcdWorkAddr()->option.backLightOffFlag = (u16)backLightOffFlag; -} - -// フラッシュ壊れシーケンス中かどうかのフラグセット。 -static inline void NCD_SetDestroyFlash(BOOL destroy) -{ - GetNcdWorkAddr()->option.destroyFlashFlag = (u16)destroy; -} - -// 誕生日データの入力済みフラグセット。 -static inline void NCD_SetInputBirthday(BOOL input) -{ - GetNcdWorkAddr()->option.input_birthday = (u16)input; -} - -// 好きな色データの入力済みフラグセット。 -static inline void NCD_SetInputFavoriteColor(BOOL input) -{ - GetNcdWorkAddr()->option.input_favoriteColor = (u16)input; -} - -// TPキャリブレーションデータの入力済みフラグセット。 -static inline void NCD_SetInputTP(BOOL input) -{ - GetNcdWorkAddr()->option.input_tp = (u16)input; -} - -// 言語コードの入力済みフラグセット。 -static inline void NCD_SetInputLanguage(BOOL input) -{ - GetNcdWorkAddr()->option.input_language = (u16)input; -} - -// RTCデータの入力済みフラグセット。 -static inline void NCD_SetInputRTC(BOOL input) -{ - GetNcdWorkAddr()->option.input_rtc = (u16)input; -} - -// オーナー情報のニックネームの入力済みフラグセット。 -static inline void NCD_SetInputNickname(BOOL input) -{ - GetNcdWorkAddr()->option.input_nickname = (u16)input; -} - - - -#ifdef __cplusplus -} -#endif - -#endif // SDK_CW -#endif // NITRO_CONFIG_DATA_H_ diff --git a/build/tests/DispOwnerInfo/src/data.c b/build/tests/DispOwnerInfo/src/data.c deleted file mode 100644 index 39420c0e..00000000 --- a/build/tests/DispOwnerInfo/src/data.c +++ /dev/null @@ -1,595 +0,0 @@ -/********************************************************************/ -/* data.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - データ群 - - $Log: data.c,v $ - Revision 1.3 2005/04/02 07:43:18 yosiokat - IPL2フォント表示のためのデータ定義追加。 - - Revision 1.2 2005/03/31 06:01:14 yosiokat - インデント調整。 - - Revision 1.1 2004/08/31 06:20:24 Yosiokat - Initial revision - - -*/ - - - -#include -#include "data.h" - -// global variables---------------------------------------- -int (*nowProcess)(void); // 現在実行中のプロセス -GXOamAttr oamBakM[ 128 ]; // OAM バックアップ -GXOamAttr oamBakS[ 128 ]; // OAM バックアップ -u16 bgBakM[ 32*24 ]; // BG バックアップ -u16 bgBakS[ 32*24 ]; // BG バックアップ -TpWork tpd; // タッチパネルデータ -KeyWork pad; // キーパッド入力データ - - -// IPL2フォント表示用 -tFntEntry font_m; -tFntDrawContext context_m; -u16 canvas_m[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -u16 screen_m[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -tFntEntry font_s; -tFntDrawContext context_s; -u16 canvas_s[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -u16 screen_s[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -u16 s_Palette[] = { - 0x0000, 0x001f, 0x03e0, 0x03ff, - 0x7c00, 0x7c1f, 0x7fe0, 0x7fff, - 0x0000, 0x001f, 0x03e0, 0x03ff, - 0x7c00, 0x7c1f, 0x7fe0, 0x7fff, -}; - -/*---------------------- パレットデータ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -// 背景黒ベース -const u16 myPlttData[13][16] = { - {RGB555( 0, 0, 0), RGB555(31, 31, 31), RGB555(15, 15, 15), RGB555( 0, 0, 0),}, // White - {RGB555( 0, 0, 0), RGB555(31, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Red - {RGB555( 0, 0, 0), RGB555( 0, 19, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Green - {RGB555( 0, 0, 0), RGB555( 0, 11, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Blue - {RGB555( 0, 0, 0), RGB555(31, 31, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Yellow - {RGB555( 0, 0, 0), RGB555( 0, 31, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Cyan - {RGB555( 0, 0, 0), RGB555(31, 0, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Purple - {RGB555( 0, 0, 0), RGB555( 0, 31, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Light Green - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // HighLight Yellow - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 31, 31), RGB555( 0, 31, 31),}, // HighLight CYAN - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // HighLight WHITE - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 11, 31), RGB555( 0, 11, 31),}, // HighLight BLUE - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // HighLight RED -}; - - -/*---------------------- キャラクタデータ -------------------------*/ -/* -const u32 sampleCharData[8*0x100] = { - 0x00000000,0x00000000,0x00000000,0x00000000, // 0000h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01010010,0x01010010,0x00000110, // 0001h - 0x00011010,0x01100010,0x00000010,0x00000010, - 0x00000000,0x01011010,0x01010010,0x00010010, // 0002h - 0x00100010,0x00100010,0x00100001,0x00100001, - 0x00000000,0x01010001,0x01010001,0x01111111, // 0003h - 0x00000001,0x00000001,0x00000001,0x01111110, - 0x00000000,0x01010000,0x01111111,0x00100000, // 0004h - 0x00100000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x01010000,0x01010100,0x00001010, // 0005h - 0x00010001,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01011000,0x01011000,0x01111111, // 0006h - 0x00001000,0x00101010,0x01001010,0x01001001, - 0x00000000,0x01010010,0x01101111,0x01010010, // 0007h - 0x00010010,0x00010010,0x00010010,0x00001001, - 0x00000000,0x01010010,0x01011111,0x00000100, // 0008h - 0x00011111,0x00001000,0x00000001,0x00011110, - 0x00000000,0x01010000,0x01011000,0x00000110, // 0009h - 0x00000001,0x00000110,0x00011000,0x00100000, - 0x00000000,0x01010000,0x01111101,0x00010001, // 000ah - 0x00010001,0x00010001,0x00010001,0x00001010, - 0x00000000,0x01010000,0x01011110,0x00100000, // 000bh - 0x00000000,0x00000001,0x00000001,0x00111110, - 0x00000000,0x01010100,0x01011111,0x00001000, // 000ch - 0x00010000,0x00000001,0x00000001,0x00011110, - 0x00000000,0x01010001,0x01010001,0x00000001, // 000dh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01010000,0x01111111,0x00011000, // 000eh - 0x00010100,0x00010100,0x00011000,0x00001100, - 0x00000000,0x01010010,0x01111111,0x00010010, // 000fh - 0x00010010,0x00000010,0x00000010,0x00111100, - 0x00000000,0x00001110,0x01010100,0x01010010, // 0010h - 0x00111111,0x00000100,0x00000100,0x00011000, - 0x00000000,0x01010100,0x01011111,0x00000100, // 0011h - 0x01110100,0x00000010,0x00001010,0x01110010, - 0x00000000,0x01010100,0x01011111,0x00000010, // 0012h - 0x00011110,0x00100001,0x00100000,0x00011110, - 0x00000000,0x01010000,0x01011100,0x00100011, // 0013h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01010000,0x01111111,0x00010000, // 0014h - 0x00001000,0x00001000,0x00001000,0x00110000, - 0x00000000,0x01010010,0x01010010,0x00001100, // 0015h - 0x00000010,0x00000001,0x00000001,0x00111110, - 0x00000000,0x01010001,0x01111101,0x00010001, // 0016h - 0x00010001,0x00111001,0x01010101,0x00011001, - 0x00000000,0x01010100,0x01010011,0x01110010, // 0017h - 0x00010001,0x00010001,0x00001010,0x00000100, - 0x00000000,0x01011110,0x01011000,0x00000100, // 0018h - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x01010000,0x01011100,0x00010010, // 0019h - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01011101,0x01010001,0x00111101, // 001ah - 0x00010001,0x00011001,0x00110101,0x00001001, - 0x00000000,0x01110001,0x01011101,0x00110001, // 001bh - 0x00010001,0x00111001,0x01010101,0x00011001, - 0x00000000,0x01110100,0x01010011,0x00110010, // 001ch - 0x00010001,0x00010001,0x00001010,0x00000100, - 0x00000000,0x01101110,0x01011000,0x00100100, // 001dh - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x01110000,0x01011100,0x00110010, // 001eh - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01111101,0x01010001,0x00111101, // 001fh - 0x00010001,0x00011001,0x00110101,0x00001001, - 0x00000000,0x00000000,0x00000000,0x00000000, // 0020h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00001000,0x00001000,0x00001000, // 0021h - 0x00001000,0x00001000,0x00000000,0x00001000, - 0x00000000,0x01101100,0x01001000,0x00100100, // 0022h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00100100,0x01111111,0x00100100, // 0023h - 0x00100100,0x01111111,0x00010010,0x00010010, - 0x00000000,0x00001000,0x01111110,0x00001001, // 0024h - 0x00111110,0x01001000,0x00111111,0x00001000, - 0x00000000,0x01000010,0x00100101,0x00010010, // 0025h - 0x00001000,0x00100100,0x01010010,0x00100001, - 0x00000000,0x00001110,0x00010001,0x00001001, // 0026h - 0x01000110,0x00101001,0x00110001,0x01001110, - 0x00000000,0x00011000,0x00010000,0x00001000, // 0027h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01110000,0x00001000,0x00000100, // 0028h - 0x00000100,0x00000100,0x00001000,0x01110000, - 0x00000000,0x00000111,0x00001000,0x00010000, // 0029h - 0x00010000,0x00010000,0x00001000,0x00000111, - 0x00000000,0x00001000,0x01001001,0x00101010, // 002ah - 0x00011100,0x00101010,0x01001001,0x00001000, - 0x00000000,0x00001000,0x00001000,0x00001000, // 002bh - 0x01111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002ch - 0x00000000,0x00001100,0x00001000,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002dh - 0x01111111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002eh - 0x00000000,0x00000000,0x00000000,0x00001100, - 0x00000000,0x01000000,0x00100000,0x00010000, // 002fh - 0x00001000,0x00000100,0x00000010,0x00000001, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0030h - 0x01000001,0x01000001,0x01000001,0x00111110, - 0x00000000,0x00011100,0x00010000,0x00010000, // 0031h - 0x00010000,0x00010000,0x00010000,0x00010000, - 0x00000000,0x00111110,0x01000001,0x01000000, // 0032h - 0x00111110,0x00000001,0x00000001,0x01111111, - 0x00000000,0x00111110,0x01000001,0x01000000, // 0033h - 0x00111110,0x01000000,0x01000001,0x00111110, - 0x00000000,0x00100000,0x00110000,0x00101000, // 0034h - 0x00100100,0x00100010,0x01111111,0x00100000, - 0x00000000,0x01111111,0x00000001,0x00111111, // 0035h - 0x01000000,0x01000000,0x01000001,0x00111110, - 0x00000000,0x00111110,0x00000001,0x00111111, // 0036h - 0x01000001,0x01000001,0x01000001,0x00111110, - 0x00000000,0x01111111,0x00100000,0x00100000, // 0037h - 0x00010000,0x00010000,0x00001000,0x00001000, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0038h - 0x00111110,0x01000001,0x01000001,0x00111110, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0039h - 0x01000001,0x01111110,0x01000000,0x00111110, - 0x00000000,0x00000000,0x00001100,0x00000000, // 003ah - 0x00000000,0x00000000,0x00001100,0x00000000, - 0x00000000,0x00000000,0x00001100,0x00000000, // 003bh - 0x00000000,0x00001100,0x00001000,0x00000100, - 0x00000000,0x01100000,0x00011000,0x00000110, // 003ch - 0x00000001,0x00000110,0x00011000,0x01100000, - 0x00000000,0x00000000,0x01111111,0x00000000, // 003dh - 0x00000000,0x00000000,0x01111111,0x00000000, - 0x00000000,0x00000011,0x00001100,0x00110000, // 003eh - 0x01000000,0x00110000,0x00001100,0x00000011, - 0x00000000,0x00111110,0x01000001,0x01000001, // 003fh - 0x00110000,0x00001000,0x00000000,0x00001000, - 0x00000000,0x00011100,0x00100010,0x01001001, // 0040h - 0x01010101,0x01010101,0x01010101,0x00111010, - 0x00000000,0x00001000,0x00010100,0x00010100, // 0041h - 0x00100010,0x00111110,0x01000001,0x01000001, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0042h - 0x00111111,0x01000001,0x01000001,0x00111111, - 0x00000000,0x00111100,0x01000010,0x00000001, // 0043h - 0x00000001,0x00000001,0x01000010,0x00111100, - 0x00000000,0x00011111,0x00100001,0x01000001, // 0044h - 0x01000001,0x01000001,0x00100001,0x00011111, - 0x00000000,0x01111111,0x00000001,0x00000001, // 0045h - 0x01111111,0x00000001,0x00000001,0x01111111, - 0x00000000,0x01111111,0x00000001,0x00000001, // 0046h - 0x00111111,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00111100,0x01000010,0x00000001, // 0047h - 0x01111001,0x01000001,0x01000010,0x00111100, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0048h - 0x01111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00111110,0x00001000,0x00001000, // 0049h - 0x00001000,0x00001000,0x00001000,0x00111110, - 0x00000000,0x01000000,0x01000000,0x01000000, // 004ah - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01100001,0x00011001,0x00000101, // 004bh - 0x00000011,0x00000101,0x00011001,0x01100001, - 0x00000000,0x00000001,0x00000001,0x00000001, // 004ch - 0x00000001,0x00000001,0x00000001,0x01111111, - 0x00000000,0x01000001,0x01100011,0x01010101, // 004dh - 0x01001001,0x01000001,0x01000001,0x01000001, - 0x00000000,0x01000001,0x01000011,0x01000101, // 004eh - 0x01001001,0x01010001,0x01100001,0x01000001, - 0x00000000,0x00011100,0x00100010,0x01000001, // 004fh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0050h - 0x00111111,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00011100,0x00100010,0x01000001, // 0051h - 0x01000001,0x01011001,0x00100010,0x01011100, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0052h - 0x00111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00111110,0x01000001,0x00000001, // 0053h - 0x00111110,0x01000000,0x01000001,0x00111110, - 0x00000000,0x01111111,0x00001000,0x00001000, // 0054h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0055h - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01000001,0x01000001,0x00100010, // 0056h - 0x00100010,0x00010100,0x00010100,0x00001000, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0057h - 0x01001001,0x01010101,0x01100011,0x01000001, - 0x00000000,0x01000001,0x00100010,0x00010100, // 0058h - 0x00001000,0x00010100,0x00100010,0x01000001, - 0x00000000,0x01000001,0x00100010,0x00010100, // 0059h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01111111,0x00100000,0x00010000, // 005ah - 0x00001000,0x00000100,0x00000010,0x01111111, - 0x00000000,0x01111100,0x00000100,0x00000100, // 005bh - 0x00000100,0x00000100,0x00000100,0x01111100, - 0x00000000,0x00100010,0x00010100,0x00111110, // 005ch - 0x00001000,0x00111110,0x00001000,0x00001000, - 0x00000000,0x00011111,0x00010000,0x00010000, // 005dh - 0x00010000,0x00010000,0x00010000,0x00011111, - 0x00000000,0x00001000,0x00010100,0x00100010, // 005eh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 005fh - 0x00000000,0x00000000,0x00000000,0x01111111, - 0x00000000,0x00010000,0x00001000,0x00011000, // 0060h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00011110,0x00100001, // 0061h - 0x00111110,0x00100001,0x00100001,0x01011110, - 0x00000000,0x00000001,0x00000001,0x00111111, // 0062h - 0x01000001,0x01000001,0x01000001,0x00111111, - 0x00000000,0x00000000,0x00111100,0x01000010, // 0063h - 0x00000001,0x00000001,0x01000010,0x00111100, - 0x00000000,0x01000000,0x01000000,0x01111110, // 0064h - 0x01000001,0x01000001,0x01000001,0x01111110, - 0x00000000,0x00000000,0x00111110,0x01000001, // 0065h - 0x01111111,0x00000001,0x01000001,0x00111110, - 0x00000000,0x00110000,0x00001000,0x00001000, // 0066h - 0x01111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x01111110,0x01000001, // 0067h - 0x01000001,0x01111110,0x01000000,0x00111110, - 0x00000000,0x00000001,0x00000001,0x00000001, // 0068h - 0x00111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00001000,0x00000000,0x00001000, // 0069h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00100000,0x00000000,0x00100000, // 006ah - 0x00100000,0x00100001,0x00100001,0x00011110, - 0x00000000,0x00000001,0x00000001,0x01100001, // 006bh - 0x00011001,0x00000111,0x00011001,0x01100001, - 0x00000000,0x00001000,0x00001000,0x00001000, // 006ch - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00110111,0x01001001, // 006dh - 0x01001001,0x01001001,0x01001001,0x01001001, - 0x00000000,0x00000000,0x00111111,0x01000001, // 006eh - 0x01000001,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00000000,0x00011100,0x00100010, // 006fh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00000000,0x00111101,0x01000011, // 0070h - 0x01000001,0x01000011,0x00111101,0x00000001, - 0x00000000,0x00000000,0x01011110,0x01100001, // 0071h - 0x01000001,0x01100001,0x01011110,0x01000000, - 0x00000000,0x00000000,0x00110001,0x00001101, // 0072h - 0x00000011,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00000000,0x00111110,0x01000001, // 0073h - 0x00001110,0x00110000,0x01000001,0x00111110, - 0x00000000,0x00000100,0x00000100,0x01111111, // 0074h - 0x00000100,0x00000100,0x00000100,0x01111000, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0075h - 0x01000001,0x01000001,0x01000001,0x01111110, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0076h - 0x00100010,0x00100010,0x00010100,0x00001000, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0077h - 0x01001001,0x00101010,0x00101010,0x00010100, - 0x00000000,0x00000000,0x00100001,0x00010010, // 0078h - 0x00001100,0x00001100,0x00010010,0x00100001, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0079h - 0x00100010,0x00011100,0x00001000,0x00000110, - 0x00000000,0x00000000,0x00111111,0x00010000, // 007ah - 0x00001000,0x00000100,0x00000010,0x00111111, - 0x00000000,0x00001000,0x00011110,0x01100100, // 007bh - 0x00011000,0x00100100,0x00000100,0x01111000, - 0x00000000,0x00000000,0x00011110,0x00000100, // 007ch - 0x00011110,0x00110101,0x00101101,0x00010010, - 0x00000000,0x00000000,0x00000000,0x00010001, // 007dh - 0x00100001,0x00100001,0x00000001,0x00000010, - 0x00000000,0x00000000,0x00011100,0x00000000, // 007eh - 0x00011110,0x00100000,0x00100000,0x00011100, - 0x00000000,0x00000000,0x00011100,0x00000000, // 007fh - 0x00111110,0x00010000,0x00001100,0x00110010, - 0x00000000,0x00000000,0x00000100,0x00101111, // 0080h - 0x01000100,0x00011110,0x00100101,0x00010110, - 0x00000000,0x00000000,0x00001010,0x00011110, // 0081h - 0x00101011,0x00100010,0x00010100,0x00000100, - 0x00000000,0x00000000,0x00001000,0x00011101, // 0082h - 0x00101011,0x00101001,0x00011001,0x00000100, - 0x00000000,0x00000000,0x00001000,0x00111000, // 0083h - 0x00001000,0x00011110,0x00101001,0x00000110, - 0x00000000,0x00000000,0x00000000,0x00011100, // 0084h - 0x00100011,0x00100000,0x00100000,0x00011100, - 0x00000000,0x00000110,0x01001001,0x00110000, // 0085h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000100,0x00111111,0x00000100, // 0086h - 0x00111110,0x01010101,0x01001101,0x00100110, - 0x00000000,0x00000000,0x00100001,0x01000001, // 0087h - 0x01000001,0x01000001,0x00000001,0x00000010, - 0x00000000,0x00111100,0x00000000,0x00111110, // 0088h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x00011100,0x00000000,0x00111110, // 0089h - 0x00010000,0x00001000,0x00010100,0x01100010, - 0x00000000,0x00100100,0x01011111,0x00000100, // 008ah - 0x00111110,0x01000101,0x01000101,0x00100010, - 0x00000000,0x00100010,0x01001111,0x01010010, // 008bh - 0x01010010,0x00010010,0x00010010,0x00001001, - 0x00000000,0x00000100,0x00111110,0x00001000, // 008ch - 0x00111110,0x00010000,0x00000010,0x00111100, - 0x00000000,0x00100000,0x00011000,0x00000110, // 008dh - 0x00000001,0x00000110,0x00011000,0x00100000, - 0x00000000,0x00100000,0x01111101,0x00100001, // 008eh - 0x00100001,0x00100001,0x00100001,0x00010010, - 0x00000000,0x00011110,0x00100000,0x00000000, // 008fh - 0x00000000,0x00000001,0x00000001,0x00111110, - 0x00000000,0x00001000,0x01111111,0x00010000, // 0090h - 0x00100000,0x00000010,0x00000010,0x00111100, - 0x00000000,0x00000001,0x00000001,0x00000001, // 0091h - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00010000,0x01111111,0x00011000, // 0092h - 0x00010100,0x00010100,0x00011000,0x00001100, - 0x00000000,0x00100010,0x01111111,0x00100010, // 0093h - 0x00100010,0x00000010,0x00000010,0x01111100, - 0x00000000,0x00111100,0x00010000,0x00001100, // 0094h - 0x01111111,0x00001000,0x00001000,0x00110000, - 0x00000000,0x00000100,0x00011111,0x00000100, // 0095h - 0x01110100,0x00000010,0x00001010,0x01110010, - 0x00000000,0x00001000,0x01111111,0x00000100, // 0096h - 0x00111100,0x01000010,0x01000000,0x00111100, - 0x00000000,0x00000000,0x00011100,0x00100011, // 0097h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01111111,0x00010000,0x00001000, // 0098h - 0x00001000,0x00001000,0x00001000,0x00110000, - 0x00000000,0x00000010,0x00110010,0x00001100, // 0099h - 0x00000010,0x00000001,0x00000001,0x00111110, - 0x00000000,0x00100100,0x01001111,0x01000010, // 009ah - 0x00010001,0x00111100,0x00010010,0x00001100, - 0x00000000,0x00000010,0x01111010,0x01000010, // 009bh - 0x00000010,0x00000010,0x00001010,0x01110010, - 0x00000000,0x00100010,0x00111110,0x01010010, // 009ch - 0x01001011,0x01101101,0x01010101,0x00110010, - 0x00000000,0x00110010,0x01001011,0x01000110, // 009dh - 0x01000110,0x01110010,0x01001011,0x00110010, - 0x00000000,0x00011100,0x00101010,0x01001001, // 009eh - 0x01001001,0x01000101,0x01000101,0x00110010, - 0x00000000,0x00100001,0x01111101,0x00100001, // 009fh - 0x00100001,0x00111001,0x01100101,0x00011001, - 0x00000000,0x00000100,0x00100011,0x01100010, // 00a0h - 0x00100001,0x00100001,0x00010010,0x00001100, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a1h - 0x00000000,0x00000100,0x00001010,0x00000100, - 0x00000000,0x01110000,0x00010000,0x00010000, // 00a2h - 0x00010000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a3h - 0x00001000,0x00001000,0x00001000,0x00001110, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a4h - 0x00000000,0x00000010,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00011000, // 00a5h - 0x00011000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01111111,0x01000000,0x01111111, // 00a6h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x00000000,0x00111111,0x00100000, // 00a7h - 0x00010100,0x00001100,0x00000100,0x00000010, - 0x00000000,0x00000000,0x00100000,0x00100000, // 00a8h - 0x00010000,0x00001111,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00000100,0x00111111, // 00a9h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x00000000,0x00000000,0x00111110, // 00aah - 0x00001000,0x00001000,0x00001000,0x01111111, - 0x00000000,0x00000000,0x00010000,0x00111111, // 00abh - 0x00011000,0x00010100,0x00010010,0x00011001, - 0x00000000,0x00000000,0x00000010,0x00111111, // 00ach - 0x00100010,0x00010010,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00111110, // 00adh - 0x00100000,0x00100000,0x00100000,0x01111111, - 0x00000000,0x00000000,0x00111110,0x00100000, // 00aeh - 0x00111110,0x00100000,0x00100000,0x00111110, - 0x00000000,0x00000000,0x00100101,0x00101010, // 00afh - 0x00101010,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00b0h - 0x01111111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01111111,0x01000000,0x00101000, // 00b1h - 0x00011000,0x00001000,0x00001000,0x00000100, - 0x00000000,0x01000000,0x00100000,0x00011000, // 00b2h - 0x00010111,0x00010000,0x00010000,0x00010000, - 0x00000000,0x00001000,0x01111111,0x01000001, // 00b3h - 0x01000001,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00000000,0x00111110,0x00001000, // 00b4h - 0x00001000,0x00001000,0x00001000,0x01111111, - 0x00000000,0x00100000,0x01111111,0x00110000, // 00b5h - 0x00101000,0x00100100,0x00100010,0x00110001, - 0x00000000,0x00000100,0x01111111,0x01000100, // 00b6h - 0x01000100,0x01000100,0x01000010,0x00100001, - 0x00000000,0x00000100,0x00111111,0x00001000, // 00b7h - 0x01111111,0x00010000,0x00010000,0x00010000, - 0x00000000,0x01111100,0x01000100,0x01000100, // 00b8h - 0x01000010,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00000010,0x01111110,0x00100010, // 00b9h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01111110,0x01000000,0x01000000, // 00bah - 0x01000000,0x01000000,0x01000000,0x01111110, - 0x00000000,0x00100010,0x01111111,0x00100010, // 00bbh - 0x00100010,0x00100000,0x00010000,0x00001100, - 0x00000000,0x00000011,0x00000100,0x01000011, // 00bch - 0x01000100,0x00100000,0x00011000,0x00000111, - 0x00000000,0x01111111,0x01000000,0x00100000, // 00bdh - 0x00010000,0x00011000,0x00100100,0x01000011, - 0x00000000,0x00000010,0x01111111,0x01000010, // 00beh - 0x00100010,0x00000010,0x00000010,0x01111100, - 0x00000000,0x01000001,0x01000010,0x01000000, // 00bfh - 0x00100000,0x00100000,0x00011000,0x00000110, - 0x00000000,0x01111110,0x01000010,0x01001110, // 00c0h - 0x01110001,0x01000000,0x00100000,0x00011000, - 0x00000000,0x01100000,0x00011110,0x00010000, // 00c1h - 0x01111111,0x00010000,0x00010000,0x00001100, - 0x00000000,0x01000101,0x01001010,0x01001010, // 00c2h - 0x01000000,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00111110,0x00000000,0x01111111, // 00c3h - 0x00010000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x00000010,0x00000010,0x00000110, // 00c4h - 0x00011010,0x01100010,0x00000010,0x00000010, - 0x00000000,0x00010000,0x00010000,0x01111111, // 00c5h - 0x00010000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x00000000,0x00111110,0x00000000, // 00c6h - 0x00000000,0x00000000,0x00000000,0x01111111, - 0x00000000,0x01111110,0x01000000,0x01000100, // 00c7h - 0x00101000,0x00010000,0x00101000,0x01000110, - 0x00000000,0x00001000,0x01111111,0x00100000, // 00c8h - 0x00010000,0x00011100,0x01101011,0x00001000, - 0x00000000,0x01000000,0x01000000,0x01000000, // 00c9h - 0x00100000,0x00100000,0x00011000,0x00000111, - 0x00000000,0x00010010,0x00100010,0x00100010, // 00cah - 0x01000010,0x01000010,0x01000001,0x01000001, - 0x00000000,0x00000001,0x00000001,0x01111111, // 00cbh - 0x00000001,0x00000001,0x00000001,0x01111110, - 0x00000000,0x01111111,0x01000000,0x01000000, // 00cch - 0x01000000,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00000000,0x00000100,0x00001010, // 00cdh - 0x00010001,0x00100001,0x01000000,0x00000000, - 0x00000000,0x00001000,0x00001000,0x01111111, // 00ceh - 0x00001000,0x00101010,0x01001010,0x01001001, - 0x00000000,0x01111111,0x01000000,0x01000000, // 00cfh - 0x00100010,0x00010100,0x00001000,0x00010000, - 0x00000000,0x00001110,0x01110000,0x00001110, // 00d0h - 0x01110000,0x00000110,0x00011000,0x01100000, - 0x00000000,0x00001000,0x00001000,0x00000100, // 00d1h - 0x00000100,0x00100010,0x01000010,0x01111111, - 0x00000000,0x01000000,0x01000000,0x00100100, // 00d2h - 0x00101000,0x00010000,0x00101100,0x01000011, - 0x00000000,0x01111111,0x00000100,0x01111111, // 00d3h - 0x00000100,0x00000100,0x00000100,0x01111000, - 0x00000000,0x00000010,0x01111111,0x01000010, // 00d4h - 0x00100010,0x00010100,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00111110,0x00100000, // 00d5h - 0x00100000,0x00100000,0x00100000,0x01111111, - 0x00000000,0x01111110,0x01000000,0x01000000, // 00d6h - 0x01111110,0x01000000,0x01000000,0x01111110, - 0x00000000,0x00111110,0x00000000,0x01111111, // 00d7h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01000010,0x01000010,0x01000010, // 00d8h - 0x01000010,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00001010,0x00001010,0x00001010, // 00d9h - 0x01001010,0x01001010,0x00101010,0x00011001, - 0x00000000,0x00000010,0x00000010,0x01000010, // 00dah - 0x01000010,0x00100010,0x00010010,0x00001110, - 0x00000000,0x01111111,0x01000001,0x01000001, // 00dbh - 0x01000001,0x01000001,0x01000001,0x01111111, - 0x00000000,0x01111111,0x01000001,0x01000001, // 00dch - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01000011,0x01000100,0x01000000, // 00ddh - 0x01000000,0x00100000,0x00010000,0x00001111, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00deh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00dfh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00011110,0x00001000,0x00000100, // 00e0h - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x00000000,0x00001100,0x00010010, // 00e1h - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01111101,0x00100001,0x01111101, // 00e2h - 0x00100001,0x00111001,0x01100101,0x00011001, - 0x00000000,0x00111100,0x00010000,0x00111100, // 00e3h - 0x00010000,0x00011100,0x00110010,0x00001100, - 0x00000000,0x00001110,0x00101000,0x00101000, // 00e4h - 0x00111110,0x01100101,0x00100101,0x00010010, - 0x00000000,0x00000100,0x00101111,0x01000100, // 00e5h - 0x00000110,0x01000101,0x01000101,0x00111110, - 0x00000000,0x00100010,0x00100010,0x00111110, // 00e6h - 0x01010010,0x01010101,0x01001101,0x00100110, - 0x00000000,0x00000100,0x00011111,0x00000010, // 00e7h - 0x00011111,0x01000010,0x01000010,0x00111100, - 0x00000000,0x00010010,0x00111110,0x01010011, // 00e8h - 0x01000010,0x00100100,0x00000100,0x00000100, - 0x00000000,0x00001000,0x00111101,0x01001011, // 00e9h - 0x01001001,0x01001001,0x00111000,0x00000100, - 0x00000000,0x00001000,0x00111000,0x00001000, // 00eah - 0x00001000,0x00011110,0x00101001,0x00000110, - 0x00000000,0x00011000,0x00100000,0x00000100, // 00ebh - 0x00111010,0x01000110,0x01000000,0x00111000, - 0x00000000,0x01000010,0x01000010,0x01000010, // 00ech - 0x01000110,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00111110,0x00010000,0x00111100, // 00edh - 0x01000011,0x01001100,0x01010010,0x00111100, - 0x00000000,0x00100010,0x00110011,0x00101010, // 00eeh - 0x00100110,0x00100010,0x00100011,0x01000010, - 0x00000000,0x00111110,0x00010000,0x00111100, // 00efh - 0x01000011,0x01000000,0x01000010,0x00111100, - 0x00000000,0x00000010,0x00111011,0x01000110, // 00f0h - 0x01000010,0x01000011,0x01000010,0x00110010, - 0x00000000,0x00000100,0x00000100,0x00000010, // 00f1h - 0x01000110,0x01000101,0x01000101,0x00111001, - 0x00000000,0x01010100,0x01111111,0x00100100, // 00f2h - 0x00100100,0x00100100,0x00100010,0x00010001, - 0x00000000,0x01010100,0x01011111,0x00000100, // 00f3h - 0x00111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01011110,0x01100010,0x00100010, // 00f4h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010010,0x01111110,0x00100010, // 00f5h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010000,0x01111111,0x00100000, // 00f6h - 0x00100000,0x00100000,0x00100000,0x00111111, - 0x00000000,0x01010010,0x01010010,0x00111111, // 00f7h - 0x00010010,0x00010000,0x00010000,0x00001100, - 0x00000000,0x01010011,0x01010100,0x00100011, // 00f8h - 0x00100100,0x00010000,0x00001000,0x00000111, - 0x00000000,0x01010000,0x01011111,0x00010000, // 00f9h - 0x00001000,0x00001100,0x00010010,0x00100001, - 0x00000000,0x01010010,0x01111111,0x00100010, // 00fah - 0x00010010,0x00000010,0x00000010,0x00111100, - 0x00000000,0x01010001,0x01010010,0x00100000, // 00fbh - 0x00100000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x01011110,0x01010010,0x00100110, // 00fch - 0x00111001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010000,0x01011110,0x00010000, // 00fdh - 0x01111111,0x00010000,0x00010000,0x00001100, - 0x00000000,0x00100101,0x01001010,0x00101010, // 00feh - 0x00100000,0x00010000,0x00001000,0x00000111, - 0x00000000,0x01011110,0x01010000,0x00111111, // 00ffh - 0x00001000,0x00001000,0x00001000,0x00000110 -}; -*/ - - diff --git a/build/tests/DispOwnerInfo/src/data.h b/build/tests/DispOwnerInfo/src/data.h deleted file mode 100644 index cdfa09ce..00000000 --- a/build/tests/DispOwnerInfo/src/data.h +++ /dev/null @@ -1,108 +0,0 @@ -/********************************************************************/ -/* data.h */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - データ定義 ヘッダ -*/ - -#ifndef __DATA_H__ -#define __DATA_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include -#include - -// define data--------------------------------------------- - - // パレットカラー -#define WHITE ( 1 << 12 ) -#define RED ( 2 << 12 ) -#define GREEN ( 3 << 12 ) -#define BLUE ( 4 << 12 ) -#define YELLOW ( 5 << 12 ) -#define CYAN ( 6 << 12 ) -#define PURPLE ( 7 << 12 ) -#define LIGHTGREEN ( 8 << 12 ) -#define HIGHLIGHT_Y ( 9 << 12 ) -#define HIGHLIGHT_C ( 10 << 12 ) -#define HIGHLIGHT_W ( 11 << 12 ) -#define HIGHLIGHT_B ( 12 << 12 ) -#define HIGHLIGHT_R ( 13 << 12 ) - - -// fntライブラリのカラー指定 -#define FNT_BLACK 0 -#define FNT_RED 1 -#define FNT_LIGHT_GREEN 2 -#define FNT_YELLOW 3 -#define FNT_BLUE 4 -#define FNT_PURPLE 5 -#define FNT_VERMILION 6 -#define FNT_WHITE 7 -#define FNT_SYUIRO 8 -#define FNT_GREEN 9 -#define FNT_USER_COLOR 10 - - -#define CANVAS_WIDTH 256 // 文字表示キャンパス横ドット数 -#define CANVAS_HEIGHT 192 //    〃     縦ドット数 -#define LINE_DOT_NUM 10 - - - // キーデータワーク -typedef struct { - u16 trg; // トリガ入力 - u16 cont; // ベタ 入力 -}KeyWork; - - - // タッチパネルワーク -typedef struct { - int detached; // 今回のデータ入力でタッチが離れたことを示す。 - BOOL initial; // 初期化直後は、TPがデタッチされるまで、データ取得しないようにする。 - TPData disp; // 今回の入力値(LCD座標) - TPData raw; // 今回の入力値(TP 座標) - TPData last; // 前回の入力値(LCD座標) -}TpWork; - - -// global variables---------------------------------------- -extern int (*nowProcess)( void ); -extern GXOamAttr oamBakM[ 128 ]; // OAM バックアップ -extern GXOamAttr oamBakS[ 128 ]; // OAM バックアップ -extern u16 bgBakM[ 32*24 ]; // BG バックアップ -extern u16 bgBakS[ 32*24 ]; // BG バックアップ -extern TpWork tpd; // タッチパネルデータ -extern KeyWork pad; // キーパッド入力データ - -extern tFntEntry font_m; -extern tFntDrawContext context_m; -extern u16 canvas_m[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -extern u16 screen_m[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -extern tFntEntry font_s; -extern tFntDrawContext context_s; -extern u16 canvas_s[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -extern u16 screen_s[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -extern u16 s_Palette[ 0x10 ]; - -// global const data--------------------------------------- -extern const u16 myPlttData[13][16]; - - -// function------------------------------------------------ - - -#ifdef __cplusplus -} -#endif - -#endif // __DATA_H__ diff --git a/build/tests/DispOwnerInfo/src/dispNCD.c b/build/tests/DispOwnerInfo/src/dispNCD.c deleted file mode 100644 index 1efdbacb..00000000 --- a/build/tests/DispOwnerInfo/src/dispNCD.c +++ /dev/null @@ -1,282 +0,0 @@ -/********************************************************************/ -/* dispNCD.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - NITRO設定データ表示 - - $Log: dispNCD.c,v $ - Revision 1.7.2.2.8.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2への対応。 - - Revision 1.7.2.3 2006/06/26 04:09:02 yosiokat - DrawNCD_Elementの言語コードの表示判定部を修正。 - - Revision 1.7.2.2 2006/02/01 06:32:43 yosiokat - IPL2バージョン情報取得関数の整理。 - - Revision 1.7.2.1 2005/10/25 08:19:39 yosiokat - ・中国版かどうかの判定を関数IsIPLTypeChineseで行うよう変更。 - ・USG版の時に、バックライト輝度情報(0〜3)を表示するよう変更。 - - Revision 1.7 2005/04/14 05:53:47 yosiokat - NITRO設定データ関係を強制的に中国版にするスイッチFORCE_CHINAを追加。 - - Revision 1.6 2005/04/02 10:04:08 yosiokat - ユーザーカラーの色表示に対応。 - - Revision 1.5 2005/04/02 07:42:54 yosiokat - ユーザーネーム&コメントをIPL2フォントを使用して全て表示できるよう変更。 - - Revision 1.4 2005/04/01 05:47:24 yosiokat - NitroConfigDataEx対応IPL2の時には、言語コードをEx側も表示するよう変更。 - - Revision 1.3 2005/03/31 05:59:15 yosiokat - ・言語コードにCHINESE、UNKNOWNの追加。 - ・TPデータワークのクリアをInitTPData()に変更。 - - Revision 1.2 2005/03/09 04:44:39 yosiokat - 機能追加。 - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - -*/ - -#include -#include "main.h" -#include "NitroConfigData.h" -#include "font.h" - -// define data------------------------------------------ -#define CANCEL_BUTTON_LT_X 2 -#define CANCEL_BUTTON_LT_Y 22 -#define CANCEL_BUTTON_RB_X (CANCEL_BUTTON_LT_X+8) -#define CANCEL_BUTTON_RB_Y (CANCEL_BUTTON_LT_Y+2) - -#define IPL2_GAIJI_SIKAKU 0x25a0 - -/* 本体情報 : 「お気に入りの色」定数 (GXRgb) */ -#define FAVORITE_COLOR_VALUE_GRAY GX_RGB(12,16,19) -#define FAVORITE_COLOR_VALUE_BROWN GX_RGB(23, 9, 0) -#define FAVORITE_COLOR_VALUE_RED GX_RGB(31, 0, 3) -#define FAVORITE_COLOR_VALUE_PINK GX_RGB(31,17,31) -#define FAVORITE_COLOR_VALUE_ORANGE GX_RGB(31,18, 0) -#define FAVORITE_COLOR_VALUE_YELLOW GX_RGB(30,28, 0) -#define FAVORITE_COLOR_VALUE_LIME_GREEN GX_RGB(21,31, 0) -#define FAVORITE_COLOR_VALUE_GREEN GX_RGB( 0,31, 0) -#define FAVORITE_COLOR_VALUE_DARK_GREEN GX_RGB( 0,20, 7) -#define FAVORITE_COLOR_VALUE_SEA_GREEN GX_RGB( 9,27,17) -#define FAVORITE_COLOR_VALUE_TURQUOISE GX_RGB( 6,23,30) -#define FAVORITE_COLOR_VALUE_BLUE GX_RGB( 0,11,30) -#define FAVORITE_COLOR_VALUE_DARK_BLUE GX_RGB( 0, 0,18) -#define FAVORITE_COLOR_VALUE_PURPLE GX_RGB(17, 0,26) -#define FAVORITE_COLOR_VALUE_VIOLET GX_RGB(26, 0,29) -#define FAVORITE_COLOR_VALUE_MAGENTA GX_RGB(31, 0,18) - - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static void DrawNCD_ElementName( void ); -static void DrawNCD_Element( void ); -static void DispUserNameAndComment( u16 color ); - -// global variable ------------------------------------- - -// static variable ------------------------------------- - -// const data ----------------------------------------- -static const u8 *str_lcd[] = { (const u8 *)"TOP", - (const u8 *)"BOTTOM" }; -static const u8 *str_onoff[] = { (const u8 *)"OFF", - (const u8 *)"ON" }; -static const u8 *str_inputFlags[] = { - (const u8 *)"NAME", - (const u8 *)"RTC ", - (const u8 *)"LANG", - (const u8 *)"TP ", - (const u8 *)"COL ", - (const u8 *)"BDAY", }; -static const u8 *str_language[] = { (const u8 *)"JAPANESE", - (const u8 *)"ENGLISH", - (const u8 *)"FRENCH", - (const u8 *)"GERMAN", - (const u8 *)"ITALIAN", - (const u8 *)"SPANISH", - (const u8 *)"CHINISE", - (const u8 *)"HANGUL", - (const u8 *)"UNKNOWN", -}; - -static const u8 *str_userColor[] = { - (const u8 *)"GRAY", - (const u8 *)"BROWN", - (const u8 *)"RED", - (const u8 *)"PINK", - (const u8 *)"ORANGE", - (const u8 *)"YELLOW", - (const u8 *)"LIME GREEN ", - (const u8 *)"GREEN", - (const u8 *)"DARK GREEN", - (const u8 *)"SEA GREEN", - (const u8 *)"TURQUOISE", - (const u8 *)"BLUE", - (const u8 *)"DARK BLUE", - (const u8 *)"PURPLE", - (const u8 *)"VIOLET", - (const u8 *)"MAGENTA", -}; - -static const u16 palette_userColor[] = { - FAVORITE_COLOR_VALUE_GRAY, - FAVORITE_COLOR_VALUE_BROWN, - FAVORITE_COLOR_VALUE_RED, - FAVORITE_COLOR_VALUE_PINK, - FAVORITE_COLOR_VALUE_ORANGE, - FAVORITE_COLOR_VALUE_YELLOW, - FAVORITE_COLOR_VALUE_LIME_GREEN, - FAVORITE_COLOR_VALUE_GREEN, - FAVORITE_COLOR_VALUE_DARK_GREEN, - FAVORITE_COLOR_VALUE_SEA_GREEN, - FAVORITE_COLOR_VALUE_TURQUOISE, - FAVORITE_COLOR_VALUE_BLUE, - FAVORITE_COLOR_VALUE_DARK_BLUE, - FAVORITE_COLOR_VALUE_PURPLE, - FAVORITE_COLOR_VALUE_VIOLET, - FAVORITE_COLOR_VALUE_MAGENTA, -}; - -static const u16 str_sikaku[] = L"■■■■"; - -//====================================================== -// NITRO設定データ表示 -//====================================================== - -// NITRO設定データ表示の初期化 -void SEQ_DispNCD_init( void ) -{ - GXS_SetVisiblePlane( GX_PLANEMASK_NONE ); - GX_SetVisiblePlane ( GX_PLANEMASK_NONE ); - - SVC_CpuClearFast( 0x0000, bgBakM, sizeof(bgBakM) ); - SVC_CpuClearFast( 0x0000, bgBakS, sizeof(bgBakS) ); - - ClearAllStringSJIS(); - -// (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 2.00 W]" ); -// (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 2.01 WC]" ); - (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 5.01 PR1 WCK]" ); - - DrawNCD_ElementName(); - DrawNCD_Element(); - - GX_SetVisiblePlane ( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_OBJ ); -} - - -// NITRO設定データの表示 -int SEQ_DispNCD( void ) -{ - BOOL tp_cancel = FALSE; - - return 0; -} - - -// NITRO設定データの要素名表示 -static void DrawNCD_ElementName( void ) -{ - { // TOP LCD - SetTargetScreenSJIS( BOTTOM_SCREEN ); - (void)DrawStringSJIS( 1, 4, CYAN , (const u8 *)"[OPTION]" ); - (void)DrawStringSJIS( 2, 6, LIGHTGREEN, (const u8 *)"Language :" ); - (void)DrawStringSJIS( 1, 8, CYAN , (const u8 *)"[OWNER]" ); - (void)DrawStringSJIS( 2, 10, LIGHTGREEN, (const u8 *)"fav color:" ); - (void)DrawStringSJIS( 2, 12, LIGHTGREEN, (const u8 *)"birthday :" ); - (void)DrawStringSJIS( 2, 14, LIGHTGREEN, (const u8 *)"nickname :" ); - (void)DrawStringSJIS( 2, 16, LIGHTGREEN, (const u8 *)"comment :" ); -// SetTargetScreenSJIS( BOTTOM_SCREEN ); - } -} - - -// NITRO設定データの各要素表示 -static void DrawNCD_Element( void ) -{ - const u8 *str; - OSOwnerInfo info; - OS_GetOwnerInfo( &info ); - - { // TOP LCD - SetTargetScreenSJIS( BOTTOM_SCREEN ); - if( info.language < LANG_CODE_MAX ) { - str = str_language[ info.language ]; - }else { - str = str_language[ LANG_CODE_MAX ]; - } - (void)DrawStringSJISEx( 12, 6, WHITE, str, 0 ); - -// SetTargetScreenSJIS( BOTTOM_SCREEN ); - } - { - int temp; - - // ユーザーカラー - { - tFntPosition x = (tFntPosition){ 12 * 8 , FNT_POSX_ORIGIN_LEFT, FNT_H_ALIGN_LEFT }; - tFntPosition y = (tFntPosition){ 11 * 8 + 4, FNT_POSY_ORIGIN_BOTTOM , 0 /*unused*/ }; - temp = info.favoriteColor; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, str_sikaku, FNT_USER_COLOR ); - (void)DrawDecimalSJIS( 18, 10, WHITE, &temp, 2, 4 ); - (void)DrawStringSJIS ( 20, 10, WHITE, str_userColor[ temp ] ); - GXS_LoadBGPltt( &palette_userColor[ temp ], FNT_USER_COLOR * 2, 2 ); - } - (void)DrawStringSJIS ( 14, 12, WHITE, (const u8 *)"/" ); - (void)DrawDecimalSJIS( 12, 12, WHITE, &info.birthday.month, 2, 1 ); - (void)DrawDecimalSJIS( 15, 12, WHITE, &info.birthday.day, 2, 1 ); - - // ユーザーネーム、コメント - DispUserNameAndComment( FNT_WHITE ); - - // ユーザーネーム長、コメント長 - (void)DrawDecimalSJIS ( 0, 14, YELLOW, &info.nickNameLength, 2, 1 ); - (void)DrawDecimalSJIS ( 0, 16, YELLOW, &info.commentLength, 2, 1 ); - } -} - - -static void DispUserNameAndComment( u16 color ) -{ - u16 color2 = ( color == FNT_BLACK ) ? (u16)FNT_BLACK : (u16)FNT_YELLOW; - u16 buff[ 256 ]; - tFntPosition x = (tFntPosition){ 12 * 8 , FNT_POSX_ORIGIN_LEFT, FNT_H_ALIGN_LEFT }; - tFntPosition y = (tFntPosition){ 15 * 8 + 4, FNT_POSY_ORIGIN_BOTTOM , 0 /*unused*/ }; - OSOwnerInfo info; - OS_GetOwnerInfo( &info ); - - // ユーザーネームの表示 - MI_CpuCopy16 ( info.nickName, buff, NCD_NICKNAME_LENGTH * 2 ); - buff[ NCD_NICKNAME_LENGTH ] = 0; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color2 ); - buff[ info.nickNameLength ] = 0; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color ); - - - // コメントの表示 - y.pos = 19 * 8 + 4; - MI_CpuCopy16( info.comment, buff, (u32)( info.commentLength * 2 ) ); - buff[ info.commentLength ] = 0; - if ( info.commentLength > 13 ) { // 2行にまたがる時。 - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, &buff[13], color ); - } - buff[ 13 ] = 0; - y.pos -= 2 * 8; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color ); -} - - diff --git a/build/tests/DispOwnerInfo/src/font.c b/build/tests/DispOwnerInfo/src/font.c deleted file mode 100644 index 5d57afd5..00000000 --- a/build/tests/DispOwnerInfo/src/font.c +++ /dev/null @@ -1,1094 +0,0 @@ -/********************************************************************/ -/* font.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - フォント処理 - - - $Log: font.c,v $ - Revision 1.1 2004/08/31 06:20:24 Yosiokat - Initial revision - - - - - // **** old logs **** - - Revision 1.19 2004/08/25 02:21:40 Yosiokat - ・1.14のコメントは間違いのため、再コミット。 - ・small fix. - - Revision 1.18 2004/08/25 02:15:51 Yosiokat - タグred_ipl2_2004_08_24_pp2_isdbg_fixの削除。 - - Revision 1.17 2004/08/20 11:35:29 Yosiokat - small fix. - - Revision 1.16 2004/08/18 07:17:29 Yosiokat - 上下LCDをターゲットにして、別個に初期化できるよう変更。 - - Revision 1.15 2004/08/17 07:52:03 Yosiokat - ・SetTargetScreenSJISを追加して、上下LCDのどちらにも文字表示が可能になるよう変更。 - - Revision 1.14 2004/08/16 10:03:08 Yosiokat - GetStrEntryで範囲外のhandleが与えられた際にNULLを返すよう変更。 - - Revision 1.13 2004/08/13 07:32:58 Yosiokat - small fix. - - Revision 1.12 2004/08/13 04:33:18 Yosiokat - small fix. - - Revision 1.11 2004/08/10 07:02:10 yosiokat - small fix. - - Revision 1.10 2004/08/07 05:44:44 Yosiokat - ・SJIS文字列表示関数を引数でハンドルを指定しない仕様に変更する。 - ・上記変更に対応して、クリア関数も仕様変更。 - - Revision 1.9 2004/07/29 04:58:42 Yosiokat - 構造体のパディングを明示的に追加。 - - Revision 1.8 2004/07/13 00:31:48 Yosiokat - ・サブLCD側のVRAMを対象にするよう変更。 - - Revision 1.7 2004/06/15 13:09:10 Yosiokat - ・MY_PrintfをOS_Printfに。 - - Revision 1.6 2004/06/06 06:28:24 Yosiokat - OS_PrintfをOS_Printfに。 - - Revision 1.5 2004/06/06 02:39:31 Yosiokat - SJISコード判定用の定数定義をfont.hに移動。 - - Revision 1.4 2004/05/31 11:53:23 yosiokat - __DEBUGを__PRINTに変更。 - - Revision 1.3 2004/05/26 05:07:34 Yosiokat - DrawStringSJISで空文字列を指定した際に異常動作するバグを修正。 - - Revision 1.2 2004/05/26 01:16:57 Yosiokat - 文字制御をSJISベースに変更中。 - - Revision 1.1 2004/05/25 08:59:22 Yosiokat - 文字列をSJISで制御するように変更。 - - -*/ - - -#include -#include "font.h" -#include "data.h" - -// define data---------------------------------- -#define SEARCH_ENTRY_MAX_NUM 128 // 処理が重くなるのを防ぐための、エントリのサーチ回数上限 -#define NITRO_CHAR_SIZE 0x20 // NITRO標準キャラクタサイズ(4bitカラー) -#define CHAR_CODE_OFFSET (SJIS_CHAR_VRAM_OFFSET / NITRO_CHAR_SIZE) // キャラナンバーをスクリーンに転送する際のオフセット(BG_CHAR_VRAM+0x4000から始めているので、オフセットは0x200) -#define DRAW_CHAR_NUM_LIMIT (SJIS_CHAR_VRAM_SIZE / NITRO_CHAR_SIZE) // 1つの文字列で表示できるキャラクタ数の限界 - -#define HANDLE_INDEX 0x40000000 - -// フォント構成データ -typedef struct FontComponent { - u16 need_tate_dot; // 文字を表示するのに必要なキャラ単位のドット数 - u16 tate_dot; // 文字キャラの縦ドット数 - u16 yoko_dot; // 文字キャラの横ドット数 - u16 org_char_size; // 文字キャラのbyteサイズ - u32 org_row_size; // 文字キャラ - u32 start_adr; // キャラクタバイナリのスタートアドレス - u32 end_adr; // キャラクタバイナリのエンドアドレス -}FontComponent; - - -// VRAMキャラデータのメモリブロック動的確保リスト -typedef struct CharAllocListTag CharAllocList; -struct CharAllocListTag { - CharAllocList *next; // 次のメモリブロック確保構造体へのポインタ - u16 memTop; // キャラ割り当てテーブルcharAllocTblの占有ブロックの先頭ポイント - u16 memNum; // 確保したメモリブロックの数 -}CharAllocListTag; - - -// SJIS文字列表示のためのVRAMエントリデータ -typedef struct StrEntry { - const FontComponent *font; // 表示するフォントの構成要素 - u32 dataAddr; // データ元のアドレス(IDとして使用) - u32 *charMemp; // 動的に確保したVRAMメモリブロックへのポインタ - u16 charNum; // トータルのキャラ数 - u16 drawPos; // 表示位置(BGスクリーンバッファの先頭からの2byteオフセット) -}StrEntry; - - -// フォントの文字間隔詰め展開用データ -typedef struct FontPropotion { - u16 *leftp; // 現在の左側フォントデータへのポインタ - u16 *rightp; // 現在の右側フォントデータへのポインタ - u16 h_offset; // 16x16ドット単位のキャラクタデータ内の現在の横オフセット - u8 pad[2]; - u32 buff16x16[2][16/2]; -}FontPropotion; - -// インクリメント/インクリメントなしフラグ(SetScrDataで使用) -typedef enum IncFlag { - NO_INC, // インクリメントなし - INC_1 // 1インクリメント -}IncFlag; - -// extern data---------------------------- -extern void _binary_f12han_dat(void); -extern void _binary_f12han_dat_end(void); - - -// function's prototype declaration------------- -static void SetScrData(u16 code_top, StrEntry *sEntryp, IncFlag inc_flag); -static u16 MeasureStringCharWidth(const u8 *str); -static void SpreadStringCloser(u8 *str, StrEntry *sEntryp, u16 v_offset); -static void SetFirstFont(u8 **strpp, u16 v_offset, FontPropotion *fontProp); -static u8 * CloseFontChar(u8 **strpp, u16 v_offset, FontPropotion *fontProp); -static u32 CalcCharCodeAddress(u8 **strpp, const FontComponent **font); -static void SpreadFontZen(u16 bit0_color, u16 bit1_color, u8 *fromAdr, u32 *toAdr); -static void InitStrEntryTable( StrEntry **sEntrypp ); -static StrEntry *GetStrEntry( u16 handle ); -static StrEntry **GetStrEntryAddress( u16 handle ); -static int InsertStrEntry(u16 *handle, u16 charNum); -static int InsertStrEntry2(u16 handle, u16 charNum); -static u16 DeleteStrEntry( u16 handle); -static BOOL GetEmptyStrEntry(u32 dataAddr, u16 *handlep); -static u16 SearchStrEntry(u32 dataAddr); -static u8 * HexToDecimalString(const void *hexp, u8 *strp, u16 figure, u16 size); -static u8 * HexToString(const void *hexp, u8 *strp, u16 figure); -static void InitAllocSystemSJIS( TargetScreen target ); -static void *AllocMemoryFromVram( int size ); -static void FreeMemoryToVram( void *p ); - -static u16 DrawStringSJIS_Core(u16 x, u16 y, u16 color, const void *strp, int handleIndex); -static int CalcHandleIndex(u32 dataAddr, int index); - -// global variables----------------------------- - - -// static variables----------------------------- -static int font_init = 0; -static TargetScreen targetScreen = BOTTOM_SCREEN; -static const FontComponent *nowFontHan; -static StrEntry *entryTblS[ STR_ENTRY_MAX_NUM ]; -static StrEntry *entryTblM[ STR_ENTRY_MAX_NUM ]; -static StrEntry **entryTblp; -static u16 *bgBakp; - -// const data----------------------------------- -const u16 tbl_ASCII_to_SJIS[0x100]; -const FontComponent fontTypeTableHan[] = { - { 16, 12, 6, 12, 14*0xbc, (u32)&_binary_f12han_dat, (u32)&_binary_f12han_dat_end}, -}; - - -// functions description------------------------ - -//---------------------------------------------- -// API関数 -//---------------------------------------------- - -// フォントAPIの初期化 -void InitFont( TargetScreen target) -{ - if( font_init & (0x01 << target ) ) { // ターゲットが初期すみならリターン - return; - } - - InitAllocSystemSJIS( target ); // ターゲットのVRAMアリーナ初期化 - - if( target == TOP_SCREEN ) { // ターゲットのエントリを初期化 - InitStrEntryTable( &entryTblM[0] ); - }else { - InitStrEntryTable( &entryTblS[0] ); - } - - if( font_init == 0 ) { // まだ何も初期化されていないなら、スクリーンを初期設定に。 - SetTargetScreenSJIS( target ); - } - - SetFont( (FontType)0 ); - font_init |= 0x01 << target; -} - - -// 表示フォントの切り替え -void SetFont(FontType font) -{ - if(font >= FONT_TYPE_MAX) { - font = (FontType)0; - } - nowFontHan = &fontTypeTableHan[font]; -} - - -// 表示ターゲットスクリーンの切り替え -void SetTargetScreenSJIS( TargetScreen target ) -{ - targetScreen = target; - if( target == TOP_SCREEN ) { - entryTblp = &entryTblM[0]; - bgBakp = bgBakM; - }else { - entryTblp = &entryTblS[0]; - bgBakp = bgBakS; - } -} - - -// 指定されたSJIS文字列を表示する。(ハンドル指定なしでハンドル算出加算値付き) -static u16 DrawStringSJIS_Core(u16 x, u16 y, u16 color, const void *strp, int handleIndex) -{ - StrEntry *sEntryp; - int newEntry; - u16 handle; - u16 charNum; - u16 code; - u16 v_offset = 1; // ※v_offsetは引数にすることもできる。 - - InitFont( targetScreen ); - - // 空文字列チェック - if(*(u8 *)strp == 0x00) { - return 0; - } - - // 文字列表示に必要なキャラクタ数の測定 - charNum = MeasureStringCharWidth((const u8 *)strp); - if(charNum > DRAW_CHAR_NUM_LIMIT) { // 必要キャラクタ数が512以内ならメモリ確保。 - OS_Printf("SJIS-draw: str length max over.\n"); - return DSJIS_ERR_STR_LENGTH_TOO_LONG; - } - - // ハンドル取得 - if( !GetEmptyStrEntry( (u32)handleIndex, &handle ) ) { - OS_Printf("SJIS-draw: error StrEntry get failed.\n"); - return DSJIS_ERR_ENTRY_GET_FAILED; - } - - // 文字列エントリの登録 - newEntry = InsertStrEntry2( handle, charNum ); - if(newEntry < 0) { - OS_Printf("SJIS-draw: error StrEntry alloc failed.\n"); - return DSJIS_ERR_ENTRY_ALLOC_FAILED; - } - sEntryp = GetStrEntry(handle); // エントリへのポインタを格納 - sEntryp->dataAddr = (u32)handleIndex; - - // VRAMキャラメモリの動的確保 - if(newEntry > 0) { - sEntryp->charMemp = AllocMemoryFromVram( charNum * NITRO_CHAR_SIZE * 2 ); - // ※縦も2キャラ分必要なので、NITRO_CHAR_SIZE*2 -// OS_Printf("alloc charMemp = %x\n",sEntryp->charMemp); - if( sEntryp->charMemp == NULL ) { // メモリ確保に失敗したら、エントリのメモリを解放してリターン - OS_Printf("VRAM char memory alloc failed.\n"); - OS_Free(sEntryp); - return DSJIS_ERR_CHAR_ALLOC_FAILED; - } - } - - // 文字列エントリの登録 - sEntryp->font = nowFontHan; // 現在のフォントタイプを格納 - sEntryp->drawPos = (u16)(x + y * 0x20); // 表示場所を格納。 - sEntryp->charNum = charNum; - - // 縦配置位置指定v_offsetの矯正 - if(v_offset) { - if(((nowFontHan->tate_dot & 0x07)== 0)) { // 縦8dot or 16dotの場合はv_offsetは0 - v_offset = 0; - }else { - if( (16 - nowFontHan->tate_dot) < v_offset ) { // それ以外の時は、縦16dotに収まる範囲に矯正 - v_offset = (u16)(16 - nowFontHan->tate_dot); - } - } - } - // 対象文字列のフォントデータをビット展開&キャラデータ詰めをおこなって、確保したVRAMキャラメモリに転送 - SpreadStringCloser((u8 *)strp, sEntryp, v_offset); - - // スクリーンデータに今回の文字列のキャラナンバーを書き込み - code = (u16)( (((u32)sEntryp->charMemp - (u32)G2_GetBG1CharPtr()) / NITRO_CHAR_SIZE) | color ); - SetScrData(code, sEntryp, INC_1); - - return handle; -} - -// ハンドルインデックスの算出 -static int CalcHandleIndex(u32 dataAddr, int index) -{ - if(index) { - index += HANDLE_INDEX + (int)dataAddr; // インデックスを加算した場合は、他のデータのアドレスと被らないよう、NITROメモリマップ外になるようオフセットを加算。 - }else { - index = (int)dataAddr; - } - return index; -} - - -// 指定されたSJIS文字列を表示する。(ハンドル指定なし) -u16 DrawStringSJIS(u16 x, u16 y, u16 color, const void *strp) -{ - return DrawStringSJIS_Core( x, y, color, strp, (int)strp); // index = strp でCoreをコール -} - - -// 指定された値を16進数で表示する。(ハンドル指定なし版) -u16 DrawHexSJIS(u16 x, u16 y, u16 color, const void *hexp, u16 figure) -{ - u8 buff[16]; - u8 *strp = HexToString(hexp, buff, figure); - return DrawStringSJIS_Core(x, y, color, strp, (int)hexp); -} - - -// 指定された値を10進数で表示する。(ハンドル指定なし版) -u16 DrawDecimalSJIS(u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size) -{ - u8 buff[16]; - u8 *strp = HexToDecimalString(hexp, buff, figure, size); - return DrawStringSJIS_Core(x, y, color, strp, (int)hexp); -} - - -// 指定されたSJIS文字列を表示する。(ハンドル指定なしでハンドル算出加算値付き) -u16 DrawStringSJISEx(u16 x, u16 y, u16 color, const void *strp, int index) -{ - index = CalcHandleIndex( (u32)strp, index); - return DrawStringSJIS_Core( x, y, color, strp, index); // index を加算してCoreをコール -} - - -// 指定された値を16進数で表示する。(ハンドル指定なし版) -u16 DrawHexSJISEx(u16 x, u16 y, u16 color, const void *hexp, u16 figure, int index) -{ - u8 buff[16]; - u8 *strp = HexToString(hexp, buff, figure); - index = CalcHandleIndex( (u32)hexp, index); - return DrawStringSJIS_Core(x, y, color, strp, index); -} - - -// 指定された値を10進数で表示する。(ハンドル指定なし版) -u16 DrawDecimalSJISEx(u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size, int index) -{ - u8 buff[16]; - u8 *strp = HexToDecimalString(hexp, buff, figure, size); - index = CalcHandleIndex( (u32)hexp, index); - return DrawStringSJIS_Core(x, y, color, strp, index); -} - - -// 指定コードから始まるスクリーンデータのセット -static void SetScrData(u16 code_top, StrEntry *sEntryp, IncFlag inc_flag) -{ - u16 i; - u16 lastPos; - u16 pos_l; - u16 *buffp_l; - u16 *buffp_h; - - lastPos = 0x800 >> 1; // バッファ最終位置 == BGスクリーンサイズ(0x800) - pos_l = (u16)(sEntryp->drawPos + 0x0020); // 下8dotキャラクタ表示位置 - buffp_h = bgBakp + sEntryp->drawPos; - buffp_l = buffp_h + 0x0020; - - for(i = 0; i < sEntryp->charNum; i++) { - *buffp_h++ = code_top; - code_top += inc_flag; - if(nowFontHan->need_tate_dot == 16) { // 必要縦ドットが16の場合(8ドット文字以外全部)、もう1キャラセット - *buffp_l++ = code_top; - } - code_top += inc_flag; - pos_l++; - if(pos_l == lastPos) { - break; - } - } -} - - -// 指定されたハンドルのSJIS文字列をクリアする。 -void ClearStringSJIS_handle(u16 handle) -{ - StrEntry *sEntryp; - - InitFont( targetScreen ); - - sEntryp = GetStrEntry(handle); - if(sEntryp == NULL) { - return; - } - - // スクリーンデータのクリア - SetScrData(0x0000, sEntryp, NO_INC); - - // キャラクタデータのクリア -// MI_CpuClearFast(sEntryp->charMemp, sEntryp->charNum * NITRO_CHAR_SIZE * 2); - // 動的に確保したVRAMキャラデータのクリア - FreeMemoryToVram( sEntryp->charMemp ); // このエントリが確保していたキャラクタメモリの解放。 - (void)DeleteStrEntry(handle); -} - - -// 指定されたデータアドレスで表示しているSJIS文字列をクリアする。 -void ClearStringSJIS(void *datap) -{ - u16 handle = SearchStrEntry( (u32)datap ); - - if( handle > STR_ENTRY_MAX_NUM ) { - return; - } - ClearStringSJIS_handle(handle); -} - - -// 指定されたデータアドレスで表示しているSJIS文字列をクリアする。Ex系で描画したものを消す場合。 -void ClearStringSJISEx(void *datap, int handleIndex) -{ - u16 handle; - - handleIndex = CalcHandleIndex( (u32)datap, handleIndex); - - handle = SearchStrEntry( (u32)handleIndex ); - - if( handle > STR_ENTRY_MAX_NUM ) { - return; - } - ClearStringSJIS_handle(handle); -} - - - -// 現在登録されている全てのSJIS文字列をクリアする(動的メモリも全て解放) -void ClearAllStringSJIS(void) -{ - u16 handle; - - InitFont( targetScreen ); - - for(handle = 0; handle < STR_ENTRY_MAX_NUM; handle++) { - if( GetStrEntry( handle ) != NULL) { - ClearStringSJIS_handle(handle); - } - } -} - - -// 指定されたハンドルで表示されている文字列のカラーを変更。 -u16 ChangeColorSJIS(u16 handle, u16 new_color) -{ - int i; - u16 *buffp_l; - u16 *buffp_h; - StrEntry *sEntryp = GetStrEntry( handle ); // エントリへのポインタを格納 - - if((handle > STR_ENTRY_MAX_NUM) || (sEntryp == NULL)) { - return 0; - } - - buffp_h = bgBakp + sEntryp->drawPos; - buffp_l = buffp_h + 0x20; - for(i = 0; i < sEntryp->charNum; i++) { - *buffp_h = (u16)((*buffp_h & 0x0fff) | new_color); - *buffp_l = (u16)((*buffp_l & 0x0fff) | new_color); - buffp_h++; - buffp_l++; - } - return 1; -} - -//---------------------------------------------- -// 文字列エントリテーブルの処理 -//---------------------------------------------- - -// エントリテーブルの初期化 -static void InitStrEntryTable( StrEntry **sEntrypp ) -{ - u16 i; - for(i = 0; i < STR_ENTRY_MAX_NUM; i++) { - *sEntrypp++ = NULL; - } -} - - -// 指定されたハンドルのStrEntryポインタを返す -static StrEntry * GetStrEntry( u16 handle ) -{ - if ( handle >= STR_ENTRY_MAX_NUM ) { - return NULL; - }else { -// return entryTblS[ handle ]; - return entryTblp[ handle ]; - } -} - - -// 指定されたハンドルのStrEntryポインタへのポインタを返す -static StrEntry ** GetStrEntryAddress( u16 handle ) -{ - if ( handle >= STR_ENTRY_MAX_NUM ) { - return NULL; - }else { -// return &entryTblS[ handle ]; - return &entryTblp[ handle ]; - } -} - - -// StrEntryの登録 -static int InsertStrEntry(u16 *handle, u16 charNum) -{ - StrEntry **sEntrypp = GetStrEntryAddress( *handle ); - - if(*handle >= STR_ENTRY_MAX_NUM) { - return -1; - }else if(*handle > 0) { - if( *sEntrypp != NULL) { // 指定ハンドルに既にエントリがある場合は、確保メモリ量を新規メモリ量と比べて、 - if( charNum > (*sEntrypp)->charNum ) { // 再確保が必要な場合は、メモリ解放→再確保を行う。 -// OS_Printf("SJIS: same entry free to charMemory.\n"); -// OS_Printf("free charMemp = %x\n",(*sEntrypp)->charMemp); - SetScrData( 0x0000, *sEntrypp, NO_INC ); // スクリーンデータのクリア - FreeMemoryToVram( (*sEntrypp)->charMemp ); // このエントリが確保していたキャラクタメモリの解放。 - return 1; - }else { - if( charNum < (*sEntrypp)->charNum ) { - SetScrData( 0x0000, *sEntrypp, NO_INC ); // スクリーンデータのクリア - } - return 0; // このエントリでは、キャラクタメモリを継続して使用 - } - } - } - - // *handle == 0 // 指定ハンドルが0の時は新しいハンドルを確保 - *handle = 0; - sEntrypp = GetStrEntryAddress( *handle ); - - for( ; *handle < STR_ENTRY_MAX_NUM; (*handle)++ ) { - if( *sEntrypp++ == NULL) { // NULLエントリを探す - break; - } - } - if(*handle == STR_ENTRY_MAX_NUM) { - return -1; // NULLエントリが見つからなかったら、エラー終了。 - } - - // StrEntryのメモリ確保 - *sEntrypp = (StrEntry *)OS_Alloc( sizeof(StrEntry) ); - if( *sEntrypp == NULL) { - OS_Printf("StrEntry allocate failed.\n"); - return -1; - }else { - return 1; - } -} - - -// エントリ挿入処理2 -static int InsertStrEntry2(u16 handle, u16 charNum) -{ - StrEntry **sEntrypp = GetStrEntryAddress( handle ); - - if( *sEntrypp != NULL) { // 指定ハンドルに既にエントリがある場合は、確保メモリ量を新規メモリ量と比べて、 - if( charNum > (*sEntrypp)->charNum ) { // 再確保が必要な場合は、メモリ解放→再確保を行う。 -// OS_Printf("SJIS: same entry free to charMemory.\n"); -// OS_Printf("free charMemp = %x\n",(*sEntrypp)->charMemp); - SetScrData( 0x0000, *sEntrypp, NO_INC ); // スクリーンデータのクリア - FreeMemoryToVram( (*sEntrypp)->charMemp ); // このエントリが確保していたキャラクタメモリの解放。 - return 1; - }else { - if( charNum < (*sEntrypp)->charNum ) { - SetScrData( 0x0000, *sEntrypp, NO_INC ); // スクリーンデータのクリア - } - return 0; // このエントリでは、キャラクタメモリを継続して使用 - } - } - - // StrEntryのメモリを新規確保 - *sEntrypp = (StrEntry *)OS_Alloc( sizeof(StrEntry) ); - if( *sEntrypp == NULL) { - OS_Printf("StrEntry allocate failed.\n"); - return -1; - }else { - return 1; - } -} - - -// 指定されたハンドルのStrEntry要素をエントリテーブルから削除 -static u16 DeleteStrEntry(u16 handle) -{ - StrEntry **sEntrypp = GetStrEntryAddress( handle ); - - if( *sEntrypp == NULL) { - return NULL; - } - - OS_Free( *sEntrypp ); - *sEntrypp = NULL; - - return handle; -} - - -// 空きエントリを探す(あんま効率よくない) -static BOOL GetEmptyStrEntry(u32 dataAddr, u16 *handlep) -{ - int i = SEARCH_ENTRY_MAX_NUM; // 処理が重くなるのを防ぐため、サーチ回数に制限を加える。 - u16 handle = (u16)( (dataAddr >> 2) & (STR_ENTRY_MAX_NUM - 1) ); - - while(i--) { - StrEntry *sEntryp = GetStrEntry( handle ); - if( sEntryp == NULL ) { - *handlep = handle; - return TRUE; // 新規ハンドル位置確保 - }else { - if( sEntryp->dataAddr == dataAddr ) { - *handlep = handle; - return TRUE; // 既存ハンドル位置発見 - } - handle = (u16)( (handle + 1) & (STR_ENTRY_MAX_NUM - 1) ); - } - } - return FALSE; -} - - -// 指定データのハンドルを探す(あんま効率よくない) -static u16 SearchStrEntry(u32 dataAddr) -{ - int i = SEARCH_ENTRY_MAX_NUM; // 処理が重くなるのを防ぐため、サーチ回数に制限を加える。 - u16 handle = (u16)( (dataAddr >> 2) & (STR_ENTRY_MAX_NUM - 1) ); - - while(i--) { - StrEntry *sEntryp = GetStrEntry( handle ); - if(sEntryp != NULL) { - if( sEntryp->dataAddr == dataAddr ) { - return handle; // 既存ハンドル位置発見 - } - } - handle = (u16)( (handle + 1) & (STR_ENTRY_MAX_NUM - 1) ); - } - return 0xffff; -} - - -//---------------------------------------------- -// キャラクタVRAMの動的確保処理 -//---------------------------------------------- - -// 文字列表示に必要なキャラクタ数の測定 -static u16 MeasureStringCharWidth(const u8 *str) -{ - u16 totalWidth = 0; // 文字列のトータルの横ドットサイズ - u16 charNum = 0; // 文字列表示に必要なキャラクタ数 - - // 文字列のトータルの横ドットサイズを算出 - while(*str) { // 各文字は SJIS か ASCII か? - if( ((*str >= SJIS_HIGHER_CODE1_MIN) && (*str <= SJIS_HIGHER_CODE1_MAX)) - || ((*str >= SJIS_HIGHER_CODE2_MIN) && (*str <= SJIS_HIGHER_CODE2_MAX)) ) { - str += 2; // SJIS文字 - totalWidth += nowFontHan->yoko_dot; - }else { - str++; // ASCII文字 - totalWidth += nowFontHan->yoko_dot; - } - } - // トータル横ドット数から、文字列の表示に必要なキャラクタ数を算出 - charNum = (u16)(totalWidth >> 3); - if(totalWidth & 0x0007) { - charNum = (u16)(charNum + 1); - } - - return charNum; -} - - -//---------------------------------------------- -// フォントデータ→NITROキャラデータへの変換関数群 -//---------------------------------------------- - -// 指定された文字列を指定メモリブロックに展開しながら転送(使用フォントによって文字詰めも行う) -static void SpreadStringCloser(u8 *strp, StrEntry *sEntryp, u16 v_offset) -{ - u32 charBuff[(NITRO_CHAR_SIZE * 4) / 4]; // 16x16キャラ2文字で4キャラ分のバッファ。(2文字展開して、文字詰めを行うため) - u8 *charMemp; - u8 *fromAdr; - u16 i; - u16 charNum; - FontPropotion fontPro; - - // Spread target string char data to WRAM pool - charNum = sEntryp->charNum; - charMemp = (u8 *)sEntryp->charMemp; - fontPro.h_offset = 0; - fontPro.leftp = (u16 *)0x0; - fontPro.rightp = (u16 *)0x0; - - while(1) { - // 隣接する2つの1bitフォントデータを16x16ドットキャラクタ配列にロード - if(fontPro.h_offset == 0) { - SetFirstFont(&strp, v_offset, &fontPro); // 表示文字列を16x16ドット単位に区切った時に先頭にくるキャラクタをロード - } - fromAdr = CloseFontChar(&strp, v_offset, &fontPro); // 上記キャラクタに隣接するキャラクタをロード - - // ロードした1bitフォントデータを4bitNITROキャラデータに展開 - SpreadFontZen(3, 1, fromAdr, (u32 *)charBuff); // キャラクタデータを4bitに展開。 - - // 展開したキャラデータをVRAMにコピー - fromAdr = (u8 *)charBuff; - for(i = 0; i < 2; i++) { // 生成した16x16ドット(4キャラ)分のデータを転送 - MI_CpuCopyFast(fromAdr, charMemp, (NITRO_CHAR_SIZE * 2)); - fromAdr += NITRO_CHAR_SIZE * 2; - charMemp+= NITRO_CHAR_SIZE * 2; - if(--charNum == 0) { - return; - } - } - } -} - - -// 最初のフォントデータをバッファにセット -static void SetFirstFont(u8 **strpp, u16 v_offset, FontPropotion *fontProp) -{ - u8 tate; - u8 *fontAdr; - u16 *firstp; - const FontComponent *fontComp; - - if(**strpp == 0x00) { - return; - } - - fontAdr = (u8 *)CalcCharCodeAddress(strpp, &fontComp); // 今回の文字のコードから、フォントデータ格納アドレスを算出。 - - MI_CpuClearFast(fontProp->buff16x16[0], 64); // 16x16ドット単位の一時展開バッファのクリア - - firstp = (u16 *)fontProp->buff16x16[0] + v_offset; - for(tate = 0; tate < fontComp->tate_dot - 1; tate++) { - *firstp = (u16)(*fontAdr++ << 8); - if(fontComp->yoko_dot > 8) { - *firstp |= *fontAdr++; - } - firstp++; - } - fontProp->h_offset = fontComp->yoko_dot; - fontProp->leftp = (u16 *)fontProp->buff16x16[0]; - fontProp->rightp = (u16 *)fontProp->buff16x16[1]; -} - - -// 隣接するフォントデータをバッファにセット -static u8 * CloseFontChar(u8 **strpp, u16 v_offset, FontPropotion *fontProp) -{ - u8 tate; - u8 *fontAdr; - u16 *temp; - u16 *leftp_tmp; - u16 *rightp_tmp; - const FontComponent *fontComp; - - while(fontProp->h_offset < 16) { - if(**strpp == 0x00) { - break; - } - - fontAdr = (u8 *)CalcCharCodeAddress(strpp, &fontComp); // 今回の文字のコードから、フォントデータ格納アドレスを算出。 - - leftp_tmp = fontProp->leftp + v_offset; // フォントデータを横ドット詰めしながらロード - rightp_tmp = fontProp->rightp + v_offset; - for(tate=0; tate < fontComp->tate_dot - 1; tate++) { - *rightp_tmp = (u16)(*fontAdr++ << 8); - if(fontComp->yoko_dot > 8) { - *rightp_tmp |= *fontAdr++; - } - - *leftp_tmp |= *rightp_tmp >> fontProp->h_offset; - *rightp_tmp <<= 16 - fontProp->h_offset; - leftp_tmp++; - rightp_tmp++; - } - fontProp->h_offset += fontComp->yoko_dot; - } - fontProp->h_offset -= 16; - temp = fontProp->leftp; - fontProp->leftp = fontProp->rightp; - fontProp->rightp = temp; - return (u8 *)temp; -} - - -// 文字コードに対応したフォントデータ格納アドレスを算出する。 -static u32 CalcCharCodeAddress(u8 **strpp, const FontComponent **font) -{ - u8 higher_code; - u8 lower_code; - u16 sjis_code; - u32 adr; - - // 対象文字が SJIS or ASCII かを判定 - higher_code = *(*strpp)++; - if( ((higher_code >= SJIS_HIGHER_CODE1_MIN) && (higher_code <= SJIS_HIGHER_CODE1_MAX)) - ||((higher_code >= SJIS_HIGHER_CODE2_MIN) && (higher_code <= SJIS_HIGHER_CODE2_MAX)) ) { // SJISか? - lower_code = *(*strpp)++; - *font = nowFontHan; - }else { // ASCII - sjis_code = tbl_ASCII_to_SJIS[higher_code]; - higher_code = (u8)(sjis_code >> 8); - lower_code = (u8)(sjis_code & 0x00ff); - *font = nowFontHan; - } - - // 文字コードからフォントデータアドレスを算出 - if(higher_code <= SJIS_HIGHER_CODE1_MIN + 3) { - higher_code -= 0x81; - }else if(higher_code <= SJIS_HIGHER_CODE1_MIN + 6) { - higher_code -= 0x83; - }else if(higher_code <= SJIS_HIGHER_CODE1_MAX) { - higher_code -= 0x84; - }else if(higher_code >= SJIS_HIGHER_CODE2_MIN) { - higher_code -= 0xc4; - } - - if(lower_code < 0x80) { - lower_code -= 0x40; - }else { - lower_code -= 0x41; - } - - adr = (*font)->start_adr - +((*font)->org_row_size) * higher_code - +((*font)->org_char_size+2) * lower_code + 2; - - return adr; -} - - -// 指定バッファの1bitフォントデータを4bitNITROキャラデータに展開。 -static void SpreadFontZen(u16 bit0_color, u16 bit1_color, u8 *fromAdr, u32 *toAdr) -{ - int i; - u8 tate; - u8 yoko; - u8 rd_data; - u32 wr_data; - u32 b0c; - u32 b1c; - u32 *toAdr_left; - u32 *toAdr_right; - - toAdr_left = toAdr; - toAdr_right = toAdr + 16; // toAdr + (16 * 4byte) - - for(tate = 0; tate < nowFontHan->need_tate_dot; tate++) { // キャラクタの縦ドット数だけ展開 - // 左右それぞれの8dotキャラを展開 - for(yoko = 0; yoko < 2; yoko++) { - wr_data = 0x00000000; // ライトデータ初期化 - - if(tate < nowFontHan->tate_dot) { - rd_data = *fromAdr++; // 左右8dotキャラの読み出し - b0c = (u32)bit0_color; // bit0 のカラー - b1c = (u32)bit1_color; // bit1 のカラー - - for(i = 0; i < 8; i++) { // 8dot分の各1bitの判定 - if(rd_data & 0x80) { - wr_data |= b1c; // "1"をカラー1へ - }else { - wr_data |= b0c; // "0"をカラー0へ - } - rd_data <<= 1; - b0c <<= 4; - b1c <<= 4; - } - } - - if(yoko==0) { - *toAdr_right++ = wr_data; // 32bit書きこみ - }else { - *toAdr_left++ = wr_data; - } - } - } -} - - -//---------------------------------------------- -// MALLOCシステムの初期化 -//---------------------------------------------- - -// VRAM上にヒープを作成。(アリーナにVRAMはないので、WRAM_MAIN, WRAM_SUBのアリーナで代用) -static void InitAllocSystemSJIS( TargetScreen target ) -{ - void* tempLo; - OSHeapHandle hh; - - // VRAM上にヒープを作成 - - if( target == TOP_SCREEN ) { - // メインLCD - OS_SetArenaLo( OS_ARENA_WRAM_MAIN, (void *)VRAM_M_ARENA_LO ); - OS_SetArenaHi( OS_ARENA_WRAM_MAIN, (void *)VRAM_M_ARENA_HI ); - tempLo = OS_InitAlloc( OS_ARENA_WRAM_MAIN, OS_GetWramMainArenaLo(), OS_GetWramMainArenaHi(), 1 ); - OS_SetArenaLo( OS_ARENA_WRAM_MAIN, tempLo ); - - hh = OS_CreateHeap( OS_ARENA_WRAM_MAIN, OS_GetWramMainArenaLo(), OS_GetWramMainArenaHi() ); - if(hh < 0) OS_Panic( "ARM9-MAIN LCD: Fail to create heap...\n" ); - OS_Printf( " arena lo = %x\n", OS_GetWramMainArenaLo() ); - OS_Printf( "WRAM arena hi = %x\n", OS_GetWramMainArenaHi() ); - hh = OS_SetCurrentHeap( OS_ARENA_WRAM_MAIN, hh ); - }else { // BOTTOM_SCREEN - // サブLCD - OS_SetArenaLo( OS_ARENA_WRAM_SUB, (void *)VRAM_S_ARENA_LO ); - OS_SetArenaHi( OS_ARENA_WRAM_SUB, (void *)VRAM_S_ARENA_HI ); - tempLo = OS_InitAlloc( OS_ARENA_WRAM_SUB, OS_GetWramSubArenaLo(), OS_GetWramSubArenaHi(), 1 ); - OS_SetArenaLo( OS_ARENA_WRAM_SUB, tempLo ); - - hh = OS_CreateHeap( OS_ARENA_WRAM_SUB, OS_GetWramSubArenaLo(), OS_GetWramSubArenaHi() ); - if(hh < 0) OS_Panic( "ARM9-SUB LCD: Fail to create heap...\n" ); - OS_Printf( "WRAM arena lo = %x\n", OS_GetWramSubArenaLo() ); - OS_Printf( "WRAM arena hi = %x\n", OS_GetWramSubArenaHi() ); - hh = OS_SetCurrentHeap( OS_ARENA_WRAM_SUB, hh ); - } -} - - -// VRAMへのキャラメモリ確保 -static void *AllocMemoryFromVram( int size ) -{ - if ( targetScreen == TOP_SCREEN ) { - return OS_AllocFromWramMain( size ); // ※縦も2キャラ分必要なので、NITRO_CHAR_SIZE*2 - }else { - return OS_AllocFromWramSub ( size ); // ※縦も2キャラ分必要なので、NITRO_CHAR_SIZE*2 - } -} - - -// VRAMへのキャラメモリ解放 -static void FreeMemoryToVram( void *p ) -{ - if ( targetScreen == TOP_SCREEN ) { - OS_FreeToWramMain( p ); - }else { - OS_FreeToWramSub( p ); - } -} - - -//---------------------------------------------- -// 16進データを文字列に変換 -//---------------------------------------------- - -// メインメモリからでも大丈夫な形式での1byteのデータ読み出し。 -__inline static u16 ReadByteHWBus(const void *srcp) -{ - if((int)srcp & 0x00000001) return (u16)(*(u16 *)((int)srcp ^ 0x00000001) >> 8); - else return (u16)(*(u16 *)(srcp) & 0x00ff); -} - -// 16進データを10進文字列に変換 -static u8 *HexToDecimalString(const void *hexp, u8 *strp, u16 figure, u16 size) -{ - u16 i; - u32 target = 0; - - for(i = 0; i < size; i++) { - target |= ReadByteHWBus( ((u8 *)hexp)++ ) << (8 * i); - } - - strp += figure; - *strp-- = 0x00; - for(i = 0; i < figure; i++) { - CP_SetDiv32_32(target, 10); - *strp-- = (u8 )(CP_GetDivRemainder32() + 0x30); - target = (u32) CP_GetDivResult32(); - } - return (strp + 1); -} - - -// 16進データを16進文字列に変換 -static u8 *HexToString(const void *hexp, u8 *strp, u16 figure) -{ - u16 i; - u8 hex; - - strp += figure; - *strp-- = 0x00; - - for(i = 0; i < figure; i++){ - hex = (u8)ReadByteHWBus(hexp); - if(i & 0x01){ - hex = (u8)( (hex >> 4) & 0x0f); - ((u8 *)hexp)++; - }else{ - hex = (u8)( hex & 0x0f); - } - if(hex < 0x000a) hex += 0x30; - else hex += 0x41 - 0x0a; - *strp-- = hex; - } - return (strp + 1); -} - - -//---------------------------------------------- -// ASCII -> SJIS 変換テーブル -//---------------------------------------------- - -const u16 tbl_ASCII_to_SJIS[0x100] = { - // 00 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 10 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 20 - 0x8140,0x8149,0x8168,0x81f2,0x8190,0x8193,0x8195,0x8166, - 0x8169,0x816a,0x8196,0x817b,0x8143,0x817c,0x8144,0x815e, - // 30 - 0x824f,0x8250,0x8251,0x8252,0x8253,0x8254,0x8255,0x8256, - 0x8257,0x8258,0x8146,0x8147,0x8183,0x8181,0x8184,0x8148, - // 40 - 0x8197,0x8260,0x8261,0x8262,0x8263,0x8264,0x8265,0x8266, - 0x8267,0x8268,0x8269,0x826a,0x826b,0x826c,0x826d,0x826e, - // 50 - 0x826f,0x8270,0x8271,0x8272,0x8273,0x8274,0x8275,0x8276, - 0x8277,0x8278,0x8279,0x816d,0x818f,0x816e,0x814f,0x8151, - // 60 - 0x8165,0x8281,0x8282,0x8283,0x8284,0x8285,0x8286,0x8287, - 0x8288,0x8289,0x828a,0x828b,0x828c,0x828d,0x828e,0x828f, - // 70 - 0x8290,0x8291,0x8292,0x8293,0x8294,0x8295,0x8296,0x8297, - 0x8298,0x8299,0x829a,0x816f,0x8162,0x8170,0x8160,0x81fc, - - // 80 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 90 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // a0 - 0x81fc,0x8142,0x8175,0x8176,0x8141,0x8145,0x8192,0x8340, - 0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362, - // b0 - 0x815b,0x8341,0x8343,0x8345,0x8347,0x8349,0x834a,0x834c, - 0x834e,0x8350,0x8352,0x8354,0x8356,0x8358,0x835a,0x835c, - // c0 - 0x835e,0x8360,0x8363,0x8365,0x8367,0x8369,0x836a,0x836b, - 0x836c,0x836d,0x836e,0x8371,0x8374,0x8377,0x837a,0x837d, - // d0 - 0x837e,0x837f,0x838a,0x8382,0x8384,0x8386,0x8388,0x8389, - 0x838a,0x838b,0x838c,0x838d,0x838f,0x8393,0x814a,0x814b, - - // e0 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // f0 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, -}; - diff --git a/build/tests/DispOwnerInfo/src/font.h b/build/tests/DispOwnerInfo/src/font.h deleted file mode 100644 index 3d13af9a..00000000 --- a/build/tests/DispOwnerInfo/src/font.h +++ /dev/null @@ -1,123 +0,0 @@ -/********************************************************************/ -/* font.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - フォント処理ヘッダ - - - $Log: font.h,v $ - Revision 1.2 2005/03/09 04:44:39 yosiokat - 機能追加。 - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - - - - // **** old logs **** - - Revision 1.7 2004/08/18 07:17:26 Yosiokat - 上下LCDをターゲットにして、別個に初期化できるよう変更。 - - Revision 1.6 2004/08/17 07:52:03 Yosiokat - ・SetTargetScreenSJISを追加して、上下LCDのどちらにも文字表示が可能になるよう変更。 - - Revision 1.5 2004/08/07 05:44:43 Yosiokat - ・SJIS文字列表示関数を引数でハンドルを指定しない仕様に変更する。 - ・上記変更に対応して、クリア関数も仕様変更。 - - Revision 1.4 2004/07/13 00:31:48 Yosiokat - ・サブLCD側のVRAMを対象にするよう変更。 - - Revision 1.3 2004/06/06 02:39:31 Yosiokat - SJISコード判定用の定数定義をfont.hに移動。 - - Revision 1.2 2004/05/26 01:16:57 Yosiokat - 文字制御をSJISベースに変更中。 - - Revision 1.1 2004/05/25 08:59:22 Yosiokat - 文字列をSJISで制御するように変更。 - - -*/ - -#ifndef __FONT_H_ -#define __FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------- -#define STR_ENTRY_MAX_NUM 256 // 登録可能な文字列データの最大個数 - -#define SJIS_CHAR_VRAM_OFFSET 0x100 // SJIS文字列キャラクタ用VRAMのオフセット値 -#define SJIS_CHAR_VRAM_SIZE (0x8000 + 0x20) //   〃          のサイズ(0x20はヒープのヘッダ) - -#define VRAM_M_ARENA_LO (HW_BG_VRAM + SJIS_CHAR_VRAM_OFFSET - 0x20) -#define VRAM_M_ARENA_HI (VRAM_M_ARENA_LO + SJIS_CHAR_VRAM_SIZE) -#define VRAM_S_ARENA_LO (HW_DB_BG_VRAM + SJIS_CHAR_VRAM_OFFSET - 0x20) -#define VRAM_S_ARENA_HI (VRAM_S_ARENA_LO + SJIS_CHAR_VRAM_SIZE) - // VRAMアリーナのLo & Hi - // SJISコード判定用の値 -#define SJIS_HIGHER_CODE1_MIN 0x81 -#define SJIS_HIGHER_CODE1_MAX 0x9f -#define SJIS_HIGHER_CODE2_MIN 0xe0 -#define SJIS_HIGHER_CODE2_MAX 0xea - -// 関数のエラーリターン値 -#define DSJIS_ERR_ENTRY_GET_FAILED 0x8000 -#define DSJIS_ERR_ENTRY_ALLOC_FAILED 0x8001 -#define DSJIS_ERR_CHAR_ALLOC_FAILED 0x8002 -#define DSJIS_ERR_STR_MEMORY_OVER 0x8003 -#define DSJIS_ERR_STR_LENGTH_TOO_LONG 0x8004 - -// SetTargetScreenSJISの引数target -typedef enum TargetScreen { - TOP_SCREEN =0, - BOTTOM_SCREEN -}TargetScreen; - -// フォント種類データ(SelectFontで指定) -typedef enum FontType{ // 全角  半角 - FONT12, // 12x12 & 12x 7dot - FONT_TYPE_MAX -}FontType; - - -// function's prototype declaration------------- - -void InitFont( TargetScreen target ); -void SetFont( FontType font ); -void SetTargetScreenSJIS( TargetScreen target ); -u16 ChangeColorSJIS( u16 handle, u16 new_color ); - -// 以下の表示関数は、データアドレスからデータハンドルを算出するので、ハンドルを引数で与えなくて良いが、同一アドレスのデータを複数場所に配置することができない。 -u16 DrawStringSJIS ( u16 x, u16 y, u16 color, const void *str ); -u16 DrawHexSJIS ( u16 x, u16 y, u16 color, const void *hexp, u16 figure ); -u16 DrawDecimalSJIS( u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size ); - -// Ex系は、引数にindexを設けることで、上記関数で制限されている同一アドレスデータの複数場所配置に対応している。 -u16 DrawStringSJISEx ( u16 x, u16 y, u16 color, const void *strp, int index ); -u16 DrawHexSJISEx ( u16 x, u16 y, u16 color, const void *hexp, u16 figure, int index ); -u16 DrawDecimalSJISEx( u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size, int index ); - -// 表示文字列クリア関数 -void ClearStringSJIS( void *datap ); -void ClearStringSJISEx( void *datap, int handleIndex ); -void ClearStringSJIS_handle( u16 handle ); -void ClearAllStringSJIS( void ); - - -#ifdef __cplusplus -} -#endif - -#endif // __FONT_H_ - diff --git a/build/tests/DispOwnerInfo/src/initFunc.c b/build/tests/DispOwnerInfo/src/initFunc.c deleted file mode 100644 index ceb4211d..00000000 --- a/build/tests/DispOwnerInfo/src/initFunc.c +++ /dev/null @@ -1,149 +0,0 @@ -/********************************************************************/ -/* initFunc.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - 初期化関数群 - - $Log: initFunc.c,v $ - Revision 1.2.10.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2への対応。 - - Revision 1.2.2.1 2006/02/06 11:34:35 yosiokat - GetIPL2CRC16をUSG-IPL2-WW版でのコードのNVRAM格納フォーマットが変更されたことに - 対応させる。 - - Revision 1.2 2005/04/02 07:42:19 yosiokat - IPL2フォントを"s"に変更。 - - Revision 1.1 2005/04/02 06:41:18 yosiokat - main.cから起動時の初期化関数を分離。 - - -*/ - - -#include -#include "data.h" -#include "main.h" - -// define data--------------------------------------------- - -// extern data--------------------------------------------- - -// function's prototype------------------------------------ - -// global variables---------------------------------------- -u32 ipl2_crc32 = 0; - -// static variables---------------------------------------- - - -// const data---------------------------------------------- - - -// ================================================================== -/* function */ - -// 表示系初期化 -void InitDisp( void ) -{ - // メインLCD - { - GX_SetBankForBG ( GX_VRAM_BG_128_A ); //  〃     BG 用 - GX_SetBankForOBJ( GX_VRAM_OBJ_32_FG ); //  〃     OBJ用 - GX_SetGraphicsMode( GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D ); - G2_SetBG1Control( GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode - GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2_SetBG1Priority( 3 ); - G2_BG1Mosaic( FALSE ); - G2_SetBG2ControlText( GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, - GX_BG_CHARBASE_0x10000 - ); - G2_SetBG2Priority( 2 ); - G2_BG2Mosaic( FALSE ); - MI_CpuClearFast( (void *)HW_BG_VRAM, 0x20000 ); // BG -VRAM クリア - MI_CpuClearFast( (void *)HW_OBJ_VRAM, 0x8000 ); // OBJ-VRAM クリア - MI_CpuClearFast( (void *)HW_PLTT, HW_PLTT_SIZE ); // パレット クリア // NitroSDKではcrt0.cでクリアしている。 - MI_CpuFill32( (void *)HW_OAM, 192, HW_OAM_SIZE ); // OAM クリア // NitroSDKではcrt0.cでクリアしている。 - MI_CpuCopyFast( myPlttData, (void *)( HW_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // BGパレット セット - MI_CpuCopyFast( myPlttData, (void *)( HW_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // OBJパレット セット - } - // サブLCD - { - GXS_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_32K); - GX_SetBankForSubBG ( GX_VRAM_SUB_BG_128_C ); // VRAM-C for BGs - GX_SetBankForSubOBJ( GX_VRAM_SUB_OBJ_128_D ); // VRAM-D for BGs - GXS_SetGraphicsMode( GX_BGMODE_0 ); // BGMODE is 0 - G2S_SetBG1Control( GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode - GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2S_SetBG1Priority( 3 ); - G2S_BG1Mosaic( FALSE ); - G2S_SetBG2ControlText( GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, - GX_BG_CHARBASE_0x10000 - ); - G2S_SetBG2Priority( 2 ); - G2S_BG2Mosaic( FALSE ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 ); // display only BG #0 - MI_CpuFill32( (void *)HW_DB_OAM, 192, HW_OAM_SIZE ); // OAM クリア - MI_CpuClearFast( (void *)HW_DB_BG_VRAM, 0x20000 ); // BG -VRAM クリア - MI_CpuClearFast( (void *)HW_DB_OBJ_VRAM, 0x20000 ); // OBJ -VRAM クリア - MI_CpuCopyFast( myPlttData, (void *)( HW_DB_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // BGパレット セット - MI_CpuCopyFast( myPlttData, (void *)( HW_DB_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // OBJパレット セット - } -} - - -//--------------------------------------------------------------------------- -// IPL2フォント初期化 -//--------------------------------------------------------------------------- -void InitIPL2Font( void ) -{ - // フォントインスタンスの作成。 - // 描画用のキャラクタバッファを作成。 - fnt_CreateFont( &font_m, NITRO_LC_Font_s_bnfr, NITRO_LC_Font_s_bncmp ); - fnt_CreateDrawContext( &context_m, canvas_m, CANVAS_WIDTH, CANVAS_HEIGHT, FNT_DCTYPE_4BITS, &font_m ); - - fnt_CreateFont( &font_s, NITRO_LC_Font_s_bnfr, NITRO_LC_Font_s_bncmp ); - fnt_CreateDrawContext( &context_s, canvas_s, CANVAS_WIDTH, CANVAS_HEIGHT, FNT_DCTYPE_4BITS, &font_s ); - - InitIPL2FontBG(); -} - -//--------------------------------------------------------------------------- -// IPL2フォント表示用スクリーン&パレット初期化 -//--------------------------------------------------------------------------- -void InitIPL2FontBG( void ) -{ - int x, y; - - GX_LoadBGPltt ( s_Palette, 0, sizeof(s_Palette) ); - GXS_LoadBGPltt( s_Palette, 0, sizeof(s_Palette) ); - for ( y = 0 ; y < (CANVAS_HEIGHT >> 3) ; ++y ) { - for ( x = 0 ; x < (CANVAS_WIDTH >> 3) ; ++x ) { - screen_m[ y * 32 + x] = (u16)(y * 32 + x); - screen_s[ y * 32 + x] = (u16)(y * 32 + x); - } - } - DC_FlushRange ( screen_m, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - GX_LoadBG2Scr ( screen_m, 0, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - MI_CpuFillFast( canvas_m, 0, sizeof(canvas_m) ); - - DC_FlushRange ( screen_s, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - GXS_LoadBG2Scr( screen_s, 0, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - MI_CpuFillFast( canvas_s, 0, sizeof(canvas_s) ); -} diff --git a/build/tests/DispOwnerInfo/src/main.c b/build/tests/DispOwnerInfo/src/main.c deleted file mode 100644 index 4929f803..00000000 --- a/build/tests/DispOwnerInfo/src/main.c +++ /dev/null @@ -1,167 +0,0 @@ -/********************************************************************/ -/* main.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - メイン - - $Log: main.c,v $ - Revision 1.7 2005/04/06 08:26:57 yosiokat - IPL2フォントチェックでのメモリ確保サイズ増加に伴い、ヒープサイズを0x100000に増加。 - - Revision 1.6 2005/04/02 07:41:57 yosiokat - ・IPL2フォント表示に対応。 - ・起動時の初期化ルーチンをinitFunc.cに分離。 - - Revision 1.5 2005/04/01 05:46:48 yosiokat - デバッグ変数&表示追加。 - - Revision 1.4 2005/03/31 05:58:17 yosiokat - ・NVRAMアクセス関数を修正し、別ソースに分離。 - ・IPL2ヘッダ情報取得を専用関数を用いるよう変更。 - ・GetIPL2CRC16のNVRAMアクセス関数を変更。 - - Revision 1.3 2005/03/09 04:44:39 yosiokat - 機能追加。 - - Revision 1.2 2004/09/23 11:28:32 Yosiokat - 本体フラッシュに格納されているIPL2 verを表示するよう変更。 - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - -*/ - - -#include -#include "data.h" -#include "main.h" - -// define data--------------------------------------------- - -// extern data--------------------------------------------- - -// function's prototype------------------------------------ -static void VBlankIntr( void ); - -// global variables---------------------------------------- - -// static variables---------------------------------------- - - -// const data---------------------------------------------- - - - -// ================================================================== -/* function */ - -static const char *isbn[4] = { "0-000000-00-0", "000-0000-000", "0000", " 000" }; - -// メイン -void NitroMain( void ) -{ - /* OS 初期化 */ - OS_InitPrintServer(); - OS_Init(); -// OS_InitChina(); // SDK 2.01の場合 -// OS_InitChina( isbn ); // SDK 5.1 の場合 - PXI_InitFifo(); - OS_InitThread(); - OS_InitTick(); - OS_InitAlarm(); - FX_Init(); - TP_Init(); - (void)RTC_Init(); - - /* GX 初期化 */ - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - /* Vブランク割込設定 */ - (void)OS_SetIrqFunction( OS_IE_V_BLANK, VBlankIntr ); - (void)OS_EnableIrqMask( OS_IE_V_BLANK ); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - (void)GX_VBlankIntr( TRUE ); - - { /* メモリ割り当ての初期化 */ - enum { MAIN_HEAP_SIZE = 0x100000 } ; - void *heapStart, *nstart; - int hh; - - nstart = OS_InitAlloc( OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 16 ); - OS_SetMainArenaLo( nstart ); - heapStart = OS_AllocFromMainArenaLo( (u32)MAIN_HEAP_SIZE, 32 ); - hh = OS_CreateHeap( OS_ARENA_MAIN, heapStart, (void*)( (u32)heapStart + MAIN_HEAP_SIZE ) ); - (void)OS_SetCurrentHeap( OS_ARENA_MAIN, hh ); - } - - { /* FS 初期化 */ - static u32 fs_tablework[0x100 / 4]; - FS_Init(FS_DMA_NOT_USE); - (void)FS_LoadTable(fs_tablework, sizeof(fs_tablework)); - } - - // Disp初期化 - InitDisp(); - InitIPL2Font(); - /* 表示開始 */ - GX_DispOn(); - GXS_DispOn(); - - // 初期メインループ関数の設定 - pad.cont = 0xffff; - - SEQ_DispNCD_init(); - nowProcess = SEQ_DispNCD; - - /* メインループ */ - while(1) { - SVC_WaitVBlankIntr(); - ReadKeyPad(); - - (void)nowProcess(); - - OS_PrintServer(); - } -} - - -// Vブランク割り込み処理 -static void VBlankIntr( void ) -{ - // OAM, BG-VRAMの更新 - DC_FlushRange ( oamBakM, sizeof(oamBakM) ); - DC_FlushRange ( oamBakS, sizeof(oamBakS) ); - DC_FlushRange ( bgBakM, sizeof(bgBakM) ); - DC_FlushRange ( bgBakS, sizeof(bgBakS) ); - MI_CpuCopyFast( oamBakM, (void*)HW_OAM, sizeof(oamBakM) ); - MI_CpuCopyFast( oamBakS, (void*)HW_DB_OAM, sizeof(oamBakS) ); - MI_CpuCopyFast( bgBakM, (void*)(HW_BG_VRAM + 0xf000), sizeof(bgBakM) ); - MI_CpuCopyFast( bgBakS, (void*)(HW_DB_BG_VRAM + 0xf000), sizeof(bgBakS) ); - - // BG2キャラクタに転送。 - DC_FlushRange ( context_m.canvas, sizeof( canvas_m ) ); - GX_LoadBG2Char ( context_m.canvas, 0, sizeof( canvas_m ) ); - DC_FlushRange ( context_s.canvas, sizeof( canvas_s ) ); - GXS_LoadBG2Char( context_s.canvas, 0, sizeof( canvas_s ) ); - - //---- 割り込みチェックフラグ - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); -} - - -// キー入力データ読み出し -void ReadKeyPad( void ) -{ - u16 readData = PAD_Read(); - pad.trg = (u16)(readData & (readData ^ pad.cont)); // トリガ 入力 - pad.cont = readData; // ベタ 入力 -} - diff --git a/build/tests/DispOwnerInfo/src/main.h b/build/tests/DispOwnerInfo/src/main.h deleted file mode 100644 index e654fccb..00000000 --- a/build/tests/DispOwnerInfo/src/main.h +++ /dev/null @@ -1,41 +0,0 @@ -/********************************************************************/ -/* main.h */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - メイン定義 ヘッダ -*/ - -#ifndef __MAIN_H__ -#define __MAIN_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include -#include -#include "myFunc.h" - -// define data-------------------------------------------- -#define MSG_VIEW_COUNT 30 - - -// function----------------------------------------------- -extern void SEQ_DispNCD_init( void ); -extern int SEQ_DispNCD( void ); - -// プログラム起動時に使用 -extern void InitDisp( void ); -extern void InitIPL2Font( void ); -extern void InitIPL2FontBG( void ); -extern void ReadKeyPad( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __MAIN_H__ diff --git a/build/tests/DispOwnerInfo/src/myChar.c b/build/tests/DispOwnerInfo/src/myChar.c deleted file mode 100644 index 1787d52d..00000000 --- a/build/tests/DispOwnerInfo/src/myChar.c +++ /dev/null @@ -1,667 +0,0 @@ -/********************************************************************/ -/* myChar.c */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - キャラクタ&パレットデータ - - - $Log: myChar.c,v $ - Revision 1.1 2005/02/08 04:41:25 yosiokat - 新規追加。 - - Revision 1.2 2004/05/19 08:25:28 yosiokat - 更新ログの追加。 - - -*/ - -#include "myFunc.h" - -// パレットデータ-------------------------------------------------------------- - -// キャラクタデータ------------------------------------------------------------ -const u16 myChar[0x2800*8/16]={ - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //0 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //3 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //4 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //5 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //6 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //7 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //8 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //10 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //11 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //12 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //13 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //14 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //15 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //16 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //17 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //18 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //19 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //20 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //21 - 0x1333,0x3321,0x2333,0x3332,0x1333,0x3321,0x2333,0x3332, - 0x2113,0x3211,0x2113,0x3211,0x2123,0x3212,0x3213,0x3321, //22 - 0x3323,0x3332,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x2133,0x3321,0x1113,0x3211,0x2123,0x3321, //23 - 0x2133,0x3321,0x1113,0x3211,0x2123,0x3321,0x3233,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1133,0x3211,0x1213,0x3322, //24 - 0x1123,0x3311,0x1233,0x2112,0x1113,0x3211,0x1223,0x3322, - 0x3333,0x3333,0x2133,0x2133,0x1213,0x3212,0x2123,0x3321, //25 - 0x1233,0x3212,0x2133,0x2121,0x3213,0x3212,0x3323,0x3323, - 0x3333,0x3333,0x1133,0x3331,0x2113,0x3212,0x1123,0x3321, //26 - 0x2113,0x2111,0x3213,0x3213,0x1123,0x2121,0x2233,0x3232, - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3332,0x2133,0x3333, //27 - 0x3233,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3321,0x1333,0x3332, //28 - 0x1333,0x3332,0x1333,0x3332,0x2333,0x3331,0x3333,0x3312, - 0x3333,0x3333,0x3133,0x3333,0x1233,0x3333,0x2333,0x3321, //29 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2133,0x3333, - 0x3333,0x3333,0x1333,0x3332,0x1213,0x3212,0x1133,0x3321, //2a - 0x1233,0x3332,0x1133,0x3321,0x1213,0x3212,0x1323,0x3222, - 0x3333,0x3333,0x3333,0x3333,0x1333,0x3332,0x1333,0x3332, //2b - 0x1113,0x3211,0x1223,0x3222,0x1333,0x3332,0x2333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2c - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3332,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2d - 0x1113,0x3211,0x2223,0x3222,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2e - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x2233,0x3333, - 0x3333,0x3333,0x3333,0x2133,0x3333,0x3213,0x3333,0x3321, //2f - 0x1333,0x3332,0x2133,0x3333,0x3213,0x3333,0x3323,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //30 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1133,0x3321,0x1233,0x3321, //31 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x2112,0x1133,0x3211, //32 - 0x2113,0x3322,0x2113,0x3333,0x1113,0x2111,0x2223,0x3222, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x2112,0x1133,0x3211, //33 - 0x2233,0x2112,0x3333,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x3333,0x3211,0x1333,0x3211,0x2133,0x3211, //34 - 0x3213,0x3211,0x1113,0x2111,0x2223,0x3211,0x3333,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2213,0x3322,0x1113,0x3211, //35 - 0x2223,0x2112,0x3333,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x3322,0x1113,0x3211, //36 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2223,0x2122,0x3333,0x3213, //37 - 0x3333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x1123,0x3211, //38 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //39 - 0x1123,0x2111,0x2233,0x2112,0x1133,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, //3a - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, //3b - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3321, - 0x3333,0x3333,0x3333,0x3321,0x1333,0x3332,0x2133,0x3333, //3c - 0x2133,0x3333,0x1233,0x3333,0x2333,0x3321,0x3333,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3211, //3d - 0x2233,0x3222,0x1133,0x3211,0x2233,0x3222,0x3333,0x3333, - 0x3333,0x3333,0x1333,0x3333,0x2333,0x3331,0x3333,0x3212, //3e - 0x3333,0x3213,0x3333,0x3321,0x1333,0x3332,0x2333,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //3f - 0x3223,0x3211,0x1333,0x3321,0x2333,0x3332,0x1333,0x3321, - 0x3333,0x3333,0x1133,0x3321,0x2213,0x3212,0x1213,0x2121, //40 - 0x2113,0x2121,0x2113,0x2121,0x1213,0x3211,0x1123,0x2121, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //41 - 0x1113,0x2111,0x2113,0x2112,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //42 - 0x2113,0x2112,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2223, //43 - 0x2113,0x3333,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x2113,0x2113, //44 - 0x2113,0x2113,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2113,0x2222,0x1113,0x3211, //45 - 0x2113,0x3222,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x1113,0x2111,0x2113,0x2222,0x1113,0x3211, //46 - 0x2113,0x3222,0x2113,0x3333,0x2113,0x3333,0x2223,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x3322,0x2113,0x2111, //47 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x2111,0x2233,0x3222, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x1113,0x2111, //48 - 0x2113,0x2112,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //49 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3333,0x2113,0x3333,0x2113,0x3333,0x2113, //4a - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x3211,0x1113,0x3322, //4b - 0x1113,0x3331,0x2113,0x3311,0x2113,0x2112,0x2223,0x2223, - 0x3333,0x3333,0x2113,0x3333,0x2113,0x3333,0x2113,0x3333, //4c - 0x2113,0x3333,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x2133,0x2133,0x1113,0x1112,0x1113,0x1112, //4d - 0x1113,0x1111,0x2113,0x1121,0x2113,0x1121,0x3223,0x2232, - 0x3333,0x3333,0x2113,0x2113,0x1113,0x2112,0x1113,0x2112, //4e - 0x2113,0x2111,0x2113,0x2111,0x2113,0x2112,0x2223,0x2223, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //4f - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //50 - 0x2113,0x3322,0x2113,0x3333,0x2113,0x3333,0x2223,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //51 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x2111, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //52 - 0x2113,0x2112,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1133,0x2111,0x2113,0x3222,0x1123,0x3331, //53 - 0x1233,0x3311,0x2333,0x2112,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x1223,0x3221,0x1333,0x3321, //54 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2113,0x2113, //55 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2113,0x2113, //56 - 0x2113,0x2113,0x2123,0x3213,0x1233,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x2113,0x1121,0x2113,0x1121,0x2113,0x1121, //57 - 0x1113,0x1111,0x1123,0x2112,0x2133,0x2133,0x3233,0x3233, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x1123,0x3211, //58 - 0x1233,0x3211,0x2113,0x2112,0x2113,0x2113,0x3223,0x3223, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2133,0x3213, //59 - 0x1133,0x3211,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2223,0x2112,0x1333,0x3221, //5a - 0x1133,0x3332,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3322,0x1333,0x3332, //5b - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3313,0x3333,0x3123,0x3333,0x1233,0x3333, //5c - 0x2333,0x3331,0x3333,0x3312,0x3333,0x3123,0x3333,0x3233, - 0x3333,0x3333,0x1333,0x3321,0x2333,0x3321,0x3333,0x3321, //5d - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1333,0x3332,0x2133,0x3321,0x3233,0x3322, //5e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //5f - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3332,0x2333,0x3321, //60 - 0x3333,0x3332,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2213,0x2112, //61 - 0x1123,0x2111,0x2113,0x2112,0x1123,0x2111,0x2233,0x2222, - 0x2113,0x3333,0x2113,0x3333,0x1113,0x3211,0x2113,0x2112, //62 - 0x2113,0x2113,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2122, //63 - 0x2113,0x3233,0x2113,0x2133,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x2113,0x3333,0x2113,0x1133,0x2111,0x2113,0x2112, //64 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x2111,0x2233,0x2222, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2112, //65 - 0x1113,0x2111,0x2113,0x3222,0x1123,0x2111,0x2233,0x3222, - 0x1333,0x3211,0x1133,0x3322,0x1113,0x3321,0x1123,0x3332, //66 - 0x1133,0x3332,0x1133,0x3332,0x1133,0x3332,0x2233,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2111,0x2113,0x2112, //67 - 0x2113,0x2113,0x1123,0x2111,0x2213,0x2112,0x1133,0x3211, - 0x2113,0x3333,0x2113,0x3333,0x1113,0x3311,0x2113,0x2112, //68 - 0x2113,0x2113,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x1333,0x3321,0x2333,0x3332,0x1333,0x3321,0x1333,0x3321, //69 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3211,0x3333,0x3322,0x3333,0x3211,0x3333,0x3211, //6a - 0x3333,0x3211,0x3333,0x3211,0x3213,0x3211,0x1123,0x3321, - 0x2113,0x3333,0x2113,0x3213,0x2113,0x3211,0x1113,0x3321, //6b - 0x1113,0x3321,0x2113,0x3311,0x2113,0x2112,0x2223,0x3223, - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //6c - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x1211,0x1121, //6d - 0x1211,0x1121,0x1211,0x1121,0x1211,0x1121,0x2322,0x2232, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x2113,0x2112, //6e - 0x2113,0x2113,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2112, //6f - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x2113,0x2112, //70 - 0x2113,0x2113,0x1113,0x3211,0x2113,0x3322,0x2113,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2111,0x2113,0x2112, //71 - 0x2113,0x2113,0x1123,0x2111,0x2233,0x2112,0x3333,0x2113, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2112,0x1133,0x2111, //72 - 0x1133,0x3222,0x1133,0x3332,0x1133,0x3332,0x2233,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x1113,0x3322, //73 - 0x1133,0x3211,0x2233,0x2111,0x1133,0x3211,0x2233,0x3322, - 0x1133,0x3332,0x1113,0x3321,0x1123,0x3332,0x1133,0x3332, //74 - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //75 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //76 - 0x2113,0x2113,0x2113,0x3213,0x1113,0x3321,0x2223,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1211,0x1121,0x1211,0x1121, //77 - 0x1211,0x1121,0x1211,0x1121,0x1111,0x2111,0x2222,0x3222, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //78 - 0x1123,0x3211,0x2113,0x2112,0x2113,0x2113,0x3223,0x3223, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //79 - 0x2113,0x2113,0x1123,0x2111,0x2233,0x2112,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x3211, //7a - 0x1333,0x3321,0x1133,0x3332,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x3333,0x3321,0x1333,0x3332,0x1333,0x3332, //7b - 0x2133,0x3333,0x1333,0x3332,0x1333,0x3332,0x3333,0x3321, - 0x3333,0x3333,0x1333,0x3332,0x1333,0x3332,0x1333,0x3332, //7c - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3332,0x2333,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x3333,0x3321,0x3333,0x3321, //7d - 0x3333,0x3213,0x3333,0x3321,0x3333,0x3321,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3113,0x3333, //7e - 0x1221,0x2133,0x2332,0x3211,0x3333,0x3322,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //7f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x2211,0x2222,0x2211,0x2222,0x2211,0x2222,0x2211,0x2222, //80 - 0x2211,0x2222,0x2211,0x2222,0x2211,0x2222,0x2211,0x2222, - 0x1111,0x2222,0x1111,0x2222,0x1111,0x2222,0x1111,0x2222, //81 - 0x1111,0x2222,0x1111,0x2222,0x1111,0x2222,0x1111,0x2222, - 0x1111,0x2211,0x1111,0x2211,0x1111,0x2211,0x1111,0x2211, //82 - 0x1111,0x2211,0x1111,0x2211,0x1111,0x2211,0x1111,0x2211, - 0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111, //83 - 0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111, - 0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222, //84 - 0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222, - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, //85 - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, //86 - 0x1111,0x1111,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //87 - 0x1111,0x1111,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3333,0x2213, //88 - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x1111,0x2222,0x2222, //89 - 0x1111,0x1111,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x1111,0x2222,0x2222, //8a - 0x1111,0x1111,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, //8b - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, - 0x3133,0x3333,0x1133,0x3333,0x1133,0x3331,0x1133,0x3311, //8c - 0x1133,0x3321,0x1133,0x3332,0x2133,0x3333,0x3233,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3332, //8d - 0x2123,0x3213,0x1133,0x3321,0x1213,0x3212,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //8e - 0x3333,0x3321,0x3213,0x3213,0x3213,0x3213,0x2133,0x3323, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //8f - 0x1133,0x3332,0x2213,0x3321,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x2133,0x3333, //90 - 0x1113,0x3321,0x1223,0x3332,0x2133,0x3333,0x1213,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3312, //91 - 0x2123,0x3323,0x1113,0x3321,0x2113,0x3213,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3213,0x3321, //92 - 0x1123,0x3211,0x2113,0x3212,0x1223,0x3322,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //93 - 0x1213,0x3321,0x1113,0x3212,0x1213,0x3211,0x1323,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //94 - 0x1333,0x3321,0x1133,0x3332,0x1213,0x3321,0x1123,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //95 - 0x1333,0x3321,0x2113,0x3212,0x3223,0x3213,0x1333,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //96 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //97 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //98 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //99 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a0 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a1 - 0x3333,0x3333,0x1133,0x3321,0x2133,0x3321,0x1133,0x3321, - 0x3333,0x3333,0x1333,0x3211,0x1333,0x3322,0x1333,0x3332, //a2 - 0x1333,0x3332,0x2333,0x3332,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //a3 - 0x3333,0x3321,0x3333,0x3321,0x1133,0x3321,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a4 - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a5 - 0x1333,0x3332,0x2333,0x3332,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //a6 - 0x1113,0x2111,0x2223,0x2122,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3321, //a7 - 0x2223,0x3321,0x2133,0x3321,0x2133,0x3332,0x3213,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //a8 - 0x1133,0x3332,0x2111,0x3333,0x2122,0x3333,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //a9 - 0x1113,0x3211,0x2213,0x3212,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //aa - 0x1133,0x3321,0x1233,0x3332,0x1333,0x3332,0x1113,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //ab - 0x1113,0x3211,0x2223,0x3321,0x1333,0x3321,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1213,0x3211, //ac - 0x2111,0x3212,0x2122,0x3323,0x1333,0x3332,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //ad - 0x1113,0x3321,0x2223,0x3321,0x3333,0x3321,0x1113,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3211, //ae - 0x2233,0x3212,0x1133,0x3211,0x2233,0x3212,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //af - 0x1213,0x3212,0x2323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //b0 - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x3212, //b1 - 0x2133,0x3213,0x2133,0x3321,0x2133,0x3332,0x3211,0x3333, - 0x3333,0x3333,0x3333,0x2133,0x3333,0x3213,0x1333,0x3321, //b2 - 0x2113,0x3321,0x3223,0x3321,0x3333,0x3321,0x3333,0x3321, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x2213,0x2122, //b3 - 0x3323,0x2133,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x1223,0x3322, //b4 - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3332,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3213,0x1113,0x2111,0x2223,0x3212, //b5 - 0x3333,0x3211,0x1333,0x3212,0x1333,0x3212,0x2113,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x1223,0x2122, //b6 - 0x1333,0x2132,0x2133,0x2133,0x2133,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x2223,0x3221, //b7 - 0x3333,0x3321,0x1113,0x1111,0x2223,0x2212,0x3333,0x3213, - 0x3333,0x3333,0x1133,0x2111,0x2133,0x2122,0x3213,0x2133, //b8 - 0x3323,0x3213,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3213,0x3333,0x1113,0x2111,0x2213,0x3212, //b9 - 0x3321,0x3213,0x3332,0x3321,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //ba - 0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x3213,0x3213,0x1111,0x2111,0x2212,0x3212, //bb - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2133,0x3223,0x2133, //bc - 0x2113,0x2133,0x3223,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x3212, //bd - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3212,0x2113,0x2133, - 0x3333,0x3333,0x2133,0x3333,0x1133,0x2111,0x2111,0x2122, //be - 0x2122,0x3213,0x2133,0x3323,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x2133,0x3213,0x2133, //bf - 0x2123,0x3213,0x3233,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x1133,0x2111,0x2133,0x2122,0x2133,0x2133, //c0 - 0x1213,0x2111,0x2323,0x2122,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x3213,0x1113,0x3321,0x2223,0x3321, //c1 - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1213,0x2132,0x1213,0x2132, //c2 - 0x2323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x1111,0x2111, //c3 - 0x2222,0x3221,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x3333, //c4 - 0x1133,0x3332,0x2133,0x3211,0x2133,0x3322,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3321,0x1111,0x2111,0x2222,0x3221, //c5 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2233,0x3322, //c6 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x3212, //c7 - 0x3133,0x3321,0x1233,0x3332,0x2133,0x3321,0x3211,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1111,0x2111,0x2222,0x3212, //c8 - 0x3333,0x3321,0x1133,0x3212,0x1211,0x2132,0x1322,0x3232, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3213,0x3333,0x3213, //c9 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x1333,0x3332,0x3333,0x3321,0x3213,0x3213, //ca - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x3333,0x3213,0x2133,0x3213,0x3211,0x1113,0x3322, //cb - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x2122, //cc - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x1213,0x3332, //cd - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x3333,0x1333,0x3332,0x1111,0x2111,0x1222,0x3222, //ce - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x2122, //cf - 0x3213,0x3213,0x2133,0x3321,0x1333,0x3332,0x3333,0x3321, - 0x3333,0x3333,0x3113,0x3333,0x1223,0x3311,0x2333,0x2122, //d0 - 0x1133,0x3231,0x2233,0x3212,0x1113,0x3322,0x2223,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x2133,0x3333,0x3213,0x3333, //d1 - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3213,0x3213,0x3213,0x2133,0x3321, //d2 - 0x1333,0x3332,0x1333,0x3332,0x2133,0x3321,0x3211,0x3213, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2122,0x3222, //d3 - 0x1111,0x2111,0x2122,0x3222,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x2133,0x3333,0x1133,0x2111,0x2111,0x2122, //d4 - 0x2122,0x3213,0x2133,0x3323,0x1333,0x3332,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3321,0x2223,0x3321, //d5 - 0x3333,0x3321,0x3333,0x3321,0x3333,0x3321,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //d6 - 0x1113,0x2111,0x2223,0x2122,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x1111,0x2111, //d7 - 0x2222,0x2122,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3213,0x3213,0x3213,0x3213,0x3213,0x3213, //d8 - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1213,0x3332,0x1213,0x3332, //d9 - 0x1213,0x2132,0x1213,0x2132,0x1213,0x3212,0x1321,0x3321, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x3333,0x3213,0x3333, //da - 0x3213,0x3213,0x3213,0x3213,0x3213,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2213,0x2122, //db - 0x3213,0x2133,0x3213,0x2133,0x3213,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2213,0x2122, //dc - 0x3323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2132,0x2223,0x2133, //dd - 0x3333,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x1223,0x2122, //de - 0x1333,0x2132,0x2133,0x2133,0x2133,0x2133,0x3213,0x3213, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x2223,0x3221, //df - 0x3333,0x3321,0x1113,0x1111,0x2223,0x2212,0x3333,0x3213, - 0x3333,0x1213,0x3333,0x2323,0x1133,0x2111,0x2133,0x2122, //e0 - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3213,0x2323,0x1113,0x2111,0x2213,0x3212, //e1 - 0x3321,0x3213,0x3332,0x3321,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x2111,0x2223,0x2122, //e2 - 0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x3213,0x1111,0x2111, //e3 - 0x2212,0x3212,0x3213,0x3213,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x2113,0x2133,0x3223,0x2133, //e4 - 0x2113,0x2133,0x3223,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x2111,0x2223,0x3212, //e5 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3212,0x2113,0x2133, - 0x3333,0x1313,0x2133,0x2323,0x1133,0x2111,0x2111,0x2122, //e6 - 0x2122,0x3213,0x2133,0x3323,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x2133,0x3213,0x2133, //e7 - 0x2123,0x3213,0x3233,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x2111,0x2133,0x2122, //e8 - 0x1213,0x2111,0x2323,0x2122,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x3211,0x2223,0x3321, //e9 - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1213,0x2132,0x1213,0x2132, //ea - 0x2323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x3211,0x2223,0x3322, //eb - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x2133,0x1313,0x2133,0x2323,0x2133,0x3333, //ec - 0x1133,0x3333,0x2133,0x3211,0x2133,0x3322,0x2133,0x3333, - 0x3333,0x1313,0x1333,0x2323,0x3333,0x3331,0x3213,0x3213, //ed - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x1313,0x3213,0x2323,0x3213,0x2111,0x1113,0x3222, //ee - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1123,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x1111,0x2111,0x2222,0x2122, //ef - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x1313,0x2133,0x2323,0x1213,0x3332, //f0 - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x1313,0x1333,0x2323,0x1111,0x2111,0x1222,0x3222, //f1 - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x2213,0x2122, //f2 - 0x3323,0x2133,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3133,0x1333,0x1212,0x3333,0x2121,0x3213,0x3213, //f3 - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x3133,0x3213,0x1213,0x3213,0x2111,0x1113,0x3222, //f4 - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3133,0x3333,0x1213,0x1111,0x2111,0x2222,0x2122, //f5 - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3133,0x3333,0x1213,0x2133,0x2123,0x1213,0x3232, //f6 - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x3133,0x1333,0x1212,0x1111,0x2111,0x1222,0x3222, //f7 - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //f8 - 0x1113,0x2113,0x1223,0x3221,0x2133,0x3332,0x1133,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3321,0x2123,0x2132, //f9 - 0x1113,0x3211,0x2121,0x2121,0x1321,0x2132,0x2113,0x3213, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x3213,0x3213,0x2133, //fa - 0x3213,0x2133,0x3213,0x2133,0x1213,0x3232,0x2133,0x3333, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x1333,0x3211, //fb - 0x2113,0x2122,0x3223,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x1113,0x3211, //fc - 0x2223,0x3321,0x1333,0x3332,0x2133,0x3321,0x3213,0x2113, - 0x3333,0x3333,0x2133,0x2133,0x1133,0x2121,0x2113,0x3232, //fd - 0x1123,0x3211,0x2113,0x2122,0x2121,0x2133,0x2113,0x3213, - 0x3333,0x3333,0x3333,0x3321,0x2133,0x3213,0x1111,0x2132, //fe - 0x2122,0x2121,0x3213,0x3321,0x3321,0x3321,0x1132,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2223,0x3321, //ff - 0x1133,0x2111,0x2233,0x3212,0x3313,0x3323,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3321,0x1333,0x3332, //100 - 0x2133,0x3333,0x1333,0x3332,0x3333,0x3321,0x3333,0x3213, - 0x3333,0x3333,0x3333,0x3213,0x1213,0x2111,0x2213,0x3212, //101 - 0x3213,0x3213,0x3213,0x3213,0x2133,0x3213,0x3233,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2233,0x2122, //102 - 0x3333,0x3213,0x3333,0x3323,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2223,0x3321, //103 - 0x3333,0x3212,0x3333,0x3213,0x3213,0x3333,0x1123,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3333,0x3213,0x3333, //104 - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3213,0x1123,0x3321, - 0x3333,0x3333,0x3333,0x3321,0x1113,0x2111,0x2223,0x3221, //105 - 0x1133,0x3321,0x2133,0x3321,0x1333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3321,0x1113,0x2111, //106 - 0x3211,0x3321,0x3212,0x3321,0x3213,0x2133,0x1133,0x3211, - 0x3333,0x3333,0x2133,0x2133,0x2133,0x2133,0x3233,0x3213, //107 - 0x1113,0x2111,0x1223,0x3222,0x2133,0x3333,0x1333,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //108 - 0x3213,0x2111,0x3213,0x3222,0x1213,0x3332,0x3321,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //109 - 0x1213,0x3311,0x2113,0x2122,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2211,0x2122, //10a - 0x3322,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x2113,0x1133,0x3211,0x2211,0x3321, //10b - 0x1322,0x3332,0x1333,0x3332,0x3333,0x3321,0x3333,0x2113, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x2133,0x2133,0x3211, //10c - 0x1133,0x3322,0x2213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x2133,0x3333,0x1111,0x2112,0x2212,0x3223, //10d - 0x3213,0x3213,0x1321,0x3211,0x2132,0x2112,0x1333,0x3221, - 0x3333,0x3333,0x3333,0x3333,0x1213,0x2111,0x2213,0x3222, //10e - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3321,0x2133,0x2113, - 0x3333,0x3333,0x3333,0x3321,0x3213,0x3321,0x1213,0x3211, //10f - 0x2113,0x2121,0x1121,0x2112,0x2121,0x2121,0x3213,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3211,0x1211,0x2122, //110 - 0x2112,0x2133,0x3213,0x2111,0x3211,0x2121,0x3212,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2122, //111 - 0x2121,0x2133,0x2121,0x2133,0x2121,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x3333,0x3213,0x1121,0x2111,0x2221,0x3212, //112 - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x3333,0x2133,0x3333,0x2111,0x3213,0x3212,0x2113, //113 - 0x3321,0x3213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x1133,0x3333,0x2233,0x3321,0x3333,0x3332, //114 - 0x1213,0x3332,0x3321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3332, //115 - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x2233, - 0x3333,0x3333,0x1321,0x2111,0x2321,0x3212,0x1321,0x2111, //116 - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3321,0x1113,0x3211, //117 - 0x2223,0x3321,0x1113,0x3321,0x2221,0x3211,0x1113,0x3322, - 0x3333,0x3333,0x1113,0x3321,0x1223,0x3332,0x2133,0x3213, //118 - 0x1113,0x3211,0x2121,0x2112,0x3211,0x3213,0x3322,0x3321, - 0x3333,0x3333,0x2133,0x3333,0x1111,0x3212,0x2122,0x2133, //119 - 0x2113,0x3333,0x2121,0x2133,0x3213,0x2133,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3321,0x1213,0x3211,0x2113,0x2121, //11a - 0x1211,0x2132,0x1121,0x2132,0x2121,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3321,0x2123,0x3332, //11b - 0x1113,0x3321,0x2123,0x2132,0x2133,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3321,0x1213,0x3211,0x2113,0x2121, //11c - 0x3211,0x2132,0x2122,0x3213,0x2133,0x3323,0x1333,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1321,0x3211,0x1121,0x2122, //11d - 0x1211,0x2132,0x1321,0x2132,0x1332,0x3212,0x2133,0x3323, - 0x3333,0x3333,0x1333,0x3332,0x1333,0x3211,0x1333,0x3322, //11e - 0x1333,0x3332,0x1113,0x3321,0x1221,0x3212,0x2113,0x3323, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x2133,0x3211, //11f - 0x1213,0x2122,0x2113,0x2133,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x2133,0x3333,0x3213,0x3213,0x3213,0x3213, //120 - 0x2113,0x3213,0x3223,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3321,0x1333,0x3211, //121 - 0x2113,0x2122,0x1221,0x2121,0x2132,0x2121,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3211,0x1213,0x3212,0x1211,0x3212, //122 - 0x2112,0x3213,0x3213,0x3213,0x3211,0x3213,0x3212,0x2133, - 0x3333,0x3333,0x1333,0x3211,0x2113,0x3321,0x1223,0x3332, //123 - 0x1133,0x3211,0x2211,0x2122,0x3322,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3311,0x1211,0x2122, //124 - 0x2112,0x2133,0x3213,0x2133,0x3211,0x2133,0x3212,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1333,0x3332,0x1333,0x3332, //125 - 0x2133,0x3333,0x1133,0x3332,0x1213,0x2132,0x3321,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x2133,0x3213,0x1111,0x2132, //126 - 0x2122,0x2121,0x3213,0x3221,0x3321,0x3321,0x1132,0x3332, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2223,0x3321, //127 - 0x1133,0x2111,0x2233,0x3212,0x3313,0x3323,0x1123,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x3333,0x3321,0x1333,0x3332, //128 - 0x2133,0x3333,0x1233,0x3333,0x2333,0x3331,0x3333,0x3312, - 0x3333,0x1313,0x3333,0x2323,0x1213,0x2111,0x3213,0x3213, //129 - 0x3213,0x3213,0x3213,0x3213,0x2123,0x3213,0x3233,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x3211,0x2233,0x2122, //12a - 0x3333,0x3213,0x3333,0x3323,0x3213,0x3333,0x1123,0x3111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2223,0x3321, //12b - 0x3333,0x3212,0x3333,0x3213,0x3213,0x3323,0x1123,0x3211, - 0x3333,0x3333,0x3333,0x3131,0x3213,0x3232,0x3213,0x3333, //12c - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2321,0x1113,0x2111,0x2223,0x3321, //12d - 0x1133,0x3321,0x2133,0x3321,0x1333,0x3321,0x1113,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x3321,0x1113,0x2111, //12e - 0x2211,0x3221,0x3212,0x3321,0x3213,0x2132,0x1133,0x3211, - 0x3333,0x1313,0x2133,0x2323,0x2133,0x2133,0x3233,0x3213, //12f - 0x1113,0x3111,0x1223,0x3222,0x2133,0x3333,0x1233,0x2111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2123,0x3322, //130 - 0x3213,0x2111,0x3213,0x3222,0x1213,0x3332,0x2321,0x2111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2123,0x3322, //131 - 0x1213,0x3211,0x2113,0x2122,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x3211,0x2211,0x2122, //132 - 0x3322,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x2111,0x2211,0x3221, //133 - 0x1322,0x3332,0x1333,0x3332,0x3333,0x3321,0x3333,0x2113, - 0x3333,0x1313,0x3213,0x2323,0x3213,0x2133,0x2133,0x3211, //134 - 0x1133,0x3322,0x2213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x1121,0x2111,0x2221,0x3212, //135 - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x1313,0x2133,0x2323,0x2111,0x3213,0x3212,0x2113, //136 - 0x3321,0x3213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x1313,0x1133,0x2323,0x2233,0x3321,0x3333,0x3332, //137 - 0x1213,0x3332,0x2321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3333,0x3333,0x3131,0x3333,0x3232,0x1133,0x3332, //138 - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x3233, - 0x3333,0x1313,0x1321,0x2321,0x2321,0x3212,0x1321,0x2111, //139 - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3133,0x3333,0x1213,0x1121,0x2111,0x2221,0x3212, //13a - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x3133,0x2133,0x1213,0x2111,0x2123,0x3213,0x1113, //13b - 0x3321,0x2213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x3133,0x1133,0x1213,0x2233,0x2121,0x3333,0x3232, //13c - 0x1213,0x3332,0x3321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3313,0x3333,0x2121,0x3333,0x3212,0x1133,0x3322, //13d - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x3233, - 0x3333,0x3133,0x1321,0x1211,0x2321,0x2112,0x1321,0x2111, //13e - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //13f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, -}; diff --git a/build/tests/DispOwnerInfo/src/myFunc.c b/build/tests/DispOwnerInfo/src/myFunc.c deleted file mode 100644 index eaa7679d..00000000 --- a/build/tests/DispOwnerInfo/src/myFunc.c +++ /dev/null @@ -1,361 +0,0 @@ -/********************************************************************/ -/* myFunc.c */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - 標準サブルーチン群 - - - $Log: myFunc.c,v $ - Revision 1.1.4.1 2006/02/01 06:29:37 yosiokat - mf_strcpyの仕様変更。 - - Revision 1.1 2005/02/08 04:41:25 yosiokat - 新規追加。 - - Revision 1.2 2004/05/19 08:25:28 yosiokat - 更新ログの追加。 - - -*/ - -#include "myFunc.h" - -// define data---------------------------------- -#define CHAR_INDEX 0x200 // キャラベース0x4000 - - -// function's prototype------------------------- -void mf_copyBuffer(u8 *srcp,u8 *dstp,u16 length); - -// extern data---------------------------------- -//extern u16 bgBakS[32*24]; // BG バックアップ -//extern u32 oamBakS[128*2]; // OAM バックアップ - - -// const data----------------------------------- -const u16 csr_charList1[] ={0x008c, 0x008c, 0x008c, 0x008c}; -const u8 str_time_period[]={" . ."}; - - -// global variable------------------------------ -MyTime myTime; -//KeyWork pad; - -// static variable------------------------------ -static u16 csr_animeCount, csr_animeCharNum; -static u16 key_rapid[4]; -static u16 blinkCount; -static u16 csr_pos_x, csr_pos_y, csr_add_y; - - -// ============================================================================ -// function's description -// ============================================================================ - -// BgBakオフセット値算出 -__inline static u16 *calcBgOffset(u16 pos_x,u16 pos_y) -{ - return bgBakS+pos_x+(pos_y<<5); -} - - -// メインメモリからでも大丈夫な形式での1byteのデータ読み出し。 -__inline static u16 ReadByteHWBus(const void *srcp) -{ - if((int)srcp & 0x00000001) return (u16)(*(u16 *)((int)srcp ^ 0x00000001) >> 8); - else return (u16)(*(u16 *)(srcp) & 0x00ff); -} - - -// 初期化 -void mf_init(void) -{ - mf_KEYPAD_initRapid(); - mf_CSR_init(0,0,0); - mf_BLINK_initCounter(); -} -/* -// キー入力読み出し -void mf_KEYPAD_read(void) -{ - u16 ReadData= PAD_Read(); - pad.trg = (u16)(ReadData & (ReadData ^ pad.cont)); // トリガ 入力 - pad.cont= ReadData; // ベタ 入力 -} -*/ - -// キー連射入力処理 初期化(十字キーのみ) -void mf_KEYPAD_initRapid(void) -{ - u16 *krp=key_rapid; - - *krp++=0; - *krp++=0; - *krp++=0; - *krp++=0; -} - - -// キー連射入力(十字キーのみ) -void mf_KEYPAD_rapid(void) -{ - u16 mask,i; - - for(i=0;i<4;i++){ - mask=(u16)(0x0001<<(i+4)); - if(pad.cont & mask){ - key_rapid[i]++; - if(key_rapid[i]==30) { - pad.trg|=mask; - key_rapid[i]=20; - } - }else{ - key_rapid[i]=0; - } - } -} - - -// 10進データ表示 -void mf_drawDecimal(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength,u8 size) -{ - u16 count,charCode; - u16 *dstp; - u32 mask,divisor,target; - - mask=0xff; - while(--size>0) mask=(mask<<8)|0xff; - target=(*(u32 *)valuep)&mask; - count=10; - divisor=1000000000; - dstp=calcBgOffset(pos_x,pos_y); - while(count) { - CP_SetDiv32_32(target, divisor); - if (count<=drawLength) { - charCode=(u16)(CP_GetDivResult32()+0x0030); - *dstp++ =(u16)( charCode | color | CHAR_INDEX ); - } - target=(u32)CP_GetDivRemainder32(); - CP_SetDiv32_32(divisor, 10); - divisor=(u32)CP_GetDivResult32(); - count--; - } -} - - -// 16進データ表示 -void mf_drawHex(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength) -{ - u16 count,charCode; - u16 *dstp=calcBgOffset(pos_x,pos_y)+drawLength-1; - - for(count=0;count>4) & 0x000f); - ((u8 *)valuep)++; - }else{ - charCode=(u16)( charCode & 0x000f); - } - if (charCode<0x000a) charCode+=0x0030; - else charCode+=0x0041-0x000a; - *dstp--=(u16)( charCode | color | CHAR_INDEX ); - } -} - - -// 1byte文字列データ表示(0x00〜0xffまでの1文字が1byteで良い文字列を描画する -void mf_drawString(u16 pos_x,u16 pos_y, u16 color, const u8 *strp) -{ - u16 data16; - u16 *dstp=calcBgOffset(pos_x,pos_y); - - while(1) { - data16=ReadByteHWBus(strp++); - if(data16==0) break; - *dstp++=(u16)( color | data16 | CHAR_INDEX ); - } -} - - -// 2byte文字列データ表示(0x0100以降の1文字に2byte必要な文字列を描画する -void mf_drawString2(u16 pos_x,u16 pos_y, u16 color, const u16 *strp) -{ - u16 *dstp=calcBgOffset(pos_x,pos_y); - - while(*strp) *dstp++ = (u16)( *strp++ | color | CHAR_INDEX ); -} - - -// 矩形BGクリア -void mf_clearRect(u16 pos_x,u16 pos_y,u8 height,u8 width) -{ - u16 i,j; - u16 *dstp=calcBgOffset(pos_x,pos_y); - - for(i=0;i -#include "data.h" - -// define data --------------------------------- - -// 時間計測構造体 -typedef struct { - int enable; - int frame; - int second; - int minute; - int hour; -}MyTime; - -// キーデータ・ワークエリア構造体 -//typedef struct { -// u16 trg; // トリガ入力 -// u16 cont; // ベタ 入力 -//}KeyWork; - - -// global variable------------------------------ -extern MyTime myTime; -//extern KeyWork pad; - - -// const data----------------------------------- -extern const u16 myChar[0x2800*8/16]; // キャラクターデータ - - -// function------------------------------------- -extern void mf_init(void); -extern void mf_KEYPAD_read(void); -extern void mf_KEYPAD_initRapid(void); -extern void mf_KEYPAD_rapid(void); -extern void mf_drawDecimal(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength,u8 size); -extern void mf_drawHex(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength); -extern void mf_drawString(u16 pos_x,u16 pos_y,u16 color,const u8 *strp); -extern void mf_drawString2(u16 pos_x,u16 pos_y,u16 color,const u16 *strp); -extern void mf_clearRect(u16 pos_x,u16 pos_y,u8 height,u8 width); -extern void mf_CSR_init(u16 pos_x,u16 pos_y,u16 add_y); -extern void mf_CSR_moveAndAnime(int nowNum); -extern void mf_CSR_anime(const u16 *csr_charListp); -extern void mf_BLINK_initCounter(void); -extern void mf_BLINK_drawString(u16 pos_x,u16 pos_y,u16 color,const u8 *strp); -extern void mf_waitXframe(u16 frame); -extern void mf_TIME_init(void); -extern void mf_TIME_start(int init_flag); -extern void mf_TIME_stop(void); -extern void mf_TIME_count(void); -extern void mf_TIME_draw(u16 pos_x,u16 pos_y,u16 color); -extern u8* mf_strcpy(const u8 *str1p,u8 *str2p); -extern u8 mf_strcmp(const u8 *str1p,const u8 *str2p); - - -#ifdef __cplusplus - -#endif - -#endif // __MY_FUNC_H__ - diff --git a/build/tests/DisplaySystemInformation/ARM7/Makefile b/build/tests/DisplaySystemInformation/ARM7/Makefile deleted file mode 100644 index eab0b68e..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- -DISP_INFO = $(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation - -SRCS = overwriteRtc.c crt0.SCR.c main.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = $(DISP_INFO)/ARM7/obj/ARM7-TS.LTD/Release/crt0.SCR.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -TWL_NO_STD_PCHDR = True - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -#-------------------------------- -# install target -#-------------------------------- -#INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ -# $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -#INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - $(DISP_INFO)/common/include \ - $(TWLSDK_ROOT)/build/libraries/init/common/include - - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libsea_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template b/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template deleted file mode 100644 index 6ae1bd6b..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template +++ /dev/null @@ -1,400 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lcf.template -# -# 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$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - - } > binary.STATIC_FOOTER - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - } > F - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD_TOP_START = 0x02f00000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_BSS_END = 0x03740000; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..START =.; - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - SDK_LTDAUTOLOAD_BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END; - SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # メインメモリアリーナはサイズ 0 - SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END; - SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM -} diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf b/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf deleted file mode 100644 index 4519fc34..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf +++ /dev/null @@ -1,85 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/overwriteRtc.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a -# Library libfs_sp$(LIBSUFFIX).a -# Library libcard_sp$(LIBSUFFIX).a -# Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template b/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template deleted file mode 100644 index b68c3564..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -l - - - - - - - -l - - - - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7/src/main.c b/build/tests/DisplaySystemInformation/ARM7/src/main.c deleted file mode 100644 index 219de8c5..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/src/main.c +++ /dev/null @@ -1,632 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" - -#include "address.h" - - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -/* 各スレッド優先度 */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // 暫定 -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM 内登録エリアの拡張言語コード */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* 使用 DMA 番号 */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM NWMSP_DMA_7 - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void DummyThread(void* arg); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: 起動ベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - // OS初期化でARM9と同期する前にSCFGの情報を共有メモリに書き出す - // レジスタ情報をコピー - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAMに退避されてる分もコピー - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - /* OS 初期化 */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM からユーザー情報読み出し */ - ReadUserInfo(); - - /* ヒープ領域設定 */ - heapHandle = InitializeAllocateSystem(); - - /* ボタン入力サーチ初期化 */ - (void)PAD_InitXYButton(); - - /* 割込み許可 */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* 各ライブラリ初期化 */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA -// FS_Init(FS_DMA_NOT_USE); // FS for CARD -// FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL 無線 - MCU_InitIrq(THREAD_PRIO_MCU); // マイコン - CDC_InitLib(); // CODEC -// if (OSi_IsCodecTwlMode() == TRUE) -// { -// CAMERA_Init(); // カメラ -// } - SND_Init(THREAD_PRIO_SND); // サウンド - SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張 - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO 無線 - SPI_Init(THREAD_PRIO_SPI); - - while (TRUE) - { - OS_Halt(); - - /* ソフトウェアリセット要求は監視しない */ - /* AGB カートリッジの挿抜チェックは行わない */ - /* DS カードの挿抜チェックは行わない */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 コンポーネントの情報をデバッグ出力する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: メモリ割当てシステムを初期化する。 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB アリーナを SUBPRIV アリーナに吸収 */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* アリーナを 0 クリア */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ヒープ作成初期化 */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* カレントヒープに設定 */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ヒープサイズの確認 */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSライブラリを初期化する。FATFS初期化関数内でスレッド休止 - する為、休止中動作するダミーのスレッドを立てる。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - /* ダミースレッド作成 */ - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - /* FATFS 初期化 */ - /* [TODO] DMA は NOT_USE のままで良い? */ - if(!FATFS_Init(DMA_NO_FATFS, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS)) - { - /* do nothing */ - } - - /* ダミースレッド破棄 */ - OS_KillThread(&thread, NULL); -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMライブラリを初期化する。 - Arguments: hh - 利用可能なヒープのハンドルを指定。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] 確保しているヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSライブラリ、CDCライブラリを初期化する際に立てるダミーの - スレッド。 - Arguments: arg - 使用しない。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。 - ミラーリングされているバッファが両方壊れている場合は、 - 共有領域のユーザー情報格納場所をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // オフセット読み出し -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCDEx(temp); -#else - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // アプリケーションの起動を抑制 - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ニックネームを補正 - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // コメントを補正 - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // 共有領域にストア - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // 共有領域をクリア - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // 無線MACアドレスをユーザー情報の後ろに展開 - { - u8 wMac[6]; - - // NVRAMからMACアドレスを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // 展開先アドレスを計算 - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // 共有領域に展開 - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // 使用可能チャンネルから使用許可チャンネルを計算 - { - u16 enableChannel; - u16 allowedChannel; - - // 使用可能チャンネルを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // 使用許可チャンネルを計算 - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // 展開先アドレスを計算(MACアドレスの後ろの2バイト) - p = (u8 *)((u32)p + 6); - // 共有領域に展開 - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。 - - Arguments: None. - - Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。 - 無効である場合はFALSEを返す。 - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ - に関する情報を抽出する。 - - Arguments: None. - - Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している - 言語コードのビットマップを返す。DSカードが拡張言語 - コードに対応していない場合は 0 を返す。 - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM内登録エリアの拡張言語コードを確認 - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - 3: アプリの起動を抑制すべき。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPLが拡張言語コードに対応しているか - if (IsValidConfigEx()) - { - // IPLが拡張言語コードに対応している場合 - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断 - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // 拡張言語コードで通常言語コードを上書き - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、 - // IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制 - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPLが拡張言語コードに対応していない場合 - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制 - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - crc_flag |= (1 << i); - } - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // 各ミラーデータのCRC & saveCount正当性チェック - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRCが正しく、saveCount値が0x80未満のデータを正当と判断。 - crc_flag |= (1 << i); - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ブランク割り込みベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c b/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c deleted file mode 100644 index af04b9d0..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c +++ /dev/null @@ -1,67 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: overwriteRtc.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 -#include -#include -#include -#include - -extern BOOL RTC_IsAvailablePxiCommand(u16 command); - -/*---------------------------------------------------------------------------* - Name: RTC_IsAvailablePxiCommand - - Description: PXI コマンドが有効な RTC 操作コマンドであるかどうか調査する。 - - Arguments: command - 調査するコマンド。 - - Returns: BOOL - 有効なコマンドである場合に TRUE を返す。処理できな - い無効なコマンドである場合には FALSE を返す。 - *---------------------------------------------------------------------------*/ -BOOL -RTC_IsAvailablePxiCommand(u16 command) -{ - switch (command) - { - case RTC_PXI_COMMAND_RESET: - case RTC_PXI_COMMAND_SET_HOUR_FORMAT: - case RTC_PXI_COMMAND_READ_DATETIME: - case RTC_PXI_COMMAND_READ_DATE: - case RTC_PXI_COMMAND_READ_TIME: - case RTC_PXI_COMMAND_READ_PULSE: - case RTC_PXI_COMMAND_READ_ALARM1: - case RTC_PXI_COMMAND_READ_ALARM2: - case RTC_PXI_COMMAND_READ_STATUS1: - case RTC_PXI_COMMAND_READ_STATUS2: - case RTC_PXI_COMMAND_READ_ADJUST: - case RTC_PXI_COMMAND_READ_FREE: - case RTC_PXI_COMMAND_WRITE_DATETIME: - case RTC_PXI_COMMAND_WRITE_DATE: - case RTC_PXI_COMMAND_WRITE_TIME: - case RTC_PXI_COMMAND_WRITE_PULSE: - case RTC_PXI_COMMAND_WRITE_ALARM1: - case RTC_PXI_COMMAND_WRITE_ALARM2: - case RTC_PXI_COMMAND_WRITE_STATUS1: - case RTC_PXI_COMMAND_WRITE_STATUS2: - case RTC_PXI_COMMAND_WRITE_ADJUST: - case RTC_PXI_COMMAND_WRITE_FREE: - return TRUE; - } - return FALSE; -} - diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile b/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile deleted file mode 100644 index 16d7b87c..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SRCS = overwriteRtc.c crt0.SCR.c main.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = crt0.SCR.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -TWL_NO_STD_PCHDR = True - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -#-------------------------------- -# install target -#-------------------------------- -#INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ -# $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -#INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - $(DISP_INFO)/common/include \ - $(TWLSDK_ROOT)/build/libraries/init/common/include - -LLIBRARY_DIRS += $(DISP_INFO)/ARM7_armadillo/obj/$(TWL_BUILDTYPE_ARM7) - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libsea_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template deleted file mode 100644 index 6ae1bd6b..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template +++ /dev/null @@ -1,400 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lcf.template -# -# 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$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - - } > binary.STATIC_FOOTER - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - } > F - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD_TOP_START = 0x02f00000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_BSS_END = 0x03740000; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..START =.; - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - SDK_LTDAUTOLOAD_BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END; - SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # メインメモリアリーナはサイズ 0 - SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END; - SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf deleted file mode 100644 index 4519fc34..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf +++ /dev/null @@ -1,85 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/overwriteRtc.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a -# Library libfs_sp$(LIBSUFFIX).a -# Library libcard_sp$(LIBSUFFIX).a -# Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template deleted file mode 100644 index b68c3564..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -l - - - - - - - -l - - - - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c deleted file mode 100644 index 52d0ff28..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c +++ /dev/null @@ -1,714 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.SCR.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 -#include -#include -#include -#include -#include -#ifndef SDK_FINALROM -#include -#endif -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); - -/*---------------------------------------------------------------------------* - 外部参照 - *---------------------------------------------------------------------------*/ -/* リンカスクリプトにより定義されるシンボル参照 */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); -extern void SDK_WRAM_ARENA_LO(void); - -/* 外部関数参照 */ -extern void OS_IrqHandler(void); -#ifndef SDK_NOINIT -extern void _fp_init(void); -extern void __call_static_initializers(void); -#endif - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* .rodata セクションに配置するロードに必要な情報 */ -void* const _start_ModuleParams[] = -{ - (void*)0, - (void*)0, - (void*)0, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, - (void*)0, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 の ShakeHand 関数と同期を取る。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - ARM9 同期用変数へのポインタ。 - r1 - ARM7 同期用変数へのポインタ。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; 同期変数9を共有メモリから読む */ - 0xe1d130b0, /* ldrh r3, [r1] ; 同期変数7を共有メモリから読む */ - 0xe2833001, /* @1: add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; 同期変数9の現状を共有メモリから読む */ - 0xe152000c, /* cmp r2, r12 ; 同期変数9の変化を判定する */ - 0x0afffffa, /* beq @1 ; 変化していなければループ */ - 0xe2833001, /* add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe12fff1e /* bx lr ; ハンドシェイク完了 */ -}; - -/*---------------------------------------------------------------------------* - Name: Stop - Description: プログラムを停止する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_Stop[2] = -{ - 0xef000006, /* @1: swi #6 ; SVC_Halt */ - 0xeafffffd /* b @1 ; ループ */ -}; - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 に特定の状態になったことを伝えた上で、Main 関数へジャンプ - する。同時に指定バッファの 0 クリアを行う。スタック内で動作させ - ることを想定している為、スタックを一切使用しない。 - Arguments: r0 - 0 クリアするバッファの先頭アドレス。 - 4 バイトアラインされたアドレスである必要がある。 - r1 - 上位 8 bit: ARM9 に伝えるフェーズ番号。 - 下位 24 bit: 0 クリアするバッファのサイズ。 - 4 の倍数である必要がある。 - r2 - 同期用フェーズ管理変数へのポインタ。 - r3 - Main 関数のポインタ。Main 関数が Thumb コードである場合 - には、bx 命令でジャンプするため最下位ビットが 1 になって - いる必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[10] = -{ - 0xe59fc01c, /* @1: ldr r12, [pc, #28] ; 下位 24 bit マスクを用意 */ - 0xe111000c, /* tst r1, r12 ; クリアバッファ残サイズをチェック */ - 0xe3a0c000, /* mov r12, #0 ; クリア用変数を用意 */ - 0x1480c004, /* strne r12, [r0], #4 ; 4 バイトクリア */ - 0x12411004, /* subne r1, r1, #4 ; クリアバッファ残サイズ -= 4 */ - 0x1afffff9, /* bne @1 ; 残サイズが 0 になるまでループ */ - 0xe1a01c21, /* mov r1, r1, LSR #24 ; フェーズ管理変数の更新値を用意 */ - 0xe1c210b0, /* strh r1, [r2] ; フェーズ管理変数を更新 */ - 0xe12fff13, /* bx r3 ; Main 関数へジャンプ */ - 0x00fffffc /* 0x00fffffc */ -}; - - -/*---------------------------------------------------------------------------* - 内部関数プロトタイプ - *---------------------------------------------------------------------------*/ -static void INITi_CheckSysConfig(void); -static void INITi_DetectMainMemorySize(void); -static void INITi_Stop(void); -static void INITi_DoAutoload(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif - -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: 起動ベクタ。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* 割込み禁止 */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - - /* SCFG 設定を確認 */ - bl INITi_CheckSysConfig - - /* ランチャーから渡された情報を退避 */ - ldr r3, =SDK_WRAM_ARENA_LO - sub r2, r3, #0x40 - ldr r1, =HW_LAUNCHER_DELIVER_PARAM_BUF -@001: - cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @001 - - /* ハンドシェイク用マイクロコードを専用 WRAM にコピー */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 // sizeof(microcode_ShakeHand) -@002: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @002 - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - -@010: - /* スタックポインタ設定 */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for IRQ stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for SYS stack check code - - /* スタック領域をクリア */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* プリロードパラメータアドレスが格納されていない場合は、デフォルト値をセット */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - /* Autoload を実施 */ - bl INITi_DoAutoload - - /* STATIC セグメントの .bss セクションを 0 クリア */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - /* メインメモリサイズを調査 */ - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - /* デバッグ出力ウィンドウを設定 */ - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7 << 8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR << 8) - strh r0, [r1, #2] -#endif - - /* IRQ 割込みベクタ設定 */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ 用初期化 */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@0f0: - /* Main 関数へのジャンプ用マイクロコードをスタックの底にコピー */ - ldr r1, =microcode_GotoMain - sub r2, sp, #40 - mov r3, sp -@0f1: cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @0f1 - - /* マイクロコードを経由して Main 関数へジャンプ */ - ldr r0, =SDK_STATIC_START - bic r0, r0, #0x00000003 - ldr r1, =SDK_STATIC_BSS_END - sub r1, r1, r0 - add r1, r1, #3 - bic r1, r1, #0x00000003 - bic r1, r1, #0xff000000 - mov r2, #BOOT_SYNC_PHASE_4 - mov r2, r2, LSL #24 - orr r1, r1, r2 - ldr r2, =HW_BOOT_SYNC_PHASE - ldr r3, =TwlSpMain - ldr lr, =HW_RESET_VECTOR - sub r12, sp, #40 - bx r12 - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: オートロード完了コールバック。 - Arguments: argv - オートロードパラメータを保持している配列。 - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CheckSysConfig - Description: SCFG 関連 I/O レジスタの内容を確認する。 - A7-SCFG ブロックがアクセス有効な場合には、ローダーが行う設定処 - 理を代行した上でアクセスを無効化する。 - ARM7 専用 WRAM 内にローダーが展開している I/O レジスタ情報を確 - 認した上でメインメモリ上の共有領域にコピーする。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CheckSysConfig(void) -{ - /* A7-SCFG のアクセス可否判定 */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - ldr r2, =HW_PRV_WRAM_SYSRV - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @invalid - - /* クロック供給情報、JTAG情報をWRAMに展開 */ -/* ldr r3, =REG_JTAG_ADDR // SCFG-JTAG - ldrh r1, [r3] - and r0, r1, #(REG_SCFG_JTAG_CPUJE_MASK | REG_SCFG_JTAG_ARM7SEL_MASK) - and r3, r1, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r3, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - - ldr r3, =REG_CLK_ADDR - ldrh r1, [r3] - and r3, r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT) - and r3, r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK) - orr r0, r0, r3, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT) - - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] -*/ - - /* A7-SCFG ブロックへのアクセスを無効化 */ -// ldr r1, =REG_EXT_ADDR -// ldr r0, [r1] -// bic r0, r0, #REG_SCFG_EXT_CFG_MASK -// str r0, [r1] - -@invalid: - /* ROM 設定、NITRO 無線設定内容を確認 */ - ldrb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - and r0, r0, #(HWi_WSYS08_ROM_ARM7RSEL_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK | HWi_WSYS08_ROM_ARM9SEC_MASK) - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - blne INITi_Stop - - /* SCFG レジスタ設定情報を共有領域にコピー */ - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - Description: メインメモリサイズを調査する。 - 調査結果は (u16*)HW_MMEMCHECER_SUB に格納される。 - 格納される値は [OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32B] - NOTE: プラットフォームが NITRO の場合は考慮していない。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void -INITi_DetectMainMemorySize(void) -{ - ldr r2, =HW_MMEMCHECKER_SUB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - - /* OSi_CHECKNUM1 (0x55) 書き込みテスト */ - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@1 subs r2, r2, #4 - bcs @1 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @check_smix - - /* OSi_CHECKNUM2 (0xaa) を 書き込みテスト */ - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@2 subs r2, r2, #4 - bcs @2 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@check_smix: - /* SMIX レジスタを調査 */ - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - /* 調査結果を格納 */ - ldr r2, =HW_MMEMCHECKER_SUB - strb r0, [r2] - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Stop - Description: プログラムを停止する。ARM7 専用 WRAM に Halt を繰り返すループ - 関数をコピーし、コピーした関数を実行する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_Stop(void) -{ - ldr r1, =microcode_Stop - ldr r2, =HW_PRV_WRAM - add r3, r2, #8 // sizeof(microcode_Stop) -@copy_loop: - ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @copy_loop - -@stop_loop: - ldr r0, =HW_PRV_WRAM - mov lr, pc - bx r0 - b @stop_loop - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: リンク情報に沿って、各オートロードブロックの固定データ部の展開 - 及び変数部の 0 クリアを行う。 - NITRO 互換オートロードセグメントは存在せず、TWL 専用セグメント - のみが存在するという前提。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ - -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - - /* オートロードを実施 */ -@000: - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@001: - cmp r12, r3 - bge @010 - /* 固定セクション */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = sizeo of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} - b @001 - - /* オートロードリスト・オートロード元バッファをクリア */ -@010: - ldr r1, =_start_LtdModuleParams - ldr r12, [r1] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r1, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r0, [r1, #8] // r0 = SDK_LTDAUTOLOAD_START -@011: - cmp r12, r3 - bge @0f0 - mov r1, #0 // r1 = clear value - str r1, [r12], #4 - ldr r2, [r12] // r2 = size of fixed section - str r1, [r12], #4 - str r1, [r12], #4 - str r1, [r12], #4 - bl INITi_Fill32 - b @011 - -@0f0: - /* オートロード完了コールバック呼び出し */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -#ifndef SDK_NOINIT - -//static asm void -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: 各オートロードセグメント内の static initializer へのポインタ - テーブルを IRQ スタックの最上部に退避する。 - Arguments: ptr - セグメント内のポインタテーブルへのポインタ。 - テーブルは NULL で終端されている必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* 引数確認 */ - cmp r0, #0 - bxeq lr - - /* 退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* 退避場所先頭から空き場所を調査 */ - ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 -@002: - /* 空き場所にテーブルをコピー */ - ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: 各オートロードセグメント内の static initializer を呼び出す。 - オートロード処理によって IRQ スタックの最上部に退避されている - 関数ポインタテーブルを一つずつ呼び出す。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* テーブル退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* テーブルに管理されているポインタを一つずつ呼び出し */ - ldr r0, [r1] - cmp r0, #0 - beq @002 - stmfd sp!, {r1} - mov lr, pc - bx r0 - ldmfd sp!, {r1} - /* 一旦呼び出したポインタはゼロクリア (IRQスタックを間借りしている為) */ - mov r0, #0 - str r0, [r1], #4 - b @001 -@002: - ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 32 bit 単位でコピーを行う。スタックを 36 バイト消費するが、 - レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - コピー先へのポインタ ( 4 バイトアライン )。 - r1 - コピー元へのポインタ ( 4 バイトアライン )。 - r2 - コピーする長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - コピー後のコピー先へのポインタ ( r0 + r2 )。 - r1 - コピー後のコピー元へのポインタ ( r1 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 32 bit 単位でバッファ内容を指定データで埋める。スタックを 36 - バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - バッファへのポインタ ( 4 バイトアライン )。 - r1 - バッファを埋める内容を 32 bit 値で指定。 - r2 - バッファを埋める長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - 処理後のバッファへのポインタ ( r0 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -#include diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c deleted file mode 100644 index 219de8c5..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c +++ /dev/null @@ -1,632 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" - -#include "address.h" - - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -/* 各スレッド優先度 */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // 暫定 -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM 内登録エリアの拡張言語コード */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* 使用 DMA 番号 */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM NWMSP_DMA_7 - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void DummyThread(void* arg); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: 起動ベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - // OS初期化でARM9と同期する前にSCFGの情報を共有メモリに書き出す - // レジスタ情報をコピー - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAMに退避されてる分もコピー - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - /* OS 初期化 */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM からユーザー情報読み出し */ - ReadUserInfo(); - - /* ヒープ領域設定 */ - heapHandle = InitializeAllocateSystem(); - - /* ボタン入力サーチ初期化 */ - (void)PAD_InitXYButton(); - - /* 割込み許可 */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* 各ライブラリ初期化 */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA -// FS_Init(FS_DMA_NOT_USE); // FS for CARD -// FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL 無線 - MCU_InitIrq(THREAD_PRIO_MCU); // マイコン - CDC_InitLib(); // CODEC -// if (OSi_IsCodecTwlMode() == TRUE) -// { -// CAMERA_Init(); // カメラ -// } - SND_Init(THREAD_PRIO_SND); // サウンド - SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張 - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO 無線 - SPI_Init(THREAD_PRIO_SPI); - - while (TRUE) - { - OS_Halt(); - - /* ソフトウェアリセット要求は監視しない */ - /* AGB カートリッジの挿抜チェックは行わない */ - /* DS カードの挿抜チェックは行わない */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 コンポーネントの情報をデバッグ出力する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: メモリ割当てシステムを初期化する。 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB アリーナを SUBPRIV アリーナに吸収 */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* アリーナを 0 クリア */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ヒープ作成初期化 */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* カレントヒープに設定 */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ヒープサイズの確認 */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSライブラリを初期化する。FATFS初期化関数内でスレッド休止 - する為、休止中動作するダミーのスレッドを立てる。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - /* ダミースレッド作成 */ - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - /* FATFS 初期化 */ - /* [TODO] DMA は NOT_USE のままで良い? */ - if(!FATFS_Init(DMA_NO_FATFS, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS)) - { - /* do nothing */ - } - - /* ダミースレッド破棄 */ - OS_KillThread(&thread, NULL); -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMライブラリを初期化する。 - Arguments: hh - 利用可能なヒープのハンドルを指定。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] 確保しているヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSライブラリ、CDCライブラリを初期化する際に立てるダミーの - スレッド。 - Arguments: arg - 使用しない。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。 - ミラーリングされているバッファが両方壊れている場合は、 - 共有領域のユーザー情報格納場所をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // オフセット読み出し -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCDEx(temp); -#else - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // アプリケーションの起動を抑制 - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ニックネームを補正 - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // コメントを補正 - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // 共有領域にストア - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // 共有領域をクリア - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // 無線MACアドレスをユーザー情報の後ろに展開 - { - u8 wMac[6]; - - // NVRAMからMACアドレスを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // 展開先アドレスを計算 - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // 共有領域に展開 - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // 使用可能チャンネルから使用許可チャンネルを計算 - { - u16 enableChannel; - u16 allowedChannel; - - // 使用可能チャンネルを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // 使用許可チャンネルを計算 - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // 展開先アドレスを計算(MACアドレスの後ろの2バイト) - p = (u8 *)((u32)p + 6); - // 共有領域に展開 - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。 - - Arguments: None. - - Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。 - 無効である場合はFALSEを返す。 - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ - に関する情報を抽出する。 - - Arguments: None. - - Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している - 言語コードのビットマップを返す。DSカードが拡張言語 - コードに対応していない場合は 0 を返す。 - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM内登録エリアの拡張言語コードを確認 - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - 3: アプリの起動を抑制すべき。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPLが拡張言語コードに対応しているか - if (IsValidConfigEx()) - { - // IPLが拡張言語コードに対応している場合 - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断 - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // 拡張言語コードで通常言語コードを上書き - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、 - // IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制 - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPLが拡張言語コードに対応していない場合 - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制 - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - crc_flag |= (1 << i); - } - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // 各ミラーデータのCRC & saveCount正当性チェック - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRCが正しく、saveCount値が0x80未満のデータを正当と判断。 - crc_flag |= (1 << i); - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ブランク割り込みベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c deleted file mode 100644 index af04b9d0..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c +++ /dev/null @@ -1,67 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: overwriteRtc.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 -#include -#include -#include -#include - -extern BOOL RTC_IsAvailablePxiCommand(u16 command); - -/*---------------------------------------------------------------------------* - Name: RTC_IsAvailablePxiCommand - - Description: PXI コマンドが有効な RTC 操作コマンドであるかどうか調査する。 - - Arguments: command - 調査するコマンド。 - - Returns: BOOL - 有効なコマンドである場合に TRUE を返す。処理できな - い無効なコマンドである場合には FALSE を返す。 - *---------------------------------------------------------------------------*/ -BOOL -RTC_IsAvailablePxiCommand(u16 command) -{ - switch (command) - { - case RTC_PXI_COMMAND_RESET: - case RTC_PXI_COMMAND_SET_HOUR_FORMAT: - case RTC_PXI_COMMAND_READ_DATETIME: - case RTC_PXI_COMMAND_READ_DATE: - case RTC_PXI_COMMAND_READ_TIME: - case RTC_PXI_COMMAND_READ_PULSE: - case RTC_PXI_COMMAND_READ_ALARM1: - case RTC_PXI_COMMAND_READ_ALARM2: - case RTC_PXI_COMMAND_READ_STATUS1: - case RTC_PXI_COMMAND_READ_STATUS2: - case RTC_PXI_COMMAND_READ_ADJUST: - case RTC_PXI_COMMAND_READ_FREE: - case RTC_PXI_COMMAND_WRITE_DATETIME: - case RTC_PXI_COMMAND_WRITE_DATE: - case RTC_PXI_COMMAND_WRITE_TIME: - case RTC_PXI_COMMAND_WRITE_PULSE: - case RTC_PXI_COMMAND_WRITE_ALARM1: - case RTC_PXI_COMMAND_WRITE_ALARM2: - case RTC_PXI_COMMAND_WRITE_STATUS1: - case RTC_PXI_COMMAND_WRITE_STATUS2: - case RTC_PXI_COMMAND_WRITE_ADJUST: - case RTC_PXI_COMMAND_WRITE_FREE: - return TRUE; - } - return FALSE; -} - diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile b/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile deleted file mode 100644 index bc239513..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- - -SRCDIR += ./src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = crt0.LTD.TWL.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -#-------------------------------- -# install target -#-------------------------------- -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include\ - $(DISP_INFO)/common/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template deleted file mode 100644 index 90b672ea..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template +++ /dev/null @@ -1,935 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lcf.template -# -# Copyright 2007 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$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - check.WORKRAM (RWX) : ORIGIN = 0x037c0000, LENGTH = 0x50000 > workram.check - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - check.LTDMAIN (RWX) : ORIGIN = 0x02f88000, LENGTH = 0x74000 > ltdmain.check - check.RSVWRAM (RWX) : ORIGIN = 0x03040000, LENGTH = 0x08000 > rsvwram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - SDK_STATIC_TEXT_START =.; - #:::::::::: text/rodata - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_STATIC_SINIT_END =.; - #:::::::::: text/rodata - SDK_STATIC_TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_STATIC_DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_STATIC_DATA_END =.; - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; - SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - - ############################ AUTOLOADS ############################## - SDK_AUTOLOAD.WRAM.START = 0x037c0000; - SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD.WRAM.SIZE = 0; - SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; - SDK_AUTOLOAD_START = SDK_STATIC_END; - SDK_AUTOLOAD_SIZE = 0; - SDK_AUTOLOAD_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_AUTOLOAD__ID =; - SDK_AUTOLOAD..ID =; - SDK_AUTOLOAD..START =.; - SDK_AUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_AUTOLOAD..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_AUTOLOAD..SINIT_END =.; - #:::::::::: text/rodata - SDK_AUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - SDK_AUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_AUTOLOAD..DATA_END =.; - . = ALIGN(4); - SDK_AUTOLOAD..END =.; - - SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; - SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; - SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_AUTOLOAD..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_AUTOLOAD..BSS_END = .; - - SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; - - } >> - - - - SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; - SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END; - SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; - SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE; - - ############################ AUTOLOAD_INFO ########################## - .binary.AUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_AUTOLOAD..SIZE; - WRITEW SDK_AUTOLOAD..SINIT_START; - WRITEW SDK_AUTOLOAD..BSS_SIZE; - - - } > binary.AUTOLOAD_INFO - - SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; - SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - } > binary.STATIC_FOOTER - - ############################ OVERLAYS ############################### - SDK_OVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID - SDK_OVERLAY..ID =; - SDK_OVERLAY..START =.; - SDK_OVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_OVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_OVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_OVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_OVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_OVERLAY..DATA_END =.; - . = ALIGN(4); - SDK_OVERLAY..END =.; - - SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; - SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; - SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_OVERLAY..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_OVERLAY..BSS_END = .; - - SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; - - } >> - - - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - ### overlay filename - - WRITES (""); # Overlay - - - } > F - - ############################ OVERLAYTABLE ########################### - .F: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_OVERLAY..SIZE; # size of module - WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_OVERLAY..SINIT_START; # start address of static init - WRITEW SDK_OVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # Reserved - - - } > F - - ############################ OTHERS ################################# - SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = . + SDK_AUTOLOAD_WRAM_BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD.LTDMAIN.START = 0x02f88000; - SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02e80000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_NUMBER = ; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDAUTOLOAD__ID =; - SDK_LTDAUTOLOAD..ID =; - SDK_LTDAUTOLOAD..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDAUTOLOAD..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDAUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - SDK_LTDAUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_LTDAUTOLOAD..DATA_END =.; - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..TEXT_SIZE = SDK_LTDAUTOLOAD..TEXT_END - SDK_LTDAUTOLOAD..TEXT_START; - SDK_LTDAUTOLOAD..DATA_SIZE = SDK_LTDAUTOLOAD..DATA_END - SDK_LTDAUTOLOAD..DATA_START; - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - - SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################### LTDOVERLAYS ############################# - SDK_LTDOVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDOVERLAY__ID =; - SDK_LTDOVERLAY..ID =; - SDK_LTDOVERLAY..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDOVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDOVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDOVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDOVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_LTDOVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_LTDOVERLAY..DATA_END =.; - . = ALIGN(4); - SDK_LTDOVERLAY..END =.; - - SDK_LTDOVERLAY..TEXT_SIZE = SDK_LTDOVERLAY..TEXT_END - SDK_LTDOVERLAY..TEXT_START; - SDK_LTDOVERLAY..DATA_SIZE = SDK_LTDOVERLAY..DATA_END - SDK_LTDOVERLAY..DATA_START; - SDK_LTDOVERLAY..SIZE = SDK_LTDOVERLAY..END - SDK_LTDOVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDOVERLAY..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_LTDOVERLAY..BSS_END =.; - - SDK_LTDOVERLAY..BSS_SIZE = SDK_LTDOVERLAY..BSS_END - SDK_LTDOVERLAY..BSS_START; - - } >> - - - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - ### TWL limited overlay filename - - WRITES (""); - - - } > L - - ######################### LTDOVERLAYTABLE ########################### - .L: - { - - WRITES # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_LTDOVERLAY..SIZE; # size of module - WRITEW SDK_LTDOVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_LTDOVERLAY..SINIT_START; # start address of static init - WRITEW SDK_LTDOVERLAY..SINIT_END; # end address of static init - WRITEW # ROM file ID - WRITEW 0; # Reserved - - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - .check.LTDMAIN: - { - . = SDK_SUBPRIV_ARENA_LO; - - } > check.LTDMAIN - - .check.RSVWRAM: - { - . = SDK_LTDAUTOLOAD.RSVWRAM.BSS_END; - - } > check.RSVWRAM - -} diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf deleted file mode 100644 index 4a239534..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf +++ /dev/null @@ -1,231 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - Library $(CRT0_O) - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address $(ADDRESS_LTDWRAM) - - Library libsubpsyscall.a \ - libsyscall_sp.twl.a \ - $(CW_LIBS) \ - libos_sp$(LIBSUFFIX).a \ - libmi_sp$(LIBSUFFIX).a \ - libpad_sp$(LIBSUFFIX).a \ - libpxi_sp$(LIBSUFFIX).a \ - libstd_sp$(LIBSUFFIX).a \ - libexi_sp$(LIBSUFFIX).a \ - libsnd_sp$(LIBSUFFIX).a \ - libspi_sp$(LIBSUFFIX).a \ - libpm_sp$(LIBSUFFIX).a \ - libmath_sp$(LIBSUFFIX).a \ - libscfg_sp$(LIBSUFFIX).a \ - libtp_sp$(LIBSUFFIX).a \ - libmic_sp$(LIBSUFFIX).a \ - libfs_sp$(LIBSUFFIX).a \ - libcard_sp$(LIBSUFFIX).a \ - libi2c_sp$(LIBSUFFIX).a \ - libcamera_sp$(LIBSUFFIX).a \ - libcdc_sp$(LIBSUFFIX).a \ - libsndex_sp$(LIBSUFFIX).a \ - libtpex_sp$(LIBSUFFIX).a \ - libmicex_sp$(LIBSUFFIX).a \ - libmcu_sp$(LIBSUFFIX).a \ - - Library libsdio_sp$(LIBSUFFIX).a - - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - - - Object * (.etable) - Object * (.wram) - Object * (.ltdwram) - Object $(OBJDIR)/main.o - - # caches in fatfs library, that should be on WRAM. - # 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、 - # 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。 -# Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlCmdIf.o - Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - - -} - -#-------- -Ltdautoload RSVWRAM -{ - Address 0x03040000 - Object * (.rsvwram) - Library libathdrv_sp$(LIBSUFFIX).a (.bss) - Library libathdrv_sp$(LIBSUFFIX).a (.data) - - ##### - # Sub-routines in TWL WIRELESS Driver , that should be on WRAM. - Object OBJECT( HTCSendPktCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCIssueSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCTrySend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCSendPkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessCreditRpt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRecvPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessRecvHeader, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvCompleteHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvMessagePendingHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAddReceivePkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KFreeIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KAllocIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevGetEventAsyncHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevCheckPendingRecvMsgsAsync, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevDsrHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFReadWrite, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifIRQHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFAckInterrupt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_credit_distribute, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_put, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_push, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_pull, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_free, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_data, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_len, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_headroom, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_drv_return_netbuf, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_remove_from_head, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_insert_tail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_alloc_cookie, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_driver_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_tx_complete, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_dix_2_dot3, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_add, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_remove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_ibss_map_epid, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListInsertTail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListRemove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_control_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_cmd_send, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_control_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_implicit_create_pstream, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAllocControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCFreeControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text) - - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - - Object * (.ltdmain) - Library libwm_sp$(LIBSUFFIX).a \ - libnwm_sp$(LIBSUFFIX).a \ - libwvr_sp$(LIBSUFFIX).a \ - libwl_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Library libfatfs_sp$(LIBSUFFIX).a \ - libaes_sp$(LIBSUFFIX).a - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) -} diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template deleted file mode 100644 index 88b18081..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -l - - - - - - - -l - - - - -og ,0 -ol - - - - - -l - - - - - - - - -l - - - - -og ,0 -ol - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c b/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c deleted file mode 100644 index 611fb1b1..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c +++ /dev/null @@ -1,108 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.h - - Copyright **** 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 -#include - -extern void INIT_InitializeScfg(void); - -#include -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。 - crt0 内の弱シンボルを上書きする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -asm void -INIT_InitializeScfg(void) -{ - // SCFG enable? - ldr r2, =REG_EXT_ADDR - ldr r0, [r2] - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @end - - /* NITRO 互換無線の送受信機能を動作 */ - ldr r1, =REG_WL_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_WL_OFFB_MASK - strh r0, [r1] - - /* 新規サウンドブロックへのクロック供給 */ - ldr r1, =REG_CLK_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_CLK_SNDMCLK_MASK - strh r0, [r1] - - /* ARM7 側の DMA には新 DMA 回路を採用 */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - orr r0, r0, #REG_SCFG_EXT_DMAC_MASK - str r0, [r1] - - ldr r2, =HW_PRV_WRAM_SYSRV - //EXT(extentions) - ldr r3, =REG_EXT_ADDR - ldr r0, [r3] - str r0, [r2, #HWi_WSYS04_WRAMOFFSET] - //OPT(bonding option) - ldr r3, =REG_OP_ADDR - ldrb r0, [r3] - //A9ROM(ARM9 ROM) - ldr r3, =REG_A9ROM_ADDR - ldrb r1, [r3] - and r12,r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) - //A7ROM(ARM7 ROM) - ldr r3, =REG_A7ROM_ADDR - ldrb r1, [r3] - and r12,r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) - //DS-WL(DS wireless) - ldr r3, =REG_WL_ADDR - ldrb r1, [r3] - and r12,r1, #REG_SCFG_WL_OFFB_MASK - orr r0, r0, r12, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) - strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - //OPT(JTAG info) - ldr r3, =REG_JTAG_ADDR - ldrh r0, [r3] - and r12,r0, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r12, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - //CLK(only wram clock) - ldr r3, =REG_CLK_ADDR - ldrh r1, [r3] - and r12,r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT) - and r12,r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK) - orr r0, r0, r12, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT) - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] - - /* A7-SCFG ブロックへのアクセスを無効化 */ -// ldr r1, =REG_EXT_ADDR -// ldr r0, [r1] -// bic r0, r0, #REG_SCFG_EXT_CFG_MASK -// str r0, [r1] - -@end: - bx lr -} -#include diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c b/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c deleted file mode 100644 index ccfd1a6d..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c +++ /dev/null @@ -1,992 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "address.h" - -#ifdef SDK_SEA -#include -#endif // ifdef SDK_SEA - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define WM_WL_HEAP_SIZE 0x2100 -#define ATH_DRV_HEAP_SIZE 0x5800 -#define WPA_HEAP_SIZE 0x1C00 - -#define MEM_TYPE_WRAM 0 -#define MEM_TYPE_MAIN 1 - -/* Priorities of each threads */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // 暫定 -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* [TODO] 以下は New WM 側に移行するほうが好ましい? */ -#define NWM_DMANO NWMSP_DMA_7 -#define THREAD_PRIO_NWM_COMMMAND 9 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_NWM_WPA 10 - -// ROM 内登録エリアの拡張言語コード -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(u8 memType); -static OSHeapHandle InitializeAllocateSystemCore(u8 memType); -#ifdef SDK_TWLHYB -static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType); -#endif -static void DummyThread(void* arg); -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp); -#endif -static void VBlankIntr(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle); -/*---------------------------------------------------------------------------* - 外部シンボル参照 - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWLHYB -extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void); -#endif - - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: 起動ベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void TwlSpMain(void) -{ - OSHeapHandle wramHeapHandle, mainHeapHandle; - - - // OS初期化でARM9と同期する前にSCFGの情報を共有メモリに書き出す - // レジスタ情報をコピー - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAMに退避されてる分もコピー - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - // OS 初期化 - OS_Init(); - PrintDebugInfo(); - - // NVRAM からユーザー情報読み出し - ReadUserInfo(); - - // ヒープ領域設定 - wramHeapHandle = InitializeAllocateSystem(MEM_TYPE_WRAM); - mainHeapHandle = InitializeAllocateSystem(MEM_TYPE_MAIN); - - // ボタン入力サーチ初期化 - (void)PAD_InitXYButton(); - - // 割り込み許可 - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - // ファイルシステム初期化 - FS_Init(FS_DMA_NOT_USE); - FS_CreateReadServerThread(THREAD_PRIO_FS); - - if (OS_IsRunOnTwl() == TRUE) - { - InitializeFatfs(); // FATFS 初期化 -#ifndef SDK_SEA // !暫定処置! - // NWM 初期化 -#ifdef SDK_TWLLTD - InitializeNwm(mainHeapHandle, mainHeapHandle); // LIMITED モードでは 無線のヒープを MAIN から確保 -#else - InitializeNwm(wramHeapHandle, mainHeapHandle); // HYBRID モードでは 無線のヒープを WRAM から確保 -#endif -#endif // ifndef SDK_SEA - AES_Init(THREAD_PRIO_AES); // AES 初期化 - -#ifdef SDK_SEA - SEA_Init(THREAD_PRIO_SEA); -#endif // ifdef SDK_SEA - MCU_InitIrq(THREAD_PRIO_MCU); // MCU 初期化 - - CDC_InitLib(); // CODECライブラリ初期化 - } - - if (OSi_IsCodecTwlMode() == TRUE) - { - // カメラ初期化 - CAMERA_Init(); - /* CODEC が TWL モードでないとシャッター音を強制的に鳴らす - 機能が使用できません。この為、CODEC が TWL モードの場合 - にのみカメラライブラリを使用可能な状態にします。 */ - } - - // サウンド初期化 - SND_Init(THREAD_PRIO_SND); - if (OS_IsRunOnTwl() == TRUE) - { - SNDEX_Init(THREAD_PRIO_SNDEX); - } - - // RTC 初期化 - RTC_Init(THREAD_PRIO_RTC); - - // 旧無線初期化 -#ifndef SDK_SEA // !暫定処置! - WVR_Begin(wramHeapHandle); -#endif // ifdef SDK_SEA - - // SPI 初期化 - SPI_Init(THREAD_PRIO_SPI); - - - while (TRUE) - { - OS_Halt(); - - //---- check reset - if (OS_IsResetOccurred()) - { - //VIB_STOP - CTRDG_VibPulseEdgeUpdate(NULL); - - OS_ResetSystem(); - } - - //---- check pull out cartridge - CTRDG_CheckPullOut_Polling(); - -#ifndef SDK_SMALL_BUILD - //---- check pull out card - CARD_CheckPullOut_Polling(); -#endif - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 コンポーネントの情報をデバッグ出力する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - if(OS_IsRunOnTwl()) - { - OS_TPrintf("ARM7: This component is running on TWL.\n"); - } - else - { - OS_TPrintf("ARM7: This component is running on NITRO.\n"); - } -#ifdef SDK_SEA -#ifdef SDK_TWLLTD - OS_TPrintf("ARM7: This component is \"armadillo.TWL\"\n"); -#else /* ifdef SDK_TWLLTD */ -#error invalid parameter combination -#endif /* ifdef SDK_TWLLTD else */ -#else /* ifdef SDK_SEA */ -#ifdef SDK_TWLLTD - OS_TPrintf("ARM7: This component is \"racoon.TWL\"\n"); -#else /* ifdef SDK_TWLLTD */ -#ifdef SDK_WIRELESS_IN_VRAM - OS_TPrintf("ARM7: This component is \"ichneumon.TWL\"\n"); -#else /* ifdef SDK_WIRELESS_IN_VRAM */ - OS_TPrintf("ARM7: This component is \"mongoose.TWL\"\n"); -#endif /* ifdef SDK_WIRELESS_IN_VRAM else */ -#endif /* ifdef SDK_TWLLTD else */ -#endif /* ifdef SDK_SEA else */ -} - -#include -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSライブラリを初期化する。FATFS初期化関数内でスレッド休止 - する為、休止中動作するダミーのスレッドを立てる。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - // ダミースレッド作成 - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - - // FATFSライブラリの初期化 - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } - - // ダミースレッド破棄 - OS_KillThread(&thread, NULL); -} -#include - -#include -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMライブラリを初期化する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle) -{ - NwmspInit nwmInit; - - nwmInit.dmaNo = NWM_DMANO; - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - -#ifdef SDK_TWLLTD - nwmInit.drvHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */ -#else - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; /* [TODO] */ -#endif - nwmInit.drvHeap.handle = drvHeapHandle; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */ - nwmInit.wpaHeap.handle = wpaHeapHandle; - - NWMSP_Init(&nwmInit); - -} -#include - -#include -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSライブラリ、CDCライブラリを初期化する際に立てるダミーの - スレッド。 - Arguments: arg - 使用しない。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} -#include - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: メモリ割当てシステムを初期化する。 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystem(u8 memType) -{ - - OSHeapHandle hh; - -#ifdef SDK_TWLHYB - if( OS_IsRunOnTwl() == TRUE) - { - hh = InitializeAllocateSystemCoreEx(memType); /* Hybrid を TWL で動作させる */ - } - else -#endif - { - hh = InitializeAllocateSystemCore(memType); /* Hybrid を DS で動作させる or Limited */ - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystemCore - Description: メモリ割当てシステムを初期化する。 - Hybrid を DS で動作させた場合、Limited を TWL で動作させた場合に動作 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystemCore(u8 memType) -{ - OSHeapHandle hh; - - /* MAIN */ - if(memType == MEM_TYPE_MAIN) - { - { - void* lo = (void*)OS_GetSubPrivArenaLo(); - void* hi = (void*)OS_GetSubPrivArenaHi(); - - // アリーナを 0 クリア - MI_CpuClear8(lo, (u32)hi - (u32)lo); - - // メモリ割り当て初期化 - lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1); - // アリーナ下位アドレスを設定 - OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo); - - // ヒープ作成 - hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - } - // カレントヒープに設定 - (void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh); - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - #ifdef SDK_TWLLTD - { - if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE); - } - } - #endif - OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize); - } - } - - /* WRAM */ - if( memType == MEM_TYPE_WRAM) - { - { - void* lo = (void*)OS_GetWramSubPrivArenaLo(); - void* hi = (void*)OS_GetWramSubPrivArenaHi(); - - // アリーナを 0 クリア - MI_CpuClear8(lo, (u32)hi - (u32)lo); - - // メモリ割り当て初期化 - lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1); - // アリーナ下位アドレスを設定 - OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo); - - // ヒープ作成 - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - } - - // カレントヒープに設定 - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - if (WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE); - } - OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize); - } - } - return hh; -} - -#ifdef SDK_TWLHYB -#include -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystemCoreEx - Description: メモリ割当てシステムを初期化する。 - Hybrid を TWL で動作させた場合に動作 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType) -{ - OSHeapHandle hh; - - if(memType == MEM_TYPE_MAIN) - { - { - void* basicLo = (void*)OS_GetSubPrivArenaLo(); - void* basicHi = (void*)OS_GetSubPrivArenaHi(); - void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32); - void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32); - -#if SDK_DEBUG - // debug information - OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo); - OS_TPrintf("ARM7: MAIN arena basicHi = %p\n", basicHi); - OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo); - OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi); -#endif - // アリーナを 0 クリア - MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo); - MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo); - - // メモリ割り当て初期化 - if ((u32)basicLo < (u32)extraLo) - { - basicLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, basicLo, extraHi, 1); - // アリーナ下位アドレスを設定 - OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, basicLo); - } - else - { - extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1); - } - - // ヒープ作成 - hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to create MAIN heap.\n"); - } - - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - OS_TPrintf("ARM7: MAIN heap size is %d (before AddToHead)\n", heapSize); - } - - // ヒープに拡張ブロックを追加 - OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi); - } - // カレントヒープに設定 - (void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh); - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - if ((WPA_HEAP_SIZE) > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WPA_HEAP_SIZE); - } - OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize); - } - } - - if(memType == MEM_TYPE_WRAM) - { - { - void* basicLo = (void*)OS_GetWramSubPrivArenaLo(); - void* basicHi = (void*)OS_GetWramSubPrivArenaHi(); - void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32); - void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32); - -#if SDK_DEBUG - // debug information - OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo); - OS_TPrintf("ARM7: WRAM arena basicHi = %p\n", basicHi); - OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo); - OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi); -#endif - - // アリーナを 0 クリア - MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo); - MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo); - - // メモリ割り当て初期化 - if ((u32)basicLo < (u32)extraLo) - { - basicLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, basicLo, extraHi, 1); - // アリーナ下位アドレスを設定 - OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, basicLo); - } - else - { - extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1); - } - - // ヒープ作成 - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - if (WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE); - } - OS_TPrintf("ARM7: WRAM heap size is %d (before AddToHeap)\n", heapSize); - } - - // ヒープに拡張ブロックを追加 - OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi); - } - - // カレントヒープに設定 - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - // ヒープサイズの確認 - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ヒープ領域の確保に失敗 */ - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - if (ATH_DRV_HEAP_SIZE + WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE + ATH_DRV_HEAP_SIZE ); - } - OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize); - } - } - - return hh; -} -#include -#endif - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。 - ミラーリングされているバッファが両方壊れている場合は、 - 共有領域のユーザー情報格納場所をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // オフセット読み出し -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCDEx(temp); -#else - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // アプリケーションの起動を抑制 - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ニックネームを補正 - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // コメントを補正 - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // 共有領域にストア - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // 共有領域をクリア - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // 無線MACアドレスをユーザー情報の後ろに展開 - { - u8 wMac[6]; - - // NVRAMからMACアドレスを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // 展開先アドレスを計算 - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // 共有領域に展開 - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // 使用可能チャンネルから使用許可チャンネルを計算 - { - u16 enableChannel; - u16 allowedChannel; - - // 使用可能チャンネルを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // 使用許可チャンネルを計算 - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // 展開先アドレスを計算(MACアドレスの後ろの2バイト) - p = (u8 *)((u32)p + 6); - // 共有領域に展開 - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。 - - Arguments: None. - - Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。 - 無効である場合はFALSEを返す。 - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ - に関する情報を抽出する。 - - Arguments: None. - - Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している - 言語コードのビットマップを返す。DSカードが拡張言語 - コードに対応していない場合は 0 を返す。 - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM内登録エリアの拡張言語コードを確認 - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - 3: アプリの起動を抑制すべき。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPLが拡張言語コードに対応しているか - if (IsValidConfigEx()) - { - // IPLが拡張言語コードに対応している場合 - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断 - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // 拡張言語コードで通常言語コードを上書き - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、 - // IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制 - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPLが拡張言語コードに対応していない場合 - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制 - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - crc_flag |= (1 << i); - } - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // 各ミラーデータのCRC & saveCount正当性チェック - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRCが正しく、saveCount値が0x80未満のデータを正当と判断。 - crc_flag |= (1 << i); - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ブランク割り込みベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile b/build/tests/DisplaySystemInformation/ARM9/Makefile deleted file mode 100644 index e9e4bbbd..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3\ - Makefile.4 Makefile.5 Makefile.6 Makefile.7\ - Makefile.8 Makefile.9 Makefile.10 Makefile.11\ - Makefile.12 Makefile.13 Makefile.14 Makefile.15\ - Makefile.16 Makefile.17 -#SUBMAKES = Makefile.0 - - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -rb: - ruby makeMaking.rb - -do-build : - $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.0 b/build/tests/DisplaySystemInformation/ARM9/Makefile.0 deleted file mode 100644 index cb3eda39..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.0 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 0 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B0A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.1 b/build/tests/DisplaySystemInformation/ARM9/Makefile.1 deleted file mode 100644 index 80bab1c8..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.1 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 1 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B1A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.10 b/build/tests/DisplaySystemInformation/ARM9/Makefile.10 deleted file mode 100644 index 0711243c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.10 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 10 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B8A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.11 b/build/tests/DisplaySystemInformation/ARM9/Makefile.11 deleted file mode 100644 index 27d1ce33..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.11 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 11 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B9A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.12 b/build/tests/DisplaySystemInformation/ARM9/Makefile.12 deleted file mode 100644 index b8fe42b3..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.12 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 12 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0BAA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.13 b/build/tests/DisplaySystemInformation/ARM9/Makefile.13 deleted file mode 100644 index 93fd362c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.13 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 13 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 0BBA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.14 b/build/tests/DisplaySystemInformation/ARM9/Makefile.14 deleted file mode 100644 index 2cdaeca5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.14 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 14 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 022A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.15 b/build/tests/DisplaySystemInformation/ARM9/Makefile.15 deleted file mode 100644 index 91ea73d3..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.15 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 15 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 023A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.16 b/build/tests/DisplaySystemInformation/ARM9/Makefile.16 deleted file mode 100644 index 0c7889df..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.16 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 16 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 024A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.17 b/build/tests/DisplaySystemInformation/ARM9/Makefile.17 deleted file mode 100644 index 80892409..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.17 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 17 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 025A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.2 b/build/tests/DisplaySystemInformation/ARM9/Makefile.2 deleted file mode 100644 index e093bac7..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.2 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 2 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B2A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.3 b/build/tests/DisplaySystemInformation/ARM9/Makefile.3 deleted file mode 100644 index 71dede94..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.3 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 3 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B3A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.4 b/build/tests/DisplaySystemInformation/ARM9/Makefile.4 deleted file mode 100644 index fbc31554..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.4 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 4 -IS_SECURE_APP = FALSE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 020A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.5 b/build/tests/DisplaySystemInformation/ARM9/Makefile.5 deleted file mode 100644 index e7c3a0ba..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.5 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 5 -IS_SECURE_APP = FALSE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 021A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.6 b/build/tests/DisplaySystemInformation/ARM9/Makefile.6 deleted file mode 100644 index 2d721c30..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.6 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 6 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B4A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.7 b/build/tests/DisplaySystemInformation/ARM9/Makefile.7 deleted file mode 100644 index 1fc0debe..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.7 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 7 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B5A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.8 b/build/tests/DisplaySystemInformation/ARM9/Makefile.8 deleted file mode 100644 index 5e6f23c9..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.8 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 8 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B6A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.9 b/build/tests/DisplaySystemInformation/ARM9/Makefile.9 deleted file mode 100644 index 96a07b8c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.9 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 9 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B7A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/filemove.rb b/build/tests/DisplaySystemInformation/ARM9/filemove.rb deleted file mode 100755 index 6fb1af4c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/filemove.rb +++ /dev/null @@ -1,23 +0,0 @@ -#! ruby -Ks -startDir = "/cygdrive/c/home/TWL_IPL/build/tests/DisplaySystemInformation/ARM9/bin/ARM9-TS.LTD.thumb/Rom" -dstDir = "/cygdrive/c/home/TWL_IPL/build/tests/DisplaySystemInformation/ARM9/bin/ARM9-TS.LTD.thumb/roms" - -Dir::chdir "./bin/ARM9-TS.LTD.thumb/Rom" - -dirList = Dir::entries "." -`mkdir #{dstDir}` - -for dir in dirList - - puts "===== #{dir} =====" - Dir::chdir "./#{dir}" - - Dir::glob("./*.{tad,srl}").each {|f| - puts "cp #{f} #{dstDir}/" - `cp #{f} #{dstDir}/` - } - - - - Dir::chdir startDir -end diff --git a/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf b/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf deleted file mode 100644 index 10ed7d54..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf +++ /dev/null @@ -1,250 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - #BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - BannerFile ../banner/$(DISPINFO_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - -# AESSlotフラグはノーマルアプリでは利用できない - HwAESSlotA_SSLClientCert FALSE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf b/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf deleted file mode 100644 index 3f2e6385..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf +++ /dev/null @@ -1,247 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/$(DISPINFO_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - HwAESSlotA_SSLClientCert $(DISPINFO_AES) - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) -# AppType SYSTEM - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) -# Media NAND - # - # Data only title : [TRUE/FALSE] - # don't have to edit - ##DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) -# Secure TRUE - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt b/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt deleted file mode 100644 index 99e6ff33..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt +++ /dev/null @@ -1,19 +0,0 @@ -FILE_IDX IS_SECURE_APP IS_NAND_APP NAND_ACCESS AES_SLOT INVISIBLE_SCFG GAMECODE -0 0 0 1 D 1 0B0A -1 0 0 1 D 0 0B1A -2 0 0 0 D 1 0B2A -3 0 0 0 D 0 0B3A -4 0 1 1 D 1 020A -5 0 1 1 D 0 021A -6 1 0 1 1 1 0B4A -7 1 0 1 1 0 0B5A -8 1 0 1 0 1 0B6A -9 1 0 1 0 0 0B7A -10 1 0 0 1 1 0B8A -11 1 0 0 1 0 0B9A -12 1 0 0 0 1 0BAA -13 1 0 0 0 0 0BBA -14 1 1 1 1 1 022A -15 1 1 1 1 0 023A -16 1 1 1 0 1 024A -17 1 1 1 0 0 025A diff --git a/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt b/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt deleted file mode 100644 index 6231895a..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt +++ /dev/null @@ -1,115 +0,0 @@ -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt b/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt deleted file mode 100644 index 0fcb308b..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt +++ /dev/null @@ -1,21 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb b/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb deleted file mode 100755 index 06b04a2a..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb +++ /dev/null @@ -1,54 +0,0 @@ -fHead = open("makeHeader.txt") -fFoot = open("makeFooter.txt") -contentHead = fHead.read -contentFoot = fFoot.read -fHead.close -fFoot.close - -fCond = open("makeConditions.txt") -numArg = 0 - -argList = Array.new -fCond.gets.split(/\s+/).each do |arg| - numArg += 1 - argList.push arg -end - -puts "argList" -puts argList - - -fileIdx = 0 - -while l = fCond.gets - next if l[0] == '#' - argIdx = 0 - - puts "file making: Makefile." + fileIdx.to_s - f = open("Makefile." + fileIdx.to_s, "w") - f.puts contentHead - - l.split(/\t+/).each do |value| - strVal = "TRUE" if value == "1" - strVal = "FALSE" if value == "0" - strVal = "DONTCARE" if value == "D" - - if argList[argIdx] == "GAMECODE" || argList[argIdx] == "FILE_IDX" - argSet = "#{argList[argIdx]}\t=\t#{value}" - else - argSet = "#{argList[argIdx]}\t=\t#{strVal}" - end - - f.puts argSet - - argIdx += 1 - end - - f.puts contentFoot - f.close - fileIdx += 1 -end - -fCond.close - -(0...fileIdx).each{ |i| print "Makefile.#{i} "} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/control.c b/build/tests/DisplaySystemInformation/ARM9/src/control.c deleted file mode 100644 index d74e83d5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/control.c +++ /dev/null @@ -1,425 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: control.c - - Copyright **** 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 -#include -#include "misc.h" -#include "drawFunc.h" -#include "control.h" -#include "strResource.h" -#include "viewSystemInfo.h" - -#define SAVE_COUNT_MASK 0x7f // saveCountの値の範囲をマスクする。(0x00-0x7f) - - -// TSFヘッダ -typedef struct TSFHeader{ - union digest { - u8 sha1[ SVC_SHA1_DIGEST_SIZE ]; // SHA-1ダイジェスト - u8 rsa[ RSA_KEY_LENGTH ]; // RSA署名 - u8 dst[ RSA_KEY_LENGTH ]; // 転送用の最大サイズ要素 - }digest; - u8 version; // データver. - u8 saveCount; // セーブカウント(ミラーリングしないファイルは使用しない) - u8 rsv[2]; // 予約 - u32 bodyLength; // データ長 -}TSFHeader; // 134bytes - -static const char *s_TSDPath[] = { - (const char *)"nand:/shared1/TWLCFG0.dat", - (const char *)"nand:/shared1/TWLCFG1.dat", -}; - - -static int selectLine[ROOTMENU_SIZE+1]; -BOOL resetUserData( void ); -BOOL breakUserData( u8 idx ); -BOOL resetRTC( void ); -static void TSDi_ClearSettingsDirect( LCFGTWLSettingsData *pTSD ); -static BOOL LCFGi_TSD_WriteSettingsDirectForRecovery( const LCFGTWLSettingsData *pSrcInfo, int index ); -static BOOL LCFGi_TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 *pSaveCount ); - - - -BOOL executeControl( int *line, int *changeLine, u8 *mode ) -{ - BOOL controlFlag = FALSE; - - // 上下で項目変更 - if( ( pad.trg & PAD_KEY_UP ) || ( pad.trg & PAD_KEY_DOWN ) ) - { - controlFlag = TRUE; - *changeLine = !*changeLine; - } - - if( ( pad.trg & PAD_BUTTON_A ) && *changeLine ) - { - BOOL result = TRUE; - controlFlag = TRUE; - - *mode |= MODE_RESULT_DISPLAY_MASK; - - switch( *line ) - { - case MENU_RESET_INFO: - result = resetUserData(); - break; - - case MENU_BREAK_DATA: - result &= breakUserData(0); - result &= breakUserData(1); - break; - - case MENU_RTC_RESET: - result = resetRTC(); - break; - } - - *mode = (u8) ((*mode & ~MODE_RESULT_MASK ) | ( result << MODE_RESULT_SHIFT) ); - } - - // Bでキャンセルして戻る - if( (pad.trg & PAD_BUTTON_B) || - ( ( pad.trg & PAD_BUTTON_A ) && !*changeLine) ) - { - controlFlag = TRUE; - *mode = 0; - } - - return controlFlag; -} - -ChangeCotnrolResult changeControl( int *menu, int *line, int *changeLine, u8 *mode ) -{ - int linemax = gAllInfo[*menu][*line].numKindName; - BOOL controlFlag = FALSE; - - if( !gAllInfo[*menu][*line].changable ) - { - // 何かの間違い - *mode = 0; - return CHANGE_CONTROL; - } - - // 上下で項目変更 - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - if( --(*changeLine) < 0 ) - { - // ラインをデクリメントした結果マイナスになったら一番最後へ - *changeLine = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - if( ++(*changeLine) >= linemax ) - { - // ラインをインクリメントした結果、maxlineを超えたら最初へ - *changeLine = 0; - } - } - - if( pad.trg & PAD_BUTTON_A ) - { - switch( gAllInfo[*menu][*line].argType ) - { - case ARG_INT: - gAllInfo[*menu][*line].changeFunc.cInt(*changeLine); - break; - - case ARG_BOOL: - gAllInfo[*menu][*line].changeFunc.cBool(*changeLine); - break; - - case ARG_OTHER: - // 論理値でもintでも渡せない関数は残念な対応をする - if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_RST_DSP ) - { - *changeLine == 0 ? SCFG_ReleaseResetDSP(): SCFG_ResetDSP(); - } - else if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_EXT_PS ) - { - SCFGPsramBoundary idx = SCFG_PSRAM_BOUNDARY_4MB; - - switch(*changeLine) - { - case 0: - idx = SCFG_PSRAM_BOUNDARY_4MB; - break; - case 1: - idx = SCFG_PSRAM_BOUNDARY_16MB; - break; - case 2: - idx = SCFG_PSRAM_BOUNDARY_32MB; - break; - } - - SCFG_SetPsramBoundary( idx ); - - } - - else if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_EXT_CFG ) - { - if( *changeLine == 0 ) - { - SCFG_SetConfigBlockInaccessible(); - } - } - - break; - } - - return CHANGE_VALUE_CHANGED; - } - - // Bでキャンセルして戻る - if( pad.trg & PAD_BUTTON_B ) - { - controlFlag = TRUE; - *mode = 0; - } - - return controlFlag ? CHANGE_CONTROL : CHANGE_NOTHING ; -} - - -BOOL control( int *menu, int *line, int *changeLine, u8 *mode ) -{ - int linemax = s_numMenu[*menu]; // 選択中ページの項目数 - BOOL controlFlag = FALSE; // 何か操作があったらTRUEになる - - // 上下で項目変更 - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - if( --(*line) < 0 ) - { - // ラインをデクリメントした結果マイナスになったら一番最後へ - *line = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - if( ++(*line) >= linemax ) - { - // ラインをインクリメントした結果、maxlineを超えたら最初へ - *line = 0; - } - } - - // 左右でページ送り - if( pad.trg & PAD_KEY_RIGHT ) - { - controlFlag = TRUE; - *line += DISP_NUM_LINES - 2; - - if( *line >= linemax ) - { - *line = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_LEFT ) - { - controlFlag = TRUE; - *line -= DISP_NUM_LINES - 2; - - if( *line < 0 ) - { - *line = 0; - } - } - - // Aボタン - if( pad.trg & PAD_BUTTON_A ) - { - if(*menu == MENU_ROOT) - { - controlFlag = TRUE; - - switch( *line ) - { - case MENU_ROOT : - case MENU_OWNER: - case MENU_PARENTAL: - case MENU_SECURE_USER: - case MENU_OTHER: - case MENU_NORMAL_HW: - case MENU_SECURE_HW: - case MENU_SCFG_ARM7: - case MENU_SCFG_ARM9: - case MENU_SYSMENU: - case MENU_FONT: - case MENU_WL: - case MENU_WHITE: - case MENU_VERSION: - // 今の画面の選択位置を記録 - selectLine[ROOTMENU_SIZE] = *line; - - // 次のメニュー画面を開く - *menu = *line; - *line = selectLine[*menu]; - break; - - case MENU_RESET_INFO: - case MENU_BREAK_DATA: - case MENU_RTC_RESET: - *mode |= MODE_EXECUTE_MASK; - *changeLine = 0; // デフォルト位置をcancelにしておく - break; - } - } - else if( *menu != MENU_VERSION && *menu != MENU_FONT && gAllInfo[*menu][*line].changable ) - { - controlFlag = TRUE; - - // 変更可能な項目は変更画面を開く - *mode |= MODE_CHANGE_MASK; - *changeLine = gAllInfo[*menu][*line].iValue; - } - - } - - if( pad.trg & PAD_BUTTON_B ) - { - if( *menu != MENU_ROOT ) - { - controlFlag = TRUE; - - // 設定値表示画面のときはルートに戻る - selectLine[*menu] = *line; - *menu = MENU_ROOT; - *line = selectLine[ROOTMENU_SIZE]; - } - } - - if( ( pad.trg & PAD_BUTTON_SELECT ) && *menu == MENU_SCFG_ARM7 ) - { - controlFlag = TRUE; - - // ARM7SCFGの表示データを切り替える - switchViewMode(); - } - - return controlFlag; -} - -BOOL resetUserData( void ) -// idx(0 or 1)番目のユーザデータをリセットする -{ - LCFGTWLTPCalibData calib; - // DisplayInitで一回Readしてるからいらんかった -// u8 *dataBuf = (u8*) Alloc (LCFG_READ_TEMP); - -// LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ])dataBuf ); - - // バックアップをつぶすために二回書き込む - LCFG_TSD_GetTPCalibration( &calib ); // TPキャリブレーションは残す。 - LCFG_ClearTWLSettings( LCFG_TSD_GetInstalledSoftBoxCount() ); - LCFG_TSD_SetTPCalibration( &calib ); - - if( ! LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ]) gBufLCFG ) ) - { - OS_TPrintf( "Write Setting failed.\n" ); - return FALSE; - } - - if( ! LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ]) gBufLCFG ) ) - { - OS_TPrintf( "Write Setting failed.\n" ); - return FALSE; - } - - OS_TPrintf("Clear Setting Succeeded.\n" ); - -// TSDi_ClearSettingsDirect( (LCFGTWLSettingsData *)(&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ]) ); -// LCFGi_TSD_WriteSettingsDirectForRecovery( (LCFGTWLSettingsData *)&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ], idx ); - - return TRUE; -} - -BOOL breakUserData( u8 idx ) -{ - // LCFG APIを使わずに、FSレベルでファイルを読んで、データを破壊してから書き戻す - FSFile file; - u8 *fileBuf = (u8*) Alloc ( LCFG_TEMP_BUFFER_SIZE ); - - FS_InitFile( &file ); - - if( !FS_OpenFileEx( &file, s_TSDPath[idx], FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - OS_TPrintf("OpenFile failed. result: %d path: %s\n", FS_GetArchiveResultCode(&file), s_TSDPath[idx]); - return FALSE; - } - - // 適当にデータを壊す - MI_CpuFill8( fileBuf, 0xFF, LCFG_TEMP_BUFFER_SIZE ); - - // データの書き戻し - FS_SeekFileToBegin( &file ); - - if( FS_WriteFile( &file, fileBuf, LCFG_TEMP_BUFFER_SIZE ) == -1 ) - { - OS_TPrintf("writeFile failed. path: %s\n", s_TSDPath[idx]); - return FALSE; - } - - FS_CloseFile( &file ); - - OS_TPrintf("Breaking UserData Succeeded. path: %s\n", s_TSDPath[idx]); - return TRUE; -} - - -BOOL resetRTC( void ) -{ - RTCResult result; - RTCDate date; - RTCTime time; - - date.year = 0; - date.month = 1; - date.day = 1; - date.week = RTC_WEEK_SUNDAY; - - time.hour = 0; - time.minute = 0; - time.second = 0; - - // resultは成功したらゼロが返る - result = RTC_SetDate( &date ); - if( result != RTC_RESULT_SUCCESS ) - { - OS_TPrintf("RTC Date Reset Failed. err: %d", result ); - return FALSE; - } - - result |= RTC_SetTime( &time ); - if( result != RTC_RESULT_SUCCESS ) - { - OS_TPrintf("RTC Time Reset Failed. err: %d", result ); - return FALSE; - } - - return TRUE; -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/control.h b/build/tests/DisplaySystemInformation/ARM9/src/control.h deleted file mode 100644 index 93598285..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/control.h +++ /dev/null @@ -1,41 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: control.h - - Copyright **** 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 __DISPLAY_SYSTEM_CONTROL_H__ -#define __DISPLAY_SYSTEM_CONTROL_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum ChangeCotnrolResult{ - CHANGE_NOTHING, - CHANGE_CONTROL, - CHANGE_VALUE_CHANGED -} ChangeCotnrolResult; - -BOOL executeControl( int *line, int *changeLine, u8 *mode ); -ChangeCotnrolResult changeControl( int *menu, int *line, int *changeLine, u8 *changeMode ); -BOOL control( int *menu, int *line, int *changeLine, u8 *changeMode ); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c deleted file mode 100644 index ea3c8eba..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c +++ /dev/null @@ -1,1085 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: drawFunc.c - Copyright **** 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 -#include -#include -#include -#include - -#include "drawFunc.h" -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "misc.h" -#include "strResource.h" -#include "myIoreg_SCFG.h" - - - -// 描画関連 -#define HEADER_UP 0 -#define HEADER_LEFT 10 -#define PAGE_LEFT 160 -#define FOOTER_UP 110 -#define FOOTER_LEFT 10 -#define ALLOW_LEFT 0 - -#define AST_LEFT ( ALLOW_LEFT + LINE_OFFSET ) -#define KIND_UP 10 // 項目名の上座標 -#define KIND_LEFT ( AST_LEFT + 10 ) // 項目名の左座標 -#define VALUE_UP KIND_UP // 項目値の上座標 -#define VALUE_LEFT 140 // 項目値の左座標 -#define LINE_OFFSET 15 // 1行ごとのオフセット -#define ROW_OFFSET 15 // 長い項目が現れたときの段組用 - -#define REGISTER_NAME_LEFT 10 -#define REGISTER_NAME_UP 15 -#define REGISTER_DATA_LEFT 50 -#define REGISTER_DATA_UP 15 - -#define FOOTER_REGIST 0 -#define FOOTER_CONTROL1 1 -#define FOOTER_CONTROL2 2 -#define FOOTER_MENU 3 -#define FOOTER_LINES 4 - -#define CHANGE_ITEMNAME_UP 20 -#define CHANGE_ITEMNAME_LEFT 20 -#define CHANGE_VALUE_LEFT 80 -#define CHANGE_VALUE_UP 80 -#define CHANGE_ALLOW_LEFT (CHANGE_VALUE_LEFT - 15) -#define CHANGE_NOW_SETTING_UP 150 - -#define RESULT_LEFT CHANGE_ITEMNAME_LEFT -#define RESULT_UP CHANGE_NOW_SETTING_UP - - -#define SCROLL_MARGIN 2 // 画面端何行でスクロールするか - -#define UNIQUE_BUF 12 -#define BINARY_BUF 18 - -/* global variables -------------------- */ - -static int gDrawIdx[ROOTMENU_SIZE+1] = {0}; // 今何項目目から下を描画しているのか -static int gMenuLineSize[ROOTMENU_SIZE] = {}; // 各メニューの全体行数 -static const int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE]; -static BOOL gSelectedARM7SCFGReg = TRUE; // ARM7SCFGでレジスタサイドの描画ならtrue,共有領域ならfalse - -/* function prototypes -------------------- */ - -void calibrateDrawIdx( int menu, int idx ); -void printData( int x, int y, int color, DispInfoEntry *entry ); -void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ); -void printKindName( int menu, int entryLine, int drawOffset, int selected ); -void printBinary16( int x, int y, u16 value, int selected, int selectSize ); -void printBinary32( int x, int y, u32 value, int selected, int selectSize ); -void drawRegister( int menu, int selected ); -void drawChangeMode( DispInfoEntry *Entry, int changeLine ); -void drawExecuteMode( const char *command, int changeLine, u8 mode ); -void drawFontInfo( int idx, int drawLine, int selected ); -void drawVersion( int idx, int drawLine ,int selected ); -void printUniqueID( int drawLineOffset, char *uniqueId ); -int getPageNum( int valueIdx, const int* pageOffset ); -int countMenuLine( int menu ); -int countLinesDown( int menu, int idx ); - -void drawHeader( int menu, int line) -// 画面端に簡単な情報を表示する -{ - u16 buf[256]; - -#ifdef VERSION_VIEWER - PrintfSJISSub( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "%s $Rev$" , "AppVesionViewer" ); -#else - PrintfSJISSub( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "%s %d $Rev$" , "DisplaySystemInfo", DISPINFO_BIN_IDX ); -#endif - - if( menu != MENU_ROOT ) - { - swprintf(buf, 256, L"Root > %s", s_strRootMenu[menu] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_MENU * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - - swprintf(buf, 256, L"%d / %d", line+1 , s_numMenu[menu] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_LINES * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - } - else - { - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_MENU * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L"Root" ); - swprintf(buf, 256, L"%d / %d", line+1 , ROOTMENU_SIZE ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_LINES * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - } - -#ifndef VERSION_VIEWER - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_CONTROL1 * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L" A: Decide B: Back "); - - if( menu == MENU_SCFG_ARM7 ) - { - PrintfSJISSub( FOOTER_LEFT, FOOTER_UP + FOOTER_REGIST * LINE_OFFSET, TXT_COLOR_RED, s_strSCFGViewMode[ gSelectedARM7SCFGReg ] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_CONTROL2 * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L" Select: Switch Viewing Area" ); - } -#endif -} - -void printData( int x, int y, int color, DispInfoEntry *entry ) -{ - if( entry->isNumData ) - { - // 数値データだったらそのままプリント - PrintfSJIS( x, y, color, "%d", entry->iValue ); - } - else if( entry->isSjis ) - { - if( entry->str.sjis == s_strCorrect[0] ) - { - color = TXT_COLOR_RED; - } - - // SJIS文字列 - PrintfSJIS( x, y, color, "%s", entry->str.sjis ); - } - else - { - // UTF16文字列 - PutStringUTF16( x, y, color, entry->str.utf ); - } - -} - -int countMenuLine( int menu ) -{ - int i; - int sum = 0; - - for( i=0; ifromLCFG ) - { - // LCFG経由で取得したデータは青にする - txtColor = TXT_COLOR_BLUE; - } - - ////////////////////////////////////////////// - // 特殊描画を行う必要がある場合の処理はここ // - ////////////////////////////////////////////// - - if( menu == MENU_OWNER && entryLine == OWNER_COLOR ) - { - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawOffset, TXT_UCOLOR_GRAY + entry->iValue , "■" ); - printData( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry ); - return; - } - - if( menu == MENU_NORMAL_HW && entryLine == NORMAL_HW_UNIQUE_ID ) - { - printUniqueID( drawOffset, entry->str.sjis ); - entry->numLines = 4; - return; - } - - if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD ) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, "%04d", entry->iValue ); - return; - } - - if( menu == MENU_SYSMENU && entryLine == SYSMENU_VERSION_NUM ) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, - txtColor, "%d.%d", entry->iValue >> 16, entry->iValue & 0xFFFF ); - return; - } - - if( ( menu == MENU_SYSMENU && entryLine == SYSMENU_TIMESTAMP )|| - ( menu == MENU_FONT && entryLine == FONT_TIMESTAMP )) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, "%08lx", entry->iValue ); - return; - } - - if( menu == MENU_SECURE_HW && entryLine == SECURE_HW_LAUNCHER_ID ) - { - char buf[5]; - - if( entry->iValue == 0 ) - { - // 情報が受け取れていない状態 - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1 + drawOffset), txtColor, s_strNA ); - } - - MI_CpuCopy( &(entry->iValue), buf, 4 ); - buf[4] = '\0'; - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1 + drawOffset), txtColor, "%s", buf ); - return; - } - - if( ( menu == MENU_SECURE_HW && entryLine == SECURE_HW_FUSE ) || - ( menu == MENU_OTHER && entryLine == OTHER_RTC_OFFSET ) || - ( menu == MENU_OTHER && entryLine == OTHER_TP_RSV ) ) - { - // 16文字を8文字の二段組みに変更 - char buf[9] = {0}; - STD_StrLCpy( buf, entry->str.sjis , 9 ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * drawOffset, txtColor, "%s", buf ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1+drawOffset), txtColor, "%s", &(entry->str.sjis[8]) ); - return; - } - - if( ( menu == MENU_SYSMENU && entryLine == SYSMENU_EULA_URL ) || - ( menu == MENU_SYSMENU && entryLine == SYSMENU_NUP_HOST )) - { - char buf[17] = {0}; - int i, lineOffset = 0; - - for( i = 0; i < STD_StrLen( entry->str.sjis ) ; i+=16 ) - { - STD_StrLCpy( buf, &(entry->str.sjis[i]), 17 ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * ( drawOffset + lineOffset++), txtColor, "%s", buf ); - } - - entry->numLines = lineOffset > 0 ? lineOffset : 1; - return; - } - - if( ( menu == MENU_OWNER && entryLine == OWNER_COMMENT ) || - ( menu == MENU_PARENTAL && entryLine == PARENTAL_ANSWER )) - { - u16 buf[11] = {0}; - int i, lineOffset = 0; - - for( i = 0; i < wcslen( entry->str.utf ) ; i+=10 ) - { - MI_CpuCopy( &(entry->str.utf[i]), buf, 20 ); - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET * ( drawOffset + lineOffset++), txtColor, buf ); - } - - // 項目が空文字しかないときでも1行表示だけはされるようにする - entry->numLines = lineOffset > 0 ? lineOffset : 1; - - return; - } - - - ////////////////////////// - // 通常の項目描画はここ // - ////////////////////////// - - if( entry->isAligned ) - { - printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry ); - } - else - { - // 項目名が長くて字下げが必要な場合 - printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET* ( drawOffset + 1 ), txtColor, entry ); - } -} - -void drawRegister( int menu, int selected ) -{ -#ifndef VERSION_VIEWER - // SCFGレジスタのバイナリをサブ画面に描画する - int selectRegSize = 1; - int selectBitNum; - - if( menu == MENU_SCFG_ARM7 && selected < SCFG_ARM7_MI_SC1_CDET) - { - // ARM7の前半4つ - u32 regRom = 0; - u16 regClk = 0; - u16 regJtag = 0; - u32 regExt = 0; - selectBitNum = gRegisterIdx[0][selected]; - - regRom = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_ROM_OFFSET - 0x4000] ); - regClk = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - regJtag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - regExt = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - - if( selected == SCFG_ARM7_EXT_PS ) - { - selectRegSize = 2; - } - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[0] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[1] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regClk, selectBitNum - 32, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[2] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regJtag, selectBitNum - 48, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[3] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regExt, selectBitNum - 64, selectRegSize ); - } - else if( menu == MENU_SCFG_ARM7 && selected >= SCFG_ARM7_MI_SC1_CDET ) - { - // SCFGの後半4つ - u32 regMc1 = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - u16 regMc2 = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); - u16 regOldWL = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000] ); - u16 regOption = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000] ); - selectBitNum = gRegisterIdx[0][selected]; - - if( selected == SCFG_ARM7_MI_SC1_MODE || - selected == SCFG_ARM7_MI_SC2_MODE || - selected == SCFG_ARM7_OP_FORM || - selected == SCFG_ARM7_OP_APP ) - { - selectRegSize = 2; - } - else if( selected == SCFG_ARM7_MI_CC || selected == SCFG_ARM7_MI_CA ) - { - selectRegSize = 16; - } - - // 描画 - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[4] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regMc1, selectBitNum - 96, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[5]); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regMc2, selectBitNum - 128, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[6] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regOldWL, selectBitNum - 144, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[7] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regOption, selectBitNum - 160, selectRegSize ); - - } - else if( menu == MENU_SCFG_ARM9 ) - { - // ARM9側のSCFGレジスタセット - u16 regRom = MI_LoadLE16( (void*) (HW_IOREG + REG_A9ROM_OFFSET) ); - u16 regClk = MI_LoadLE16( (void*) (HW_IOREG + REG_CLK_OFFSET) ); - u16 regRst = MI_LoadLE16( (void*) (HW_IOREG + REG_RST_OFFSET) ); - u32 regExt = MI_LoadLE32( (void*) (HW_IOREG + REG_EXT_OFFSET) ); - u16 regMc = MI_LoadLE16( (void*) (HW_IOREG + REG_MC_OFFSET ) ); - selectBitNum = gRegisterIdx[1][selected]; - - if( selected == SCFG_ARM9_EXT_PS) - { - selectRegSize = 2; - } - - // 描画 - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM9RegisterName[0] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[1] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + LINE_OFFSET, regClk, selectBitNum - 16, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[2] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regRst, selectBitNum - 32, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[3] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regExt, selectBitNum - 48, selectRegSize ); - - } -#endif // ifndef VERSION_VIEWER -} - -void printBinary32( int x, int y, u32 value, int selected, int selectSize ) -{ - printBinary16( x, y, (u16)(value >> 16), selected - 16, selectSize ); - printBinary16( x, y + LINE_OFFSET, (u16)(value & 0xFFFF), selected, selectSize ); -} - -void printBinary16( int x, int y, u16 value, int selected, int selectSize ) -{ - // 16ビットのバイナリをディスプレイに描画 - - int i; - int bitNum; - u16 buf[BINARY_BUF] = {0}; // 16bit + 1 space + 1 EOS - u16 mask = 0x8000; - - for( i = 0; i < BINARY_BUF; i++) - { - if( i%9 == 8 ) - { - buf[i] = L' '; - continue; - } - - if( value & mask ) - { - buf[i] = L'1'; - } - else - { - buf[i] = L'0'; - } - - mask = (u16)( mask >> 1 ); - } - - buf[BINARY_BUF] = L'\0'; - - PutStringUTF16Sub( x, y, TXT_COLOR_BLACK, buf ); - - if( selected >= 16 || selected < 0 ) - { - // 描画レジスタ内に選択項目に対応するビットがなければこれで終わり - return; - } - - // マスクをリセット - mask = 0x8000; - - // 今回の描画レジスタ内に選択項目に対応するビットがあるとき - // そのビットだけ赤字で表示する - for( i = 0, bitNum = 0; bitNum < 16; i++ ) - { - if( i == 8 ) - { - // 8ビット、8ビットの間の空白 - buf[i] = L' '; - continue; - } - - if( selected <= 15 - bitNum && 15 - bitNum < selected + selectSize ) - { - buf[i] = ( value & ( mask >> bitNum )) ? L'1': L'0' ; - } - else - { - buf[i] = L' '; - } - - bitNum++; - } - - PutStringUTF16Sub( x, y, TXT_COLOR_RED, buf ); -} - -void drawChangeMode( DispInfoEntry *entry, int changeLine ) -// 値変更画面の描画 -{ - int i; - - // 項目名 - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_ITEMNAME_UP, TXT_COLOR_RED, entry->kind ); - - if( entry->kindNameList != NULL ) - { - // BOOL値で変更設定する項目の場合は値一覧を選択肢として表示 - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_NOW_SETTING_UP, TXT_COLOR_BLACK, "Now Setting: %s", entry->kindNameList[entry->iValue] ); - - for( i = 0; i < entry->numKindName; i++ ) - { - int kindColor = TXT_COLOR_BLACK; - - if( i == changeLine ) - { - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( CHANGE_ALLOW_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, TXT_COLOR_BLACK, (const u16 *)L"→" ); - } - - PrintfSJIS( CHANGE_VALUE_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, kindColor, entry->kindNameList[i] ); - } - } - -} - -void drawExecuteMode( const char *command, int changeLine, u8 mode ) -{ -#ifndef VERSION_VIEWER - int i; - - // 項目名 - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_ITEMNAME_UP, TXT_COLOR_RED, command ); - - for( i = 0; i < 2 ; i++ ) - { - int kindColor = TXT_COLOR_BLACK; - - if( i == changeLine ) - { - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( CHANGE_ALLOW_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, TXT_COLOR_BLACK, (const u16 *)L"→" ); - } - - PrintfSJIS( CHANGE_VALUE_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, kindColor, s_strOK[i] ); - } - - if( mode & MODE_RESULT_DISPLAY_MASK ) - { - PrintfSJIS( RESULT_LEFT, RESULT_UP, TXT_COLOR_BLACK, s_strResult[ (mode & MODE_RESULT_MASK) >> MODE_RESULT_SHIFT ] ); - } -#endif // VERSION_VIEWER - -} - -void drawVersion( int idx, int drawLine ,int selected ) -{ - int kindColor = TXT_COLOR_BLACK; - u16 value = gContentsVersion[idx]; - - if( idx == selected) - { - // 選択項目はいろかえる - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*drawLine, TXT_COLOR_BLACK, (const u16 *)L"→"); - } - - - // 項目名 - // gContentsTitle[i]は頭4バイトがイニシャルコードのビッグエンディアン記述、 - // お尻4バイトがアプリのフラグ - { - u64 id = gContentsTitle[idx]; - char buf[5] = {0}; - int i; - - for(i = 3; 0<=i; i-- ) - { - buf[i] = (char)(id & 0xFF) ; - id >>= 8; - } - - PrintfSJIS( KIND_LEFT, KIND_UP + LINE_OFFSET*drawLine , kindColor, "%s", buf ); - } - - // 値 - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, "%x.%x", value >> 8, value & 0xFF ); -} - -void drawFontInfo( int idx, int drawLine, int selected ) -{ -#ifndef VERSION_VIEWER - int color = TXT_COLOR_BLACK; - int fontIdx = idx / NUM_FONT_INFO; - int dataType = idx % NUM_FONT_INFO; - - static const char* s_strFontDataType[] = { - "name", - "size", - "hash" - }; - - // 種類名 - if( idx == selected) - { - color = TXT_COLOR_GREEN; - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*drawLine, TXT_COLOR_BLACK, (const u16 *)L"→"); - } - - PrintfSJIS( KIND_LEFT, KIND_UP + LINE_OFFSET*drawLine , color, "font%d %s", fontIdx, s_strFontDataType[dataType] ); - - // 値 - switch( dataType ) - { - case 0: - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, (char*)gFontInfo[fontIdx].name ); - break; - - case 1: - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, "%d byte", gFontInfo[fontIdx].size ); - break; - - case 2: - if( gFontInfo[fontIdx].isHashOK ) - { - color = TXT_COLOR_BLACK; - } - else - { - color = TXT_COLOR_RED; - } - - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , color, s_strCorrect[ gFontInfo[fontIdx].isHashOK ] ); - break; - } -#endif // ifdef VERSION_VIEWER -} -void drawMenu( int menu, int line, int changeLine, u8 mode ) -// 情報一覧を描画する -{ - int lineNum = 0; - int i=0; - - drawHeader( menu, line ); - drawRegister( menu, line ); - - if( mode & MODE_CHANGE_MASK ) - { - // 変更モード画面の描画 - drawChangeMode( &gAllInfo[menu][line], changeLine ); - return; - } - - if( mode & MODE_EXECUTE_MASK ) - { - drawExecuteMode( s_strMetaMenu[MENU_ROOT][line] , changeLine, mode ); - return; - } - - // 描画位置の調整 - if( line - gDrawIdx[menu] < SCROLL_MARGIN ) - { - gDrawIdx[menu] = line - SCROLL_MARGIN >= 0 ? line - SCROLL_MARGIN : 0; - } - else if( countLinesDown(menu, line) < SCROLL_MARGIN ) - { - calibrateDrawIdx( menu, line ); - } - - for( i = gDrawIdx[menu] ; i < s_numMenu[menu] && lineNum < DISP_NUM_LINES ; i++ ) - { - // 可変長項目なバージョン情報だけ特例処理 - if( menu == MENU_VERSION && VERSION_OTHER <= i ) - { - drawVersion( i - VERSION_OTHER, lineNum++, line - VERSION_OTHER ); - continue; - } - - if( menu == MENU_FONT && FONT_INFO <= i ) - { - drawFontInfo( i - FONT_INFO, lineNum++, line - FONT_INFO ); - continue; - } - - // 項目名の描画 - printKindName( menu, i, lineNum, line ); - - // 値の描画 - if( menu == MENU_SCFG_ARM7 && !gSelectedARM7SCFGReg ) - { - // ARM7のSCFGで共有領域側の値を表示してるときはオフセットを加える - printValue( menu, i, lineNum, &gAllInfo[menu][i + SCFG_ARM7_SHARED_OFFSET] ); - } - else if( menu != MENU_ROOT ) - { - printValue( menu, i, lineNum, &gAllInfo[menu][i] ); - } - - // 描画オフセットの更新 - lineNum += menu != MENU_ROOT ? gAllInfo[menu][i].numLines : 1; - } - - /* - // スクロールバーとか出す? - // 全体の行数を把握 - if( gMenuLineSize[menu] == 0 ) - { - gMenuLineSize[menu] = countMenuLine(menu); - } - */ -} - -int countLinesDown( int menu, int idx ) -// 選択項目より下側に何項目表示されているかカウント -{ - int i; - int lines = 0; - - for( i = gDrawIdx[menu]; lines < DISP_NUM_LINES && i < s_numMenu[menu] ; i++ ) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i ) || - ( menu == MENU_FONT && FONT_INFO <= i ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][i].numLines; - } - - return (i-1) - idx; -} - -void calibrateDrawIdx( int menu, int idx ) -// 折り返し項目とかがあると描画位置がずれるので -// 下側に常に2項目表示されるように補正を行う -{ - int i; - int lines = 0; - - // まずは自分と下2項目の行数を探索 - for( i = 0; i <= 2 && i + idx < s_numMenu[menu] ; i++ ) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i+idx ) || - ( menu == MENU_FONT && FONT_INFO <= i+idx ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][i + idx].numLines; - } - - // 自分より上方向へ探索 - for( i = 1; 0 <= idx - i && lines < DISP_NUM_LINES ; i++) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i+idx ) || - ( menu == MENU_FONT && FONT_INFO <= i+idx ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][idx - i].numLines; - } - - // ループが一回余計に回る - i--; - - if( lines < DISP_NUM_LINES ) - { - // idx - iがゼロより小さくなった場合 - gDrawIdx[menu] = 0; - } - else if( lines == DISP_NUM_LINES ) - { - // 表示行数ちょうどはそのまま - gDrawIdx[menu] = idx - i; - } - else if( lines == DISP_NUM_LINES + 1 && gAllInfo[menu][ idx - i ].numLines != 1) - { - // 1行溢れてて、かつ一番上の項目が複数行描画だった場合はそのまま - gDrawIdx[menu] = idx - i; - } - else - { - // それ以外の場合は一番上の行を外す - gDrawIdx[menu] = idx - i + 1; - } - -} - -void switchViewMode( void ) -// ARM7SCFGのレジスタデータと共有領域データの表示内容を切り替える -{ - gSelectedARM7SCFGReg = !gSelectedARM7SCFGReg; -} - -/* -void drawKindName( int menu, int page, int line ) -// 項目名描画関数 -{ - int linenum = 0; - int offset = 0; - - if( menu == MENU_ROOT ) - { - // ルートメニューにはインデクスデータがないので、間隔をあけないことを前提に羅列するだけ - for(linenum = 0; linenum < ROOTMENU_SIZE ; linenum++) - { - if( linenum == line ) - { - // 選択中の項目は表示色かえて矢印表示 - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, (const u16 *)L"→" ); - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_GREEN, s_strMetaMenu[MENU_ROOT][linenum]) ; - } - else - { - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, s_strMetaMenu[MENU_ROOT][linenum]) ; - } - } - - } - else - { - for(linenum = s_pageOffset[menu][page] ; linenum < s_pageOffset[menu][page+1] ; linenum++) - { - if( linenum == s_pageOffset[menu][page] + line ) - { - // 選択中の項目は表示色かえて矢印表示 - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_BLACK, (const u16 *)L"→" ); - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_GREEN, s_strMetaMenu[menu][linenum]) ; - } - else - { - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_BLACK, s_strMetaMenu[menu][linenum]) ; - } - } - } -} - -void drawOwnerMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // utf16で描画するものだけ分ける - if( valueIdx == OWNER_NICKNAME ) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gUserName) ; - } - else if( valueIdx == OWNER_COMMENT ) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gUserComment) ; - } - else if( valueIdx == OWNER_COLOR ) - { - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_UCOLOR_G5, "■" ); - PrintfSJIS( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - - } - else - { - // sjisで描画するもの - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } - -} - -void drawParentalMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // utf16で描画するものだけ分ける - if(valueIdx == PARENTAL_ANSWER) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gSecretAnswer) ; - } - else - { - // sjisで描画するもの - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } -} - - -void drawNormalHWMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // 描画してついでにインデクス差分データをいれる - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - -} - - -void drawSecureHWMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // 複数行必要な項目があると描画位置がずれるため - // 描画オフセットを調整する処理が必要 - if( valueIdx >= SECURE_HW_FORCE_DISABLE && page == getPageNum( SECURE_HW_FORCE_DISABLE, pageOffset ) ) - { - drawLineOffset++; - } - - if( valueIdx > SECURE_HW_UNIQUE_ID && page == getPageNum( SECURE_HW_UNIQUE_ID, pageOffset ) ) - { - drawLineOffset += OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 / UNIQUE_BUF; - } - - // 同じように項目名のオフセットも調整 - if( valueIdx > SECURE_HW_FORCE_DISABLE && page == getPageNum( SECURE_HW_FORCE_DISABLE, pageOffset ) ) - { - drawKindOffset++; - } - - if( valueIdx > SECURE_HW_UNIQUE_ID && page == getPageNum( SECURE_HW_UNIQUE_ID, pageOffset ) ) - { - drawKindOffset += OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 / UNIQUE_BUF; - } - - - // 描画する、ついでにインデクスデータも入れる - if( valueIdx == SECURE_HW_UNIQUE_ID ) - { - kindOffset[valueIdx] = drawKindOffset; - printUniqueID(drawLineOffset); - } - else - { - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } -} - -void drawSCFGARM7Menu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - kindOffset[valueIdx] = linenum; -} - -void drawSCFGARM9Menu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - kindOffset[valueIdx] = drawKindOffset; - -} - -void drawVersionMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - kindOffset[valueIdx] = drawKindOffset; - -} -*/ - -void printUniqueID( int drawLineOffset, char *uniqueId) -// ユニークIDを整形して出力 -{ - char buf[UNIQUE_BUF+1]; - int i; - - for( i=0; i * UNIQUE_BUF < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 ; i++) - { - strncpy(buf, &uniqueId[i * UNIQUE_BUF], UNIQUE_BUF); - buf[UNIQUE_BUF] = '\0'; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET * (drawLineOffset + i), TXT_COLOR_BLACK, buf ); - } - -} - -int getPageNum( int valueIdx, const int* pageOffset ) -// valueIdxが何ページ目にあるかをpageOffsetから調べる -{ - int i; - - for( i=0; i < MAXITEM - 1; i++ ) - { - if( valueIdx > pageOffset[i] && valueIdx < pageOffset[i+1] ) - { - return i; - } - } - - return -1; -} - -const static int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE] = { - // ARM7, ARM9のSCFGの各項目がレジスタにおいて対応しているのかをリストで記述 - - // ARM7 side - { - DISP_REG_SCFG_ROM_ARM9SEL_SHIFT, - DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7SEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT, - DISP_REG_SCFG_ROM_ROMWE_SHIFT, - - DISP_REG_SCFG_CLK_SD1HCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_SD2HCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_AESHCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_SNDMCLK_SHIFT + 32, - - DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT + 48, - DISP_REG_SCFG_JTAG_CPUJE_SHIFT + 48, - DISP_REG_SCFG_JTAG_DSPJE_SHIFT + 48, - - DISP_REG_SCFG_EXT_DMA_SHIFT + 64, - DISP_REG_SCFG_EXT_SDMA_SHIFT + 64, - DISP_REG_SCFG_EXT_SND_SHIFT + 64, - DISP_REG_SCFG_EXT_MC_SHIFT + 64, - DISP_REG_SCFG_EXT_INTC_SHIFT + 64, - DISP_REG_SCFG_EXT_SPI_SHIFT + 64, - DISP_REG_SCFG_EXT_DSEL_SHIFT + 64, - DISP_REG_SCFG_EXT_SIO_SHIFT + 64, - DISP_REG_SCFG_EXT_LCDC_SHIFT + 64, - DISP_REG_SCFG_EXT_VRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_PSRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_DMAC_SHIFT + 64, - DISP_REG_SCFG_EXT_AES_SHIFT + 64, - DISP_REG_SCFG_EXT_SD1_SHIFT + 64, - DISP_REG_SCFG_EXT_SD2_SHIFT + 64, - DISP_REG_SCFG_EXT_MIC_SHIFT + 64, - DISP_REG_SCFG_EXT_I2S_SHIFT + 64, - DISP_REG_SCFG_EXT_I2C_SHIFT + 64, - DISP_REG_SCFG_EXT_GPIO_SHIFT + 64, - DISP_REG_SCFG_EXT_MC_B_SHIFT + 64, - DISP_REG_SCFG_EXT_WRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_PUENABLE_SHIFT + 64, - DISP_REG_SCFG_EXT_CFG_SHIFT + 64, - - DISP_REG_MI_MC1_SL1_CDET_SHIFT + 96, - DISP_REG_MI_MC1_SL1_M0_SHIFT + 96, - DISP_REG_MI_MC1_SL2_CDET_SHIFT + 96, - DISP_REG_MI_MC1_SL2_M0_SHIFT + 96, - DISP_REG_MI_MC1_SWP_SHIFT + 96, - DISP_REG_MI_MC1_CC_SHIFT + 96, - - DISP_REG_MI_MC2_CA_SHIFT + 128, - - DISP_REG_SCFG_WL_OFFB_SHIFT + 144, - - DISP_REG_SCFG_OP_OP0_SHIFT + 160, - DISP_REG_SCFG_OP_OP0_SHIFT + 160 - }, - - // ARM9 side - { - REG_SCFG_A9ROM_SEC_SHIFT, - REG_SCFG_A9ROM_RSEL_SHIFT, - - REG_SCFG_CLK_CPUSPD_SHIFT + 16, - REG_SCFG_CLK_DSPHCLK_SHIFT + 16, - REG_SCFG_CLK_CAMHCLK_SHIFT + 16, - REG_SCFG_CLK_WRAMHCLK_SHIFT + 16, - REG_SCFG_CLK_CAMCKI_SHIFT + 16, - - REG_SCFG_RST_DSPRSTB_SHIFT + 32, - - REG_SCFG_EXT_DMA_SHIFT + 48, - REG_SCFG_EXT_GEO_SHIFT + 48, - REG_SCFG_EXT_REN_SHIFT + 48, - REG_SCFG_EXT_G2DE_SHIFT + 48, - REG_SCFG_EXT_DIV_SHIFT + 48, - REG_SCFG_EXT_MC_SHIFT + 48, - REG_SCFG_EXT_INTC_SHIFT + 48, - REG_SCFG_EXT_LCDC_SHIFT + 48, - REG_SCFG_EXT_VRAM_SHIFT + 48, - REG_SCFG_EXT_PSRAM_SHIFT + 48, - REG_SCFG_EXT_DMAC_SHIFT + 48, - REG_SCFG_EXT_CAM_SHIFT + 48, - REG_SCFG_EXT_DSP_SHIFT + 48, - REG_SCFG_EXT_MC_B_SHIFT + 48, - REG_SCFG_EXT_WRAM_SHIFT + 48, - REG_SCFG_EXT_CFG_SHIFT + 48, - - } -}; \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h deleted file mode 100644 index 50958e22..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h +++ /dev/null @@ -1,54 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: drawFunc.h - - Copyright **** 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 -#include "strResource.h" - -#ifdef __cplusplus -extern "C" { -#endif - - - - -// 各メニューサイズ - -#define DISP_NUM_LINES 11 // 一ページあたりの項目数 - -/* global variables ----------------- */ - -#define MAXITEM 50 -#define MAXPAGE 5 - -// 各項目を表示するときの行オフセット表 -extern int gMenuKindOffset[ROOTMENU_SIZE][MAXITEM]; - -/* function prototypes ----------------- */ - -void drawHeader( int menu, int line ); -void drawMenu( int menu, int line, int changeLine, u8 mode ); -void printResult( BOOL res ); -void switchViewMode( void ); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h b/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h deleted file mode 100644 index e861e041..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h +++ /dev/null @@ -1,59 +0,0 @@ - -#ifndef __DISPLAY_INFO_GETINFORMATION__ - -#include - -#define __DISPLAY_INFO_GETINFORMATION__ - -// 初回読み込みか否か -static BOOL firstRead; - -// NANDアプリ情報 -extern s32 gNumContents; -extern OSTitleId *gContentsTitle; -extern u16 *gContentsVersion; - -#ifndef VERSION_VIEWER - -#define TWL_SYSMENU_VER_STR_LEN 28 // システムメニューバージョン文字列MAX bytes -#define TWL_EULA_URL_LEN 128 -#define TWL_NUP_HOSTNAME_LEN 64 - -#define NUM_FONT_INFO 3 // フォント一つ当たりのメニュー数。名前、サイズ、ハッシュの三項目 - -typedef struct FontInfo{ - u8 *name; // お名前 - u32 size; // 大きさ - u8 *data; // データ本体 - u8 *hash; // データのハッシュ値 - BOOL isHashOK; // ハッシュ値が既知のものと一致するか -} FontInfo; - - - -// 共有フォント情報 -extern FontInfo gFontInfo[ OS_SHARED_FONT_MAX ]; - -// LCFGデータを読み込むためのバッファ -extern u8 *bufLCFG; - -#endif // ifndef VERSION_VIEWER - -void getVersions( void ); -void getContentsVersion( void ); - -#ifndef VERSION_VIEWER -void getSysmenuInfo( void ); -void getSCFGInfo( void ); -void getOwnerInfo( void ); -void getHWInfo( void ); -void getParentalInfo( void ); -void getOtherInfo( void ); -void getSecureUserInfo( void ); -void getFontInfo( void ); -void getWLInfo( void ); -void getWhiteListInfo( void ); - -#endif // ifndef VERSION_VIEWER - -#endif // ifdef __DISPLAY_INFO_GETINFORMATION__ \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_font.c b/build/tests/DisplaySystemInformation/ARM9/src/get_font.c deleted file mode 100644 index 843b8679..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_font.c +++ /dev/null @@ -1,118 +0,0 @@ -#include -#include - -#include "misc.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "util.h" - -#define NUM_FONT_HASHDATA 3 - -const static char* s_strFontHash[] = { - "07381F6C1FF7421BA309196FA9FC750706B031AD", - "EF271DAD8B67EDB3DDE2655C6C35288D1334132D", - "28e68d0496ab28d7f082b70fc8f4f9081dee2ccc" -}; - -FontInfo gFontInfo[ OS_SHARED_FONT_MAX ]; - -void loadFontName( OSSharedFontIndex idx ); -void loadFont( OSSharedFontIndex idx ); -void releaseFont( OSSharedFontIndex idx ); -BOOL checkFontHash( OSSharedFontIndex idx ); - - -void getFontInfo( void ) -{ - u32 time; - int tableSize = 0; - u8 *tableBuf; - OSSharedFontIndex fontIdx; - - OS_InitSharedFont(); - - // フォントテーブルバッファの確保 - tableSize = OS_GetSharedFontTableSize(); - tableBuf = (u8*) Alloc ( (u32)tableSize ); - SDK_ASSERT( tableBuf ); - - time = OS_GetSharedFontTimestamp(); - OS_TPrintf("SharedFont Time Stamp %08lx\n", time ); - gAllInfo[MENU_FONT][FONT_TIMESTAMP].iValue = (int) time; - gAllInfo[MENU_FONT][FONT_TIMESTAMP].isNumData = TRUE; - - if( ! OS_LoadSharedFontTable( (void*)tableBuf ) ) - { - OS_TPrintf("Loading shared font table failed.\n"); - Free(tableBuf); - return; - } - - for( fontIdx = (OSSharedFontIndex) 0; fontIdx < OS_SHARED_FONT_MAX; fontIdx++ ) - { - loadFontName( fontIdx ); - - // サイズ取得 - gFontInfo[fontIdx].size = (u32) OS_GetSharedFontSize( (OSSharedFontIndex)fontIdx ); - - loadFont( fontIdx ); - gFontInfo[fontIdx].isHashOK = checkFontHash( fontIdx ); - releaseFont( fontIdx ); - } - - Free(tableBuf); - s_numMenu[MENU_FONT] = FONT_INFO + ( NUM_FONT_INFO * OS_SHARED_FONT_MAX ); -} - -void loadFontName( OSSharedFontIndex idx ) -{ - // 名前取得 - const u8* fontName = OS_GetSharedFontName( (OSSharedFontIndex)idx ); - int fontNameLength = STD_StrLen( (char*)fontName ); - - OS_TPrintf("fontname length: %d\n", fontNameLength ); - if( gFontInfo[idx].name == NULL ){ - // 名前のところにメモリが割り当てられてなかったりしたら - - gFontInfo[idx].name = (u8*) Alloc ( sizeof(u8) * (fontNameLength + 1) ); - } - - SDK_ASSERT( gFontInfo[idx].name ); - STD_StrLCpy( (char*)gFontInfo[idx].name, (char*)fontName, fontNameLength + 1 ); -} - -void loadFont( OSSharedFontIndex idx ) -{ - // でも別に普段必要なわけじゃないからメモリ確保のためにも - // ハッシュ値取り終わったら開放するようにするかな? - if( gFontInfo[idx].data == NULL ) - { - // データバッファにメモリが割り当てられてなかったり、 - // 小さかったりした場合は割り当てなおす。 - - gFontInfo[idx].data = (u8*) Alloc ( gFontInfo[idx].size ); - } - - SDK_ASSERT( gFontInfo[idx].data ); - OS_LoadSharedFont( idx, (void*)gFontInfo[idx].data ); -} - -void releaseFont( OSSharedFontIndex idx ) -{ - if( gFontInfo[idx].data != NULL ) - { - Free( gFontInfo[idx].data ); - } -} - -BOOL checkFontHash( OSSharedFontIndex idx ) -{ - u8 digestBuf[MATH_SHA1_DIGEST_SIZE], cmpBuf[MATH_SHA1_DIGEST_SIZE]; - - // 実態、検証用それぞれのハッシュを算出 - strToHexa( s_strFontHash[idx], cmpBuf, MATH_SHA1_DIGEST_SIZE ); - MATH_CalcSHA1( digestBuf, gFontInfo[idx].data , gFontInfo[idx].size ); - - return MI_CpuComp8( cmpBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0; -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c b/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c deleted file mode 100644 index ab1f42df..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c +++ /dev/null @@ -1,108 +0,0 @@ -#include -//#include -#include -#include - - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getNormalHWInfo( void ); -void getSecureHWInfo( void ); - -void getHWInfo( void ) -{ - getNormalHWInfo(); - getSecureHWInfo(); -} - - -void getNormalHWInfo( void ) -{ - int value; - - - value = (int)LCFG_NSD_GetRTCClockAdjust(); - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].iValue = value; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].isNumData = TRUE; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].fromLCFG = TRUE; - - { - 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_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i] = ascii[(*unq>>4) & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+1] = ascii[*unq & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+2] = - (i+2) == (OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 - 1) ? (char)'\0' : (char)'-' ; - OS_TPrintf("uniqid: %d\n", *unq); - } - } - -} - -void getSecureHWInfo( void ) -{ - int value; - - value = OS_IsForceDisableWireless(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].numLines = 2; - - value = OS_GetRegion(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ]; - - { - u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; - OS_GetSerialNo( serialBuf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_SERIAL].str.sjis , OS_TWL_HWINFO_SERIALNO_LEN_MAX, "%s", serialBuf); - } - - { - u64 buf; - buf = OS_GetValidLanguageBitmap(); - OS_TPrintf("language bitmap : %lx\n", buf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_LANGUAGE].str.sjis , - DISPINFO_BUFSIZE-1, "%08lx", OS_GetValidLanguageBitmap() ); - - - // fuseRomデータの読み出し - // secureなアプリ以外はハード的に切り離されるのでゼロになる - buf = SCFG_ReadFuseData(); - OS_TPrintf("fuse data : %016llx\n", buf); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].str.sjis , - DISPINFO_BUFSIZE-1, "%016llx", SCFG_ReadFuseData() ); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].numLines = 2; - - } - - // ランチャのタイトルIDLoの取得 - if( LCFG_ReadHWSecureInfo() ) - { - const u8 *titleIDLo = LCFG_THW_GetLauncherTitleID_LoPtr(); - value = ( int )( titleIDLo[0] << 8*3 | - titleIDLo[1] << 8*2 | - titleIDLo[2] << 8*1 | - titleIDLo[3] << 8*0 ); - - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].isNumData = TRUE; - } - else - { - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].str.sjis = s_strNA; - } - - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].numLines = 2; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].fromLCFG = TRUE; - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_other.c b/build/tests/DisplaySystemInformation/ARM9/src/get_other.c deleted file mode 100644 index 2b53a7d1..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_other.c +++ /dev/null @@ -1,69 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getOtherInfo( void ) -{ - // この辺からマクロで生成した分 - s64 rtcoffset; - int value; - LCFGTWLTPCalibData tpdata; - - value = OS_IsAgreeEULA(); - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].iValue = value; - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].str.sjis = s_strBool[value]; - - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].iValue = OS_GetAgreedEULAVersion(); - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].isNumData = TRUE; - - value = OS_IsAvailableWireless(); - gAllInfo[MENU_OTHER][OTHER_WIRELESS].iValue = value; - gAllInfo[MENU_OTHER][OTHER_WIRELESS].str.sjis = s_strEnable[value]; - - rtcoffset = OS_GetOwnerRtcOffset(); - snprintf( gAllInfo[MENU_OTHER][OTHER_RTC_OFFSET].str.sjis, - DISPINFO_BUFSIZE-1, "%016llx", rtcoffset ); - gAllInfo[MENU_OTHER][OTHER_RTC_OFFSET].numLines = 2; - - LCFG_TSD_GetTPCalibration( &tpdata ); - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].iValue = tpdata.data.raw_x1; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].iValue = tpdata.data.raw_x2; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DX1].iValue = tpdata.data.dx1; - gAllInfo[MENU_OTHER][OTHER_TP_DX1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DX1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DY1].iValue = tpdata.data.dy1; - gAllInfo[MENU_OTHER][OTHER_TP_DY1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DY1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].iValue = tpdata.data.raw_y1; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].iValue = tpdata.data.raw_y2; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DX2].iValue = tpdata.data.dx2; - gAllInfo[MENU_OTHER][OTHER_TP_DX2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DX2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DY2].iValue = tpdata.data.dy2; - gAllInfo[MENU_OTHER][OTHER_TP_DY2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DY2].fromLCFG = TRUE; - - snprintf( gAllInfo[MENU_OTHER][OTHER_TP_RSV].str.sjis, - DISPINFO_BUFSIZE, "%016llx", MI_LoadLE64( tpdata.rsv ) ); - gAllInfo[MENU_OTHER][OTHER_TP_RSV].fromLCFG = TRUE; - - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c b/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c deleted file mode 100644 index bc9246b4..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - - -void getOwnerInfo( void ) -// オーナー情報周りを取得する -{ - OSOwnerInfoEx ownerInfo; - - OS_TPrintf( "...Owner Information\n"); - // 本体設定まわり - OS_GetOwnerInfoEx( &ownerInfo ); - - // 全体情報につめていく - // 泥臭すぎるやり方なのであとで考える - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].str.sjis = s_strLanguage[ ownerInfo.language ]; - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].iValue = ownerInfo.language; - - gAllInfo[MENU_OWNER][OWNER_COLOR].str.sjis = s_strUserColor[ ownerInfo.favoriteColor ]; - gAllInfo[MENU_OWNER][OWNER_COLOR].iValue = ownerInfo.favoriteColor; - - snprintf( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].str.sjis, DISPINFO_BUFSIZE-1, "%02d/%02d", ownerInfo.birthday.month, ownerInfo.birthday.day); - gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].iValue = ownerInfo.birthday.month * 100 + ownerInfo.birthday.day; - - gAllInfo[MENU_OWNER][OWNER_COUNTRY].str.sjis = s_strCountry[ownerInfo.country]; - gAllInfo[MENU_OWNER][OWNER_COUNTRY].iValue = ownerInfo.country; - - wcsncpy( gAllInfo[MENU_OWNER][OWNER_NICKNAME].str.utf , ownerInfo.nickName, OS_OWNERINFO_NICKNAME_MAX + 1); - gAllInfo[MENU_OWNER][OWNER_NICKNAME].isSjis = FALSE; - wcsncpy( gAllInfo[MENU_OWNER][OWNER_COMMENT].str.utf , ownerInfo.comment, OS_OWNERINFO_COMMENT_MAX + 1 ); - gAllInfo[MENU_OWNER][OWNER_COMMENT].isSjis = FALSE; -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c b/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c deleted file mode 100644 index 3e0021ca..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getParentalInfo( void ) -// ペアレンタルコントロール情報を取得する -{ - // ペアレンタルコントロールまわり - const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *) OS_GetParentalControlInfoPtr(); - - OS_TPrintf( "...Parental Control Information\n" ); - - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].str.sjis = s_strBool[ pPC->flags.isSetParentalControl ]; - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].iValue = (int) pPC->flags.isSetParentalControl; - - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].str.sjis = s_strBool[ pPC->flags.pictoChat ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].iValue = (int) pPC->flags.pictoChat; - - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].str.sjis = s_strBool[ pPC->flags.dsDownload ]; - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].iValue = (int) pPC->flags.dsDownload; - - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].str.sjis = s_strBool[ pPC->flags.browser ]; - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].iValue = (int) pPC->flags.browser; - - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].str.sjis = s_strBool[ pPC->flags.wiiPoint ]; - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].iValue = (int) pPC->flags.wiiPoint; - - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].str.sjis = s_strBool[ pPC->flags.photoExchange ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].iValue = (int) pPC->flags.photoExchange; - - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].str.sjis = s_strBool[ pPC->flags.ugc ]; - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].iValue = (int) pPC->flags.ugc; - - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].str.sjis = s_strRatingOrg[ pPC->ogn ]; - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].iValue = (int) pPC->ogn; - - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].iValue = pPC->ratingAge; - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].iValue = pPC->secretQuestionID; - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].iValue = atoi( pPC->password ) ; - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].str.utf , pPC->secretAnswer, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1); - gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].isSjis = FALSE; -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c b/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c deleted file mode 100644 index bd9b96e4..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c +++ /dev/null @@ -1,1137 +0,0 @@ - -#include -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "myIoreg_SCFG.h" -//#include "misc.h" - -void getSCFGARM9Info( void ); -void getSCFGARM7InfoReg( void ); -void getSCFGARM7InfoShared( void ); -void setSCFGAccessFlag( BOOL flag ); -void setPsramBoundaryFlag( int idx ); -void setDSPResetFlag( BOOL flag ); -BOOL scfgTotalCheck( void ); -void getTotalCheckResult( void ); -u64 getArm7CheckData( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ); -u32 getArm9CheckData( void ); - -void getSCFGInfo( void ) -{ - getSCFGARM9Info(); - getSCFGARM7InfoReg(); - getSCFGARM7InfoShared(); - getTotalCheckResult(); -} - -void getSCFGARM9Info( void ) -// ARM9側で取得できるSCFG情報を取得する -// ARM9SCFGAPIはレジスタを直接参照しているので、APIを使ってもレジスタを直接見ても同じ値 -{ - int value; - - // ROM制御レジスタ - - // IsSecureRomAccessibleの返り値はレジスタビットが反転 - value = !SCFG_IsSecureRomAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].str.sjis = s_strJoint[ value ]; - - value = SCFG_GetSystemRomType() == SCFG_SYSTEM_ROM_FOR_NITRO; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = s_strRomMode[ value ]; - - // クロック制御レジスタ - value = SCFG_GetCpuSpeed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].str.sjis = s_strCpuSpeed[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changeFunc.cBool = SCFG_SetCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].kindNameList = s_strCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - - value = SCFG_IsClockSuppliedToDSP(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changeFunc.cBool = SCFG_SupplyClockToDSP; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].numKindName = 2; - - value = SCFG_IsClockSuppliedToCamera(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changeFunc.cBool = SCFG_SupplyClockToCamera; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].numKindName = 2; - - value = SCFG_IsClockSuppliedToWram(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = SCFG_IsCameraCKIClockEnable(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changeFunc.cBool = SCFG_SetCameraCKIClock; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].numKindName = 2; - - // 新規ブロック制御レジスタ - value = ! SCFG_IsDSPReset(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].str.sjis = s_strBool[ !value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].kindNameList = s_strBool; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changeFunc.cBool = setDSPResetFlag; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].numKindName = 2; - - // 拡張機能制御レジスタ - - value = SCFG_IsDmacFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changeFunc.cBool = SCFG_SetDmacFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].numKindName = 2; - - value = SCFG_IsGeometryFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changeFunc.cBool = SCFG_SetGeometryFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].numKindName = 2; - - value = SCFG_IsRendererFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changeFunc.cBool = SCFG_SetRendererFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].numKindName = 2; - - value = SCFG_Is2DEngineFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changeFunc.cBool = SCFG_Set2DEngineFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].numKindName = 2; - - value = SCFG_IsDividerFixed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changeFunc.cBool = SCFG_SetDividerFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].numKindName = 2; - - value = SCFG_IsCardFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changeFunc.cBool = SCFG_SetCardFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].numKindName = 2; - - value = SCFG_IsIntcExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changeFunc.cBool = SCFG_SetIntcExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].numKindName = 2; - - value = SCFG_IsLCDCExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changeFunc.cBool = SCFG_SetLCDCExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].numKindName = 2; - - value = SCFG_IsVRAMExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changeFunc.cBool = SCFG_SetVRAMExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].numKindName = 2; - - { - u8 idx; - value = SCFG_GetPsramdBoundary(); - - if( value == SCFG_PSRAM_BOUNDARY_4MB ) - { - idx = 0; - } - else if ( value == SCFG_PSRAM_BOUNDARY_16MB ) - { - idx = 1; - } - else if ( value == SCFG_PSRAM_BOUNDARY_32MB ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue = idx; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].str.sjis = s_strPSRAM[ idx ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].argType = ARG_INT; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].kindNameList = s_strPSRAM; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].numKindName = 3; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changeFunc.cInt = setPsramBoundaryFlag; - } - - value = SCFG_IsNDmaAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changeFunc.cBool = SCFG_SetNDmaAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].numKindName = 2; - - value = SCFG_IsCameraAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changeFunc.cBool = SCFG_SetCameraAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].numKindName = 2; - - value = SCFG_IsDSPAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changeFunc.cBool = SCFG_SetDSPAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].numKindName = 2; - - value = (reg_SCFG_EXT & REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsWRAMAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsConfigBlockAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changeFunc.cBool = setSCFGAccessFlag; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numLines = 2; - -} - -void getSCFGARM7InfoReg( void ) -{ - // レジスタに直接格納されているほうのSCFGデータを取得 - - - int value; - - // ROM制御レジスタ(L)、(H) - { - // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].str.sjis = s_strRomMode[ value ]; - - // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].str.sjis = s_strRomMode[ value ]; - - // FuseROMフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_FUSE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_ROMWE_OFFSET - 0x4000] & DISP_REG_SCFG_ROMWE_WE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].str.sjis = s_strEnable[ value ]; - } - - // 新規ブロッククロック制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_CLK_SD1HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SD2HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_AESHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_WRAMHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SNDMCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].str.sjis = s_strSupply[ value ]; - } - - // JTAG制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_JTAG_ARM7SEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].numLines = 2; - - value = ( flag & DISP_REG_SCFG_JTAG_CPUJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_JTAG_DSPJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].str.sjis = s_strEnable[ value ]; - } - - // 拡張機能制御レジスタ - { - u32 flag = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_EXT_DMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SDMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SND_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_INTC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SPI_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_DSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_LCDC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_VRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT ); - - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = ( flag & DISP_REG_SCFG_EXT_DMAC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_AES_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD1_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD2_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MIC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2S_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2C_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_GPIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_B_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_WRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_PUENABLE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_CFG_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - - } - - // メモリカード I/F 制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_MI_MC_SL1_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SL2_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SWP_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].str.sjis = s_strBool[ value ]; - - value = (flag & DISP_REG_MI_MC_SL1_MODE_MASK) >> DISP_REG_MI_MC_SL1_MODE_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].str.sjis = s_strMCMode[value]; - - value = (flag & DISP_REG_MI_MC_SL2_MODE_MASK) >> DISP_REG_MI_MC_SL2_MODE_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].str.sjis = s_strMCMode[value]; - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MCCHAT_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MCCHAT_CC_MASK) >> DISP_REG_MI_MCCHAT_CC_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value); - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MC2_CA_MASK ) >> DISP_REG_MI_MC2_CA_SHIFT; - ;gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value ); - } - - // 旧無線送受信制御レジスタ - { - u8 flag = gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000]; - - value = ( flag & DISP_REG_SCFG_WL_OFFB_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].str.sjis = s_strEnable[ value ]; - } - - // オプション端子読み出しレジスタ - { - - u8 flag = gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000]; - value = (flag & DISP_REG_SCFG_OP_OPT_MASK) >> DISP_REG_SCFG_OP_OPT_SHIFT; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - } -} - -void getSCFGARM7InfoShared( void ) -{ - // 共有領域に退避されたほうのSCFGデータを取得する - int value; - - // 拡張機能制御レジスタ (4byte) - { - u32 extData = MI_LoadLE32( &gArm7SCFGShared[HWi_WSYS04_OFFSET] ); - - value = (extData & DISP_REG_SCFG_EXT_DMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SDMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SND_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_INTC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_SPI_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_DSEL_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_LCDC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_VRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (extData & HWi_WSYS04_EXT_PSRAM_MASK ) >> HWi_WSYS04_EXT_PSRAM_SHIFT ); - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = (extData & DISP_REG_SCFG_EXT_DMAC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_AES_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD1_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD2_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MIC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2S_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2C_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_GPIO_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_WRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_PUENABLE_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_CFG_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - } - - // ボンディング、rom状態、旧無線レジスタ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS08_OFFSET]; - - value = (regData & HWi_WSYS08_OP_OPT_MASK) >> HWi_WSYS08_OP_OPT_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - - // rom制御 - value = ( regData & HWi_WSYS08_ROM_ARM9SEC_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].str.sjis = s_strJoint[ value ] ; - - value = ( regData & HWi_WSYS08_ROM_ARM9RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7FUSE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].str.sjis = s_strJoint[ value ] ; - - // - value = ( regData & HWi_WSYS08_WL_OFFB_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].str.sjis = s_strEnable[value] ; - - } - - // jtag、clkレジスタ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS09_OFFSET]; - - value = ( regData & HWi_WSYS09_JTAG_ARM7SEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].str.sjis = s_strEnable[value] ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].numLines = 2; - - value = ( regData & HWi_WSYS09_JTAG_CPUJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_JTAG_DSPJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD1HCLK_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD2HCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_AESHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_WRAMHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SNDMCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].str.sjis = s_strSupply[value] ; - } -} - -void setDSPResetFlag( BOOL flag ) -{ - if( flag ) - { - SCFG_ResetDSP(); - } - else - { - SCFG_ReleaseResetDSP(); - } -} - -void setPsramBoundaryFlag( int idx ) -{ - SCFGPsramBoundary value; - - if( idx < 0 || 2 < idx ) - { - return; - } - - OS_TPrintf("call setPsramBoundary( %d )\n", idx ); - - switch( idx ) - { - case 0: - value = SCFG_PSRAM_BOUNDARY_4MB; - break; - - case 1: - value = SCFG_PSRAM_BOUNDARY_16MB; - break; - - case 2: - value = SCFG_PSRAM_BOUNDARY_32MB; - break; - } - - SCFG_SetPsramBoundary( value ); -} - -void setSCFGAccessFlag( BOOL flag ) -{ - // Inaccessible = falseなのでフラグ反転 - if( !flag ) - { - SCFG_SetConfigBlockInaccessible(); - } -} - -void getTotalCheckResult( void ) -{ - BOOL isSecure; - BOOL isNandAccessable; - BOOL isVisibleSCFG; - BOOL isDebugger; - u64 arm7res; - u32 arm9res; - - isDebugger = ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) || 0; - - switch( DISPINFO_BIN_IDX ) - { - case 0: - case 4: - isSecure = FALSE; - isNandAccessable = TRUE; - isVisibleSCFG = FALSE; - break; - - case 1: - case 5: - isSecure = FALSE; - isNandAccessable = TRUE; - isVisibleSCFG = TRUE; - break; - case 2: - isSecure = FALSE; - isNandAccessable = FALSE; - isVisibleSCFG = FALSE; - break; - case 3: - isSecure = FALSE; - isNandAccessable = FALSE; - isVisibleSCFG = TRUE; - break; - case 6: - case 8: - case 14: - case 16: - isSecure = TRUE; - isNandAccessable = TRUE; - isVisibleSCFG = FALSE; - break; - - case 7: - case 9: - case 15: - case 17: - isSecure = TRUE; - isNandAccessable = TRUE; - isVisibleSCFG = TRUE; - break; - - case 10: - case 12: - isSecure = TRUE; - isNandAccessable = FALSE; - isVisibleSCFG = FALSE; - break; - - case 11: - case 13: - isSecure = TRUE; - isNandAccessable = FALSE; - isVisibleSCFG = TRUE; - break; - - default: - // mast not come here - return; - } - - // SCFGデータの検証 - arm7res = getArm7CheckData( isSecure, isNandAccessable, isVisibleSCFG, isDebugger ); - arm9res = getArm9CheckData( ); - - - // 両方とも0が返ってくれば正解 - if( !arm7res && !arm9res ) - { - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_TOTAL_CHECK].str.sjis = s_strCorrect[TRUE]; - STD_StrLCpy( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR7].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR9].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - else - { - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_TOTAL_CHECK].str.sjis = s_strCorrect[FALSE]; - STD_TSNPrintf( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR7].str.sjis, - DISPINFO_BUFSIZE, "%012llx", arm7res ); - STD_TSNPrintf( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR9].str.sjis, - DISPINFO_BUFSIZE, "%08x", arm9res ); - - } -} -/* -BOOL scfgTotalCheck( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ) -{ - // ARM7 check - - if( isVisibleSCFG && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue != isSecure && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue == isNandAccessable && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue == 3 && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue == isNandAccessable && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue ) - { - arm7res = TRUE; - } - else if( !isVisibleSCFG && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue && - !gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue ) - { - arm7res = TRUE; - } - else - { - arm7res = FALSE; - } - - - // arm9 check - // こっちはSCFGLockでも見える - if( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue == 2 && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue ) - { - arm9res = TRUE; - } - else - { - arm9res = FALSE; - } - - return arm9res && arm7res; -}*/ - -u64 getArm7CheckData( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ) -{ - // 規定値に全て一致していればゼロが帰る - // 一致していなければ、一致していない項目に対応したビットが立ったデータが帰る - - u64 result = 0; - - int correctValue[SCFG_ARM7_MENU_SIZE] = { - // ROM status - TRUE, FALSE, TRUE, FALSE, 0, FALSE, - // CLK - 0, TRUE, TRUE, TRUE, TRUE, - // JTAG - 0, 0, 0, - // EXP - FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, - TRUE, TRUE, TRUE, 3, TRUE, TRUE, 0, TRUE, - TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 0, - // MI - FALSE, 2, 0, FALSE, FALSE, 0x1998, 0x264c, - // old wireless - TRUE - // Bonding opは不定 - }; - - correctValue[SCFG_ARM7_ROM_ARM7_FUSE] = !isSecure; - correctValue[SCFG_ARM7_CLK_SD1] = isNandAccessable; - correctValue[SCFG_ARM7_JTAG_CPU] = isDebugger; - correctValue[SCFG_ARM7_JTAG_DSP] = isDebugger; - correctValue[SCFG_ARM7_JTAG_A7] = isDebugger; - correctValue[SCFG_ARM7_EXT_SD1] = isNandAccessable; - correctValue[SCFG_ARM7_EXT_CFG] = isVisibleSCFG; - correctValue[SCFG_ARM7_MI_SC2_CDET] = !isDebugger; - - if( isVisibleSCFG ) - { -/* result = - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM9_SEC) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM9_RSEL ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_SEC ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_RSEL ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue != isSecure) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_FUSE ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_WE ) | - - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue == isNandAccessable) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SD1 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SD2 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_AES ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_WRAM ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SND ) | - - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue == isDebugger) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_CPU ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue == isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_DSP ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue == isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_A7 ) | - - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DMA ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SDMA ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SND ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_INTC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SPI ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DSEL ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SIO ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_LCDC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_VRAM ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue == 3) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_PS ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DMAC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_AES ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue == isNandAccessable) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SD1 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SD2 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MIC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_I2S ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_I2C ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_GPIO ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MCB ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_WRAM ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_PU ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_CFG ) | - - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC1_CDET) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue == 2) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC1_MODE) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue != isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC2_CDET) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC2_MODE) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SWP) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue) == 0x1988) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SWP) | - ;*/ - int index; - - for( index = 0; index < SCFG_ARM7_MENU_SIZE ; index++ ) - { - if(SCFG_ARM7_OP_FORM <= index) - { - // この辺の値は開発機か量産機かで変わるので目視で判断 - //result |= 0 << index; - continue; - } - - OS_TPrintf("%d:%d:%d ", index, gAllInfo[MENU_SCFG_ARM7][index].iValue ,correctValue[index] ); - result |= ( gAllInfo[MENU_SCFG_ARM7][index].iValue != correctValue[index] ) << index; - } - - return result; - } - else - { - int index; - result = 0; - - for( index = 0; index < SCFG_ARM7_MENU_SIZE ; index++ ) - { - result |= ( gAllInfo[MENU_SCFG_ARM7][index].iValue ) << index; - } - - return result; - } - -} - -u32 getArm9CheckData( void ) -{ - u32 result = 0; - int index; - - int correctValue[SCFG_ARM9_MENU_SIZE] = { - // ROM status - TRUE, FALSE, - // CLK - TRUE, FALSE, TRUE, TRUE, FALSE, - // RST - FALSE, - // EXT - FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, - TRUE, TRUE, TRUE, 2, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE - }; - - for( index = 0; index < SCFG_ARM9_MENU_SIZE ; index++ ) - { - if( SCFG_ARM9_TOTAL_CHECK <= index) - { - //result |= 0 << index; - continue; - } - - OS_TPrintf("%d:%d ",gAllInfo[MENU_SCFG_ARM9][index].iValue ,correctValue[index] ); - result |= ( gAllInfo[MENU_SCFG_ARM9][index].iValue != correctValue[index] ) << index; - } - - OS_TPrintf("\nresult: %d\n", result); - return result; - -} - - \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c b/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c deleted file mode 100644 index f42a1ee0..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - - -void getSecureUserInfo( void ) -{ - int value; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].fromLCFG = TRUE; - STD_StrCpy( gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis, "0000" ); - - if( gLCFGAccessible ) - { - - value = LCFG_TSD_IsFinishedInitialSetting(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].numKindName = 2; - - value = LCFG_TSD_IsFinishedInitialSetting_Launcher(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting_Launcher; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].numKindName = 2; - - value = LCFG_TSD_IsFinishedBrokenTWLSettings(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedBrokenTWLSettings; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].numKindName = 2; - - value = LCFG_TSD_GetInstalledSoftBoxCount(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].isNumData = TRUE; - - - value = LCFG_TSD_GetFreeSoftBoxCount(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].isNumData = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftIndex(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].isNumData = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftPlatform(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].isNumData = TRUE; - - - { - u64 buf = LCFG_TSD_GetLastTimeBootSoftTitleID(); - - - if( buf ) - // bufが0だったら前回起動したアプリが設定されていない - { - u32 titleID = MI_LoadBE32( &buf ); - - OS_TPrintf("Lastboot ID: %x Title ID: %x\n", buf, titleID ); - - MI_CpuCopy( &titleID, gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis, 4 ); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis[8] = '\0'; - } - } - } - - -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c b/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c deleted file mode 100644 index 78824d98..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include -#include -#include - -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "misc.h" -#include "util.h" - - -#define FILE_VERSION "verdata:/version.bin" -#define FILE_EULA_URL "verdata:/eula_url.bin" -#define FILE_NUP_HOSTNAME "verdata:/nup_host.bin" -#define FILE_TIMESTAMP "verdata:/time_stamp.bin" - -#define FILE_SIGN_NUP_CERT "verdata:/.twl-nup-cert.der" -#define FILE_SIGN_NUP_PRV "verdata:/.twl-nup-prvkey.der" -#define FILE_SIGN_SHOP_CERT "verdata:/.twl-shop-cert.der" -#define FILE_SIGN_SHOP_PRV "verdata:/.twl-shop-prvkey.der" -#define FILE_SIGN_NINTENDO_CAG2 "verdata:/NintendoCA-G2.der" -#define NUM_FILE_SIGN 5 - - -typedef struct SystemMenuVersion { - u16 major; - u16 minor; - u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; -}SystemMenuVersion; - -static char* s_strSignFilePath[] = { - FILE_SIGN_NUP_CERT, - FILE_SIGN_NUP_PRV, - FILE_SIGN_SHOP_CERT, - FILE_SIGN_SHOP_PRV, - FILE_SIGN_NINTENDO_CAG2, -}; - -static char* s_strSignHashDev[] = { - "01e03e86fe11c5172ba742045c63e65c2f058e99", - "7497940e3a3591d592b46ff99d75ebe102c27550", - "cf130c7674bae733f3b106109bb06cc0d6ac1a18", - "ab38a52a384ab63ea8397de6eae8a96d6c108888", - "c60b2a5cc90f0630cca33040df6b3378239f3bfa" -}; - -static char* s_strSignHashProd[] = { - "0626f8ac62baaa0b70c543a33962e54507d451d6", - "58c198c8099d579500cb5d9007bf81404a3c41fa", - "72445f08ab30a41aff9e20a2e64ca7d2b263765e", - "43a81069e6b6300dbe08d6fc3583d0c384a37996", - "c60b2a5cc90f0630cca33040df6b3378239f3bfa" -}; - - -void getSysmenuInfo( void ) -{ - u8 *pBuffer = (u8*) Alloc (NA_VERSION_DATA_WORK_SIZE); - - // numLineやallinedの設定が必要なのであえてエラーチェックはしない - NA_LoadVersionDataArchive( pBuffer, NA_VERSION_DATA_WORK_SIZE) ; - - - // バージョンの読み出し - { - FSFile file; - SystemMenuVersion bufVersion; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_VERSION, FS_FILEMODE_R)) - { - len = FS_ReadFile(&file, &bufVersion, sizeof(SystemMenuVersion)); - FS_CloseFile(&file); - - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].iValue = (int)( bufVersion.major << 16 | bufVersion.minor ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.utf, bufVersion.str, TWL_SYSMENU_VER_STR_LEN ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = FALSE; - } - else - { - // 成功しなかった場合はデータはN/A - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.sjis = s_strNA; - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = TRUE; - } - } - - // EULA URLの読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_EULA_URL, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis , TWL_EULA_URL_LEN) ; - FS_CloseFile(&file); - } - else - { - STD_StrLCpy( gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis, s_strNA, TWL_EULA_URL_LEN ); - } - } - - // NUP HOST NAME の読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_NUP_HOSTNAME, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, TWL_NUP_HOSTNAME_LEN); - FS_CloseFile(&file); - } - else - { - STD_StrLCpy( gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, s_strNA , TWL_NUP_HOSTNAME_LEN ); - } - - } - - // タイムスタンプ の読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_TIMESTAMP, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, &gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].iValue, sizeof(u32) ); - gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].isNumData = TRUE; - FS_CloseFile(&file); - } - } - - // 署名の照合 - { - FSFile file[NUM_FILE_SIGN]; - u32 fileLen[NUM_FILE_SIGN], maxFileSize = 0; - u8 i; - u8 *srcBuf, *dstBuf, digestBuf[MATH_SHA1_DIGEST_SIZE], - cmpDigestDevBuf[MATH_SHA1_DIGEST_SIZE], cmpDigestProdBuf[MATH_SHA1_DIGEST_SIZE]; - - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - // 最初にエントリの行数情報を設定しておく - gAllInfo[MENU_SYSMENU][i + SYSMENU_HASH_IDX].numLines = 2; - gAllInfo[MENU_SYSMENU][i + SYSMENU_HASH_IDX].isAligned = FALSE; - } - - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - FS_InitFile( &file[i] ); - - // 署名されたファイルをそれぞれオープン - if( !FS_OpenFileEx( &file[i], s_strSignFilePath[i], FS_FILEMODE_R ) ) - { - // 開けなかったらNANDアクセス禁止状態なので戻る - OS_Printf("sysmenu info error: Openfile failed.\n" ); - return ; - } - - // ファイル容量をそれぞれ取得 - fileLen[i] = FS_GetFileLength( &file[i] ); - } - - // バッファを大きくしたり縮めたりしたくないので - // 一番大きいファイルと同じ大きさのバッファを確保してしまう - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - if( maxFileSize < fileLen[i] ) - { - maxFileSize = fileLen[i]; - } - } - - srcBuf = (u8*) Alloc ( maxFileSize ); - dstBuf = (u8*) Alloc ( maxFileSize ); - - // それぞれのファイルに対して署名検証を行う - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - u8 idx = (u8)(SYSMENU_HASH_IDX + i) ; - - OS_TPrintf("Checking signature...%s\n", s_strMetaMenu[MENU_SYSMENU][idx] ); - - // ファイル読み込み - FS_ReadFile( &file[i], srcBuf, (s32)fileLen[i] ); - OS_TPrintf("FileSize: %d byte HeadData: %02x%02x%02x\n", fileLen[i], srcBuf[0], srcBuf[1], srcBuf[2] ); - - if( SYSMENU_NUP_CERT <= idx && idx < SYSMENU_NINTENDO_CAG2 ) - { - s32 result; - - // SYSMENU_NUP_CERTからの4ファイルは暗号化されているので複合化する - result = NA_DecodeVersionData( srcBuf, fileLen[i] , dstBuf, fileLen[i] ); - - if( result < 0 ) - { - OS_TPrintf( "NA_DecodeVersionData() Failed. errCode: %d\n", result ); - continue; - } - - // 出コードするとファイルサイズが変わるっぽいので更新する - fileLen[i] = (u32)result; - - OS_TPrintf("Dacode VersionData... HeadData: %02x%02x%02x\n", dstBuf[0], dstBuf[1], dstBuf[2] ); - - // 複合化データからキャッシュを計算 - MATH_CalcSHA1( digestBuf, dstBuf, fileLen[i] ); - } - else - { - // それ以外はそのままハッシュを求める - MATH_CalcSHA1( digestBuf, srcBuf, fileLen[i] ); - } - - strToHexa( s_strSignHashDev[i] , cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE ); - strToHexa( s_strSignHashProd[i], cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE ); - - gAllInfo[MENU_SYSMENU][idx].numLines = 2; - gAllInfo[MENU_SYSMENU][idx].isAligned = FALSE; - - putBinary( cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE ); - putBinary( cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE ); - putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE ); - - // ハッシュ値が一致したらcorrect,一致しなかったらincorrect - if( MI_CpuComp8( cmpDigestDevBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ) - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = - idx == SYSMENU_NINTENDO_CAG2 ? s_strCorrect[1] : s_strSysMenuKey[1]; - } - else if( MI_CpuComp8( cmpDigestProdBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ) - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = - idx == SYSMENU_NINTENDO_CAG2 ? s_strCorrect[1] : s_strSysMenuKey[2]; - } - else - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = s_strSysMenuKey[0]; - } - - - } - - // バッファの開放 - Free( srcBuf ); - Free( dstBuf ); - } - - - // SystemMenuVersionのアンマウント - if( !NA_UnloadVersionDataArchive() ) { - return; - } - - Free(pBuffer); -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c b/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c deleted file mode 100644 index d2269f89..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c +++ /dev/null @@ -1,55 +0,0 @@ - -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "misc.h" - -void getWirelessVersion( void ); -void getContentsVersion( void ); -void getSharedFontVersion( void ); - - -void getContentsVersion( void ) -// コンテンツリストをもとに各コンテンツのタイトルIDとバージョンを取得 -{ - NAMTitleInfo info; - int i; - - gNumContents = NAM_GetNumTitles(); - - if( gNumContents < 0 ) - { - // NAMが駄目だとか、NANDアクセスできないだとかの場合は終了 - return ; - } - - OS_TPrintf(" numContents: %d\n", gNumContents); - - if( gContentsTitle == NULL ) - { - // 初回処理の時はバッファを確保 - gContentsTitle = (NAMTitleId*) Alloc( sizeof(NAMTitleId) * gNumContents ); - gContentsVersion = (u16*) Alloc( sizeof(u16) * (u32)gNumContents); - SDK_ASSERT( gContentsTitle ); - SDK_ASSERT( gContentsVersion ); - } - - NAM_GetTitleList( gContentsTitle, (u32)gNumContents); - SDK_POINTER_ASSERT( gContentsTitle ); - SDK_POINTER_ASSERT( gContentsVersion ); - - for( i=0; i -#include -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "util.h" -#include "misc.h" - -#define WHITELIST_TITLEID 0x0003000f484e4841 -#define DS_HASH_TABLE_SIZE (256*1024) - -void getWhitelistHash( void ); -void getNumDHTEntry( void ); -BOOL cmpHash( void *src1, void *src2 ); - -void getWhiteListInfo( void ) -{ - OS_TPrintf("...Whitelist Information\n"); - - getWhitelistHash(); - getNumDHTEntry(); -} - -void getWhitelistHash( void ) -{ - u32 tmdSize=0, fileSize; - ESTitleMeta *tmd; - - FSFile file; - char filePath[NAM_PATH_LEN+1]; - u8 *fileBuf, digestBuf[MATH_SHA1_DIGEST_SIZE]; - - - // ESライブラリを使ってハッシュ値を取得する - // 一回目の呼び出しでサイズを取得して二回目で値をもらう - ES_GetTmd( WHITELIST_TITLEID, NULL, &tmdSize ); - tmd = (ESTitleMeta*) Alloc ( tmdSize ); - SDK_ASSERT( tmd ); - ES_GetTmd( WHITELIST_TITLEID , tmd, &tmdSize ); - - if( tmd == NULL ) - { - OS_TPrintf("getting tmd hash failed.\n" ); - return; - } - - putBinary( (u8*)&tmd->contents[0].hash , MATH_SHA1_DIGEST_SIZE ); - - // ホワイトリストのファイルの実態を引っ張ってくる - FS_InitFile( &file ); - NAM_GetTitleBootContentPath( filePath , WHITELIST_TITLEID ); - - OS_TPrintf("filepath : %s\n", filePath ); - - if( ! FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - OS_TPrintf("whitelist info error: FS_OpenFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - - fileSize = FS_GetFileLength( &file ); - - fileBuf = (u8*) Alloc ( fileSize ); - SDK_ASSERT( fileBuf ); - - if( fileSize != FS_ReadFile( &file, fileBuf, (s32)fileSize ) ) - { - OS_TPrintf("whitelist info error: FS_ReadFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - - MATH_CalcSHA1( digestBuf, fileBuf, fileSize ); - putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE ); - - gAllInfo[MENU_WHITE][WHITE_HASH].str.sjis = s_strCorrect [ cmpHash( digestBuf, &tmd->contents[0].hash ) ]; - - FS_CloseFile( &file ); - Free( tmd ); - Free( fileBuf ); - -} - -void getNumDHTEntry( void ) -{ - DHTFile *dht; - FSFile file; - char filePath[NAM_PATH_LEN+1]; - - dht = (DHTFile*) Alloc (DS_HASH_TABLE_SIZE); - SDK_ASSERT(dht); - - FS_InitFile( &file ); - NAM_GetTitleBootContentPathFast( filePath , WHITELIST_TITLEID ); - - OS_TPrintf("DHTEntry reading...\n"); - - if( ! FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - OS_TPrintf("whitelist info error: FS_OpenFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - -/* if( ! FS_SeekFile( &file, sizeof(ROM_Header), FS_SEEK_SET ) ) - { - OS_TPrintf("whitelist info error: FS_SeekFile() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } -*/ - if( ! DHT_PrepareDatabase( dht, &file ) ) - { - OS_TPrintf("whitelist info error: PrepareDatabase() failed.\n" ); - return; - } - - DC_FlushRange( dht, DHT_GetDatabaseLength( dht )); - OS_TPrintf(" dht.header.nums : %d\n", dht->header.nums); - - FS_CloseFile( &file ); - gAllInfo[MENU_WHITE][WHITE_NUM].iValue = (int)dht->header.nums; - gAllInfo[MENU_WHITE][WHITE_NUM].isNumData = TRUE; - - Free(dht); -} - -// 二つのハッシュを比較して一致してたら返す -// でもsrc2はビッグエンディアンやねん -BOOL cmpHash( void *src1, void *src2 ) -{ - u8 *u1 = (u8*)src1; - u8 *u2 = (u8*)src2; - - return MI_CpuComp8( u1, u2, MATH_SHA1_DIGEST_SIZE ) == 0 ; - -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c b/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c deleted file mode 100644 index 5532d3e8..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c +++ /dev/null @@ -1,142 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -#define WL_TITLEID 0x0003000F484E4341 - -#define WL_FW_LOADSIZE 0x10 -#define WL_FW_LOAD_OFFSET 0xa0 -#define WL_FW_VERSION_LO_IDX 0x1 -#define WL_FW_VERSION_HI_IDX 0x0 -#define WL_FW_VERSION_SIZE 0x2 -#define WL_NUM_FW_IDX 0x2 -#define WL_NUM_FW_SIZE 0x2 -#define WL_FW1_OFFSET_IDX 0x4 -#define WL_FW_TYPE_IDX 0xc -#define WL_FW_TYPE_SIZE 0x4 - -#define WL_FW2_OFFSET_IDX 0xc4 -#define WL_FW2_TYPE_IDX 0xcc - -#define WL_FW_SECTION_OFFSET 0x4 -#define WL_FW_VER_MINUSOFFSET 0x2c - -#define WL_FW_IDX_OFFSET 3 - - - - -void getWLInfo( void ) -{ - FSFile file; - char filePath[NAM_PATH_LEN+1]; - char filebuf[WL_FW_LOADSIZE]; - int res; - - FS_InitFile( &file ); - NAM_GetTitleBootContentPath( filePath , WL_TITLEID); // 無線ファームのファイルパスを取得 - OS_TPrintf("wireless firm path: %s\n", filePath ) ; - - if( FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - int value; - s32 fwOffset, sectionOffset; - - /* - // バージョン情報の読み取り - FS_SeekFile( &file, WL_FW_VERSION_OFFSET, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, WL_FW_VERSION_SIZE ); - - if( res == WL_FW_VERSION_SIZE ) - { - snprintf( gAllInfo[MENU_WL][WL_VERSION].str.sjis, DISPINFO_BUFSIZE-1, "%d.%d", filebuf[0], filebuf[1] ); - gAllInfo[MENU_WL][WL_VERSION].iValue = filebuf[0] *100 + filebuf[1]; - } - - // ファームウェアの数の取得 - FS_SeekFile( &file, WL_NUM_FW, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, 2 ); - - if( res == WL_NUM_FW_SIZE ) - { - gAllInfo[MENU_WL][WL_NUM_FW].iValue = filebuf[0]; - gAllInfo[MENU_WL][WL_NUM_FW].isNumData = TRUE; - } - - // ファームタイプの取得 - FS_SeekFile( &file, WL_FW_TYPE_OFFSET, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, WL_FW_TYPE_SIZE ); - - if( res == WL_FW_TYPE_SIZE ) - { - int value = (int) MI_LoadLE32( filebuf ); - gAllInfo[MENU_WL][WL_FW_TYPE].iValue = value; - gAllInfo[MENU_WL][WL_FW_TYPE].str.sjis = s_strWLFWType[ value ]; - }*/ - - FS_SeekFile( &file, WL_FW_LOAD_OFFSET , FS_SEEK_SET); - res = FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE); - - if( res == WL_FW_LOADSIZE ) - { - int value; - - snprintf( gAllInfo[MENU_WL][WL_VERSION].str.sjis, DISPINFO_BUFSIZE-1, "%d.%d", - filebuf[WL_FW_VERSION_HI_IDX], filebuf[WL_FW_VERSION_LO_IDX] ); - - gAllInfo[MENU_WL][WL_NUM_FW].iValue = (int) MI_LoadLE8( &filebuf[WL_NUM_FW_IDX] ); - gAllInfo[MENU_WL][WL_NUM_FW].isNumData = TRUE; - - fwOffset = (s32)MI_LoadLE32( &filebuf[WL_FW1_OFFSET_IDX] ); - - value = (int) MI_LoadLE32( &filebuf[WL_FW_TYPE_IDX] ); - gAllInfo[MENU_WL][WL_FW1_TYPE].iValue = value; - gAllInfo[MENU_WL][WL_FW1_TYPE].str.sjis = s_strWLFWType[ value ]; - - FS_SeekFile( &file, fwOffset, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - sectionOffset = (s32)MI_LoadLE32( &filebuf[WL_FW_SECTION_OFFSET] ); - - FS_SeekFile( &file, fwOffset + sectionOffset - WL_FW_VER_MINUSOFFSET, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - snprintf( gAllInfo[MENU_WL][WL_FW1_VER].str.sjis, DISPINFO_BUFSIZE-1, "%08x", - MI_LoadLE32( filebuf ) ); - } - - if( gAllInfo[MENU_WL][WL_NUM_FW].iValue == 2 ) - { - FS_SeekFile( &file, WL_FW2_OFFSET_IDX, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - fwOffset = (s32)MI_LoadLE32( filebuf ); - - value = (int) MI_LoadLE32( &filebuf[WL_FW2_TYPE_IDX - WL_FW2_OFFSET_IDX] ); - gAllInfo[MENU_WL][WL_FW2_TYPE].str.sjis = s_strWLFWType[ value ]; - - FS_SeekFile( &file, fwOffset, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - sectionOffset = (s32)MI_LoadLE32( &filebuf[WL_FW_SECTION_OFFSET] ); - - FS_SeekFile( &file, fwOffset + sectionOffset - WL_FW_VER_MINUSOFFSET, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - snprintf( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, DISPINFO_BUFSIZE-1, "%08x", - MI_LoadLE32( filebuf ) ); - } - else - { - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - - FS_CloseFile( &file ); - } - else - { - // 読み込めなかったらとりあえずN/Aって入れておく - STD_StrLCpy( gAllInfo[MENU_WL][WL_VERSION].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW1_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls b/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls deleted file mode 100644 index b78857f8..00000000 Binary files a/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/ARM9/src/main.c b/build/tests/DisplaySystemInformation/ARM9/src/main.c deleted file mode 100644 index 8df2ebd5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/main.c +++ /dev/null @@ -1,120 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** 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 -#include -#include -#include -#include "misc.h" -#include "viewSystemInfo.h" -#include "address.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_InitTick(); - OS_TPrintf("Initialize begin\n"); - - // ARM7側でメモリ内にセットされたSCFGのデータを確保 - MI_CpuMove16( DISPINFO_SHARED_SCFG_REG_ADDR, gArm7SCFGReg, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAMに退避されてる分もコピー - MI_CpuMove16( DISPINFO_SHARED_SCFG_WRAM_ADDR, gArm7SCFGShared, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - //---- interrupt setting - OS_EnableIrq(); - OS_EnableInterrupts(); - - OS_InitSharedFont(); - GX_Init(); - - OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler ); - OS_EnableIrqMask( OS_IE_V_BLANK ); - GX_VBlankIntr( TRUE ); - - OS_TPrintf("RTC Initilize...\n"); - RTC_Init(); - - OS_TPrintf("Allocator Initialize...\n"); - InitAllocator(); - CRYPTO_SetAllocator( Alloc, Free ); - -#if NAM_ENABLE - OS_TPrintf("NAM Initialize...\n"); - NAM_Init( Alloc, Free ); -#endif - - InitBG(); - OS_TPrintf("Initialize Finished\n"); - displayInfoInit(); - - OS_TPrintf("begin mainloop\n"); - - - // メインループ - while( 1 ) - { - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - - displayInfoMain(); // ビューア更新 - } - - OS_Terminate(); - -} - - -void VBlankHandler(void) -{ - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vブランク割込チェックのセット -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/misc.c b/build/tests/DisplaySystemInformation/ARM9/src/misc.c deleted file mode 100644 index 2e81ed3b..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/misc.c +++ /dev/null @@ -1,759 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: misc.c - - Copyright 2007 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 -#include "misc.h" - -// define data----------------------------------------------------------------- -#define NTR_IPL_FONT_DATA "data/NTR_IPL_font_m.NFTR" - -#define STRING_LENGTH_MAX 256 - -#define GRAY(x) GX_RGB(x, x, x) - -enum -{ - TXT_CPALETTE_MAIN, - TXT_CPALETTE_USERCOLOR, - TXT_CPALETTE_USERCOLORSAMPLE, - TXT_CPALETTE_4BPP, - TXT_NUM_CPALEETE -}; - -// デモ共通のカラーパレット -GXRgb TXTColorPalette[TXT_NUM_CPALEETE * 16] = -{ - GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), GX_RGB( 0, 0, 0), GX_RGB(31, 0, 0),// 基本文字色 - GX_RGB( 0, 31, 0), GX_RGB( 0, 0, 31), GX_RGB( 0, 31, 31), GX_RGB(31, 0, 31), - GX_RGB(31, 31, 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(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3),// ユーザーカラー領域 - GX_RGB(31, 17, 31), GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), - GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), - GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), - - GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3), GX_RGB(31, 17, 31),// ユーザーカラーのサンプル領域 - GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), GX_RGB( 0, 31, 0), - GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), - GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), - - GRAY(31), GRAY(29), GRAY(27), GRAY(25), - GRAY(23), GRAY(21), GRAY(19), GRAY(17), - GRAY(15), GRAY(14), GRAY(12), GRAY(10), - GRAY( 8), GRAY( 6), GRAY( 3), GRAY( 0), -}; - -// グラデパレットを作るためのマクロ -#define MAKECOLOR(r,g,b) GX_RGB( 0, 0, 0), GX_RGB(r, g, b), MC(r,g,b,1), MC(r,g,b,2),\ - MC(r,g,b,3), MC(r,g,b,4), MC(r,g,b,5), MC(r,g,b,6),\ - MC(r,g,b,7), MC(r,g,b,8), MC(r,g,b,9), MC(r,g,b,10),\ - MC(r,g,b,11), MC(r,g,b,12), MC(r,g,b,13), GX_RGB(31, 31, 31) - -#define MC(r,g,b,i) GX_RGB(r+((31-r)*i)/14, g+((31-g)*i)/14, b+((31-b)*i)/14) - -// ユーザーカラーパレット切り替え用 -GXRgb TempPalette[16 * 16] = -{ - MAKECOLOR(12, 16, 19), - MAKECOLOR(23, 9, 0), - MAKECOLOR(31, 0, 3), - MAKECOLOR(31, 17, 31), - MAKECOLOR(31, 18, 0), - MAKECOLOR(30, 28, 0), - MAKECOLOR(21, 31, 0), - MAKECOLOR( 0, 31, 0), - MAKECOLOR( 0, 20, 7), - MAKECOLOR( 9, 27, 17), - MAKECOLOR( 6, 23, 30), - MAKECOLOR( 0, 11, 30), - MAKECOLOR( 0, 0, 18), - MAKECOLOR(17, 0, 26), - MAKECOLOR(26, 0, 29), - MAKECOLOR(31, 0, 18), -}; - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- -#define CANVAS_WIDTH 32 // 文字描画域の幅 (キャラクタ単位) -#define CANVAS_HEIGHT 24 // 文字描画域の高さ (キャラクタ単位) -#define CANVAS_LEFT 0 // 文字描画域の位置X (キャラクタ単位) -#define CANVAS_TOP 0 // 文字描画域の位置Y (キャラクタ単位) - -#define TEXT_HSPACE 1 // 文字列描画時の文字間 (ピクセル単位) -#define TEXT_VSPACE 1 // 文字列描画時の行間 (ピクセル単位) - -#define CHARACTER_OFFSET 0 // 使用するキャラクタ列の開始番号 - -// RTCデータ表示位置ワーク -typedef struct RtcDrawPos{ - int date_x; - int date_y; - int time_x; - int time_y; -}RtcDrawPos; - -// function's prototype------------------------------------------------------- -static BOOL WaitDetachTP( void ); -static void StartDetachTP( void ); -static void InitScreen( void ); -static void InitCanvas( void ); - -// global variable------------------------------------------------------------- -KeyWork pad; // キーパッド入力データ -TpWork tpd; // タッチパネル入力データ -NNSFndAllocator g_allocator; // メモリアロケータ -NNSG2dFont gFont; // フォント -NNSG2dCharCanvas gCanvas; // CharCanvas -NNSG2dTextCanvas gTextCanvas; // TextCanvas -NNSG2dCharCanvas gCanvasSub; // CharCanvas -NNSG2dTextCanvas gTextCanvasSub; // TextCanvas - -// static variable------------------------------------------------------------- -static int s_detach_count; -static RtcDrawPos s_rtcPos; -static RTCDate s_rtcDate; -static RTCTime s_rtcTime; -static u16 s_vcount; - -static char s_strBuffer[ STRING_LENGTH_MAX * 2 ] ATTRIBUTE_ALIGN(2); -static u16 s_strBufferUTF16[ STRING_LENGTH_MAX ]; - -// const data------------------------------------------------------------------ - -// 曜日データ表示用文字コード -const u8 *const g_strWeek[] ATTRIBUTE_ALIGN(2) = { - (const u8 *)"SUN", - (const u8 *)"MON", - (const u8 *)"TUE", - (const u8 *)"WED", - (const u8 *)"THU", - (const u8 *)"FRI", - (const u8 *)"SAT", -}; - - -// ============================================================================ -// メモリ管理 -// ============================================================================ - -// アロケータの初期化 -void InitAllocator( void ) -{ - // ※暫定対策 FS_Init内でハッシュチェック用のヒープを確保しているため、 - // ユーザーヒープの確保前にFS_Initを行う必要がある。 - - // ファイルシステム初期化 - FS_Init( FS_DMA_NOT_USE ); - - { - NNSFndAllocator *pAllocator = &g_allocator; - u32 arenaLow = MATH_ROUNDUP ( (u32)OS_GetMainArenaLo(), 16 ); - u32 arenaHigh = MATH_ROUNDDOWN( (u32)OS_GetMainArenaHi(), 16 ); - u32 heapSize = arenaHigh - arenaLow; - void* heapMemory = OS_AllocFromMainArenaLo( heapSize, 16 ); - NNSFndHeapHandle heapHandle; - SDK_NULL_ASSERT( pAllocator ); - - heapHandle = NNS_FndCreateExpHeap( heapMemory, heapSize ); - SDK_ASSERT( heapHandle != NNS_FND_HEAP_INVALID_HANDLE ); - - NNS_FndInitAllocatorForExpHeap( pAllocator, heapHandle, 32 ); - } -} - - -// メモリ割り当て -void *Alloc( u32 size ) -{ - return NNS_FndAllocFromAllocator( &g_allocator, size ); -} - - -// メモリ解放 -void Free( void *pBuffer ) -{ - NNS_FndFreeToAllocator( &g_allocator, pBuffer ); -} - - -// ============================================================================ -// 画面設定 -// ============================================================================ - -// BG初期化 -void InitBG(void) -{ - // 画面OFF - GX_DispOff(); - GXS_DispOff(); - - // VRAMの割り当てを全て解除 - GX_DisableBankForBG(); - GX_DisableBankForOBJ(); - GX_DisableBankForSubBG(); - GX_DisableBankForSubOBJ(); - - // メイン2Dエンジンの出力を下画面に - GX_SetDispSelect( GX_DISP_SELECT_SUB_MAIN ); - - // メインLCD - { - // VRAM割り当て - GX_SetBankForBG ( GX_VRAM_BG_128_A ); - GX_SetBankForOBJ( GX_VRAM_OBJ_128_B ); - - MI_CpuClearFast( (void *)HW_BG_VRAM, 0x20000 ); // BG -VRAM クリア - MI_CpuClearFast( (void *)HW_OBJ_VRAM, 0x20000 ); // OBJ-VRAM クリア - MI_DmaFill32( 3, (void *)HW_OAM, 192, HW_OAM_SIZE ); // OAM クリア - - // カラーパレットを設定 - GX_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); - - // BGモード設定 - GX_SetGraphicsMode( GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D ); - - GX_SetBGScrOffset ( GX_BGSCROFFSET_0x10000 ); - GX_SetBGCharOffset( GX_BGCHAROFFSET_0x00000 ); - } - // サブLCD - { - // VRAM割り当て - GX_SetBankForSubBG ( GX_VRAM_SUB_BG_128_C ); // VRAM-C for BGs - GX_SetBankForSubOBJ( GX_VRAM_SUB_OBJ_128_D ); // VRAM-D for BGs - - MI_CpuClearFast( (void *)HW_DB_BG_VRAM, 0x20000 ); // BG -VRAM クリア - MI_CpuClearFast( (void *)HW_DB_OBJ_VRAM, 0x20000 ); // OBJ -VRAM クリア - - // カラーパレットを設定 - GXS_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); - - // BGモード設定 - GXS_SetGraphicsMode( GX_BGMODE_0 ); // BGMODE is 0 - } - InitScreen(); - InitCanvas(); -} - - -// スクリーン初期化 -static void InitScreen( void ) -{ - // メイン画面 BG 0 を設定 - G2_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_256, // カラーモード 256色 - GX_BG_SCRBASE_0xf800, // スクリーンベース - GX_BG_CHARBASE_0x00000, // キャラクタベース - GX_BG_EXTPLTT_01 // 拡張パレットスロット - ); - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xe800, // screen base offset + 0x0000 is the address for BG #1 screen - GX_BG_CHARBASE_0x10000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xd800, // screen base offset + 0x0000 is the address for BG #1 screen - GX_BG_CHARBASE_0x14000 // character base offset + 0x04000 is the address for BG #0 characters - ); - GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); - G2_SetBG2Priority(0); - G2_SetBG0Priority(1); - G2_SetBG1Priority(2); - - // サブ画面 BG 0 を設定 - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xf800, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); // display only BG #0 -} - - -// 文字列描画の初期化 -static void InitCanvas( void ) -{ - CMN_InitFileSystem( &g_allocator ); - - // フォントを読み込みます - { - void* pFontFile; - u32 size = CMN_LoadFile( &pFontFile, NTR_IPL_FONT_DATA, &g_allocator); - NNS_G2D_ASSERT( size > 0 ); - NNS_G2dFontInitUTF16(&gFont, pFontFile); -// NNS_G2dPrintFont(&gFont); - } - - { - // CharCanvas の初期化 - NNS_G2dCharCanvasInitForBG( - &gCanvas, - (GXCharFmt256*)G2_GetBG0CharPtr() + CHARACTER_OFFSET, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_256 - ); - - // TextCanvasの初期化 - NNS_G2dTextCanvasInit( - &gTextCanvas, - &gCanvas, - &gFont, - TEXT_HSPACE, - TEXT_VSPACE - ); - - // スクリーンを設定 - NNS_G2dMapScrToCharText( - G2_GetBG0ScrPtr(), - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CHARACTER_OFFSET, - TXT_CPALETTE_MAIN - ); - } - { - // CharCanvas の初期化 - NNS_G2dCharCanvasInitForBG( - &gCanvasSub, - (GXCharFmt16*)G2S_GetBG0CharPtr() + CHARACTER_OFFSET, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_16 - ); - - // TextCanvasの初期化 - NNS_G2dTextCanvasInit( - &gTextCanvasSub, - &gCanvasSub, - &gFont, - TEXT_HSPACE, - TEXT_VSPACE - ); - - // スクリーンを設定 - NNS_G2dMapScrToCharText( - G2S_GetBG0ScrPtr(), - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CHARACTER_OFFSET, - TXT_CPALETTE_MAIN - ); - } -} - - -// UTF16での直接文字表示 -void PutStringUTF16( int x, int y, int color, const u16 *strUTF16 ) -{ - NNS_G2dTextCanvasDrawText( &gTextCanvas, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - strUTF16 ); -} - -void PutStringUTF16Sub( int x, int y, int color, const u16 *strUTF16 ) -{ - NNS_G2dTextCanvasDrawText( &gTextCanvasSub, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - strUTF16 ); -} - - -// 書式付きで作成した文字列を表示した場合の幅を取得する -int GetPrintfWidth( const NNSG2dTextCanvas *pCanvas, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - return NNS_G2dTextCanvasGetTextWidth( pCanvas, s_strBufferUTF16 ); -} - - -// SJISでPrintf形式で文字表示(内部でUTF16に変換) -void PrintfSJIS( int x, int y, int color, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - NNS_G2dTextCanvasDrawText(&gTextCanvas, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - s_strBufferUTF16 ); -} - -void PrintfSJISSub( int x, int y, int color, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - NNS_G2dTextCanvasDrawText(&gTextCanvasSub, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - s_strBufferUTF16 ); -} - - -// キー入力読み出し-------------------------------- -void ReadKeyPad(void) -{ - u16 readData = PAD_Read(); - pad.trg = (u16)(readData & (readData ^ pad.cont)); // トリガ 入力 - pad.cont = readData; // ベタ 入力 -} - - -// タッチパネルデータの取得----------------------- -void ReadTP(void) -{ - TP_GetCalibratedPoint( &tpd.last, &tpd.raw ); // 前回のTPデータを退避 - - if( TP_RequestRawSampling(&tpd.raw) ) { // タッチパネルのサンプリング - SVC_CpuClear(0x0000, &tpd.raw, sizeof(tpd.raw), 16); // SPI-busyでデータ取得に失敗した時は”データなし”でリターン。 - return; - } - TP_GetCalibratedPoint( &tpd.disp, &tpd.raw ); // TP座標からLCD座標に変換。 - - if( !WaitDetachTP() ) { // TPデタッチ待ちを行う。 - SVC_CpuClear(0x0000, &tpd.disp, sizeof(tpd.disp), 16); // SPI-busyでデータ取得に失敗した時は”データなし”でリターン。 - return; - } -#if 0 - if(tpd.disp.touch) { // 現在のTPデータを表示 - switch ( tpd.disp.validity ) { - case TP_VALIDITY_VALID: - OS_Printf("( %3d, %3d ) -> ( %3d, %3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_X: - OS_Printf("( *%3d, %3d ) -> ( *%3d, %3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_Y: - OS_Printf("( %3d, *%3d ) -> ( %3d, *%3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_XY: - OS_Printf("( *%3d, *%3d ) -> ( *%3d, *%3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - } - } -#endif -} - - -// TPデタッチを待つ -static BOOL WaitDetachTP( void ) -{ - // s_detach_countが始動していたら、カウント判定。 - if(s_detach_count > 0) { - if(tpd.disp.touch == 0) { // TPが押されていなければ、カウント進行し規定値で再入力を受け付ける。 - s_detach_count--; - }else { - s_detach_count = TP_CSR_DETACH_COUNT; - } - return FALSE; - } - return TRUE; -} - - -// TPデタッチ待ちの開始 -static void StartDetachTP( void ) -{ - s_detach_count = TP_CSR_DETACH_COUNT; -} - - -//====================================================== -// メニュー制御 -//====================================================== - -// メニュー描画 -void DrawMenu( u16 nowCsr, const MenuParam *pMenu ) -{ - int i; - int color; - - for( i = 0; i < pMenu->num; i++ ) { - if(i == nowCsr) { - if( !pMenu->pos[ i ].enable ) { - color = pMenu->disable_color; - }else { - color = pMenu->select_color; - } - }else { - color = pMenu->normal_color; - } - PutStringUTF16( pMenu->pos[ i ].x, pMenu->pos[ i ].y, color, (pMenu->str_elem)[ i ] ); - } -} - -// タッチパネルによる選択を行う関数・汎用版。 -// 主にチャタリングを吸収する程度の機能を持つ。 -// SelectSomethingFunc型の関数ポインタfuncには、次に示す条件を満たす関数を作り、リストにしてセットして使う。 -// 1.要素上でタッチしていればTRUEを返し、そうでなければFALSEを返す。 -// 2.第一引数に与えたポインタの指す変数にカーソル位置を入れて返す。 -BOOL SelectSomethingByTP( u16 *nowCsr, SelectSomethingFunc func[], int funcnum ) -{ - int i; - static u16 detach_count = 0; - static u16 csr_old = 0xffff; - static u16 same_csr_count = 0; - - // detach_countが始動していたら、カウント判定。 - if( detach_count > 0 ) { - if( tpd.disp.touch == 0 ) { // TPが押されていなければ、カウント進行し、TP_CSR_DETACH_COUNTカウントでメニュー選択 - if( ++detach_count == TP_CSR_DETACH_COUNT ) { - detach_count = 0; - same_csr_count = 0; - *nowCsr = csr_old; - return TRUE; - }else { - return FALSE; - } - } - } - detach_count=0; // detachカウント値のクリア - - for( i = 0; i < funcnum; i++ ) { - if( tpd.disp.touch ) { // タッチパネルがタッチされているなら、 - u16 csr; - if( func[i]( &csr, &tpd.disp ) ) { // funcは要素上にタッチされていればTRUEを返し、カーソル位置も返してくれる関数 - if( tpd.disp.validity == TP_VALIDITY_VALID ) { // カーソルをその要素に移動 - if( csr_old == csr ) { - if( same_csr_count < TP_CSR_TOUCH_COUNT ) { - same_csr_count++; - } - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - *nowCsr = csr; - } - return FALSE; - }else { - csr_old = csr; - } - break; - } - }else { - } - }else { // touch==0 - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - detach_count = 1; - break; - } - } - } - same_csr_count = 0; - return FALSE; -} - -// タッチパネルによるメニュー選択 -BOOL SelectMenuByTP( u16 *nowCsr, const MenuParam *pMenu ) -{ - u16 i; - static u16 detach_count = 0; - static u16 csr_old = 0xff; - static u16 same_csr_count = 0; - - // detach_countが始動していたら、カウント判定。 - if( detach_count > 0 ) { - if( tpd.disp.touch == 0 ) { // TPが押されていなければ、カウント進行し、10カウントでメニュー選択 - if( ++detach_count == TP_CSR_DETACH_COUNT ) { - detach_count = 0; - return TRUE; - }else { - return FALSE; - } - } - } - detach_count=0; // detachカウント値のクリア - - for( i = 0; i < pMenu->num; i++ ) { - if( tpd.disp.touch ) { // タッチパネルがメニューの要素上でタッチされているなら、 - NNSG2dTextRect rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, (pMenu->str_elem)[ i ] ); - u16 top_x = (u16)( pMenu->pos[ i ].x ); // メニュー要素のLCD座標を算出 - u16 top_y = (u16)( pMenu->pos[ i ].y ); - u16 bottom_x = (u16)( top_x + rect.width ); - u16 bottom_y = (u16)( top_y + rect.height ); - - - if( WithinRangeTP( top_x, top_y, bottom_x, bottom_y, &tpd.disp ) ) { - if( tpd.disp.validity == TP_VALIDITY_VALID ) { // カーソルをその要素に移動 - if( csr_old == i ) { - if( same_csr_count < TP_CSR_TOUCH_COUNT ) { - same_csr_count++; - } - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - *nowCsr = i; - } - return FALSE; - }else { - csr_old = i; - } - break; - } - }else { - } - }else { // touch==0 - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - detach_count = 1; - break; - } - } - } - same_csr_count = 0; - return FALSE; -} - - -// 現在のタッチパネル座標が指定領域内にあるかどうかを返す。 -BOOL WithinRangeTP( int top_x, int top_y, int bottom_x, int bottom_y, TPData *tgt ) -{ - if( ( tgt->x >= top_x ) && - ( tgt->x <= bottom_x ) && - ( tgt->y >= top_y ) && - ( tgt->y <= bottom_y ) ) { - return TRUE; - }else { - return FALSE; - } -} - - -// バナーアイコンOBJのロード -void SetBannerIconOBJ( GXOamAttr *pDstOAM, BannerFileV1 *bannerp ) -{ - GXS_LoadOBJPltt( bannerp->pltt, 15, BANNER_PLTT_SIZE ); - MI_CpuCopyFast( bannerp->image, (void *)(HW_DB_OBJ_VRAM + 0x20), BANNER_IMAGE_SIZE ); - G2_SetOBJAttr( pDstOAM, // OAM pointer - 32, // X position - 32, // Y position - 0, // Priority - GX_OAM_MODE_NORMAL, // Bitmap mode - FALSE, // mosaic off - GX_OAM_EFFECT_NONE, // affine off - GX_OAM_SHAPE_32x32, // 16x16 size - GX_OAM_COLOR_16, // 16 color - 1, // charactor - 15, // palette - 0); // affine -} - - -//=============================================== -// RTCアクセスルーチン -//=============================================== - -// RTCデータの取得 -BOOL GetRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ) -{ - if( forceGetFlag || ( pRTCDraw->vcount++ == 59 ) ) { - pRTCDraw->vcount = 0; - MI_CpuCopy16( &pRTCDraw->date, &pRTCDraw->date_old, sizeof(RTCDate) ); - MI_CpuCopy16( &pRTCDraw->time, &pRTCDraw->time_old, sizeof(RTCTime) ); - (void)RTC_GetDateTime( &pRTCDraw->date, &pRTCDraw->time ); - return TRUE; - } - return FALSE; -} - - -// RTCデータの表示 -void DrawRTCData( RTCDrawProperty *pRTCDraw ) -{ - void (*pPrintFunc)( int x, int y, int color, const char *fmt, ... ) = - ( pRTCDraw->isTopLCD ) ? PrintfSJISSub : PrintfSJIS; - - // 前RTC情報の消去 - { - u32 year = pRTCDraw->date_old.year + 2000; - pPrintFunc( pRTCDraw->date_x, pRTCDraw->date_y, TXT_COLOR_WHITE, "%04d/%02d/%02d[%3s]", - year, - pRTCDraw->date_old.month, - pRTCDraw->date_old.day, - g_strWeek[ pRTCDraw->date_old.week ] - ); - pPrintFunc( pRTCDraw->time_x, pRTCDraw->time_y, TXT_COLOR_WHITE, "%02d:%02d:%02d", - pRTCDraw->time_old.hour, - pRTCDraw->time_old.minute, - pRTCDraw->time_old.second - ); - } - // RTC情報の表示 - { - u32 year = pRTCDraw->date.year + 2000; - pPrintFunc( pRTCDraw->date_x, pRTCDraw->date_y, TXT_COLOR_BLACK, "%d/%02d/%02d[%3s]", - year, - pRTCDraw->date.month, - pRTCDraw->date.day, - g_strWeek[ pRTCDraw->date.week ] - ); - pPrintFunc( pRTCDraw->time_x, pRTCDraw->time_y, TXT_COLOR_BLACK, "%02d:%02d:%02d", - pRTCDraw->time.hour, - pRTCDraw->time.minute, - pRTCDraw->time.second - ); - } -} - -// RTCデータの取得&表示 -void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ) -{ - if( GetRTCData( pRTCDraw, forceGetFlag ) ) { - DrawRTCData( pRTCDraw ); - } -} - -// ユーザーカラー領域の切り替え -void ChangeUserColor( u8 col ) -{ - int l; - if(col > 15) return; - for(l=0;l<16;l++) - { - TXTColorPalette[16+l] = TempPalette[16 * col + l]; - } - GX_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/misc.h b/build/tests/DisplaySystemInformation/ARM9/src/misc.h deleted file mode 100644 index ba7cd3bc..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/misc.h +++ /dev/null @@ -1,196 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: misc.h - - Copyright 2007 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 __MISC_H__ -#define __MISC_H__ - -#include -#include - -#define NNS_G2D_UNICODE -#include -#include -#include -#include - -#include "cmn.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// define data---------------------------------------------------------- -#define TP_CSR_TOUCH_COUNT 2 // TPカーソルのチャタリング吸収のためのカウント値 -#define TP_CSR_DETACH_COUNT 2 // TPカーソルを「選択」と判定するTPデタッチからのカウント値 - -// DrawText での左上寄せ -#define TXT_DRAWTEXT_FLAG_DEFAULT (NNS_G2D_VERTICALORIGIN_TOP | NNS_G2D_HORIZONTALORIGIN_LEFT | NNS_G2D_HORIZONTALALIGN_LEFT) - -// TXTColorPalette の色名 256色パレットへのロードを想定 -enum -{ - // パレット0 TXT_CPALETTE_MAIN - TXT_COLOR_NULL=0, - TXT_COLOR_WHITE, - TXT_COLOR_BLACK, - TXT_COLOR_RED, - TXT_COLOR_GREEN, - TXT_COLOR_BLUE, - TXT_COLOR_CYAN, - TXT_COLOR_MAGENTA, - TXT_COLOR_YELLOW, - - // ユーザーカラーグラデーションパレット領域 - TXT_UCOLOR_GNULL=16, - TXT_UCOLOR_G0, - TXT_UCOLOR_G1, - TXT_UCOLOR_G2, - TXT_UCOLOR_G3, - TXT_UCOLOR_G4, - TXT_UCOLOR_G5, - TXT_UCOLOR_G6, - TXT_UCOLOR_G7, - TXT_UCOLOR_G8, - TXT_UCOLOR_G9, - TXT_UCOLOR_G10, - TXT_UCOLOR_G11, - TXT_UCOLOR_G12, - TXT_UCOLOR_G13, - TXT_UCOLOR_GWHITE, - - // ユーザーカラーサンプル領域 - TXT_UCOLOR_GRAY=32, - TXT_UCOLOR_BROWN, - TXT_UCOLOR_RED, - TXT_UCOLOR_PINK, - TXT_UCOLOR_ORANGE, - TXT_UCOLOR_YELLOW, - TXT_UCOLOR_LIMEGREEN, - TXT_UCOLOR_GREEN, - TXT_UCOLOR_DARKGREEN, - TXT_UCOLOR_SEAGREEN, - TXT_UCOLOR_TURQUOISE, - TXT_UCOLOR_BLUE, - TXT_UCOLOR_DARKBLUE, - TXT_UCOLOR_PURPLE, - TXT_UCOLOR_VIOLET, - TXT_UCOLOR_MAGENTA, - - // パレット TXT_CPALETTE_4BPP - TXT_COLOR_4BPP_NULL=48, - TXT_COLOR_4BPP_BG=49, - TXT_COLOR_4BPP_TEXT=49 -}; - -// 時計表示場所 -#define RTC_DATE_TOP_X ( 9 * 8 ) -#define RTC_DATE_TOP_Y ( 10 * 8 ) -#define RTC_TIME_TOP_X ( 12 * 8 ) -#define RTC_TIME_TOP_Y ( 12 * 8 ) - - -// キーデータワーク -typedef struct { - u16 trg; // トリガ入力 - u16 cont; // ベタ 入力 -}KeyWork; - - -// タッチパネルワーク -typedef struct { - int detached; // 今回のデータ入力でタッチが離れたことを示す。 - TPData disp; // 今回の入力値(LCD座標) - TPData raw; // 今回の入力値(TP 座標) - TPData last; // 前回の入力値(LCD座標) -}TpWork; - - -// メニュー要素座標 -typedef struct MenuPos { - BOOL enable; - int x; - int y; -}MenuPos; - - -// メニュー構成パラメータ構造体 -typedef struct MenuParam { - int num; - int normal_color; - int select_color; - int disable_color; - MenuPos *pos; - const u16 **str_elem; -}MenuParam; - - -// RTCデータ表示位置ワーク -typedef struct RTCDrawProperty { - BOOL isTopLCD; - int date_x; - int date_y; - int time_x; - int time_y; - int vcount; - RTCDate date; - RTCTime time; - RTCDate date_old; - RTCTime time_old; -}RTCDrawProperty; - -typedef BOOL (*SelectSomethingFunc)( u16 *csr, TPData *tgt ); - -// global variables-------------------------------------------------- -extern TpWork tpd; // タッチパネルデータ -extern KeyWork pad; // キーパッド入力データ -extern const u8 *const g_strWeek[ 7 ]; // 曜日文字列 -extern RTCDrawProperty g_rtcDraw; - -extern NNSFndAllocator g_allocator; // メモリアロケータ -extern NNSG2dFont gFont; // フォント -extern NNSG2dCharCanvas gCanvas; // CharCanvas -extern NNSG2dTextCanvas gTextCanvas; // TextCanvas -extern NNSG2dCharCanvas gCanvasSub; // CharCanvas -extern NNSG2dTextCanvas gTextCanvasSub; // TextCanvas - -// function------------------------------------------------------------- -void InitAllocator( void ); -void *Alloc( u32 size ); -void Free( void *pBuffer ); -void InitBG( void ); -int GetPrintfWidth( const NNSG2dTextCanvas *pCanvas, const char *fmt, ... ); -void PutStringUTF16 ( int x, int y, int color, const u16 *strUTF16 ); -void PutStringUTF16Sub( int x, int y, int color, const u16 *strUTF16 ); -void PrintfSJIS ( int x, int y, int color, const char *fmt, ... ); -void PrintfSJISSub( int x, int y, int color, const char *fmt, ... ); -void ReadKeyPad( void ); -void ReadTP( void ); -void DrawMenu( u16 nowCsr, const MenuParam *pMenu ); -BOOL SelectSomethingByTP( u16 *nowCsr, SelectSomethingFunc func[], int funcnum ); -BOOL SelectMenuByTP( u16 *nowCsr, const MenuParam *pMenu ); -BOOL WithinRangeTP( int top_x, int top_y, int bottom_x, int bottom_y, TPData *tgt ); -void SetBannerIconOBJ( GXOamAttr *pDstOAM, BannerFileV1 *bannerp ); -BOOL GetRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); -void DrawRTCData( RTCDrawProperty *pRTCDraw ); -void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); -void ChangeUserColor( u8 col ); - -#ifdef __cplusplus -} -#endif - -#endif // __MISC_H__ diff --git a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h b/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h deleted file mode 100644 index 8961cca5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h +++ /dev/null @@ -1,533 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: myIoreg_SCFG.h - - Copyright 2007 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. - - *---------------------------------------------------------------------------*/ - -// ARM9側で受け取ったARM7のSCFGを参照するために -// ARM9側なのにARM7依存のオフセット情報が必要... - - -// マクロ再定義を防ぐための苦肉の策 - -#ifndef __MY_IOREG_SCFG_H__ -#define __MY_IOREG_SCFG_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Definition of Register offsets, addresses and variables. - */ - - -/* ROM */ - -#define DISP_REG_ROM_OFFSET 0x4000 -#define DISP_REG_ROM_ADDR (HW_REG_BASE + DISP_REG_ROM_OFFSET) - -/* A9ROM */ - -#define DISP_REG_A9ROM_OFFSET 0x4000 -#define DISP_REG_A9ROM_ADDR (HW_REG_BASE + DISP_REG_A9ROM_OFFSET) - -/* A7ROM */ - -#define DISP_REG_A7ROM_OFFSET 0x4001 -#define DISP_REG_A7ROM_ADDR (HW_REG_BASE + DISP_REG_A7ROM_OFFSET) - -/* ROMWE */ - -#define DISP_REG_ROMWE_OFFSET 0x4002 -#define DISP_REG_ROMWE_ADDR (HW_REG_BASE + DISP_REG_ROMWE_OFFSET) - -/* CLK */ - -#define DISP_REG_CLK_OFFSET 0x4004 -#define DISP_REG_CLK_ADDR (HW_REG_BASE + DISP_REG_CLK_OFFSET) - -/* JTAG */ - -#define DISP_REG_JTAG_OFFSET 0x4006 -#define DISP_REG_JTAG_ADDR (HW_REG_BASE + DISP_REG_JTAG_OFFSET) - -/* EXT */ - -#define DISP_REG_EXT_OFFSET 0x4008 -#define DISP_REG_EXT_ADDR (HW_REG_BASE + DISP_REG_EXT_OFFSET) - -/* MC */ - -#define DISP_REG_MC_OFFSET 0x4010 -#define DISP_REG_MC_ADDR (HW_REG_BASE + DISP_REG_MC_OFFSET) - -/* MCCHAT */ - -#define DISP_REG_MCCHAT_OFFSET 0x4012 -#define DISP_REG_MCCHAT_ADDR (HW_REG_BASE + DISP_REG_MCCHAT_OFFSET) - -/* MC2 */ - -#define DISP_REG_MC2_OFFSET 0x4014 -#define DISP_REG_MC2_ADDR (HW_REG_BASE + DISP_REG_MC2_OFFSET) - - -/* WL */ - -#define DISP_REG_WL_OFFSET 0x4020 -#define DISP_REG_WL_ADDR (HW_REG_BASE + DISP_REG_WL_OFFSET) - -/* OP */ - -#define DISP_REG_OP_OFFSET 0x4024 -#define DISP_REG_OP_ADDR (HW_REG_BASE + DISP_REG_OP_OFFSET) - - -/* - * Definitions of Register fields - */ - - -/* ROM */ - -#define DISP_REG_SCFG_ROM_ROMWE_SHIFT 16 -#define DISP_REG_SCFG_ROM_ROMWE_SIZE 1 -#define DISP_REG_SCFG_ROM_ROMWE_MASK 0x00010000 - -#define DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT 10 -#define DISP_REG_SCFG_ROM_ARM7FUSE_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7FUSE_MASK 0x00000400 - -#define DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT 9 -#define DISP_REG_SCFG_ROM_ARM7RSEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7RSEL_MASK 0x00000200 - -#define DISP_REG_SCFG_ROM_ARM7SEL_SHIFT 8 -#define DISP_REG_SCFG_ROM_ARM7SEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7SEL_MASK 0x00000100 - -#define DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT 1 -#define DISP_REG_SCFG_ROM_ARM9RSEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM9RSEL_MASK 0x00000002 - -#define DISP_REG_SCFG_ROM_ARM9SEL_SHIFT 0 -#define DISP_REG_SCFG_ROM_ARM9SEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM9SEL_MASK 0x00000001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_ROM_FIELD( romwe, arm7fuse, arm7rsel, arm7sel, arm9rsel, arm9sel ) \ - (u32)( \ - ((u32)(romwe) << DISP_REG_SCFG_ROM_ROMWE_SHIFT) | \ - ((u32)(arm7fuse) << DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT) | \ - ((u32)(arm7rsel) << DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT) | \ - ((u32)(arm7sel) << DISP_REG_SCFG_ROM_ARM7SEL_SHIFT) | \ - ((u32)(arm9rsel) << DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT) | \ - ((u32)(arm9sel) << DISP_REG_SCFG_ROM_ARM9SEL_SHIFT)) -#endif - - -/* A9ROM */ - -#define DISP_REG_SCFG_A9ROM_RSEL_SHIFT 1 -#define DISP_REG_SCFG_A9ROM_RSEL_SIZE 1 -#define DISP_REG_SCFG_A9ROM_RSEL_MASK 0x02 - -#define DISP_REG_SCFG_A9ROM_SEC_SHIFT 0 -#define DISP_REG_SCFG_A9ROM_SEC_SIZE 1 -#define DISP_REG_SCFG_A9ROM_SEC_MASK 0x01 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_A9ROM_FIELD( rsel, sec ) \ - (u8)( \ - ((u32)(rsel) << DISP_REG_SCFG_A9ROM_RSEL_SHIFT) | \ - ((u32)(sec) << DISP_REG_SCFG_A9ROM_SEC_SHIFT)) -#endif - - -/* A7ROM */ - -#define DISP_REG_SCFG_A7ROM_FUSE_SHIFT 2 -#define DISP_REG_SCFG_A7ROM_FUSE_SIZE 1 -#define DISP_REG_SCFG_A7ROM_FUSE_MASK 0x04 - -#define DISP_REG_SCFG_A7ROM_RSEL_SHIFT 1 -#define DISP_REG_SCFG_A7ROM_RSEL_SIZE 1 -#define DISP_REG_SCFG_A7ROM_RSEL_MASK 0x02 - -#define DISP_REG_SCFG_A7ROM_SEC_SHIFT 0 -#define DISP_REG_SCFG_A7ROM_SEC_SIZE 1 -#define DISP_REG_SCFG_A7ROM_SEC_MASK 0x01 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_A7ROM_FIELD( fuse, rsel, sec ) \ - (u8)( \ - ((u32)(fuse) << DISP_REG_SCFG_A7ROM_FUSE_SHIFT) | \ - ((u32)(rsel) << DISP_REG_SCFG_A7ROM_RSEL_SHIFT) | \ - ((u32)(sec) << DISP_REG_SCFG_A7ROM_SEC_SHIFT)) -#endif - - -/* ROMWE */ - -#define DISP_REG_SCFG_ROMWE_WE_SHIFT 0 -#define DISP_REG_SCFG_ROMWE_WE_SIZE 1 -#define DISP_REG_SCFG_ROMWE_WE_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_ROMWE_FIELD( we ) \ - (u16)( \ - ((u32)(we) << DISP_REG_SCFG_ROMWE_WE_SHIFT)) -#endif - - -/* CLK */ - -#define DISP_REG_SCFG_CLK_SNDMCLK_SHIFT 8 -#define DISP_REG_SCFG_CLK_SNDMCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SNDMCLK_MASK 0x0100 - -#define DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT 7 -#define DISP_REG_SCFG_CLK_WRAMHCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_WRAMHCLK_MASK 0x0080 - -#define DISP_REG_SCFG_CLK_AESHCLK_SHIFT 2 -#define DISP_REG_SCFG_CLK_AESHCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_AESHCLK_MASK 0x0004 - -#define DISP_REG_SCFG_CLK_SD2HCLK_SHIFT 1 -#define DISP_REG_SCFG_CLK_SD2HCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SD2HCLK_MASK 0x0002 - -#define DISP_REG_SCFG_CLK_SD1HCLK_SHIFT 0 -#define DISP_REG_SCFG_CLK_SD1HCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SD1HCLK_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_CLK_FIELD( sndmclk, wramhclk, aeshclk, sd2hclk, sd1hclk ) \ - (u16)( \ - ((u32)(sndmclk) << DISP_REG_SCFG_CLK_SNDMCLK_SHIFT) | \ - ((u32)(wramhclk) << DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT) | \ - ((u32)(aeshclk) << DISP_REG_SCFG_CLK_AESHCLK_SHIFT) | \ - ((u32)(sd2hclk) << DISP_REG_SCFG_CLK_SD2HCLK_SHIFT) | \ - ((u32)(sd1hclk) << DISP_REG_SCFG_CLK_SD1HCLK_SHIFT)) -#endif - - -/* JTAG */ - -#define DISP_REG_SCFG_JTAG_DSPJE_SHIFT 8 -#define DISP_REG_SCFG_JTAG_DSPJE_SIZE 1 -#define DISP_REG_SCFG_JTAG_DSPJE_MASK 0x0100 - -#define DISP_REG_SCFG_JTAG_CPUJE_SHIFT 1 -#define DISP_REG_SCFG_JTAG_CPUJE_SIZE 1 -#define DISP_REG_SCFG_JTAG_CPUJE_MASK 0x0002 - -#define DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT 0 -#define DISP_REG_SCFG_JTAG_ARM7SEL_SIZE 1 -#define DISP_REG_SCFG_JTAG_ARM7SEL_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_JTAG_FIELD( dspje, cpuje, arm7sel ) \ - (u16)( \ - ((u32)(dspje) << DISP_REG_SCFG_JTAG_DSPJE_SHIFT) | \ - ((u32)(cpuje) << DISP_REG_SCFG_JTAG_CPUJE_SHIFT) | \ - ((u32)(arm7sel) << DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT)) -#endif - - -/* EXT */ - -#define DISP_REG_SCFG_EXT_CFG_SHIFT 31 -#define DISP_REG_SCFG_EXT_CFG_SIZE 1 -#define DISP_REG_SCFG_EXT_CFG_MASK 0x80000000 - -#define DISP_REG_SCFG_EXT_PUENABLE_SHIFT 28 -#define DISP_REG_SCFG_EXT_PUENABLE_SIZE 1 -#define DISP_REG_SCFG_EXT_PUENABLE_MASK 0x10000000 - -#define DISP_REG_SCFG_EXT_SD20_SHIFT 28 -#define DISP_REG_SCFG_EXT_SD20_SIZE 1 -#define DISP_REG_SCFG_EXT_SD20_MASK 0x10000000 - -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SHIFT 16 -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SIZE 10 -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_MASK 0x03ff0000 - -#define DISP_REG_SCFG_EXT_WRAM_SHIFT 25 -#define DISP_REG_SCFG_EXT_WRAM_SIZE 1 -#define DISP_REG_SCFG_EXT_WRAM_MASK 0x02000000 - -#define DISP_REG_SCFG_EXT_MC_B_SHIFT 24 -#define DISP_REG_SCFG_EXT_MC_B_SIZE 1 -#define DISP_REG_SCFG_EXT_MC_B_MASK 0x01000000 - -#define DISP_REG_SCFG_EXT_GPIO_SHIFT 23 -#define DISP_REG_SCFG_EXT_GPIO_SIZE 1 -#define DISP_REG_SCFG_EXT_GPIO_MASK 0x00800000 - -#define DISP_REG_SCFG_EXT_I2C_SHIFT 22 -#define DISP_REG_SCFG_EXT_I2C_SIZE 1 -#define DISP_REG_SCFG_EXT_I2C_MASK 0x00400000 - -#define DISP_REG_SCFG_EXT_I2S_SHIFT 21 -#define DISP_REG_SCFG_EXT_I2S_SIZE 1 -#define DISP_REG_SCFG_EXT_I2S_MASK 0x00200000 - -#define DISP_REG_SCFG_EXT_MIC_SHIFT 20 -#define DISP_REG_SCFG_EXT_MIC_SIZE 1 -#define DISP_REG_SCFG_EXT_MIC_MASK 0x00100000 - -#define DISP_REG_SCFG_EXT_SD2_SHIFT 19 -#define DISP_REG_SCFG_EXT_SD2_SIZE 1 -#define DISP_REG_SCFG_EXT_SD2_MASK 0x00080000 - -#define DISP_REG_SCFG_EXT_SD1_SHIFT 18 -#define DISP_REG_SCFG_EXT_SD1_SIZE 1 -#define DISP_REG_SCFG_EXT_SD1_MASK 0x00040000 - -#define DISP_REG_SCFG_EXT_AES_SHIFT 17 -#define DISP_REG_SCFG_EXT_AES_SIZE 1 -#define DISP_REG_SCFG_EXT_AES_MASK 0x00020000 - -#define DISP_REG_SCFG_EXT_DMAC_SHIFT 16 -#define DISP_REG_SCFG_EXT_DMAC_SIZE 1 -#define DISP_REG_SCFG_EXT_DMAC_MASK 0x00010000 - -#define DISP_REG_SCFG_EXT_NITROB_EX_E_SHIFT 8 -#define DISP_REG_SCFG_EXT_NITROB_EX_E_SIZE 8 -#define DISP_REG_SCFG_EXT_NITROB_EX_E_MASK 0x0000ff00 - -#define DISP_REG_SCFG_EXT_PSRAM_SHIFT 14 -#define DISP_REG_SCFG_EXT_PSRAM_SIZE 2 -#define DISP_REG_SCFG_EXT_PSRAM_MASK 0x0000c000 - -#define DISP_REG_SCFG_EXT_VRAM_SHIFT 13 -#define DISP_REG_SCFG_EXT_VRAM_SIZE 1 -#define DISP_REG_SCFG_EXT_VRAM_MASK 0x00002000 - -#define DISP_REG_SCFG_EXT_LCDC_SHIFT 12 -#define DISP_REG_SCFG_EXT_LCDC_SIZE 1 -#define DISP_REG_SCFG_EXT_LCDC_MASK 0x00001000 - -#define DISP_REG_SCFG_EXT_SIO_SHIFT 11 -#define DISP_REG_SCFG_EXT_SIO_SIZE 1 -#define DISP_REG_SCFG_EXT_SIO_MASK 0x00000800 - -#define DISP_REG_SCFG_EXT_DSEL_SHIFT 10 -#define DISP_REG_SCFG_EXT_DSEL_SIZE 1 -#define DISP_REG_SCFG_EXT_DSEL_MASK 0x00000400 - -#define DISP_REG_SCFG_EXT_SPI_SHIFT 9 -#define DISP_REG_SCFG_EXT_SPI_SIZE 1 -#define DISP_REG_SCFG_EXT_SPI_MASK 0x00000200 - -#define DISP_REG_SCFG_EXT_INTC_SHIFT 8 -#define DISP_REG_SCFG_EXT_INTC_SIZE 1 -#define DISP_REG_SCFG_EXT_INTC_MASK 0x00000100 - -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_SHIFT 0 -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_SIZE 8 -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_MASK 0x000000ff - -#define DISP_REG_SCFG_EXT_MC_SHIFT 7 -#define DISP_REG_SCFG_EXT_MC_SIZE 1 -#define DISP_REG_SCFG_EXT_MC_MASK 0x00000080 - -#define DISP_REG_SCFG_EXT_SND_SHIFT 2 -#define DISP_REG_SCFG_EXT_SND_SIZE 1 -#define DISP_REG_SCFG_EXT_SND_MASK 0x00000004 - -#define DISP_REG_SCFG_EXT_SDMA_SHIFT 1 -#define DISP_REG_SCFG_EXT_SDMA_SIZE 1 -#define DISP_REG_SCFG_EXT_SDMA_MASK 0x00000002 - -#define DISP_REG_SCFG_EXT_DMA_SHIFT 0 -#define DISP_REG_SCFG_EXT_DMA_SIZE 1 -#define DISP_REG_SCFG_EXT_DMA_MASK 0x00000001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_EXT_FIELD( cfg, puenable, sd20, newb_access_e, wram, mc_b, gpio, i2c, i2s, mic, sd2, sd1, aes, dmac, nitrob_ex_e, psram, vram, lcdc, sio, dsel, spi, intc, nitrob_mod_e, mc, snd, sdma, dma ) \ - (u32)( \ - ((u32)(cfg) << DISP_REG_SCFG_EXT_CFG_SHIFT) | \ - ((u32)(puenable) << DISP_REG_SCFG_EXT_PUENABLE_SHIFT) | \ - ((u32)(sd20) << DISP_REG_SCFG_EXT_SD20_SHIFT) | \ - ((u32)(newb_access_e) << DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SHIFT) | \ - ((u32)(wram) << DISP_REG_SCFG_EXT_WRAM_SHIFT) | \ - ((u32)(mc_b) << DISP_REG_SCFG_EXT_MC_B_SHIFT) | \ - ((u32)(gpio) << DISP_REG_SCFG_EXT_GPIO_SHIFT) | \ - ((u32)(i2c) << DISP_REG_SCFG_EXT_I2C_SHIFT) | \ - ((u32)(i2s) << DISP_REG_SCFG_EXT_I2S_SHIFT) | \ - ((u32)(mic) << DISP_REG_SCFG_EXT_MIC_SHIFT) | \ - ((u32)(sd2) << DISP_REG_SCFG_EXT_SD2_SHIFT) | \ - ((u32)(sd1) << DISP_REG_SCFG_EXT_SD1_SHIFT) | \ - ((u32)(aes) << DISP_REG_SCFG_EXT_AES_SHIFT) | \ - ((u32)(dmac) << DISP_REG_SCFG_EXT_DMAC_SHIFT) | \ - ((u32)(nitrob_ex_e) << DISP_REG_SCFG_EXT_NITROB_EX_E_SHIFT) | \ - ((u32)(psram) << DISP_REG_SCFG_EXT_PSRAM_SHIFT) | \ - ((u32)(vram) << DISP_REG_SCFG_EXT_VRAM_SHIFT) | \ - ((u32)(lcdc) << DISP_REG_SCFG_EXT_LCDC_SHIFT) | \ - ((u32)(sio) << DISP_REG_SCFG_EXT_SIO_SHIFT) | \ - ((u32)(dsel) << DISP_REG_SCFG_EXT_DSEL_SHIFT) | \ - ((u32)(spi) << DISP_REG_SCFG_EXT_SPI_SHIFT) | \ - ((u32)(intc) << DISP_REG_SCFG_EXT_INTC_SHIFT) | \ - ((u32)(nitrob_mod_e) << DISP_REG_SCFG_EXT_NITROB_MOD_E_SHIFT) | \ - ((u32)(mc) << DISP_REG_SCFG_EXT_MC_SHIFT) | \ - ((u32)(snd) << DISP_REG_SCFG_EXT_SND_SHIFT) | \ - ((u32)(sdma) << DISP_REG_SCFG_EXT_SDMA_SHIFT) | \ - ((u32)(dma) << DISP_REG_SCFG_EXT_DMA_SHIFT)) -#endif - -/* MC1 */ - -#define DISP_REG_MI_MC1_CC_SHIFT 16 -#define DISP_REG_MI_MC1_CC_SIZE 16 -#define DISP_REG_MI_MC1_CC_MASK 0xffff0000 - -#define DISP_REG_MI_MC1_SWP_SHIFT 15 -#define DISP_REG_MI_MC1_SWP_SIZE 1 -#define DISP_REG_MI_MC1_SWP_MASK 0x00008000 - -#define DISP_REG_MI_MC1_SL2_STATUS_SHIFT 4 -#define DISP_REG_MI_MC1_SL2_STATUS_SIZE 4 -#define DISP_REG_MI_MC1_SL2_STATUS_MASK 0x000000f0 - -#define DISP_REG_MI_MC1_SL2_M1_SHIFT 7 -#define DISP_REG_MI_MC1_SL2_M1_SIZE 1 -#define DISP_REG_MI_MC1_SL2_M1_MASK 0x00000080 - -#define DISP_REG_MI_MC1_SL2_M0_SHIFT 6 -#define DISP_REG_MI_MC1_SL2_M0_SIZE 1 -#define DISP_REG_MI_MC1_SL2_M0_MASK 0x00000040 - -#define DISP_REG_MI_MC1_SL2_CDET_SHIFT 4 -#define DISP_REG_MI_MC1_SL2_CDET_SIZE 1 -#define DISP_REG_MI_MC1_SL2_CDET_MASK 0x00000010 - -#define DISP_REG_MI_MC1_SL1_STATUS_SHIFT 0 -#define DISP_REG_MI_MC1_SL1_STATUS_SIZE 4 -#define DISP_REG_MI_MC1_SL1_STATUS_MASK 0x0000000f - -#define DISP_REG_MI_MC1_SL1_M1_SHIFT 3 -#define DISP_REG_MI_MC1_SL1_M1_SIZE 1 -#define DISP_REG_MI_MC1_SL1_M1_MASK 0x00000008 - -#define DISP_REG_MI_MC1_SL1_M0_SHIFT 2 -#define DISP_REG_MI_MC1_SL1_M0_SIZE 1 -#define DISP_REG_MI_MC1_SL1_M0_MASK 0x00000004 - -#define DISP_REG_MI_MC1_SL1_CDET_SHIFT 0 -#define DISP_REG_MI_MC1_SL1_CDET_SIZE 1 -#define DISP_REG_MI_MC1_SL1_CDET_MASK 0x00000001 - - -/* MC */ - -#define DISP_REG_MI_MC_SWP_SHIFT 15 -#define DISP_REG_MI_MC_SWP_SIZE 1 -#define DISP_REG_MI_MC_SWP_MASK 0x8000 - -#define DISP_REG_MI_MC_SL2_MODE_SHIFT 6 -#define DISP_REG_MI_MC_SL2_MODE_SIZE 2 -#define DISP_REG_MI_MC_SL2_MODE_MASK 0x00c0 - -#define DISP_REG_MI_MC_SL2_CDET_SHIFT 4 -#define DISP_REG_MI_MC_SL2_CDET_SIZE 1 -#define DISP_REG_MI_MC_SL2_CDET_MASK 0x0010 - -#define DISP_REG_MI_MC_SL1_MODE_SHIFT 2 -#define DISP_REG_MI_MC_SL1_MODE_SIZE 2 -#define DISP_REG_MI_MC_SL1_MODE_MASK 0x000c - -#define DISP_REG_MI_MC_SL1_CDET_SHIFT 0 -#define DISP_REG_MI_MC_SL1_CDET_SIZE 1 -#define DISP_REG_MI_MC_SL1_CDET_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_MI_MC_FIELD( swp, sl2_mode, sl2_cdet, sl1_mode, sl1_cdet ) \ - (u16)( \ - ((u32)(swp) << DISP_REG_MI_MC_SWP_SHIFT) | \ - ((u32)(sl2_mode) << DISP_REG_MI_MC_SL2_MODE_SHIFT) | \ - ((u32)(sl2_cdet) << DISP_REG_MI_MC_SL2_CDET_SHIFT) | \ - ((u32)(sl1_mode) << DISP_REG_MI_MC_SL1_MODE_SHIFT) | \ - ((u32)(sl1_cdet) << DISP_REG_MI_MC_SL1_CDET_SHIFT)) -#endif - -/* MCCHAT */ - -#define DISP_REG_MI_MCCHAT_CC_SHIFT 0 -#define DISP_REG_MI_MCCHAT_CC_SIZE 16 -#define DISP_REG_MI_MCCHAT_CC_MASK 0xffff - -#ifndef SDK_ASM -#define DISP_REG_MI_MCCHAT_FIELD( cc ) \ - (u16)( \ - ((u32)(cc) << DISP_REG_MI_MCCHAT_CC_SHIFT)) -#endif - - -/* MC2 */ - -#define DISP_REG_MI_MC2_CA_SHIFT 0 -#define DISP_REG_MI_MC2_CA_SIZE 16 -#define DISP_REG_MI_MC2_CA_MASK 0xffff - -#ifndef SDK_ASM -#define DISP_REG_MI_MC2_FIELD( ca ) \ - (u16)( \ - ((u32)(ca) << DISP_REG_MI_MC2_CA_SHIFT)) -#endif - - -/* WL */ - -#define DISP_REG_SCFG_WL_OFFB_SHIFT 0 -#define DISP_REG_SCFG_WL_OFFB_SIZE 1 -#define DISP_REG_SCFG_WL_OFFB_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_WL_FIELD( offb ) \ - (u16)( \ - ((u32)(offb) << DISP_REG_SCFG_WL_OFFB_SHIFT)) -#endif - - -/* OP */ - -#define DISP_REG_SCFG_OP_OP1_SHIFT 1 -#define DISP_REG_SCFG_OP_OP1_SIZE 1 -#define DISP_REG_SCFG_OP_OP1_MASK 0x0002 - -#define DISP_REG_SCFG_OP_OP0_SHIFT 0 -#define DISP_REG_SCFG_OP_OP0_SIZE 1 -#define DISP_REG_SCFG_OP_OP0_MASK 0x0001 - -#define DISP_REG_SCFG_OP_OPT_SHIFT 0 -#define DISP_REG_SCFG_OP_OPT_SIZE 2 -#define DISP_REG_SCFG_OP_OPT_MASK 0x0003 - -#ifndef SDK_ASM - -#define DISP_REG_SCFG_OP_FIELD( op1, op0, opt ) \ - (u16)( \ - ((u32)(op1) << DISP_REG_SCFG_OP_OP1_SHIFT) | \ - ((u32)(op0) << DISP_REG_SCFG_OP_OP0_SHIFT) | \ - ((u32)(opt) << DISP_REG_SCFG_OP_OPT_SHIFT)) -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* TWL_IOREG_SCFG_H_ */ -#endif diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c deleted file mode 100644 index 9e70045d..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c +++ /dev/null @@ -1,726 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: strResource.c - - Copyright **** 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 "drawFunc.h" - - -// VERSION_MENU_SIZE、FONTMENU_SIZEだけコンテンツ数に応じて可変なのでconstではない - -#ifdef VERSION_VIEWER - -int s_numMenu[] = { - VERSIONMENU_SIZE, - ROOTMENU_SIZE -}; - -const char *s_strRootMenu[] = { - "<Installed Content Version>" -}; - - -const char **s_strMetaMenu[] = { - NULL, - s_strRootMenu -}; - -#else - -int s_numMenu[] = { - OWNERMENU_SIZE, - PARENTALMENU_SIZE, - SECURE_USER_MENU_SIZE, - OTHERMENU_SIZE, - NORMAL_HW_MENU_SIZE, - SECURE_HW_MENU_SIZE, - SCFG_ARM7_MENU_SIZE, - SCFG_ARM9_MENU_SIZE, - SYSMENU_MENU_SIZE, - FONTMENU_SIZE, - WLMENU_SIZE, - WHITEMENU_SIZE, - VERSIONMENU_SIZE, - 0, - 0, - 0, - ROOTMENU_SIZE -}; - -const char *s_strARM7RegisterName[] = { - "ROM", - "CLK", - "JTAG", - "EXP", - "MC1", - "MC2", - "DSWL", - "OPT", -}; - -const char *s_strARM9RegisterName[] = { - "ROM", - "CLK", - "RST", - "EXP", -}; - -const char *s_strSCFGViewMode[] = { - "", - "" -}; - -const char *s_strRootMenu[] = { - "<Owner>", - "<Parental control>", - "<Secure User Info>", - "<Other Info>", - "<Normal Hardware Info>", - "<Secure Hardware Info>", - "<SCFG Info (ARM7 side)>", - "<SCFG Info (ARM9 side)>", - "<SystemMenu Version>", - "<Shared Font>", - "<Wireless Firmware>", - "<Whitelist>", - "<Installed Content Version>", - "Reset HW Setting to Default", - "break HW Setting", - "Reset RTC Data" -}; - -const char *s_strOwnerMenu[] = { - "Language", - "Favorite color", - "Birthday", - "Country", - "Nickname", - "Comment" -}; - -const char *s_strParentalMenu[] = { - "Parental control", - "Picto Chat", - "ds Download", - "browser", - "Wii Point", - "Photo Exchange", - "UGC", - "Organization", - "Age", - "Password", - "Quastion id", - "Answer" -}; - -const char *s_strSecureUserMenu[] = { - "Finished Initial Setting(Setting)", - "Finished Initial Setting(Launcher)", - "Finished Broken Setting Sequence", - "Installed Softbox Count", - "Free Softbox Count", - "Last Boot Soft Index", - "Last Boot Soft Platform", - "Last Boot Soft ID" -}; - -const char *s_strOtherMenu[] = { - "Agree EULA", - "EULA Version", - "Wireless", - "RTC Offset", - "TP Calib raw x1", - "TP Calib raw y1", - "TP Calib dx1", - "TP Calib dy1", - "TP Calib raw x2", - "TP Calib raw y2", - "TP Calib dx2", - "TP Calib dy2", - "TP Calib RSV" -}; - -const char *s_strNormalHWMenu[] = { - "RTC Adjustment", - "Unique ID" -}; - -const char *s_strSecureHWMenu[] = { - "Force Disable Wireless", - "Region", - "Serial No", - "Language Bitmap", - "Fuse Data", - "Launcher TitleID Lo" -}; - -const char *s_strSCFGArm9Menu[] = { - "ARM9 SecureROM", - "Rom Status", - - "CPU Speed", - "DSP Clock", - "Camera Clock", - "WRAM Clock", - "Camera CKI", - - "DSP Reset Flag", - - "Fixed DMA", - "Fixed Geometry", - "Fixed Renderer", - "Fixed 2D Engine", - "Fixed Divider", - "Fixed Card I/F", - "Expanded VRAM", - "Expanded LCDC", - "Expanded INTC", - "PSRAM Boundary", - "New DMA Access", - "Camera Access", - "DSP Access", - "MemoryCard I/F", - "WRAM Access", - "CFG Block Access", - "All SCFG Check", - "SCFG Check Err7", - "SCFG Check Err9" -}; - -const char *s_strSCFGArm7Menu[] = { - - // rom制御 - "ARM9 SecureROM", - "ARM9 ROM Type", - "ARM7 SecureROM", - "ARM7 ROM Type", - "ARM7 FuseRom", - "Write Rom Area", - - // 新規ブロッククロック - "SD1 I/F Clock", - "SD2 I/F Clock", - "AES Clock", - "WRAM Clock", - "SND Clock", - - // JTAG - "Chain ARM7 to CPU JTAG", - "CPU JTAG", - "DSP JTAG", - - // 拡張機能 - "Fixed A7-DMAC1", - "Fixed Sound DMA", - "Fixed Sound", - "Fixed Memory Card", - "Expanded A7-INTC", - "Expanded SPI", - "Expanded Sound DMA", - "Expanded SIO", - "Expanded LCDC", - "Expanded VRAM", - "PSRAM Boundary", - "A7-DMAC2 Block", - "AES Block", - "SD1 I/F Block", - "SD2 I/F Block", - "Mic Block", - "I2S I/F Block", - "I2C I/F Block", - "GPIO Block", - "MemoryCard I/F", - "Shared WRAM", - "PU Resistance", - "ALL SCFG Block", - - // メモリカード I/F - "MC Slot1 DET", - "MC Slot1 Mode", - "MC Slot2 DET", - "MC Slot2 Mode", - "Swap MC1 MC2", - "Chatter. Count", - "MC Counter Data", - - // 旧無線 - "Old Wireless", - - // オプション端子読み出し - "Option Form", - "Option App for" -}; - -const char *s_strSystemMenu[] = { - "Timestamp", - "Version (numeric)", - "Version (string)", - "EULA URL", - "NUP Hostname", - - ".twl-nup-cert.der" , - ".twl-nup-prvkey.der", - ".twl-shop-cert.der", - ".twl-shop-prvkey.der", - "NintendoCA-G2.der" -}; - -const char *s_strFontMenu[] = { - "Timestamp", -}; - -const char *s_strWLMenu[] = { - "Version", - "Num of FW", - "FW1 type", - "FW1 version", - "FW2 type", - "FW2 version" -}; - -const char *s_strWhiteMenu[] = { - "Num of Entry", - "Tmd Hash" -}; - -const char **s_strMetaMenu[] = { - s_strOwnerMenu, - s_strParentalMenu, - s_strSecureUserMenu, - s_strOtherMenu, - s_strNormalHWMenu, - s_strSecureHWMenu, - s_strSCFGArm7Menu, - s_strSCFGArm9Menu, - s_strSystemMenu, - s_strFontMenu, - s_strWLMenu, - s_strWhiteMenu, - NULL, - NULL, - NULL, - NULL, - s_strRootMenu -}; - -char *s_strAccess[] = { - "Inaccessible", - "Accessible" -}; - -char *s_strJoint[] = { - "Jointed", - "DisJointed" -}; - -char *s_strSupply[] = { - "STOPPED", - "SUPPLIED" -}; - -char *s_strPSRAM[] = { - "4MB", - "16MB", - "32MB" -}; - -char *s_strRomMode[] = { - "TWL 64KB ROM", - "NITRO 8KB ROM" - -}; - -char *s_strCpuSpeed[] = { - "67.03 MHz", - "134.06 MHz" -}; - -char *s_strRomForm[] = { - "Included ROM", - "Downloaded PROM" -}; - -char *s_strRomApp[] = { - "Mass Product", - "Development 1", - "Development 2", - "PROM Download" -}; - -char *s_strWLFWType[] = { - "2in1 module 1.1", - "2in1 module 2.0", - "One Chip (M&M)" -}; - -char *s_strMCMode[] = { - "00", - "01", - "10", - "11" -}; - -char *s_strEnable[] = { - "DISABLED", - "ENABLED" -}; - -char *s_strResult[] = { - "Failed.", - "Succeeded.", - "" -}; - - - -char *s_strSysMenuKey[] = { - "Incorrect", - "correct: dev", - "correct: prod" -}; - -char *s_strBool[] = { - "FALSE", - "TRUE" -}; - - -char *s_strRatingOrg[] = { - "CERO", - "ESRB", - "BBFC", - "USK", - "PEGI general", - "PEGI Finland", - "PEGI Portugal", - "PEGI and BBFC Great Briten", - "OFLC", - "GRB" -}; - - char *s_strRegion[] = { - "JAPAN", - "AMERICA", - "EUROPA", - "AUSTRALIA", - "CHINA", - "KOREA", -}; - - char *s_strUserColor[] = { - "GRAY ", - "BROWN ", - "RED ", - "PINK ", - "ORANGE ", - "YELLOW ", - "LIME GREEN", - "GREEN ", - "DARK GREEN", - "SEA GREEN ", - "TURQUOISE ", - "BLUE ", - "DARK BLUE ", - "PURPLE ", - "VIOLET ", - "MAGENTA ", -}; - -char *s_strLanguage[] = { - "JAPANESE", - "ENGLISH", - "FRENCH", - "GERMAN", - "ITALIAN", - "SPANISH", - "CHINESE", - "KOREAN", -}; - -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 ", -}; - - -#endif // else VERSION_VIEWER - -char *s_strOK[] = { - "CANCEL", - "OK" -}; - -char *s_strCorrect[] = { - "Incorrect", - "Correct" -}; - -char s_strNA[] = { - "N/A" -}; diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h deleted file mode 100644 index 97c8928f..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h +++ /dev/null @@ -1,293 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: strResource.h - - Copyright **** 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 __DISPLAY_INFO_RESOURCE__ -#define __DISPLAY_INFO_RESOURCE__ - -// メニューID -#ifdef VERSION_VIEWER - #define ROOTMENU_SIZE 1 - #define MENU_ROOT 1 - #define MENU_VERSION 0 - #define MENU_OWNER 10 - #define MENU_PARENTAL 11 - #define MENU_SECURE_USER 12 - #define MENU_OTHER 13 - #define MENU_NORMAL_HW 14 - #define MENU_SECURE_HW 15 - #define MENU_SCFG_ARM7 16 - #define MENU_SCFG_ARM9 17 - #define MENU_SYSMENU 18 - #define MENU_FONT 19 - #define MENU_WL 20 - #define MENU_WHITE 21 - #define MENU_RESET_INFO 22 - #define MENU_BREAK_DATA 23 - #define MENU_RTC_RESET 24 - -#else - #define ROOTMENU_SIZE 16 - - #define MENU_ROOT 16 - #define MENU_OWNER 0 - #define MENU_PARENTAL 1 - #define MENU_SECURE_USER 2 - #define MENU_OTHER 3 - #define MENU_NORMAL_HW 4 - #define MENU_SECURE_HW 5 - #define MENU_SCFG_ARM7 6 - #define MENU_SCFG_ARM9 7 - #define MENU_SYSMENU 8 - #define MENU_FONT 9 - #define MENU_WL 10 - #define MENU_WHITE 11 - #define MENU_VERSION 12 - #define MENU_RESET_INFO 13 - #define MENU_BREAK_DATA 14 - #define MENU_RTC_RESET 15 -#endif // else VERSION_VIEWER - -#define OWNERMENU_SIZE 6 - -#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 PARENTALMENU_SIZE 12 - -#define PARENTAL_FLAG 0 -#define PARENTAL_PICTOCHAT 1 -#define PARENTAL_DOWNLOAD 2 -#define PARENTAL_BROWSER 3 -#define PARENTAL_WIIPOINT 4 -#define PARENTAL_PHOTO_EXCHANGE 5 -#define PARENTAL_UGC 6 -#define PARENTAL_ORGANIZATION 7 -#define PARENTAL_AGE 8 -#define PARENTAL_PASSWORD 9 -#define PARENTAL_QUESTION_ID 10 -#define PARENTAL_ANSWER 11 - -#define SECURE_USER_MENU_SIZE 8 - -#define SECURE_USER_INITIAL_SETTINGS 0 -#define SECURE_USER_INITIAL_LAUNCHER 1 -#define SECURE_USER_BROKEN_SETTINGS 2 -#define SECURE_USER_INSTALLED_SOFTBOX 3 -#define SECURE_USER_FREE_SOFTBOX 4 -#define SECURE_USER_LASTBOOT_IDX 5 -#define SECURE_USER_LASTBOOT_PLATFORM 6 -#define SECURE_USER_LASTBOOT_ID 7 - -#define OTHERMENU_SIZE 13 - -#define OTHER_AGREE_EULA 0 -#define OTHER_EULA_VERSION 1 -#define OTHER_WIRELESS 2 -#define OTHER_RTC_OFFSET 3 -#define OTHER_TP_RAWX1 4 -#define OTHER_TP_RAWY1 5 -#define OTHER_TP_DX1 6 -#define OTHER_TP_DY1 7 -#define OTHER_TP_RAWX2 8 -#define OTHER_TP_RAWY2 9 -#define OTHER_TP_DX2 10 -#define OTHER_TP_DY2 11 -#define OTHER_TP_RSV 12 - -#define NORMAL_HW_MENU_SIZE 2 - -#define NORMAL_HW_RTC_ADJUST 0 -#define NORMAL_HW_UNIQUE_ID 1 - -#define SECURE_HW_MENU_SIZE 6 - -#define SECURE_HW_FORCE_DISABLE 0 -#define SECURE_HW_REGION 1 -#define SECURE_HW_SERIAL 2 -#define SECURE_HW_LANGUAGE 3 -#define SECURE_HW_FUSE 4 -#define SECURE_HW_LAUNCHER_ID 5 - -#define SCFG_ARM9_MENU_SIZE 27 - -#define SCFG_ARM9_ROM_SEC 0 -#define SCFG_ARM9_ROM_STATE 1 -#define SCFG_ARM9_CLK_CPU 2 -#define SCFG_ARM9_CLK_DSP 3 -#define SCFG_ARM9_CLK_CAM 4 -#define SCFG_ARM9_CLK_WRAM 5 -#define SCFG_ARM9_CLK_CAM_CKI 6 -#define SCFG_ARM9_RST_DSP 7 -#define SCFG_ARM9_EXT_DMA 8 -#define SCFG_ARM9_EXT_GEO 9 -#define SCFG_ARM9_EXT_REN 10 -#define SCFG_ARM9_EXT_2DE 11 -#define SCFG_ARM9_EXT_DIV 12 -#define SCFG_ARM9_EXT_MC 13 -#define SCFG_ARM9_EXT_INTC 14 -#define SCFG_ARM9_EXT_LCDC 15 -#define SCFG_ARM9_EXT_VRAM 16 -#define SCFG_ARM9_EXT_PS 17 -#define SCFG_ARM9_EXT_DMAC 18 -#define SCFG_ARM9_EXT_CAM 19 -#define SCFG_ARM9_EXT_DSP 20 -#define SCFG_ARM9_EXT_MCB 21 -#define SCFG_ARM9_EXT_WRAM 22 -#define SCFG_ARM9_EXT_CFG 23 -#define SCFG_ARM9_TOTAL_CHECK 24 -#define SCFG_ARM9_CHECK_ERROR7 25 -#define SCFG_ARM9_CHECK_ERROR9 26 - -#define SCFG_ARM7_MENU_SIZE 47 - -#define SCFG_ARM7_ROM_ARM9_SEC 0 -#define SCFG_ARM7_ROM_ARM9_RSEL 1 -#define SCFG_ARM7_ROM_ARM7_SEC 2 -#define SCFG_ARM7_ROM_ARM7_RSEL 3 -#define SCFG_ARM7_ROM_ARM7_FUSE 4 -#define SCFG_ARM7_ROM_WE 5 -#define SCFG_ARM7_CLK_SD1 6 -#define SCFG_ARM7_CLK_SD2 7 -#define SCFG_ARM7_CLK_AES 8 -#define SCFG_ARM7_CLK_WRAM 9 -#define SCFG_ARM7_CLK_SND 10 -#define SCFG_ARM7_JTAG_A7 11 -#define SCFG_ARM7_JTAG_CPU 12 -#define SCFG_ARM7_JTAG_DSP 13 -#define SCFG_ARM7_EXT_DMA 14 -#define SCFG_ARM7_EXT_SDMA 15 -#define SCFG_ARM7_EXT_SND 16 -#define SCFG_ARM7_EXT_MC 17 -#define SCFG_ARM7_EXT_INTC 18 -#define SCFG_ARM7_EXT_SPI 19 -#define SCFG_ARM7_EXT_DSEL 20 -#define SCFG_ARM7_EXT_SIO 21 -#define SCFG_ARM7_EXT_LCDC 22 -#define SCFG_ARM7_EXT_VRAM 23 -#define SCFG_ARM7_EXT_PS 24 -#define SCFG_ARM7_EXT_DMAC 25 -#define SCFG_ARM7_EXT_AES 26 -#define SCFG_ARM7_EXT_SD1 27 -#define SCFG_ARM7_EXT_SD2 28 -#define SCFG_ARM7_EXT_MIC 29 -#define SCFG_ARM7_EXT_I2S 30 -#define SCFG_ARM7_EXT_I2C 31 -#define SCFG_ARM7_EXT_GPIO 32 -#define SCFG_ARM7_EXT_MCB 33 -#define SCFG_ARM7_EXT_WRAM 34 -#define SCFG_ARM7_EXT_PU 35 -#define SCFG_ARM7_EXT_CFG 36 -#define SCFG_ARM7_MI_SC1_CDET 37 -#define SCFG_ARM7_MI_SC1_MODE 38 -#define SCFG_ARM7_MI_SC2_CDET 39 -#define SCFG_ARM7_MI_SC2_MODE 40 -#define SCFG_ARM7_MI_SWP 41 -#define SCFG_ARM7_MI_CC 42 -#define SCFG_ARM7_MI_CA 43 -#define SCFG_ARM7_WL_OFFB 44 -#define SCFG_ARM7_OP_FORM 45 -#define SCFG_ARM7_OP_APP 46 - -#define SCFG_ARM7_SHARED_OFFSET 47 - -#define SYSMENU_MENU_SIZE 10 - -#define SYSMENU_TIMESTAMP 0 -#define SYSMENU_VERSION_NUM 1 -#define SYSMENU_VERSION_STR 2 -#define SYSMENU_EULA_URL 3 -#define SYSMENU_NUP_HOST 4 - -#define SYSMENU_NUP_CERT 5 -#define SYSMENU_NUP_PRV 6 -#define SYSMENU_SHOP_CERT 7 -#define SYSMENU_SHOP_PRV 8 -#define SYSMENU_NINTENDO_CAG2 9 - -#define SYSMENU_HASH_IDX 5 - -#define FONTMENU_SIZE 1 - -#define FONT_TIMESTAMP 0 -#define FONT_INFO 1 - -#define WLMENU_SIZE 6 - -#define WL_VERSION 0 -#define WL_NUM_FW 1 -#define WL_FW1_TYPE 2 -#define WL_FW1_VER 3 -#define WL_FW2_TYPE 4 -#define WL_FW2_VER 5 - -#define WHITEMENU_SIZE 2 - -#define WHITE_NUM 0 -#define WHITE_HASH 1 - -#define VERSIONMENU_SIZE 0 - -#define VERSION_OTHER 0 - -extern int s_numMenu[]; -extern const char *s_strRootMenu[]; -extern const char *s_strOwnerMenu[]; -extern const char *s_strParentalMenu[]; -extern const char *s_strSecureUserMenu[]; -extern const char *s_strOtherMenu[]; -extern const char *s_strNormalHWMenu[]; -extern const char *s_strSecureHWMenu[]; -extern const char *s_strSCFGARM7Menu[]; -extern const char *s_strSCFGARM9Menu[]; -extern const char *s_strOtherMenu[]; -extern const char *s_strSystemMenu[]; -extern const char *s_strFontMenu[] ; -extern const char *s_strWLMenu[]; -extern const char *s_strWhiteMenu[]; -extern const char **s_strMetaMenu[]; -extern const char *s_strARM7RegisterName[]; -extern const char *s_strARM9RegisterName[]; -extern const char *s_strSCFGViewMode[]; - -extern char *s_strEnable[]; -extern char *s_strJoint[]; -extern char *s_strCorrect[]; -extern char *s_strSysMenuKey[]; -extern char *s_strSupply[]; -extern char *s_strRomMode[]; -extern char *s_strPSRAM[]; -extern char *s_strCpuSpeed[]; -extern char *s_strOK[]; -extern char *s_strWLFWType[]; -extern char *s_strResult[]; -extern char *s_strBool[]; -extern char *s_strAccess[]; -extern char *s_strRomApp[]; -extern char *s_strRomForm[]; -extern char *s_strMCMode[]; -extern char *s_strRatingOrg[]; -extern char *s_strRegion[]; -extern char *s_strUserColor[]; -extern char *s_strLanguage[]; -extern char *s_strCountry[]; -extern char s_strNA[]; - -#endif // ifndef __DISPLAY_INFO_RESOURCE__ \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.c b/build/tests/DisplaySystemInformation/ARM9/src/util.c deleted file mode 100644 index 95ece923..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/util.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include "util.h" - -u8 ctoh( const char c ); - -void putBinary( u8 *src, u32 size ) -{ - int i; - for( i = 0; i < size; i++ ) - { - OS_TPrintf( "%x", src[i] ); - } - - OS_TPrintf( "\n" ); -} - -u8 ctoh( const char c ) -{ - if( '0' <= c && c <= '9' ) - { - return (u8) (c - '0'); - } - - if( 'a' <= c && c <= 'f' ) - { - return (u8) ((c - 'a') + 10); - } - - if( 'A' <= c && c <= 'F' ) - { - return (u8) ((c - 'A') + 10); - } - - return 0; -} - -void strToHexa( const char *src, u8 *dst, u32 length ) -// 受け取った文字列配列を16進配列へ変換 -// lengthは文字数ではなくバイト数なので注意 -{ - int i; - for( i = 0; i < length*2 ; i += 2 ) - { - dst[i/2] = (u8) ( (ctoh( src[i] ) << 4) | ctoh( src[i+1] ) ); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.h b/build/tests/DisplaySystemInformation/ARM9/src/util.h deleted file mode 100644 index dda95543..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/util.h +++ /dev/null @@ -1,10 +0,0 @@ - -#ifndef __DISPLAY_INFO_UTIL__ -#define __DISPLAY_INFO_UTIL__ - -#include - -void putBinary( u8 *src, u32 size ); -void strToHexa( const char *src, u8 *dst, u32 length ); - -#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c deleted file mode 100644 index 88f1d520..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c +++ /dev/null @@ -1,317 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.c - - Copyright **** 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 - -#include "misc.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "control.h" - -#include "getInformation.h" - -/* function prototype ----------------------------- */ -void getAllInfo( void ); -void initInfo( void ); -void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ); -void printAllInfo ( void ); -void getParentalInfo( void ); -void getOtherInfo( void ); - - -/* global variables ----------------------------- */ - -DispInfoEntry* gAllInfo[ROOTMENU_SIZE]; // それぞれのメニューごとに項目の中身を"文字列で"持つ配列 - -// コンテンツタイトル関係 -OSTitleId *gContentsTitle; // コンテンツタイトルの一覧 -s32 gNumContents; // gContentsTitleに含まれるタイトルの数 -u16 *gContentsVersion; // gContentsTitleそれぞれのバージョン情報 - -// ARM7側のSCFGデータを保持 -u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; -u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; - -// LCFGReadの結果 -BOOL gLCFGAccessible; -u8 * gBufLCFG; - -/* static data ---------------------------------- */ - - -/* function definition -------------------------- */ - -void displayInfoMain( void ) -{ - static int menu = MENU_ROOT; - static int line = 0; // 現在選択しているページナンバと行 - static int changeLine = 0; // changeMode用 - static BOOL firstCall = TRUE; // 最初の呼び出しか否か - - // 0: changemode 1: executemode 2: result on/off 3:(require 2=true) success/failed - static u8 modeFlag = 0; - - static BOOL isChangeMode = FALSE; - static BOOL executeMode = FALSE; - - BOOL repaintFlag = FALSE; - ChangeCotnrolResult changeResult = CHANGE_NOTHING; - - // 初回の呼び出し時は全ての情報を取得しなおす - if( firstCall ) - { - initInfo(); - getAllInfo(); - } - - if( modeFlag & MODE_CHANGE_MASK ) - { - changeResult = changeControl( &menu, &line, &changeLine, &modeFlag ); - } - else if( modeFlag & MODE_EXECUTE_MASK ) - { - repaintFlag |= executeControl( &line, &changeLine, &modeFlag ); - } - else - { - repaintFlag |= control( &menu, &line, &changeLine, &modeFlag ); - } - - if( changeResult == CHANGE_VALUE_CHANGED ) - { - // 値が更新されたときは全部取得しなおす - LCFG_WriteTWLSettings( (u8 (*) [LCFG_WRITE_TEMP] ) gBufLCFG ); - getAllInfo(); - } - - // パッド情報で選んでる場所とか情報とか更新 - if( changeResult == CHANGE_VALUE_CHANGED || changeResult == CHANGE_CONTROL || repaintFlag || firstCall ) - { - // 何か操作があったときはキャンバスクリアして描画しなおし - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - NNS_G2dCharCanvasClear( &gCanvasSub, TXT_COLOR_WHITE ); - // 情報一覧を描画する - drawMenu( menu, line, changeLine, modeFlag ); - - firstCall = FALSE; - } - -} - -void initInfo( void ) -// 固定文字列で対応できない項目に文字列領域を割り当てる -{ - -#ifndef VERSION_VIEWER - OS_TPrintf("buffer initialize\n"); - - // sjis (char) - infoAlloc( gAllInfo[MENU_OWNER], OWNER_BIRTHDAY, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_USER], SECURE_USER_LASTBOOT_ID, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LAUNCHER_ID, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_NORMAL_HW], NORMAL_HW_UNIQUE_ID, OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_SERIAL , OS_TWL_HWINFO_SERIALNO_LEN_MAX + 1, TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LANGUAGE, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_FUSE, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CC, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CA, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM9], SCFG_ARM9_CHECK_ERROR7, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM9], SCFG_ARM9_CHECK_ERROR9, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_VERSION, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_FW1_VER, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_FW2_VER, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_OTHER], OTHER_RTC_OFFSET, DISPINFO_BUFSIZE, TRUE); - infoAlloc( gAllInfo[MENU_OTHER], OTHER_TP_RSV, DISPINFO_BUFSIZE, TRUE); - - - // utf(u16) - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_EULA_URL, TWL_EULA_URL_LEN + 1, FALSE ); - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_NUP_HOST, TWL_NUP_HOSTNAME_LEN + 1, FALSE ); - infoAlloc( gAllInfo[MENU_OWNER], OWNER_NICKNAME, OS_OWNERINFO_NICKNAME_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_OWNER], OWNER_COMMENT, OS_OWNERINFO_COMMENT_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_PARENTAL], PARENTAL_ANSWER, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_VERSION_STR, TWL_SYSMENU_VER_STR_LEN + 1, FALSE ); - - OS_TPrintf( "information alloc succeeded\n" ); -#endif -} - - -void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ) -// initInfoの作業用関数。isSjis=trueだとcharを、falseならu16を割り当てる -{ - if( isSjis ) - { - p[index].str.sjis = (char*) Alloc (sizeof(char) * size); - SDK_ASSERT( p->str.sjis ); - p[index].str.sjis[size] = '\0'; - } - else - { - p[index].str.utf = (u16*) Alloc (sizeof(u16) * size); - SDK_ASSERT( p->str.utf ); - p[index].str.utf[size-1] = '\0'; - } - -} - - -void getAllInfo( void ) -// -{ - static BOOL firstRead = TRUE; - - OS_TPrintf("reflesh Information\n"); - -#ifndef VERSION_VIEWER - getOwnerInfo(); - getParentalInfo(); - getSecureUserInfo(); - getOtherInfo(); - getHWInfo(); - getSCFGInfo(); - getSysmenuInfo(); - getFontInfo(); - - if( firstRead ){ - getWLInfo(); - getWhiteListInfo(); - } -#endif - -#if NAM_ENABLE - if( firstRead ){ - getContentsVersion(); - } -#endif - - - printAllInfo(); - firstRead = FALSE; - OS_TPrintf("reflesh information finished\n"); -} - - -void displayInfoInit( void ) -{ - int loop1, loop2; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - OS_TPrintf(" size version: %d\n", s_numMenu[MENU_VERSION]); - // 全体情報を持つ配列をセット - // 可能なものは用意したstatic文字列へのポインタで対応 - // 必要なものだけあとでmallocする - for(loop1=0; loop1isNumData ) - { - OS_TPrintf("%d %d : %d\n", loop1, loop2, entry->iValue); - } - else if( entry->isSjis ) - { - OS_TPrintf("%d %d : %s\n", loop1, loop2, entry->str.sjis); - } - else - { - OS_TPrintf("%d %d : %s\n", loop1, loop2, entry->str.utf); - } - - } - } -} - - diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h deleted file mode 100644 index 33bdef68..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.h - - Copyright **** 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 -#include "drawFunc.h" -#include "address.h" - -#define DISPINFO_BUFSIZE 64 - -#define MODE_CHANGE_MASK 0x1 -#define MODE_EXECUTE_MASK 0x2 -#define MODE_RESULT_DISPLAY_MASK 0x4 -#define MODE_RESULT_MASK 0x8 -#define MODE_RESULT_SHIFT 3 - -#ifdef __cplusplus -extern "C" { -#endif - -//////////////////////////////// - -typedef enum ChangeFuncArg{ - ARG_BOOL, - ARG_INT, - ARG_OTHER -} ChangeFuncArg; - -typedef struct DispInfoEntry -{ - BOOL isNumData; // 表示するときは数値データか文字列データか - BOOL isSjis; // UTF16で描画するデータだけFALSE isNumData=TRUEなら未定義 - BOOL isAligned; // 一列に表示できるならTRUE、字下げが必要ならFALSE - BOOL fromLCFG; // LCFGから取得したデータは色つけて表示 - int numLines; // 項目名、項目内容を表示するのに必要な行数 - - const char *kind; // 項目名 - - union { - char* sjis; - u16* utf; - } str; - - int iValue; // データの数値型表現(インデクスとか) - - BOOL changable; // その値が変更可能か否か - - // ここから先はchangableがtrueのエントリのみ設定される - ChangeFuncArg argType; // 値を変更するための関数の引数型 - - // 値を変更するための関数 - union { - void (*cBool)(bool); - void (*cInt)(int); - } changeFunc; - - char **kindNameList; // 項目名一覧の先頭へのポインタ - int numKindName; // 項目名一覧の長さ - -} DispInfoEntry; - - -//////////////////////////////// - -// 各種本体、ユーザ情報 -extern DispInfoEntry* gAllInfo[ROOTMENU_SIZE]; - -extern u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; // ARM7からのデータ取得用バッファ -extern u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; // ARM7からのデータ取得用バッファ - -extern BOOL gLCFGAccessible; -extern u8* gBufLCFG; - -//////////////////////////////// - -void displayInfoMain( void ); -void displayInfoInit( void ); - -//////////////////////////////// - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_VIEW_INFO__ diff --git a/build/tests/DisplaySystemInformation/Makefile b/build/tests/DisplaySystemInformation/Makefile deleted file mode 100644 index 6c2cd85e..00000000 --- a/build/tests/DisplaySystemInformation/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM7_armadillo ARM7_racoon ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/banner/MakeFooter.txt b/build/tests/DisplaySystemInformation/banner/MakeFooter.txt deleted file mode 100644 index 91571e63..00000000 --- a/build/tests/DisplaySystemInformation/banner/MakeFooter.txt +++ /dev/null @@ -1,29 +0,0 @@ -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/MakeHeader.txt b/build/tests/DisplaySystemInformation/banner/MakeHeader.txt deleted file mode 100644 index 10cdc670..00000000 --- a/build/tests/DisplaySystemInformation/banner/MakeHeader.txt +++ /dev/null @@ -1,18 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - diff --git a/build/tests/DisplaySystemInformation/banner/Makefile b/build/tests/DisplaySystemInformation/banner/Makefile deleted file mode 100644 index bfd869e7..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = \ - Makefile.0B0A Makefile.0B1A Makefile.0B2A Makefile.0B3A \ - Makefile.020A Makefile.021A Makefile.0B4A Makefile.0B5A \ - Makefile.0B6A Makefile.0B7A Makefile.0B8A Makefile.0B9A \ - Makefile.0BAA Makefile.0BBA Makefile.022A Makefile.023A \ - Makefile.024A Makefile.025A - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.020A b/build/tests/DisplaySystemInformation/banner/Makefile.020A deleted file mode 100644 index 69b02397..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.020A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 020A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.021A b/build/tests/DisplaySystemInformation/banner/Makefile.021A deleted file mode 100644 index bbc7f3ba..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.021A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 021A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.022A b/build/tests/DisplaySystemInformation/banner/Makefile.022A deleted file mode 100644 index 9222801e..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.022A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 022A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.023A b/build/tests/DisplaySystemInformation/banner/Makefile.023A deleted file mode 100644 index adbe8786..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.023A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 023A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.024A b/build/tests/DisplaySystemInformation/banner/Makefile.024A deleted file mode 100644 index 80b12300..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.024A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 024A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.025A b/build/tests/DisplaySystemInformation/banner/Makefile.025A deleted file mode 100644 index 0d270f76..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.025A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 025A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B0A b/build/tests/DisplaySystemInformation/banner/Makefile.0B0A deleted file mode 100644 index 6a1317f5..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B0A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B0A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B1A b/build/tests/DisplaySystemInformation/banner/Makefile.0B1A deleted file mode 100644 index 8cd89489..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B1A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B1A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B2A b/build/tests/DisplaySystemInformation/banner/Makefile.0B2A deleted file mode 100644 index 7a5328be..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B2A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B2A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B3A b/build/tests/DisplaySystemInformation/banner/Makefile.0B3A deleted file mode 100644 index 9840501b..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B3A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B3A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B4A b/build/tests/DisplaySystemInformation/banner/Makefile.0B4A deleted file mode 100644 index d5dc7e7e..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B4A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B4A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B5A b/build/tests/DisplaySystemInformation/banner/Makefile.0B5A deleted file mode 100644 index 39dd75c0..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B5A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B5A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B6A b/build/tests/DisplaySystemInformation/banner/Makefile.0B6A deleted file mode 100644 index 7ea49c4d..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B6A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B6A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B7A b/build/tests/DisplaySystemInformation/banner/Makefile.0B7A deleted file mode 100644 index 29b6af03..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B7A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B7A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B8A b/build/tests/DisplaySystemInformation/banner/Makefile.0B8A deleted file mode 100644 index 2792ec15..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B8A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B8A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B9A b/build/tests/DisplaySystemInformation/banner/Makefile.0B9A deleted file mode 100644 index 57f5b803..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B9A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B9A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0BAA b/build/tests/DisplaySystemInformation/banner/Makefile.0BAA deleted file mode 100644 index 99da9ee9..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0BAA +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0BAA -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0BBA b/build/tests/DisplaySystemInformation/banner/Makefile.0BBA deleted file mode 100644 index f270f2e2..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0BBA +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0BBA -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf deleted file mode 100644 index c7a40f7f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf deleted file mode 100644 index 69f00f12..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf deleted file mode 100644 index 01d4f69c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf deleted file mode 100644 index ce71e021..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf deleted file mode 100644 index 74f6562f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf deleted file mode 100644 index 83d5343d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf deleted file mode 100644 index cb327e33..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf deleted file mode 100644 index 93165d66..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf deleted file mode 100644 index 42fdbd71..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf deleted file mode 100644 index ce03f18c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf deleted file mode 100644 index 3a3bf323..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf deleted file mode 100644 index 5a99c642..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf deleted file mode 100644 index df218cb7..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf deleted file mode 100644 index 73ee7b0e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf deleted file mode 100644 index e3f3f29b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf deleted file mode 100644 index 1082fd89..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf deleted file mode 100644 index eae1319c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf deleted file mode 100644 index e20c3b3b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/bannerOption.txt b/build/tests/DisplaySystemInformation/banner/bannerOption.txt deleted file mode 100644 index 9da03c6f..00000000 --- a/build/tests/DisplaySystemInformation/banner/bannerOption.txt +++ /dev/null @@ -1,19 +0,0 @@ -#gamecode bannerStr -0B0A DisplayInfo_0 -0B1A DisplayInfo_1 -0B2A DisplayInfo_2 -0B3A DisplayInfo_3 -020A DisplayInfo_4 -021A DisplayInfo_5 -0B4A DisplayInfo_6 -0B5A DisplayInfo_7 -0B6A DisplayInfo_8 -0B7A DisplayInfo_9 -0B8A DisplayInfo_10 -0B9A DisplayInfo_11 -0BAA DisplayInfo_12 -0BBA DisplayInfo_13 -022A DisplayInfo_14 -023A DisplayInfo_15 -024A DisplayInfo_16 -025A DisplayInfo_17 diff --git a/build/tests/DisplaySystemInformation/banner/banner_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner_v3.bsf deleted file mode 100644 index 74965f85..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/020A.bmp b/build/tests/DisplaySystemInformation/banner/icon/020A.bmp deleted file mode 100644 index b6545ca6..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/020A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/021A.bmp b/build/tests/DisplaySystemInformation/banner/icon/021A.bmp deleted file mode 100644 index 142af23d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/021A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/022A.bmp b/build/tests/DisplaySystemInformation/banner/icon/022A.bmp deleted file mode 100644 index 6a9ad050..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/022A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/023A.bmp b/build/tests/DisplaySystemInformation/banner/icon/023A.bmp deleted file mode 100644 index 33ed807f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/023A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/024A.bmp b/build/tests/DisplaySystemInformation/banner/icon/024A.bmp deleted file mode 100644 index 7b135f8b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/024A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/025A.bmp b/build/tests/DisplaySystemInformation/banner/icon/025A.bmp deleted file mode 100644 index 3e036a6d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/025A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp deleted file mode 100644 index 3c3291e2..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp deleted file mode 100644 index 25552817..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp deleted file mode 100644 index 454a960e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp deleted file mode 100644 index fcd2a529..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp deleted file mode 100644 index f7224bae..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp deleted file mode 100644 index bda8474b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp deleted file mode 100644 index 2d92ad53..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp deleted file mode 100644 index 400f5e2e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp deleted file mode 100644 index b2e14b09..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp deleted file mode 100644 index 342bc36d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp b/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp deleted file mode 100644 index d6c7d062..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp b/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp deleted file mode 100644 index 70f2589d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp b/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp deleted file mode 100644 index 8ec56f1c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/makeMaker.rb b/build/tests/DisplaySystemInformation/banner/makeMaker.rb deleted file mode 100755 index d3a74246..00000000 --- a/build/tests/DisplaySystemInformation/banner/makeMaker.rb +++ /dev/null @@ -1,27 +0,0 @@ -fFoot = open "MakeFooter.txt" -fHead = open "MakeHeader.txt" - -contentFoot = fFoot.read -contentHead = fHead.read - -fFoot.close -fHead.close - -gamecodeList = ["020A","021A","022A","023A","024A","025A", - "0B0A","0B1A","0B2A","0B3A","0B4A","0B5A", - "0B6A","0B7A","0B8A","0B9A","0BAA","0BBA", - ] -fileNameList = [] - -for gamecode in gamecodeList - - fileName = "Makefile.#{gamecode}" - fileNameList << fileName - f = open( fileName, "w") - f.puts contentHead - f.puts "GAMECODE\t=\t#{gamecode}" - f.puts contentFoot - f.close -end - -print fileNameList diff --git a/build/tests/DisplaySystemInformation/common/include/address.h b/build/tests/DisplaySystemInformation/common/include/address.h deleted file mode 100644 index 4eeaf221..00000000 --- a/build/tests/DisplaySystemInformation/common/include/address.h +++ /dev/null @@ -1,28 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** 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 __DISP_INFO_ADDRESS_H__ -#define __DISP_INFO_ADDRESS_H__ - -#include - -#define DISPINFO_SHARED_SCFG_REG_ADDR (void*)0x02fff000 -#define DISPINFO_SHARED_SCFG_REG_SIZE 0x26U -#define DISPINFO_SHARED_SCFG_WRAM_ADDR (void*)0x02fff030 -#define DISPINFO_SHARED_SCFG_WRAM_SIZE 0x06U - -#endif \ No newline at end of file diff --git a/build/tests/ETicketViewer/Makefile b/build/tests/ETicketViewer/Makefile deleted file mode 100644 index 09f6d439..00000000 --- a/build/tests/ETicketViewer/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ETicketViewer -# File: Makefile -# -# 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: -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL - -TARGET_BIN = TicketViwer.srl - -INCDIR = ./include $(ROOT)/build/libraries/os/common/include -SRCDIR = ./src - -SRCS = main.c screen.c font.c common.c - -LLIBRARIES = liblcfg$(TWL_LIBSUFFIX).a \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -# libnamut$(TWL_LIBSUFFIX).a\ - -ROM_SPEC = ./ROM-TS_sys.rsf - -COMPONENT_NAME = armadillo_SYSMENU -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/$(COMPONENT_NAME)/$(TWL_BUILDTYPE_ARM7)/$(COMPONENT_NAME) -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== - - diff --git a/build/tests/ETicketViewer/ROM-TS_sys.rsf b/build/tests/ETicketViewer/ROM-TS_sys.rsf deleted file mode 100644 index 42fc65e3..00000000 --- a/build/tests/ETicketViewer/ROM-TS_sys.rsf +++ /dev/null @@ -1,318 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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:: 2008-07-23#$ -# $Rev: 7566 $ -# $Author: yosiokat $ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./resource/rom_header_0tca.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - # PermitLandingNormalJump TRUE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - # PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotA_SSLClientCert: launcher deliver HW AES slot A setting [TRUE/FALSE] - # - #HwAESSlotA_SSLClientCert FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # HwAESSlotB for Sign JPEG for Launcher: launcher deliver HW AES slot B setting for Sign JPEG for Launcher [TRUE/FALSE] - # - #HwAESSlotB_SignJPEGForLauncher FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - HwAESSlotC TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media GameCard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 0TCA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode TRUE - - # - # Shared2 file size: [DISABLE/0-4194304/0K-4096K/0M-4M] - # - #Shared2File0Size Disable - #Shared2File1Size Disable - #Shared2File2Size Disable - #Shared2File3Size Disable - #Shared2File4Size Disable - #Shared2File5Size Disable -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/ETicketViewer/include/common.h b/build/tests/ETicketViewer/include/common.h deleted file mode 100644 index 90e2dd88..00000000 --- a/build/tests/ETicketViewer/include/common.h +++ /dev/null @@ -1,67 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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:: 2008-08-30#$ - $Rev: 8166 $ - $Author: nishimoto_takashi $ - *---------------------------------------------------------------------------*/ -#ifndef COMMON_H_ -#define COMMON_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_START 25 // キーリピート開始までのフレーム数 -#define KEY_REPEAT_SPAN 10 // キーリピートの間隔フレーム数 - -/*---------------------------------------------------------------------------* - 構造体 定義 - *---------------------------------------------------------------------------*/ - -// キー入力情報 -typedef struct KeyInfo -{ - u16 cnt; // 未加工入力値 - u16 trg; // 押しトリガ入力 - u16 up; // 離しトリガ入力 - u16 rep; // 押し維持リピート入力 -} KeyInfo; - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -void InitCommon(void); - -void ReadKey(KeyInfo* pKey); - -void VBlankIntr(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* COMMON_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/include/font.h b/build/tests/ETicketViewer/include/font.h deleted file mode 100644 index d4f23ed2..00000000 --- a/build/tests/ETicketViewer/include/font.h +++ /dev/null @@ -1,41 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: font.h - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/include/screen.h b/build/tests/ETicketViewer/include/screen.h deleted file mode 100644 index 799a2b93..00000000 --- a/build/tests/ETicketViewer/include/screen.h +++ /dev/null @@ -1,49 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.h - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#ifndef SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -/*===========================================================================*/ -#include - -/*---------------------------------------------------------------------------* - 関数 定義 - *---------------------------------------------------------------------------*/ -void InitScreen(void); -void ClearScreen(void); -void ClearMainScreen(void); -void ClearSubScreen(void); -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...); -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...); -void UpdateScreen(void); - -/*===========================================================================*/ -#ifdef __cplusplus - -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/src/common.c b/build/tests/ETicketViewer/src/common.c deleted file mode 100644 index c7b9821f..00000000 --- a/build/tests/ETicketViewer/src/common.c +++ /dev/null @@ -1,157 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - File: common.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:: 2008-08-25#$ - $Rev: 8074 $ - $Author: nishimoto_takashi $ - *---------------------------------------------------------------------------*/ -#include "common.h" - -static void InitInterrupts(void); -static void InitHeap(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitCommon - - Description: 基本的な初期化関数をここで呼ぶ。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitCommon(void) -{ - OS_Init(); - OS_InitTick(); - - OS_InitAlarm(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - CARD_Init(); // 新規追加 - CARD_Enable(TRUE); // 新規追加 - - InitHeap(); - InitInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: ReadKey - - Description: キー入力情報を取得し、入力情報構造体を編集する。 - 押しトリガ、離しトリガ、押し継続リピートトリガ を検出する。 - - Arguments: pKey - 編集するキー入力情報構造体を指定する。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void ReadKey(KeyInfo* pKey) -{ - static u16 repeat_count[12]; - int i; - u16 r; - - r = PAD_Read(); - pKey->trg = 0x0000; - pKey->up = 0x0000; - pKey->rep = 0x0000; - - for (i = 0; i < 12; i++) - { - if (r & (0x0001 << i)) - { - if (!(pKey->cnt & (0x0001 << i))) - { - pKey->trg |= (0x0001 << i); // 押しトリガ - repeat_count[i] = 1; - } - else - { - if (repeat_count[i] > KEY_REPEAT_START) - { - pKey->rep |= (0x0001 << i); // 押し継続リピート - repeat_count[i] = (u16) (KEY_REPEAT_START - KEY_REPEAT_SPAN); - } - else - { - repeat_count[i]++; - } - } - } - else - { - if (pKey->cnt & (0x0001 << i)) - { - pKey->up |= (0x0001 << i); // 離しトリガ - } - } - } - - pKey->cnt = r; // 未加工キー入力 -} - -/*---------------------------------------------------------------------------* - Name: InitInterrupts - - Description: 割り込み設定を初期化する。 - V ブランク割り込みを許可し、割り込みハンドラを設定する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitInterrupts(void) -{ - // V ブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // 割り込み許可 - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitHeap - - Description: メインメモリ上のアリーナにてメモリ割当てシステムを初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitHeap(void) -{ - void* tempLo; - OSHeapHandle hh; - - // メインメモリ上のアリーナにヒープをひとつ作成 - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - // ヒープ作成に失敗した場合は異常終了 - OS_Panic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/src/font.c b/build/tests/ETicketViewer/src/font.c deleted file mode 100644 index ebc10e7b..00000000 --- a/build/tests/ETicketViewer/src/font.c +++ /dev/null @@ -1,585 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroWiFi - WCM - demos - wcm-list - File: font.c - - Copyright 2005-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. - - $Log: font.c,v $ - Revision 1.2 2006/03/10 09:22:43 kitase_hirotake - INDENT SOURCE - - Revision 1.1 2005/07/21 08:21:06 adachi_hiroaki - 新規追加 - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = -{ - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/src/main.c b/build/tests/ETicketViewer/src/main.c deleted file mode 100644 index 0ba024c6..00000000 --- a/build/tests/ETicketViewer/src/main.c +++ /dev/null @@ -1,712 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tests - appjumpTest - Nand-2 - 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:: 2008-09-03#$ - $Rev: 8251 $ - $Author: nishimoto_takashi $ - *---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "application_jump_private.h" -#include "common.h" -#include "screen.h" - -#define TITLE_NUM_CUL 18 -#define TITLE_NUM_PAGE (TITLE_NUM_CUL * 2) - -#define NTR_AREA_READ_NUM 7 -#define TWL_AREA_READ_NUM 7 -#define CARD_READ_SIZE 32 -#define CARD_READ_INTERVAL 0x8000 - -#define FLX_AREA_DATA_Y_BASE 4 -#define LTD_AREA_DATA_Y_BASE 13 -#define ETICKET_NUM_MAX 10 - -#define ES_ERR_OK 0 - -// 表示する対象をユーザーアプリだけにする場合 -#define USER_APP_ONLY - -// デバッグ用 -//#define DEBUG_MODE - -/*---------------------------------------------------------------------------* - 変数 定義 - *---------------------------------------------------------------------------*/ -typedef void* (*NAMUTAlloc)(u32 size); -typedef void (*NAMUTFree)(void* ptr); - -static NAMUTAlloc spAllocFunc; -static NAMUTFree spFreeFunc; - -// キー入力 -static KeyInfo gKey; - -// インストールされている NAND アプリの数 -static s32 gNandAppNum; -static s32 gNandInstalledAppNum; -static s32 gNandAllAppNum; - -// カーソル位置 -static s32 gCurPos = 0; - -// eTicketType -typedef enum ETicketType { - ETICKET_TYPE_COMMON = 0, - ETICKET_TYPE_PERSONALIZED = 1 -}ETicketType; - -typedef struct DataStruct -{ - NAMTitleId id; - BOOL commonTicketFlg; - BOOL isSrlFlg; - u32 numTicket; - ETicketType tType[ETICKET_NUM_MAX]; - -} DataStruct; - -typedef struct { - u8 pad1[ 12 ]; - u32 deviceId; - u8 pad2[ 216 - 16 ]; -} ESTicketView; - -typedef s32 ESError; - -extern ESError ES_GetTicketViews(u64 titleId, ESTicketView* ticketViewList, u32* ticketViewCnt); - -static DataStruct gDataList[TITLE_NUM_PAGE * 2]; -static DataStruct gInstalledDataList[TITLE_NUM_PAGE]; - -#ifdef DEBUG_MODE -static MATHRandContext32 context; -#endif - -/*---------------------------------------------------------------------------* - Prototype - *---------------------------------------------------------------------------*/ -static void DrawScene(DataStruct* list); -static BOOL GetDataStruct(DataStruct* list, DataStruct* Ilist); - -static void ConvertTitleIdLo(u8* code, u8* titleid_lo); -static void ConvertGameCode(u8* code, u32 game_code); -static void ConvertInitialCode(u8* code, u32 titleid_lo); - -static void* AllocForNAM(u32 size); -static void FreeForNAM(void* ptr); - -static s32 GetETicketType(DataStruct* data, ETicketType *pETicketType ); -static s32 GetTicketViews(ESTicketView** pptv, u32* pNumTicket, NAMTitleId titleId); - -BOOL GetETicketData( void ); -void* MyNAMUT_Alloc(u32 size); -void MyNAMUT_Free(void* buffer); - -#ifdef USER_APP_ONLY -static void getUserApplication(DataStruct* list); -#endif -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: メイン関数 - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - u32 count = 0; - BOOL errorFlg = FALSE; - - InitCommon(); - InitScreen(); - - GX_DispOn(); - GXS_DispOn(); - - spAllocFunc = AllocForNAM; - spFreeFunc = FreeForNAM; - - gNandAppNum = 0; - gNandInstalledAppNum = 0; - gNandAllAppNum = 0; - - FS_Init( FS_DMA_NOT_USE ); - - NAM_Init(AllocForNAM, FreeForNAM); - - MI_CpuClear8( gDataList, sizeof(gDataList)); - MI_CpuClear8( gInstalledDataList, sizeof(gInstalledDataList)); - -#ifdef DEBUG_MODE - MATH_InitRand32( &context, 15 ); -#endif - - (void) GetETicketData(); - - ClearScreen(); - - while(TRUE) - { - // キー入力情報取得 - ReadKey(&gKey); - - // カーソルの移動 - if (gKey.trg & PAD_KEY_DOWN) - { - gCurPos++; - if ( gCurPos >= ( gNandAllAppNum < TITLE_NUM_PAGE ? gNandAllAppNum : TITLE_NUM_PAGE) ) - { - gCurPos = 0; - } - } - if (gKey.trg & PAD_KEY_UP) - { - if( gNandAllAppNum ) - { - if ( gCurPos == 0 ) - { - if ( gNandAllAppNum < TITLE_NUM_PAGE ) - { - gCurPos = gNandAllAppNum - 1; - } - else - { - gCurPos = TITLE_NUM_PAGE - 1; - } - } - else - { - gCurPos--; - } - } - } - - - // 画面描画 - DrawScene(gDataList); - - // Vブランク待ち - OS_WaitVBlankIntr(); - - // 画面クリア - ClearScreen(); - } - - // Vブランク待ち 最後に画面を更新してから終了 - OS_WaitVBlankIntr(); - OS_Terminate(); -} - - -/*---------------------------------------------------------------------------* - Name: DrawScene - - Description: 画面描画関数 - - メモ: - 0xf0, // 黒 0xf1, // 赤 0xf2, // 緑 - 0xf3, // 青 0xf4, // 黄 0xf5, // ピンク - 0xf6, // 水色 0xf7, // くすんだ赤 0xf8, // くすんだ緑 - 0xf9, // くすんだ青 0xfa, // くすんだ黄色 0xfb, // 紫 - 0xfc, // うすい青 0xfd, // 灰色 0xfe, // 濃い灰色 - *---------------------------------------------------------------------------*/ -#define COMMON_COLOR ((u8)0xff) -#define PERSONALIZED_COLOR ((u8)0xfc) - -#define GAME_CODE_BASE_X 1 - -static void DrawScene(DataStruct* list) -{ - s32 i; - u8 init_code[5]; - u8 color; - - DataStruct* p = list; - - // 上画面 一覧表示 - PutMainScreen( 1, 0, 0xf2, "------- eTicket Viewer ------- "); - PutMainScreen( 1, 2, 0xf4, "Game Ticket Ticket"); - PutMainScreen( 1, 3, 0xf4, " Code srl Num Type"); - PutMainScreen( 0, 4, 0xff, "--------------------------------"); - - // カーソル表示 - PutMainScreen( 0, gCurPos+5 , 0xf1, ">"); - - for ( i=0; i < TITLE_NUM_PAGE; i++, p++) - { - // そもそも NAND アプリの数が 1ページにも満たない場合は途中で終了する - if ( i >= gNandAllAppNum ) - { - break; - } - - ConvertInitialCode(init_code, NAM_GetTitleIdLo(p->id)); - - color = p->commonTicketFlg ? COMMON_COLOR : PERSONALIZED_COLOR; - - // ゲームコード表示 - PutMainScreen( GAME_CODE_BASE_X, 5 +i, color, "%s", init_code); - - // srlの有無表示 - if(p->isSrlFlg) - { - PutMainScreen( GAME_CODE_BASE_X + 7, 5 +i, color, "o"); - } - else - { - PutMainScreen( GAME_CODE_BASE_X + 7, 5 +i, color, "x"); - } - - // ETicketの数の表示 - PutMainScreen( GAME_CODE_BASE_X + 12, 5 +i, color, "%d", p->numTicket); - - // ETicketのタイプの表示 - if(p->commonTicketFlg) - { - PutMainScreen(GAME_CODE_BASE_X + 19, 5 +i, color, "common"); - } - else - { - PutMainScreen(GAME_CODE_BASE_X + 19, 5 +i, color, "personalized"); - } - } - - // 下画面 詳細表示 - ConvertInitialCode(init_code, NAM_GetTitleIdLo(list[gCurPos].id)); - PutSubScreen(3, 2, 0xf4, "Selected Title : [ %s ]", init_code); - PutSubScreen(3, 4, 0xff, "- Ticket List -"); - - for( i=0; i < list[gCurPos].numTicket; i++){ - if(i > 15) - { - break; - } - - PutSubScreen(5, 6+i, 0xf4, "Ticket%d : ", (i+1)); - - if(list[gCurPos].tType[i] == ETICKET_TYPE_COMMON) - { - PutSubScreen(15, 6+i, COMMON_COLOR, "COMMON"); - } - else - { - PutSubScreen(15, 6+i, PERSONALIZED_COLOR, "PERSONALIZED"); - } - } -} - - -/*---------------------------------------------------------------------------* - Name: GetDataStruct - - Description: TitleIDリストを取得する関数 - NAM_GetTitleList と NAM_GetInstalledTitleList を使う - *---------------------------------------------------------------------------*/ -static BOOL GetDataStruct(DataStruct* list, DataStruct* Ilist) -{ - // 36個分のタイトルIDリストバッファ - NAMTitleId titleIdList[TITLE_NUM_PAGE]; - s32 i; - - // --- GetTitleList - if ( NAM_GetTitleList(titleIdList, TITLE_NUM_PAGE) != NAM_OK ) - { - OS_PutString("NAM_GetTitleList failed."); - return FALSE; - } - - // データリストの作成(1ページ分) - for ( i=0; i= gNandAppNum ) - { - break; - } - - OS_TPrintf("id : 0x%08x\n", titleIdList[i]); - list->id = titleIdList[i]; - list->isSrlFlg = TRUE; - } - - MI_CpuClear8(titleIdList, sizeof(titleIdList)); - - OS_PutString("\n\n"); - - // --- GetInstalledTitleList - if ( NAM_GetInstalledTitleList(titleIdList, TITLE_NUM_PAGE) != NAM_OK ) - { - OS_PutString("NAM_GetInstalledTitleList failed."); - return FALSE; - } - - // データリストの作成(1ページ分) - for ( i=0; i= gNandInstalledAppNum ) - { - break; - } - - OS_TPrintf("id : 0x%08x\n", titleIdList[i]); - Ilist->id = titleIdList[i]; - Ilist->isSrlFlg = FALSE; - } - - return TRUE; -} - - -/*---------------------------------------------------------------------------* - Name: GetETicketType - - Description: 指定された titleID の eTicket タイプを取得する - - Arguments: titleID: common eTicket かどうかを調べたいタイトルの titleID - pETicketType : 結果を格納するESETicketTypeポインタ - - Returns: NAM_OK : 取得成功 - それ以外: 取得失敗 - *---------------------------------------------------------------------------*/ -static s32 GetETicketType(DataStruct* data, ETicketType *pETicketType ) -{ - s32 result; - ESTicketView* ptv; - u32 numTicket; - -#ifdef DEBUG_MODE - u32 i; -#endif - - *pETicketType = ETICKET_TYPE_PERSONALIZED; - - result = GetTicketViews(&ptv, &numTicket, data->id); - -#ifndef DEBUG_MODE - data->numTicket = numTicket; -#else - data->numTicket = MATH_Rand32( &context, 10 ); -#endif - - if( result == NAM_OK ) - { - if( numTicket > 0 ) - { - int i; - // eTicket は、そのままもしくは追加しかありえないので、プリインストールされたアプリでは、必ずCommon eTikcetが存在する。 - // よって、全ての eTicket のうち、ひとつでも deviceId が 0x00000000 なら、common eTicket と判断。 - for( i = 0; i < numTicket; i++ ) - { - if( ptv[i].deviceId == 0x00000000 ) - { - *pETicketType = ETICKET_TYPE_COMMON; - data->tType[i] = ETICKET_TYPE_COMMON; - } - else - { - data->tType[i] = ETICKET_TYPE_PERSONALIZED; - } - } - } - MyNAMUT_Free(ptv); - } - -#ifdef DEBUG_MODE - for( i=0; inumTicket; i++) - { - if( MATH_Rand32( &context, 10 ) % 5 ) - { - data->tType[i] = ETICKET_TYPE_COMMON; - } - else - { - data->tType[i] = ETICKET_TYPE_PERSONALIZED; - } - } -#endif - - return result; -} - - -/*---------------------------------------------------------------------------* - Name: GetTicketViews - - Description: 指定されたタイトルの eTicket を取得 -        ※nam_title.c の GetTicketViews 関数をコピペ - - Arguments: pptv : 取得成功時に eTicket リストのポインタを格納するポインタ - pNumTicket : 取得成功時に eTicket 数を格納するポインタ - titleID : eTicket を取得したいタイトルの titleID - - Returns: NAM_OK : 取得成功 - それ以外 : 取得失敗 - *---------------------------------------------------------------------------*/ -static s32 GetTicketViews(ESTicketView** pptv, u32* pNumTicket, NAMTitleId titleId) -{ - s32 result; - u32 numTicket; - ESTicketView* ptv = NULL; - - result = ES_GetTicketViews(titleId, NULL, &numTicket); - - if( result != ES_ERR_OK ) - { - return result; - } - - if( numTicket != 0 ) - { - ptv = MyNAMUT_Alloc(sizeof(ESTicketView) * numTicket); - - if( ptv == NULL ) - { - return NAM_NO_MEMORY; - } - - result = ES_GetTicketViews(titleId, ptv, &numTicket); - } - - if( result == ES_ERR_OK ) - { - *pptv = ptv; - *pNumTicket = numTicket; - } - else - { - MyNAMUT_Free(ptv); - } - - return result; -} - - -/*---------------------------------------------------------------------------* - Name: GetETicketData - - Description: 各アプリのETicketデータを取得する - *---------------------------------------------------------------------------*/ -BOOL GetETicketData( void ) -{ - s32 result = TRUE; - s32 i,j; - - // NAND にインポートされているNAND アプリの数を取得する - if ( (gNandAppNum = NAM_GetNumTitles()) < 0) - { - OS_Panic("NAM_GetNumTitles() failed."); - } - // 実体があるタイトル数 - if ( (gNandInstalledAppNum = NAM_GetNumInstalledTitles()) < 0) - { - OS_Panic("NAM_GetNumInstalledTitles() failed."); - } - // 情報の取得 - if ( !GetDataStruct(gDataList, gInstalledDataList) ) - { - OS_Panic("GetDataStruct() failed."); - } - - // NAM_GetTitleList -- 削除されているがeTicketのみ存在するタイトルがリストアップされない - // NAM_GetInstalledTitleList -- SRLはあるがeTicketがないタイトルがリストアップされない - // そのため両者をマージする - gNandAllAppNum = gNandAppNum; - for (i=0; iid & TITLE_ID_APP_TYPE_MASK)) - { - MI_CpuCopy8(p, &buf[count], sizeof(DataStruct)); - count++; - } - } - - // ユーザーアプリだけのリストをコピー - MI_CpuCopy8(buf, list, sizeof(buf)); - - // アプリ総数の更新 - gNandAllAppNum = count; -} -#endif - - -/*---------------------------------------------------------------------------* - UTIL 関数 - *---------------------------------------------------------------------------*/ -static void ConvertTitleIdLo(u8* code, u8* titleid_lo) -{ - u8 tmp[5]; - s32 i; - - for ( i=3; i>=0; i--, titleid_lo++ ) - { - tmp[i] = *titleid_lo; - *code = tmp[i]; - } - - // NULL 終端 - *code = 0x00; -} - -static void ConvertGameCode(u8* code, u32 game_code) -{ - u8 tmp[5]; - s32 i; - - ConvertInitialCode(tmp, game_code); - - for ( i=3; i>=0; i--, code++) - { - *code = tmp[i]; - } - - // NULL 文字終端 - *code = 0x00; -} - -static void ConvertInitialCode(u8* code, u32 titleid_lo) -{ - s32 i; - - for ( i=0; i<4; i++, code++) - { - *code = (u8)(titleid_lo >> (8 * (3-i))); - } - - // NULL文字終端 - *code = 0x00; -} - - -void* MyNAMUT_Alloc(u32 size) -{ - const u32 allocSize = MATH_ROUNDUP32(size); - SDK_ASSERTMSG( spAllocFunc != NULL, "NAMUT_Init should be called previously.\n"); - return spAllocFunc(allocSize); -} - - -static void* AllocForNAM(u32 size) -{ - void* ptr; - ptr = OS_AllocFromMain(size); - - if (ptr == NULL) - { - OS_Panic("alloc failed."); - } - - return ptr; -} - - -void MyNAMUT_Free(void* buffer) -{ - SDK_ASSERTMSG( spFreeFunc != NULL, "NAMUT_Init should be called previously.\n"); - if (buffer) - { - spFreeFunc(buffer); - } -} - - -static void FreeForNAM(void* ptr) -{ - OS_FreeToMain(ptr); -} - - -void VBlankIntr(void) -{ - // テキスト表示を更新 - UpdateScreen(); - - // IRQ チェックフラグ47をセット - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ETicketViewer/src/screen.c b/build/tests/ETicketViewer/src/screen.c deleted file mode 100644 index c00a4a75..00000000 --- a/build/tests/ETicketViewer/src/screen.c +++ /dev/null @@ -1,194 +0,0 @@ - /*---------------------------------------------------------------------------* - Project: TwlSDK - WCM - demos - wcm-list-2 - File: screen.c - - Copyright 2007-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:: 2008-09-17#$ - $Rev: 8556 $ - $Author: okubata_ryoma $ - *---------------------------------------------------------------------------*/ -#include -#include "screen.h" -#include "font.h" - -/*---------------------------------------------------------------------------* - 定数 定義 - *---------------------------------------------------------------------------*/ -#define TEXT_SCREEN_SIZE 2048 - -/*---------------------------------------------------------------------------* - 内部変数 定義 - *---------------------------------------------------------------------------*/ - -// 仮想スクリーン[ 上下画面 ][ BG 枚数 ][ キャラクタ数 ] -static u16 gScreen[2 ][ 1 ][ TEXT_SCREEN_SIZE / sizeof(u16) ] ATTRIBUTE_ALIGN(32); - -/*---------------------------------------------------------------------------* - Name: InitScreen - - Description: 文字表示システムのために、表示設定を初期化する。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void InitScreen(void) -{ - // 各 V-RAM 初期化 - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - // OAM 初期化 - MI_CpuFillFast((void*)HW_OAM, 0xc0, HW_OAM_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, 0xc0, HW_DB_OAM_SIZE); - - // パレット初期化 - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - // 上画面設定 - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - - // 下画面設定 - GX_SetBankForSubBG(GX_VRAM_SUB_BG_32_H); - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - ((u16*)HW_DB_PLTT)[0] = 0x0000; // black - MI_CpuFillFast(gScreen[1][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: 画面のテキスト表示をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -void ClearMainScreen(void) -{ - MI_CpuClearFast(gScreen[0][0], TEXT_SCREEN_SIZE); - -} -void ClearSubScreen(void) -{ - MI_CpuClearFast(gScreen[1][0], TEXT_SCREEN_SIZE); -} -/*---------------------------------------------------------------------------* - Name: PutMainScreen - - Description: メイン画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutMainScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[0][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: PrintSubScreen - - Description: サブ画面にテキスト出力する。 - - Arguments: text - 出力する文字列。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void PutSubScreen(s32 x, s32 y, u8 palette, char* text, ...) -{ - va_list vlist; - char temp[33]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - for (i = 0; i < 32; i++) - { - if (temp[i] == 0x00) - { - break; - } - - gScreen[1][0][((y * 32) + x + i) % (32 * 32)] = (u16) (palette << 12 | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: UpdateScreen - - Description: 仮想スクリーンを V-RAM に反映する。 - V ブランク期間中での呼び出しを想定。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void UpdateScreen(void) -{ - // 仮想スクリーンを V-RAM に反映 - DC_StoreRange(gScreen[0][0], TEXT_SCREEN_SIZE); - GX_LoadBG0Scr(gScreen[0][0], 0, TEXT_SCREEN_SIZE); - DC_StoreRange(gScreen[1][0], TEXT_SCREEN_SIZE); - GXS_LoadBG0Scr(gScreen[1][0], 0, TEXT_SCREEN_SIZE); -} - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/ErrorLogTest/ARM9/Makefile b/build/tests/ErrorLogTest/ARM9/Makefile deleted file mode 100644 index 32b13e36..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/Makefile.0 b/build/tests/ErrorLogTest/ARM9/Makefile.0 deleted file mode 100644 index 3ebe7c11..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile.0 +++ /dev/null @@ -1,56 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/errorLog - -GAMECODE = 0B5A -MEDIA = gamecard -TARGET_BIN = main.srl - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -#---------------------------------------------------------------------------- - - - -MISC_DIR = ../../../systemMenu_RED/misc -LINCLUDES += $(MISC_DIR)/include - -SRCS = ErrorLogTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DERRLOGTEST_GAMECODE=$(GAMECODE) \ - -DERRLOGTEST_MEDIA=$(MEDIA) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/Makefile.1 b/build/tests/ErrorLogTest/ARM9/Makefile.1 deleted file mode 100644 index 5f502fdb..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile.1 +++ /dev/null @@ -1,55 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/errorLog - -GAMECODE = 013A -MEDIA = NAND -TARGET_BIN = main.tad - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) -#---------------------------------------------------------------------------- - - - -MISC_DIR = ../../../systemMenu_RED/misc -LINCLUDES += $(MISC_DIR)/include - -SRCS = ErrorLogTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DERRLOGTEST_GAMECODE=$(GAMECODE) \ - -DERRLOGTEST_MEDIA=$(MEDIA) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/main.rsf b/build/tests/ErrorLogTest/ARM9/main.rsf deleted file mode 100644 index 8ba5e5dd..00000000 --- a/build/tests/ErrorLogTest/ARM9/main.rsf +++ /dev/null @@ -1,269 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media $(ERRLOGTEST_MEDIA) - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(ERRLOGTEST_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - Secure TRUE - AppType System -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c b/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c deleted file mode 100644 index a3a23892..00000000 --- a/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c +++ /dev/null @@ -1,137 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - ErrorLog - File: errorLog.h - - Copyright **** 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 -#include -#include "misc.h" - -// なぜかバッファサイズが256byteを超えると出力が欠けるようになる -// ダンプを見ると、OS_TPrintf()呼び出し時にもバッファにはちゃんと格納されている模様 -// 原因は現在調査中 -#define BUFSIZE 128 - -void VBlankIntr(void); - - -void TwlMain( void ) -{ - int numEntry; - - OS_Init(); - RTC_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - FS_Init( FS_DMA_NOT_USE ); - InitAllocator(); -// FS_DeleteFile("nand:/sys/log/sysmenu.log"); - - ERRORLOG_Init( Alloc, Free ); - - numEntry = ERRORLOG_GetNum(); - OS_TPrintf("API: before numEntry : %d\n", numEntry ); - ERRORLOG_Write( 0x80000 ); - ERRORLOG_Printf( "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" ); - -/* - ERRORLOG_Write( (u64)0x77700040051LL ); - ERRORLOG_Printf( "%d hyoooo nyoronyoro\naboooon dogaaaaaaaan", 2+5 ); - - - ERRORLOG_Printf( "menuRedIplManager.cpp [l.73] RED FATAL 0" ); - ERRORLOG_Printf( "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" ); - */ - -/* - if( numEntry > 2 ) - { - pEntry = ERRORLOG_Read(1); - OS_TPrintf("entry[1] : %02d-%02d-%02d %02d:%02d:%02d errorCode: %d\n", - pEntry->year, - pEntry->month, - pEntry->day, - pEntry->hour, - pEntry->minute, - pEntry->second, - pEntry->errorCode); - } -*/ - OS_TPrintf( "*** log file data\n" ); - - { - // ログファイルの中身を出力 - FSFile file; - char buf[BUFSIZE+1]; - int numEntry = 0; - int totalSize = 0, nowSize = 0; - buf[BUFSIZE] = '\0'; - - FS_InitFile( &file ); - FS_OpenFileEx( &file, "nand:/sys/log/sysmenu.log", FS_FILEMODE_R ); - - while( ( nowSize = FS_ReadFile( &file, buf, BUFSIZE ) ) == BUFSIZE ) - { - char *p = buf; - - OS_TPrintf("%s",buf); - totalSize += nowSize; - - while( (p = STD_SearchChar(p, '#')) != NULL) - { - // '#'が出てきた回数だけエントリ数を増やす - numEntry++; - p++; - } - - } - - //OS_TPrintf("%s\n",buf); - OS_TPrintf("\n"); - FS_CloseFile( &file ); - - totalSize += nowSize; - - OS_TPrintf("count: \'#\' count : %d\n", numEntry ); - OS_TPrintf("total Size : %d\n", totalSize); - } - - numEntry = ERRORLOG_GetNum(); - OS_TPrintf("API: end numEntry : %d\n", numEntry ); - - - ERRORLOG_End(); - OS_TPrintf( "*** End of demo\n" ); - OS_Terminate(); -} - -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - diff --git a/build/tests/ErrorLogTest/Makefile b/build/tests/ErrorLogTest/Makefile deleted file mode 100644 index 737d6bcd..00000000 --- a/build/tests/ErrorLogTest/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -SUBDIRS = ARM9 banner - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/about.txt b/build/tests/ErrorLogTest/about.txt deleted file mode 100644 index ba84c322..00000000 --- a/build/tests/ErrorLogTest/about.txt +++ /dev/null @@ -1,11 +0,0 @@ -ErrorLogTest - - -ランチャに組み込まれたErrorLogライブラリのテスト用アプリです。 -実行されるとERRORLOG_Write()を呼び出し、エラーログの書き込みを行ってから -コンソールに現在のログエントリ数やその中身を出力して終了します。 -毎回ログ書き込みを行うため、実行するたびにログエントリの総数は増加しますが、 -ログファイルが16KB固定で作成されているため、古いログは順次削除されていきます。 - -また、直接Write関数を呼んでいるため、FatalErrorを実際に発生させずに -エラーログの生成や書き込みをしたいときに利用することも可能です。 diff --git a/build/tests/ErrorLogTest/banner/Makefile b/build/tests/ErrorLogTest/banner/Makefile deleted file mode 100644 index 1f8aa1d4..00000000 --- a/build/tests/ErrorLogTest/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/ErrorLogTest/banner/banner_v3.bsf b/build/tests/ErrorLogTest/banner/banner_v3.bsf deleted file mode 100644 index d45ce7bc..00000000 Binary files a/build/tests/ErrorLogTest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp b/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp deleted file mode 100644 index af71c8e5..00000000 Binary files a/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FakeRomHeader/Makefile b/build/tests/FakeRomHeader/Makefile deleted file mode 100644 index 892956ee..00000000 --- a/build/tests/FakeRomHeader/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - tools - mastering.TWL -# File: Makefile.TWL -# -# Copyright 2007 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$ -#--------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - - -TARGETS = FakeRomHeader$(SUFFIX).exe - -SOURCES_C = main.c keys.c - -SOURCES = $(SOURCES_C) - -OBJECTS = $(SOURCES:.c=.o) - -INCDIR = $(TWLSDK_ROOT)/build/tools/makerom.TWL \ - $(TWL_IPL_RED_ROOT)/include - -REVISION_H = revision.h - -#INSTALL_DIR = $(FIRM_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -MACROS += $(addprefix -I,$(INCDIR)) -DPLATFORM_ENDIAN_LITTLE - -LIBACSIGN = $(ROOT)/build/tools/makerom.TWL/acsign/lib/X86/libacsign_x86.a -LIBAES = $(ROOT)/build/tools/makerom.TWL/aes/lib/X86/libaes_x86.a -LIBDIGEST = $(ROOT)/build/tools/makerom.TWL/digest/lib/X86/libdigest_x86.a -#LIBDGT = $(ROOT)/build/tools/libdgt.TWL/lib/libdgt.TWL.a - -ifeq ($(KEY_LAUNCHER),TRUE) -MACROS += -DKEY_LAUNCHER -SUFFIX = .launcher -else -ifeq ($(KEY_SECURE),TRUE) -MACROS += -DKEY_SECURE -SUFFIX = .secure -else -ifeq ($(KEY_SYSTEM),TRUE) -MACROS += -DKEY_SYSTEM -SUFFIX = .sys -else -MACROS += -DKEY_USER -SUFFIX = .user -endif -endif -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) *.BAK $(REVISION_H) - -include $(TWLSDK_ROOT)/build/buildtools/twl/modulerules.x86 - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(REVISION_H) $(OBJECTS) $(LIBACSIGN) $(LIBAES) $(LIBDIGEST) - $(CC_X86) $+ -o $@ -lnetapi32 -lwsock32 - -main.o: main.c - -#main.h: - -# avoid to warning message -#misc.o:WARNING += -Wno-format-y2k - -# - -$(REVISION_H) :: - @if test -e $(TWLSDK_ROOT)/.svn; then \ - LANG=C svn info $(call empath,$(TWLSDK_ROOT)) | grep 'Revision' | sed "s|Revision: \(.*\)|#define SDK_REVISION \"\1\"|" > $(REVISION_H); \ - else \ - echo "#define SDK_REVISION \"-\"" > $(REVISION_H); \ - fi - @if test -e $(TWL_IPL_RED_ROOT)/.svn; then \ - LANG=C svn info $(call empath,$(TWL_IPL_RED_ROOT)) | grep 'Revision' | sed "s|Revision: \(.*\)|#define IPL_REVISION \"\1\"|" >> $(REVISION_H); \ - else \ - echo "#define IPL_REVISION \"-\"" >> $(REVISION_H); \ - fi - -#test: path.c misc.c -# $(CC_X86) -DTEST $+ -o $@ diff --git a/build/tests/FakeRomHeader/README.txt b/build/tests/FakeRomHeader/README.txt deleted file mode 100644 index 6a287402..00000000 --- a/build/tests/FakeRomHeader/README.txt +++ /dev/null @@ -1,35 +0,0 @@ -ROMヘッダ偽装ツール - -○What? - -・PC用コマンドラインツール -・入出力 - - 入力: SRL - - 出力: SRL - - 両者の違い: 出力SRLには新たなヘッダCRCと署名がついている - (つまり、署名チェックが通る) - -○ビルド方法 - - ふつうに make すると、署名の鍵がユーザアプリ用になります。 - 鍵を変えたいとき、以下のオプションをつけて make してください。 - - make KEY_SYSTEM=TRUE システムアプリ用の鍵が選択される - make KEY_SECURE=TRUE セキュアアプリ用の鍵が選択される - make KEY_LAUNCHER=TRUE ランチャアプリ用の鍵が選択される - -○実行方法 - - ./fakeRomHeader [Option] input_file output_file - - ・オプション - -p: プラットフォームコードを0x01にします。 - -s: 署名有効フラグをOffにします。 - -d: 新・開発用暗号フラグを0にして、旧・開発用暗号フラグを1にします。 - - ・他にもROMヘッダをいじりたいとき - -> バイナリエディタなどでROMヘッダをいじった後に、 - 本ツールをオプションなしで実行すると、 - そのROMヘッダからヘッダCRCと署名を再計算してつけ直します。 - -以上 diff --git a/build/tests/FakeRomHeader/keys.c b/build/tests/FakeRomHeader/keys.c deleted file mode 100644 index 67431383..00000000 --- a/build/tests/FakeRomHeader/keys.c +++ /dev/null @@ -1,243 +0,0 @@ -// 署名用の鍵データ from makerom.TWL - -#include -#include "keys.h" - -#ifdef KEY_USER -// 開発機用ROMヘッダ署名公開鍵 -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, - 0x3C, 0x15, 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, - 0xD5, 0x79, 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, - 0xCB, 0x94, 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, - 0xF0, 0x11, 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, - 0x7F, 0x11, 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, - 0x96, 0x4F, 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, - 0x62, 0x39, 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, - 0xC9, 0x6F, 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; -// 開発機用アプリROMヘッダ署名秘密鍵 -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5F, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, 0x3C, 0x15, - 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, 0xD5, 0x79, - 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, 0xCB, 0x94, - 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, 0xF0, 0x11, - 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, 0x7F, 0x11, - 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, 0x96, 0x4F, - 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, 0x62, 0x39, - 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, 0xC9, 0x6F, - 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0x95, 0xDC, 0xC8, 0x18, 0x19, 0xF8, 0x98, 0x0B, 0x73, 0x78, 0x0C, 0x4D, - 0x7E, 0xD6, 0x06, 0xE9, 0x39, 0x83, 0xEA, 0xBC, 0x59, 0xAF, 0x7C, 0x87, 0xF2, 0x25, 0xD8, 0x02, - 0xF8, 0x57, 0x4C, 0x94, 0xB4, 0xCE, 0x74, 0x9B, 0x76, 0x94, 0x70, 0x1D, 0xA1, 0x0D, 0xAF, 0x33, - 0x4B, 0x28, 0xD5, 0xE9, 0xA0, 0x3F, 0xDD, 0xFD, 0x86, 0x67, 0x36, 0xA8, 0xB2, 0x77, 0x7E, 0xA8, - 0x2C, 0x2E, 0xEB, 0x43, 0x7B, 0xE4, 0xA3, 0x66, 0x7C, 0x3A, 0x00, 0x90, 0xC5, 0xF5, 0xF8, 0x59, - 0xF9, 0x95, 0x88, 0x2A, 0xA8, 0xF4, 0x94, 0x41, 0x05, 0x02, 0xA0, 0x47, 0xC0, 0xC1, 0xB9, 0x80, - 0x1F, 0x49, 0xBB, 0x09, 0xBF, 0x42, 0xBA, 0xE6, 0xEE, 0x8D, 0x21, 0x1D, 0xFB, 0x8F, 0xC7, 0xB7, - 0x71, 0x00, 0xFB, 0x35, 0x13, 0xD8, 0xBC, 0xA3, 0x3F, 0x3A, 0xCF, 0x96, 0xB0, 0x0B, 0x8A, 0x61, - 0x9C, 0x70, 0xF8, 0x91, 0x02, 0x41, 0x00, 0xD8, 0xAA, 0x14, 0x21, 0x49, 0x7A, 0x2C, 0xC3, 0xAA, - 0xDA, 0xFB, 0x17, 0xB0, 0xD7, 0xF5, 0x5A, 0x77, 0xEE, 0xF0, 0xA9, 0x09, 0x18, 0x85, 0x21, 0xD4, - 0x12, 0x4F, 0x85, 0x35, 0x05, 0x20, 0x36, 0x22, 0x65, 0x2C, 0xDD, 0xFA, 0xF5, 0x8E, 0xA5, 0x2E, - 0xC4, 0xFD, 0xD1, 0xFA, 0xC6, 0x8A, 0x0F, 0x98, 0x69, 0xD9, 0x82, 0x50, 0xDF, 0xFA, 0x80, 0xC3, - 0xFE, 0x5E, 0x15, 0x59, 0xA8, 0xD4, 0x05, 0x02, 0x41, 0x00, 0xCB, 0xE8, 0x9A, 0xF2, 0x5F, 0xC1, - 0x75, 0xA5, 0x1E, 0x95, 0xE4, 0x4F, 0x1A, 0x48, 0xA1, 0x75, 0x9A, 0x6E, 0xDB, 0xA2, 0x31, 0xD6, - 0x66, 0x29, 0xEA, 0x19, 0x37, 0x0C, 0xB2, 0x89, 0xD3, 0x03, 0x15, 0xE6, 0x7A, 0x1A, 0xCB, 0xCE, - 0xB9, 0x79, 0x11, 0x9B, 0x71, 0x78, 0xA5, 0xBB, 0x07, 0x6F, 0xA3, 0x05, 0x3B, 0x84, 0x23, 0x47, - 0xAB, 0x20, 0x34, 0x39, 0xB0, 0x59, 0x87, 0xEC, 0xCE, 0x9D, 0x02, 0x41, 0x00, 0xB8, 0xE0, 0x98, - 0x00, 0xB7, 0x64, 0x0B, 0x22, 0x83, 0x7E, 0x0B, 0xD7, 0xF1, 0x4C, 0xB5, 0xCD, 0x96, 0x9D, 0x4A, - 0xB9, 0xD2, 0x4B, 0x1B, 0xFE, 0xFB, 0xA9, 0x0C, 0x35, 0xCC, 0x42, 0x2D, 0x74, 0x43, 0xF1, 0x35, - 0x51, 0xCD, 0x3D, 0x0F, 0x95, 0x1F, 0xCD, 0x74, 0x10, 0x62, 0xFE, 0x5A, 0xFC, 0x67, 0xBF, 0x9A, - 0x9C, 0x3A, 0x4A, 0x84, 0xC4, 0xAF, 0x79, 0x33, 0xEA, 0xDF, 0xF0, 0xD1, 0xC9, 0x02, 0x41, 0x00, - 0xAA, 0x5B, 0x16, 0x00, 0xC2, 0xB1, 0x5D, 0x39, 0x6B, 0x59, 0x2D, 0x5A, 0x4D, 0x0A, 0x3B, 0x22, - 0x86, 0xB8, 0x71, 0x74, 0x8B, 0x90, 0xA4, 0xE0, 0x05, 0xBD, 0xB5, 0x39, 0x3D, 0x7C, 0x5A, 0x37, - 0xAC, 0xB7, 0x56, 0x72, 0x46, 0xAD, 0xDA, 0x54, 0xE4, 0xB9, 0xEA, 0x4E, 0x32, 0xA0, 0x13, 0xF1, - 0x57, 0xD0, 0x4A, 0x4D, 0xF6, 0x2F, 0xAD, 0x2F, 0x85, 0x92, 0x60, 0xDC, 0x1B, 0xEC, 0x63, 0x1D, - 0x02, 0x41, 0x00, 0xAC, 0x40, 0x43, 0xF2, 0x74, 0x2C, 0x56, 0xF4, 0xB9, 0x52, 0xB0, 0xCC, 0x89, - 0xC7, 0x70, 0x33, 0xA9, 0xC0, 0xD3, 0x4E, 0x35, 0xFC, 0x49, 0x69, 0xCB, 0x22, 0x9C, 0x0D, 0xD0, - 0xE1, 0x8F, 0xCC, 0xF4, 0xAD, 0x25, 0xC2, 0xE1, 0x84, 0xD6, 0x34, 0x35, 0x89, 0xFA, 0xC4, 0xBA, - 0x43, 0x34, 0xF4, 0xD2, 0xB2, 0x36, 0x56, 0xB9, 0x96, 0x78, 0x4D, 0x7A, 0xE3, 0x4D, 0xA9, 0x5E, - 0xF5, 0x3E, 0x88, -}; -#endif //#ifdef KEY_USER - -#ifdef KEY_SYSTEM -// 開発用システムアプリ ROMヘッダ署名用公開鍵 -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, - 0x9F, 0x59, 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, - 0x47, 0x39, 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, - 0x4E, 0x13, 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, - 0x4D, 0xB4, 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, - 0xC3, 0xB7, 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, - 0xAC, 0xD6, 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, - 0x93, 0xEA, 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, - 0xA7, 0x54, 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// 開発用システムアプリ ROMヘッダ署名用秘密鍵 -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5E, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, 0x9F, 0x59, - 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, 0x47, 0x39, - 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, 0x4E, 0x13, - 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, 0x4D, 0xB4, - 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, 0xC3, 0xB7, - 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, 0xAC, 0xD6, - 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, 0x93, 0xEA, - 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, 0xA7, 0x54, - 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0xCF, 0x67, 0xAA, 0x3B, 0x1F, 0x26, 0xC5, 0x68, 0x7F, 0x27, 0x55, 0xFF, - 0xF5, 0x29, 0x6C, 0xF9, 0x62, 0xD5, 0xCF, 0x50, 0xF3, 0xD5, 0xD8, 0x4B, 0x06, 0xE0, 0xC9, 0x64, - 0xD4, 0x3B, 0x96, 0x73, 0x74, 0xF1, 0x71, 0xB2, 0x67, 0x07, 0x0F, 0xA9, 0x68, 0x06, 0x8B, 0x97, - 0x99, 0x70, 0x6A, 0xC4, 0xE1, 0x16, 0x9B, 0xA8, 0x0F, 0xDF, 0xCC, 0x2B, 0xE7, 0x37, 0xFC, 0x6A, - 0x67, 0x8B, 0x99, 0x9E, 0xD1, 0xDA, 0xCC, 0x68, 0xFC, 0xEB, 0x8D, 0xFE, 0x42, 0x84, 0x72, 0x88, - 0x05, 0xAF, 0x23, 0x32, 0x30, 0x1F, 0xFA, 0xCC, 0x67, 0x52, 0x93, 0x6C, 0xC1, 0x0A, 0xCF, 0xD6, - 0xD3, 0x5F, 0x75, 0xE9, 0x4D, 0x32, 0xC0, 0x31, 0x1B, 0xD4, 0xB5, 0x4B, 0xB4, 0x4E, 0xB0, 0x3E, - 0xD5, 0x6C, 0x3C, 0xDC, 0x57, 0xBB, 0x32, 0x24, 0x41, 0x9C, 0x79, 0xBE, 0xFC, 0xC0, 0x3B, 0x63, - 0x0C, 0x5D, 0xC6, 0xE5, 0x02, 0x41, 0x00, 0xF6, 0x77, 0x12, 0x72, 0x63, 0xD0, 0x9B, 0x22, 0xC6, - 0x4F, 0x19, 0x1E, 0x2A, 0xE1, 0x97, 0xCF, 0x28, 0xD3, 0xC3, 0x5E, 0xFB, 0x22, 0x57, 0xE5, 0x4F, - 0x90, 0x83, 0x53, 0xB0, 0x80, 0xD3, 0x2D, 0xFB, 0x77, 0x55, 0x52, 0x5E, 0x00, 0xD8, 0x72, 0x39, - 0x93, 0xF0, 0x89, 0x83, 0x97, 0xFB, 0x78, 0xD2, 0xB0, 0xCD, 0xED, 0x1C, 0x9B, 0x8F, 0x5D, 0xBD, - 0x00, 0x26, 0x37, 0xA1, 0xE5, 0x38, 0xE7, 0x02, 0x41, 0x00, 0xF2, 0xA8, 0x5D, 0x86, 0xE0, 0x33, - 0xC8, 0x93, 0x5C, 0xB9, 0xBD, 0xCF, 0x27, 0x70, 0x81, 0x79, 0xE1, 0x12, 0x82, 0x09, 0x64, 0xCB, - 0xDB, 0xCF, 0xBB, 0x52, 0xD3, 0x3F, 0x22, 0x90, 0x47, 0x23, 0xAA, 0x20, 0x7D, 0x92, 0xFD, 0xD6, - 0x58, 0x68, 0xF3, 0xB1, 0xFA, 0x7B, 0x81, 0x0D, 0x8F, 0x22, 0xDC, 0x84, 0x08, 0x91, 0x60, 0x07, - 0xE8, 0x98, 0x9A, 0x84, 0xDA, 0x4C, 0x24, 0xC7, 0x10, 0x8B, 0x02, 0x41, 0x00, 0xB3, 0xB0, 0xAA, - 0x75, 0x55, 0xCA, 0x90, 0x60, 0xB1, 0x1E, 0x98, 0x1C, 0x83, 0x7D, 0x08, 0x36, 0x53, 0xF8, 0xD8, - 0x77, 0x16, 0x37, 0xBA, 0xC7, 0x87, 0xD3, 0xBF, 0xBB, 0xB3, 0x72, 0xA9, 0x04, 0xDC, 0x52, 0xEB, - 0x94, 0xEA, 0xCE, 0x49, 0x00, 0x36, 0x74, 0x62, 0xA9, 0x8F, 0x94, 0xAE, 0x16, 0x2F, 0xDE, 0x11, - 0xB4, 0xEE, 0xE7, 0x87, 0x85, 0xFB, 0x36, 0xF1, 0xA6, 0x1B, 0xD5, 0xC8, 0x3F, 0x02, 0x40, 0x73, - 0x18, 0x72, 0xCC, 0x1F, 0x99, 0xD0, 0x40, 0x3D, 0x52, 0x08, 0x7A, 0xB2, 0x5D, 0x45, 0xBC, 0x76, - 0x8A, 0x1D, 0xCD, 0xB0, 0xD6, 0x94, 0xDB, 0x32, 0x21, 0xB5, 0xFB, 0x13, 0x3C, 0xD5, 0xD1, 0x4F, - 0xC7, 0x7B, 0x68, 0x76, 0x27, 0xED, 0xE5, 0x51, 0xF9, 0x90, 0x32, 0x76, 0x62, 0xE5, 0x0A, 0x87, - 0x07, 0xC5, 0x3C, 0x97, 0x0D, 0x09, 0x41, 0x20, 0xC1, 0x74, 0xFD, 0x7A, 0xD0, 0x44, 0xC3, 0x02, - 0x41, 0x00, 0xAF, 0xA3, 0x2C, 0x53, 0x8E, 0x8E, 0xA8, 0xE7, 0x36, 0xC0, 0x5C, 0x9E, 0x95, 0xEE, - 0xC1, 0x97, 0x02, 0x63, 0x7F, 0x3B, 0x4E, 0xB2, 0x0F, 0xF2, 0x7A, 0xBD, 0x57, 0x9C, 0x8B, 0x85, - 0xA8, 0x5D, 0x14, 0x3B, 0x7B, 0xF0, 0xBE, 0xFE, 0x0F, 0x8E, 0x4F, 0xD5, 0xB8, 0x49, 0xE8, 0x90, - 0xF5, 0x12, 0xBF, 0xB2, 0xD6, 0xE2, 0x78, 0x20, 0x26, 0x6C, 0x3F, 0x5C, 0xE4, 0x57, 0x6D, 0xE9, - 0xB4, 0x63, -}; -#endif // #ifdef KEY_SYSTEM - -#ifdef KEY_SECURE -// 開発用ショップアプリ ROMヘッダ署名用公開鍵 -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, - 0xA0, 0xC7, 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, - 0xC6, 0x05, 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, - 0x98, 0x5B, 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, - 0x44, 0xB1, 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, - 0xFF, 0x7F, 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, - 0xEC, 0xBE, 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, - 0xC8, 0x9A, 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, - 0xE6, 0x31, 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// 開発用ショップアプリ ROMヘッダ署名用秘密鍵 -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, 0xA0, 0xC7, - 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, 0xC6, 0x05, - 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, 0x98, 0x5B, - 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, 0x44, 0xB1, - 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, 0xFF, 0x7F, - 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, 0xEC, 0xBE, - 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, 0xC8, 0x9A, - 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, 0xE6, 0x31, - 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x48, 0xCA, 0x9C, 0x49, 0xA5, 0xBF, 0xD1, 0x17, 0x16, 0x77, 0x97, 0x97, 0x29, - 0x8D, 0x2A, 0xA2, 0x0D, 0x80, 0x0B, 0xE3, 0xDE, 0x59, 0x6B, 0x0C, 0xC8, 0x39, 0x6A, 0xE4, 0xC7, - 0xFF, 0x2E, 0xB0, 0x18, 0x6F, 0xF0, 0x9D, 0x35, 0x5E, 0x6A, 0x80, 0xAF, 0x3D, 0x90, 0x85, 0x9C, - 0x1A, 0x3F, 0x58, 0x15, 0xB9, 0x7B, 0x58, 0xB9, 0x4A, 0xB9, 0x18, 0x68, 0xDE, 0xBE, 0x5B, 0xE1, - 0x1C, 0xBF, 0x85, 0xDF, 0x5F, 0x30, 0xFD, 0xD2, 0xEC, 0xC0, 0x77, 0x33, 0x62, 0x58, 0xEC, 0xC1, - 0x47, 0xF7, 0x41, 0xE8, 0x2B, 0x21, 0x83, 0xE0, 0x8E, 0xE0, 0xF4, 0x03, 0x5D, 0x07, 0x84, 0x91, - 0xFA, 0x5B, 0xD8, 0xD3, 0x47, 0x90, 0x6E, 0x7D, 0x81, 0x9C, 0x1A, 0xB3, 0x03, 0x2F, 0xBC, 0x1A, - 0x28, 0x01, 0xBB, 0x78, 0x33, 0x60, 0xD2, 0x32, 0x34, 0x09, 0xEE, 0x08, 0x35, 0x50, 0x7A, 0x02, - 0x77, 0xB9, 0x01, 0x02, 0x41, 0x00, 0xCF, 0x39, 0xB3, 0x95, 0xDB, 0x1A, 0x2C, 0xD5, 0x6B, 0x0E, - 0xD8, 0x7B, 0xEC, 0x36, 0x14, 0xC5, 0x6C, 0x6C, 0x03, 0x34, 0xCB, 0x8A, 0x03, 0xF0, 0x94, 0x9C, - 0x2E, 0xBB, 0xA4, 0x24, 0x85, 0x6F, 0x3C, 0x8B, 0xAD, 0x44, 0x88, 0xA1, 0xDC, 0x88, 0xFE, 0xE7, - 0x02, 0x24, 0xB3, 0x73, 0xEA, 0xD1, 0xF6, 0x61, 0x6A, 0x73, 0x00, 0x86, 0x0B, 0x67, 0xAB, 0x00, - 0xFB, 0xF7, 0xFD, 0x0D, 0x92, 0x91, 0x02, 0x41, 0x00, 0xCF, 0x13, 0x5C, 0xD1, 0x72, 0x12, 0xA5, - 0x1D, 0x3A, 0x86, 0xAB, 0xAC, 0x87, 0x11, 0x37, 0x6D, 0xEB, 0x90, 0x14, 0x41, 0x7B, 0xAA, 0x38, - 0x88, 0xFF, 0xAF, 0xAA, 0xAE, 0x12, 0x3E, 0x7C, 0x28, 0x59, 0xDB, 0xBE, 0xAE, 0x79, 0x20, 0x0C, - 0x4F, 0xE5, 0xAB, 0x97, 0x64, 0x0D, 0x1E, 0x31, 0x54, 0x10, 0xB0, 0x1C, 0x7E, 0x5A, 0x7B, 0x98, - 0x32, 0x00, 0xF7, 0xE0, 0x18, 0x15, 0x53, 0xFC, 0x4D, 0x02, 0x41, 0x00, 0x90, 0x5F, 0x38, 0x01, - 0xD0, 0x9B, 0x44, 0xDF, 0x0F, 0x6E, 0x51, 0x5E, 0xCC, 0xEB, 0xC4, 0xBE, 0xE2, 0xD1, 0xC1, 0xCE, - 0x17, 0x7C, 0x39, 0x50, 0x74, 0x88, 0xF7, 0x7A, 0x1D, 0x5A, 0xA0, 0x68, 0x26, 0x3B, 0x7D, 0xE4, - 0xC0, 0x78, 0x5C, 0x68, 0x49, 0x86, 0xF2, 0x14, 0x55, 0xBE, 0x0D, 0xBC, 0x68, 0x35, 0xE8, 0x6E, - 0xE4, 0xCF, 0x7E, 0xC4, 0xA3, 0xFB, 0xD4, 0x90, 0x2A, 0x8A, 0x39, 0x31, 0x02, 0x41, 0x00, 0x93, - 0x88, 0xE3, 0x17, 0xA2, 0xA3, 0xA0, 0x1A, 0x4C, 0x09, 0x89, 0x24, 0xD9, 0xF2, 0xAD, 0x40, 0x56, - 0x96, 0x07, 0xA8, 0x84, 0x18, 0x4A, 0x41, 0x69, 0x92, 0x5A, 0x13, 0xBD, 0x91, 0xE1, 0x59, 0xCA, - 0x73, 0xE2, 0xCE, 0x62, 0x24, 0x30, 0x41, 0x78, 0x8C, 0x21, 0xC7, 0xBA, 0x04, 0xE9, 0xF6, 0x50, - 0x11, 0x79, 0xAB, 0x98, 0x81, 0xF8, 0x74, 0x9F, 0xF5, 0xFB, 0x26, 0x8D, 0x83, 0x91, 0xFD, 0x02, - 0x40, 0x4D, 0xA4, 0x03, 0x7E, 0x00, 0xB6, 0xA2, 0xEE, 0x85, 0x19, 0x5C, 0xB3, 0xBE, 0x06, 0x48, - 0xF7, 0xA8, 0x27, 0xB3, 0xC9, 0xED, 0x60, 0xE1, 0x56, 0x0A, 0x3F, 0x8D, 0x64, 0x56, 0xBA, 0x2E, - 0xC3, 0xF6, 0x2D, 0x95, 0x38, 0x87, 0x58, 0xD6, 0x95, 0xF7, 0xA6, 0xD6, 0xEE, 0x85, 0x7D, 0xD7, - 0x93, 0x80, 0xF5, 0x1D, 0xBF, 0x5F, 0x3E, 0x3A, 0x22, 0x29, 0x18, 0xE5, 0x95, 0x73, 0x0D, 0xEA, - 0x42, -}; -#endif // #ifdef KEY_SECURE - -#ifdef KEY_LAUNCHER -// 開発用システムアプリ ROMヘッダ署名用公開鍵 -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, - 0xFF, 0x1F, 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, - 0x49, 0x42, 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, - 0x70, 0x66, 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, - 0x87, 0xC0, 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, - 0x87, 0xB1, 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, - 0x80, 0x10, 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, - 0x4D, 0xD1, 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, - 0x5B, 0x37, 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// 開発用システムアプリ ROMヘッダ署名用秘密鍵 -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, 0xFF, 0x1F, - 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, 0x49, 0x42, - 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, 0x70, 0x66, - 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, 0x87, 0xC0, - 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, 0x87, 0xB1, - 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, 0x80, 0x10, - 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, 0x4D, 0xD1, - 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, 0x5B, 0x37, - 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x16, 0x65, 0xDC, 0xC8, 0x16, 0x99, 0xA3, 0x9A, 0x32, 0xFB, 0x88, 0x35, 0x0D, - 0xAE, 0x2E, 0x6D, 0x33, 0xC5, 0x4B, 0x1F, 0x43, 0x82, 0xE0, 0xE7, 0x0F, 0xCC, 0x83, 0x1D, 0x13, - 0xB2, 0xF4, 0x48, 0x43, 0x6F, 0xA2, 0x8C, 0xDB, 0xB6, 0x5A, 0x1B, 0xCD, 0xAB, 0xB0, 0x33, 0x30, - 0xE2, 0x6B, 0xD2, 0x9F, 0x7F, 0x6F, 0x2E, 0x2E, 0x89, 0x11, 0xBD, 0x89, 0xB1, 0xB3, 0x9E, 0x89, - 0x58, 0xD9, 0xDB, 0xB9, 0x91, 0x00, 0xDA, 0x17, 0xA9, 0x14, 0xC3, 0x83, 0xFF, 0xFF, 0x46, 0x0F, - 0x5F, 0x81, 0x1B, 0x5B, 0x02, 0xD2, 0x29, 0xEF, 0x48, 0xB7, 0xDF, 0x8C, 0x34, 0xED, 0xA2, 0xEC, - 0xC0, 0x79, 0x50, 0xC6, 0xAD, 0x0B, 0x98, 0x28, 0xC2, 0x17, 0x80, 0x96, 0x67, 0x3A, 0x22, 0xD7, - 0x60, 0x61, 0x98, 0xF6, 0xAB, 0x10, 0x1E, 0xE6, 0x23, 0x06, 0x4B, 0x61, 0xAF, 0xFE, 0xD5, 0xAF, - 0xB8, 0x3D, 0x81, 0x02, 0x41, 0x00, 0xE2, 0x82, 0xC3, 0x83, 0x2A, 0xEF, 0xA0, 0x86, 0x15, 0xFD, - 0x80, 0x23, 0x2B, 0x1C, 0x80, 0x0C, 0xF7, 0xA0, 0xA3, 0x53, 0x2B, 0xAD, 0xF9, 0xF6, 0xF7, 0xA3, - 0x7E, 0x1A, 0x5E, 0xE7, 0x18, 0x6D, 0xF3, 0xD6, 0xDE, 0x68, 0xBB, 0x4A, 0x54, 0xAF, 0xDF, 0xA5, - 0xEC, 0xA7, 0x62, 0xBB, 0xCB, 0x7A, 0xDE, 0x3F, 0xFB, 0x9A, 0x99, 0x2A, 0xF7, 0x2D, 0x23, 0x98, - 0x9A, 0x9F, 0xCE, 0xFB, 0x67, 0xB1, 0x02, 0x41, 0x00, 0xD5, 0x98, 0x63, 0x19, 0x3D, 0x80, 0xDF, - 0x71, 0x13, 0x6A, 0xF4, 0x5E, 0x62, 0x99, 0x16, 0x34, 0x18, 0xF9, 0xDC, 0x58, 0x2F, 0xC3, 0xD8, - 0x8B, 0x68, 0xC1, 0x43, 0x98, 0xF0, 0xEC, 0x39, 0xE3, 0x40, 0x6E, 0x08, 0x9F, 0xED, 0x17, 0xBE, - 0xCC, 0x87, 0x4A, 0xAD, 0x99, 0x15, 0x09, 0xD0, 0xBB, 0xDB, 0x13, 0xF0, 0x53, 0xDF, 0xCB, 0x66, - 0x1A, 0xD1, 0xF2, 0x14, 0xB7, 0x17, 0xFA, 0xCB, 0x39, 0x02, 0x41, 0x00, 0xD8, 0xA2, 0x05, 0x89, - 0x32, 0x8C, 0x41, 0xB3, 0x5B, 0xDE, 0xBA, 0x29, 0x68, 0x76, 0xF6, 0x84, 0xF0, 0x64, 0x23, 0x30, - 0x4D, 0x4B, 0x34, 0x11, 0x1E, 0x60, 0xB0, 0x1F, 0x5A, 0x7A, 0x9C, 0xE3, 0xB3, 0xDC, 0xE1, 0x93, - 0xBA, 0xE4, 0x69, 0x40, 0x57, 0x9E, 0xA2, 0x4A, 0xA8, 0x64, 0x41, 0x44, 0xBE, 0xC0, 0xE4, 0xCA, - 0xC4, 0x08, 0xD2, 0xA3, 0xCA, 0x32, 0x8E, 0x57, 0x9F, 0x26, 0xD4, 0xD1, 0x02, 0x41, 0x00, 0x9B, - 0xD5, 0x50, 0x07, 0xAC, 0x2D, 0x87, 0xD7, 0x71, 0xB9, 0x48, 0x8C, 0x4C, 0x17, 0x30, 0x71, 0xD5, - 0xFF, 0x05, 0x59, 0x79, 0x8F, 0xC3, 0x3F, 0x02, 0xB0, 0x6D, 0xE6, 0xF9, 0x6E, 0xFF, 0x54, 0xE3, - 0x3E, 0xE4, 0x1F, 0xF9, 0xD4, 0xA7, 0x29, 0x85, 0x53, 0x60, 0x90, 0x1D, 0x1F, 0x4A, 0x20, 0xA4, - 0x57, 0x49, 0xB1, 0x87, 0xC7, 0x57, 0xB9, 0x1D, 0x8F, 0x26, 0xB9, 0xE6, 0x4E, 0xDD, 0x51, 0x02, - 0x40, 0x4F, 0xE6, 0xC8, 0x11, 0x14, 0xA2, 0xF9, 0xC3, 0xD1, 0x7B, 0x74, 0x48, 0x8F, 0x33, 0xB4, - 0xF6, 0xFF, 0xEE, 0xDC, 0x4E, 0x34, 0xF9, 0x66, 0xB8, 0x25, 0x3A, 0x05, 0xF5, 0x29, 0x1B, 0x12, - 0x61, 0x6C, 0xCD, 0xF1, 0x0D, 0xE6, 0x68, 0xED, 0x81, 0x44, 0x96, 0x07, 0x5A, 0x43, 0x72, 0x93, - 0xDC, 0xEE, 0xD7, 0x81, 0x82, 0x22, 0x5E, 0x07, 0x15, 0x02, 0xA5, 0xE9, 0x54, 0x59, 0x86, 0x03, - 0x02, -}; -#endif // #ifdef KEY_LAUNCHER diff --git a/build/tests/FakeRomHeader/keys.h b/build/tests/FakeRomHeader/keys.h deleted file mode 100644 index 349ae8e4..00000000 --- a/build/tests/FakeRomHeader/keys.h +++ /dev/null @@ -1,14 +0,0 @@ -// 署名用の鍵データの宣言 - -#include - -// 鍵の種類 -//#define KEY_USER -//#define KEY_SYSTEM -//#define KEY_SECURE -//#define KEY_LAUNCHER - -// 開発機用ROMヘッダ署名鍵 -extern const u8 g_devPubKey_DER[ 0xa2 ]; -extern const u8 g_devPrivKey_DER[ 0x263 ]; - diff --git a/build/tests/FakeRomHeader/main.c b/build/tests/FakeRomHeader/main.c deleted file mode 100644 index d09d497f..00000000 --- a/build/tests/FakeRomHeader/main.c +++ /dev/null @@ -1,533 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlFirmware - tools - mastering - File: mastering.c - - Copyright 2003 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 -#include -#include // strcasecmp() -#include // getopt() -#include // stat() -#include -#include -#include -#include -#include -#include "revision.h" -#include "keys.h" - -#define CARD_LATENCY_MASK 0x083f1fff -#define CARD_MROM_GAME_LATENCY 0x00010017 -#define CARD_MROM_SECURE_HW_LATENCY 0x001808f8 -#define CARD_MROM_SECURE_SW_LATENCY 0x051e -#define CARD_1TROM_GAME_LATENCY 0x00010657 -#define CARD_1TROM_SECURE_HW_LATENCY 0x081808f8 -#define CARD_1TROM_SECURE_SW_LATENCY 0x0d7e - - -/*---------------------------------------------------------------------------* - - - 宣言 & 定数 - - - *---------------------------------------------------------------------------*/ - -// -- 内部パラメータ - -// CRC (makerom.TWL/misc.cとmakerom.TWL/format_rom_private.hからコピペ) -#define CRC16_INIT_VALUE (0xffff) -#define CALC_CRC16_SIZE (0x15e) - -// ファイルコピー用バッファ -#define BUFSIZE (16*1024) -static u8 buf[ BUFSIZE ]; - -// -- Context - -typedef struct _SContext -{ - // オプション - BOOL bPlatform; - BOOL bSignFlag; - BOOL bDevFlag; - BOOL bVerFlag; - BOOL bDebugger; - BOOL bCheckCard; - int verNum; - BOOL bMROM; - BOOL bNTR; - - FILE *ifp; - FILE *ofp; -} -SContext; - -// -- internal function -static BOOL iMain( SContext *pContext ); -u16 CalcCRC16(u16 start, u8 *data, int size); -BOOL SignRomHeader( ROM_Header *prh ); -static void SetRomSpeedByIndex(ROM_Header * header, tRomSpeedType idx); - -/*---------------------------------------------------------------------------* - - - グローバル変数 - - - *---------------------------------------------------------------------------*/ - -BOOL DebugMode = FALSE; - -/*---------------------------------------------------------------------------* - - - おおもとの本体 - - - *---------------------------------------------------------------------------*/ - -void usage() -{ - printf( "-----------------------------------------------------------------------------\n" ); - printf( "Usage: fakeRomHeader.exe input_file output_file\n" ); - printf( " input_file : a ROM data file (generated by makerom.TWL).\n" ); - printf( " output_file : a destination file.\n" ); - printf( "\nOption:\n" ); - printf( "-h : print help only.\n" ); - printf( "-p : write invalid platform code in a ROM Header.\n" ); - printf( "-s : negate flag for the signature in a ROM Header.\n" ); - printf( "-d : negate a new developer encrypt flag, and assert an old one.\n" ); - printf( "-v NUM: change ROM version in a ROM Header.\n" ); - printf( "-m : [Only NTR limited ROM] Rom speed type replace 1TROM from MROM.\n" ); - printf( "-D : assert a disable flag of debugger alalysis.\n" ); - printf( "-c : assert a check(inspection) card flag.\n" ); - printf( "-N : skip sign [using for NTR limited ROM]" ); - printf( "-f : force to overwrite a output_file.\n" ); - printf( "-----------------------------------------------------------------------------\n" ); -} - -int main(int argc, char *argv[]) -{ - SContext context; - char *pSrc, *pDst; - int opt; - extern char *optarg; - extern int optind, opterr; - struct stat st; - BOOL bResult; - BOOL bForceOverwrite = FALSE; - - printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); - printf( " fakeRomHeader [%s-%s]\n", SDK_REVISION, IPL_REVISION ); - printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); - - // context の初期化 - memset( &context, 0, sizeof(SContext) ); - - // オプション - while( (opt = getopt(argc, argv, "hpsdmv:DcfN")) >= 0 ) - { - switch( opt ) - { - case 'h': - usage(); - return 0; - break; - - case 'p': - context.bPlatform = TRUE; - break; - - case 's': - context.bSignFlag = TRUE; - break; - - case 'd': - context.bDevFlag = TRUE; - break; - - case 'v': - context.bVerFlag = TRUE; - context.verNum = atoi(optarg); - break; - - case 'm': - context.bMROM = TRUE; - break; - - case 'D': - context.bDebugger = TRUE; - break; - - case 'c': - context.bCheckCard = TRUE; - break; - - case 'N': - context.bNTR = TRUE; - break; - - case 'f': - bForceOverwrite = TRUE; - break; - - default: // オプション引数が指定されていないときにも実行される - usage(); - fprintf( stdout, "error: illegal option\n" ); - exit(1); - break; - } - } - argc = argc - optind; - argv = argv + optind; - - // 引数処理 - if( argc != 2 ) - { - usage(); - printf( "error arguments\n" ); - exit(1); - } - else - { - pSrc = argv[0]; - pDst = argv[1]; - } - - printf( "input_file: %s\n", pSrc ); - printf( "output_file: %s\n", pDst ); - printf( "\n" ); - - // 入力ファイルと出力ファイル名が同じならダメ - if( (strlen(pSrc) == strlen(pDst)) && (memcmp(pSrc, pDst, strlen(pSrc)) == 0) ) - { - printf( "The name of output_file must be different from the one of input_file\n" ); - exit(1); - } - - // 出力ファイルが存在するとき上書きするかどうかを確認する - if( !bForceOverwrite && stat( pDst, &st )==0 ) - { - char ans; - printf( "The %s already exists. Overwrite it? (y or n) ", pDst ); - //fscanf( stdin, "%c", &ans ); - ans = (char)getch(); // リターンキーなし - printf( "%c\n", ans ); // getch では入力が表示されないので自分で表示する必要あり - printf( "\n" ); - if( !(ans=='y') && !(ans=='Y') ) - { - printf( "mastering is aborted.\n" ); - exit(1); - } - } - - // ファイルを開く - context.ifp = fopen(pSrc, "rb"); - context.ofp = fopen(pDst, "wb+"); - if( !(context.ifp) || !(context.ofp) ) - { - printf( "fopen failed.\n" ); - bResult = FALSE; - goto FINALIZE; - } - - // 本処理 - bResult = iMain( &context ); - -// 終了処理 -FINALIZE: - - if( !bResult ) - { - printf( "\n" ); - printf( "error.\n" ); - } - else - { - printf( "\n" ); - printf( "succeeded.\n" ); - } - if( context.ifp ) fclose(context.ifp); // 資源の解放 - if( context.ofp ) fclose(context.ofp); - - if( (!bResult) && (stat( pDst, &st ) == 0) ) - { - unlink( pDst ); // 出力ファイルを削除する - } - return 0; -} - -/*---------------------------------------------------------------------------* - - ROMヘッダの偽装 - - *---------------------------------------------------------------------------*/ - -static BOOL iMain( SContext *pContext ) -{ - ROM_Header rh; - int size; - - // ROMヘッダをリード - fseek( pContext->ifp, 0, SEEK_SET ); - if( sizeof(ROM_Header) != fread( &rh, 1, sizeof(ROM_Header), pContext->ifp ) ) - { - printf( "fread failed in reading ROM Header\n" ); - return FALSE; - } - - // ROMヘッダをいじる - { - if( pContext->bPlatform ) - { - printf( "platform_code: 0x%02x -> 0x01\n", rh.s.platform_code ); - rh.s.platform_code = 0x01; - } - - if( pContext->bSignFlag ) - { - printf( "enable_signature: 0x%02x -> 0x00\n", rh.s.enable_signature ); - rh.s.enable_signature = 0x0; - } - - if( pContext->bDevFlag ) - { - printf( "old dev. encrypt: 0x%02x -> 0x01x\n", rh.s.developer_encrypt_old ); - printf( "new dev. encrypt: 0x%02x -> 0x00x\n", rh.s.exFlags.developer_encrypt ); - rh.s.developer_encrypt_old = 0x1; - rh.s.exFlags.developer_encrypt = 0x0; - } - - if( pContext->bVerFlag ) - { - printf( "ROM version: 0x%02x -> 0x%02x\n", rh.s.rom_version, pContext->verNum ); - rh.s.rom_version = pContext->verNum; - } - - if( pContext->bMROM ) - { - if( rh.s.platform_code != 0x00 ) - { - printf( "ERROR: This option is only for NTR Limited." ); - return FALSE; - } - //if( (rh.s.game_cmd_param & CARD_LATENCY_MASK) != CARD_MROM_GAME_LATENCY ) - //{ - // printf( "ERROR: This option is only for MROM Setting" ); - // return FALSE; - //} - SetRomSpeedByIndex( &rh, ONETROM ); - printf( "ROM Speed Type: **** -> 1TROM\n" ); - } - - if( pContext->bDebugger ) - { - if( rh.s.disable_debug == 0 ) - { - rh.s.disable_debug = 0x1; - printf( "Debugger analysis: Enable -> Disable\n" ); - } - else - { - printf( "Debugger analysis: Originally Disable\n" ); - } - } - - if( pContext->bCheckCard ) - { - if( rh.s.inspect_card == 0 ) - { - rh.s.inspect_card = 0x1; - printf( "Check Card Flag: Disable -> Enable\n" ); - } - else - { - printf( "Check Card Flag: Originally Enable\n" ); - } - } - } - - // ヘッダCRC計算 - rh.s.header_crc16 = CalcCRC16( CRC16_INIT_VALUE, (u8*)&rh, CALC_CRC16_SIZE ); - - // 署名 - if( !(pContext->bMROM) && !(pContext->bNTR) ) // NTR専用オプションのときは署名しない - { - if( !SignRomHeader( &rh ) ) - { - return FALSE; - } - } - else - { - printf( "skip sign\n" ); - } - - // ファイルをコピる - fseek( pContext->ifp, 0, SEEK_END ); - size = ftell( pContext->ifp ); - fseek( pContext->ifp, 0, SEEK_SET ); - fseek( pContext->ofp, 0, SEEK_SET ); - while( size > 0 ) - { - int len = (BUFSIZE < size)?BUFSIZE:size; - - if( len != fread( buf, 1, len, pContext->ifp ) ) - { - printf( "fread failed in a copying file\n" ); - return FALSE; - } - if( len != fwrite( buf, 1, len, pContext->ofp ) ) - { - printf( "fwrite failed in a copying file\n" ); - return FALSE; - } - - size -= len; - } - - // ROMヘッダを上書き - fseek( pContext->ofp, 0, SEEK_SET ); - if( sizeof(ROM_Header) != fwrite( &rh, 1, sizeof(ROM_Header), pContext->ofp ) ) - { - printf( "fwrite failed in a copying file\n" ); - return FALSE; - } - - return TRUE; -} - -/*---------------------------------------------------------------------------* - - CRCの計算 - - *---------------------------------------------------------------------------*/ - -static u16 crc16_table[16] = { - 0x0000, 0xCC01, 0xD801, 0x1400, - 0xF001, 0x3C00, 0x2800, 0xE401, - 0xA001, 0x6C00, 0x7800, 0xB401, - 0x5000, 0x9C01, 0x8801, 0x4400 -}; - -u16 CalcCRC16(u16 start, u8 *data, int size) -{ - u16 r1; - u16 total = start; - - while (size-- > 0) - { - // 下位4bit - r1 = crc16_table[total & 0xf]; - total = (total >> 4) & 0x0fff; - total = total ^ r1 ^ crc16_table[*data & 0xf]; - - // 上位4bit - r1 = crc16_table[total & 0xf]; - total = (total >> 4) & 0x0fff; - total = total ^ r1 ^ crc16_table[(*data >> 4) & 0xf]; - - data++; - } - return total; -} - - -/*---------------------------------------------------------------------------* - - ROMヘッダの署名 - - *---------------------------------------------------------------------------*/ - -BOOL SignRomHeader( ROM_Header *prh ) -{ - SignatureData signSrc; // 署名のもととなるダイジェスト値 - u8 signDst[ RSA_KEY_LENGTH ]; // 署名の格納先Tmpバッファ - u8 decryptBlock[ RSA_KEY_LENGTH ]; // 署名を解除後ブロックバッファ - BOOL result; - int pos; - - // ROMヘッダのダイジェストを算出(先頭から証明書領域の直前までが対象) - ACSign_DigestUnit( - signSrc.digest, - prh, - (u32)&(prh->certificate) - (u32)prh // this->pRomHeader はマネージヒープ上にあるので実アドレスを取得できない - ); - -#ifdef KEY_USER - printf( "Signature Key: USER\n" ); -#endif -#ifdef KEY_SYSTEM - printf( "Signature Key: SYSTEM\n" ); -#endif -#ifdef KEY_SECURE - printf( "Signature Key: SECURE\n" ); -#endif -#ifdef KEY_LAUNCHER - printf( "Signature Key: LAUNCHER\n" ); -#endif - - // ダイジェストに署名をかける - result = ACSign_Encrypto( signDst, g_devPrivKey_DER, &signSrc, sizeof(SignatureData) ); - if( !result ) - { - printf( "ACSign_Encrypto encryption failed.\n" ); - return FALSE; - } - - // 署名を解除してダイジェストと一致するかベリファイする - result = ACSign_Decrypto( decryptBlock, g_devPubKey_DER, signDst, RSA_KEY_LENGTH ); - for( pos=0; pos < RSA_KEY_LENGTH; pos++ ) - { - if( decryptBlock[pos] == 0x0 ) // 解除後ブロックから実データをサーチ - break; - } - if( !result || (memcmp( &signSrc, &(decryptBlock[pos+1]), sizeof(SignatureData) ) != 0) ) - { - printf( "Verification a signature failed.\n" ); - return FALSE; - } - - // ROMヘッダに署名を上書き - memcpy( prh->signature, signDst, RSA_KEY_LENGTH ); - - return TRUE; -} // ECSrlResult RCSrl::signRomHeader(void) - - -/*---------------------------------------------------------------------------* - - ROM Speed Typeの設定 - - *---------------------------------------------------------------------------*/ - -static ROM_LT romSpeedTypeLatencyTable[] = { - {CARD_1TROM_GAME_LATENCY, CARD_1TROM_SECURE_HW_LATENCY, CARD_1TROM_SECURE_SW_LATENCY}, - {CARD_MROM_GAME_LATENCY, CARD_MROM_SECURE_HW_LATENCY, CARD_MROM_SECURE_SW_LATENCY}, -}; - -static void SetRomSpeedByIndex(ROM_Header * header, tRomSpeedType idx) -{ - ROM_LT *l = &romSpeedTypeLatencyTable[idx]; - - header->s.game_cmd_param &= ~CARD_LATENCY_MASK; - header->s.game_cmd_param |= l->game_latency; - header->s.secure_cmd_param &= ~CARD_LATENCY_MASK; - header->s.secure_cmd_param |= l->secure_hw_latency; - header->s.secure_cmd_latency = l->secure_sw_latency; -} - - -// end of file diff --git a/build/tests/FatalErrorChecker/ARM9/Makefile b/build/tests/FatalErrorChecker/ARM9/Makefile deleted file mode 100644 index 12e304a0..00000000 --- a/build/tests/FatalErrorChecker/ARM9/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorChecker -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -SRCS = main.c \ - keypad.c \ - kami_font.c \ - graphics.c \ - font_data.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -TARGET_BIN = menu.srl - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorChecker/ARM9/main.rsf b/build/tests/FatalErrorChecker/ARM9/main.rsf deleted file mode 100644 index f0fc5c0f..00000000 --- a/build/tests/FatalErrorChecker/ARM9/main.rsf +++ /dev/null @@ -1,245 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "FatalChecker" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - LockSCFG FALSE - - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media gamecard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0G6A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/FatalErrorChecker/ARM9/src/font_data.c b/build/tests/FatalErrorChecker/ARM9/src/font_data.c deleted file mode 100644 index aa1ba501..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: font_data.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 - -/*---------------------- BGスクリーン ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- パレットデータ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// 上画面コンソール文字列パレット -const u16 PlttDataMain[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Black -}; - -// 下画面コンソール文字列パレット -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // 背景カラーはこの16番パレット - // 白 黒 灰 むらさき ピンク みずいろ 緑 青紫 赤 黄 茶 - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(25, 15, 15), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- キャラクタデータ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/graphics.c b/build/tests/FatalErrorChecker/ARM9/src/graphics.c deleted file mode 100644 index 1de138e9..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/graphics.c +++ /dev/null @@ -1,160 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: praphics.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 -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: 表示の初期化処理 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM クリア - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAMとパレットクリア - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- OBJバンクの設定 - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- BGバンクの設定 - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- 表示モード設定 - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D初期化 - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(0); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KバイトのOBJで2Dマップモードで使用 - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // スクリーンオフセット及びキャラクターオフセットの設定 - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- データロード - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: 三角ポリゴンで線を描画 - - Arguments: sx - 描画する線の開始点のx座標 - sy - 描画する線の開始点のy座標 - ex - 描画する線の終点のx座標 - ey - 描画する線の終点のy座標 - color - 描画する線の色 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} diff --git a/build/tests/FatalErrorChecker/ARM9/src/graphics.h b/build/tests/FatalErrorChecker/ARM9/src/graphics.h deleted file mode 100644 index ddd8c4f6..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/graphics.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: graphics.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 GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/kami_font.c b/build/tests/FatalErrorChecker/ARM9/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - 内部関数宣言 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // 背景用キャラクタデータ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // 背景用スクリーンデータセット - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // 背景キャラクタデータ書き換え - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: 仮想スクリーンに - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // 終端追加 - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // 改行コード - kamiFontReturnConsole(); - } - else - { - // 一文字ずつ書き込み - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // X座標が右端に到達した場合は改行処理 - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - OS_Printfもついでに実行する。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: 仮想コンソールにおける改行処理を行う - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // 次の行へ - sYPos++; - } - else - { - // 既に最終行に到達している場合シフトを行う - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/FatalErrorChecker/ARM9/src/kami_font.h b/build/tests/FatalErrorChecker/ARM9/src/kami_font.h deleted file mode 100644 index d9855fd0..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/kami_font.h +++ /dev/null @@ -1,95 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapハンドル; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// 上画面コンソール文字列用パレット -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// 下画面フォント用パレット -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// 下画面背景用パレット -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 -#define BG_COLOR_BROWN 11 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/keypad.c b/build/tests/FatalErrorChecker/ARM9/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 -#include "keypad.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/FatalErrorChecker/ARM9/src/keypad.h b/build/tests/FatalErrorChecker/ARM9/src/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/main.c b/build/tests/FatalErrorChecker/ARM9/src/main.c deleted file mode 100644 index df65d888..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/main.c +++ /dev/null @@ -1,652 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - Tests - FatalErrorChecker - 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 -#include -#include "kami_font.h" -#include "graphics.h" -#include "keypad.h" - -#define BUFSIZE 256 - -#define FATAL_ERROR_MAX 51 -#define NUM_ENTRY_PER_PAGE 5 -#define NUM_LINE_PER_ENTRY 4 -#define SKIP_SPAN 5 -#define FOOTER_Y 22 - -#define ASK_LINE_OFFSET 9 -#define RESULT_LINE_OFFSET 13 - -#define SCREEN_WIDTH 32 - -#define DST_LOGFILE_PATH "sdmc:/sysmenu.log" -#define ERRORLOG_LOGFILE_PATH "nand:/sys/log/sysmenu.log" - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ -static char *s_strError[ FATAL_ERROR_MAX ]; -static BOOL nowEntryView; -static BOOL nowAskingCopy; -static BOOL nowAskingDelete; -static BOOL resetConsoleFlag; -static int drawIndex = 0; -static int numEntry; -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); -static void drawErrorLog( void ); -static BOOL deleteLogfile(); -static void control(); -static void removeLC( char *dst, const char *src ); -static void drawMessage( void ); -static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ); -static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str ); -static BOOL copyLogToSD( void ); -int convertLF( char *dst, char *src ); -static void drawMenu( void ); -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - char tst[] = "\n\n\n\n\na"; - - OS_Init(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - - - // Vブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - // FS_Initの後の方が良い模様 - InitAllocation(); - - // 表示関連初期化 - InitGraphics(); - kamiFontInit(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - ERRORLOG_Init( OS_AllocFromMain, OS_FreeToMain ); - - numEntry = ERRORLOG_GetNum(); - nowEntryView = FALSE; - nowAskingCopy = FALSE; - nowAskingDelete = FALSE; - resetConsoleFlag = TRUE; - - while (1) - { - static i = 0 ; - kamiPadRead(); - - // Vブランク待ち - OS_WaitVBlankIntr(); - - // フォントスクリーンデータロード - kamiFontLoadScreenData(); - - if( resetConsoleFlag ) - { - drawMenu(); - resetConsoleFlag = FALSE; - } - - // 操作検出と描画 - control(); - - if( nowEntryView ) - { - drawMessage(); - } - else - { - drawErrorLog(); - } - - } - -} - -static void drawMessage( void ) -{ - char titlebuf[5]; - const ErrorLogEntry *entry = ERRORLOG_Read( drawIndex ); - kamiFontClear(); - - if( entry->isBroken ) - { - kamiFontPrintf( 0, 0 , FONT_COLOR_BLACK, "%02d: Broken Entry", drawIndex); - - kamiFontPrintfWrap( 0, 2, FONT_COLOR_BLACK, "%s\n" ,entry->errorStr ); - - } - else if( entry->isLauncherError ) - { - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, 0, FONT_COLOR_BLACK, "%02d: RED %02d/%02d/%02d %02d:%02d:%02d" , - drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, 1, FONT_COLOR_BLACK, "titleID: %s errorCode: %d", - titlebuf, entry->errorCode ); - - kamiFontPrintfWrap( 0, 3, FONT_COLOR_BLACK, s_strError[entry->errorCode] ); - - } - else{ - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, 0 , FONT_COLOR_BLACK, "%02d: FFT %02d/%02d/%02d %02d:%02d:%02d" , - drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, 1, FONT_COLOR_BLACK, "titleID: %s", titlebuf ); - - kamiFontPrintfWrap( 0, 3, FONT_COLOR_BLACK, entry->errorStr ); - - } - -} - -static void drawErrorLog( void ) -{ - char titlebuf[5]; - s16 i; - - kamiFontClear(); - - for( i = 0; i < NUM_ENTRY_PER_PAGE && i+drawIndex < numEntry ; i++ ) - { - u8 color = (i == 0) ? (u8)FONT_COLOR_BLUE : (u8)FONT_COLOR_BLACK; - s16 posY = (s16)(i * NUM_LINE_PER_ENTRY); - const ErrorLogEntry *entry = ERRORLOG_Read( i + drawIndex ); - char drawBuf[256 + 1]; - - if( entry->isBroken ) - { -// kamiFontPrintf( 0, posY , color, "%02d: Broken Entry", i + drawIndex); - kamiFontPrintf( 0, posY , color, "%02d: Broken Entry", i + drawIndex); - - // 改行を取り除いてから表示 - removeLC( drawBuf, entry->errorStr ); - kamiFontPrintf( 0, (s16)( posY + 1), color, drawBuf ); - - } - else if( entry->isLauncherError ) - { - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, posY , color, "%02d: RED %02d/%02d/%02d %02d:%02d:%02d" , - i + drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, (s16)( posY + 1), color, "titleID: %s errorCode: %d", - titlebuf, entry->errorCode ); - - kamiFontPrintf( 0, (s16)( posY + 2), color, s_strError[entry->errorCode] ); - } - else{ - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, posY , color, "%02d: FFT %02d/%02d/%02d %02d:%02d:%02d" , - i + drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, (s16)( posY + 1), color, "titleID: %s", titlebuf ); - - // 改行を取り除いてから表示 - removeLC( drawBuf, entry->errorStr ); - kamiFontPrintf( 0, (s16)( posY + 2), color, drawBuf ); - - } - } - - kamiFontPrintf( 0, FOOTER_Y , FONT_COLOR_BLACK, "numEntry : %d", numEntry ); -} - -static void control() -{ - if( nowAskingCopy ) - { - // 本当にやるの?って聞いてる最中 - if( kamiPadIsTrigger( PAD_BUTTON_A )) - { - BOOL result; - kamiFontPrintfMain( 0, ASK_LINE_OFFSET+2, CONSOLE_ORANGE, "now copying..."); - result = copyLogToSD(); - nowAskingCopy = FALSE; - } - - if( kamiPadIsTrigger( PAD_BUTTON_B )) - { - drawMenu(); - nowAskingCopy = FALSE; - } - - return; - } - - if( nowAskingDelete ) - { - // 本当にやるの?って聞いてる最中 - if( kamiPadIsTrigger( PAD_BUTTON_A )) - { - BOOL result; - kamiFontPrintfMain( 0, ASK_LINE_OFFSET+2, CONSOLE_ORANGE, "now deleting..."); - result = deleteLogfile(); - nowAskingDelete = FALSE; - } - - if( kamiPadIsTrigger( PAD_BUTTON_B )) - { - drawMenu(); - nowAskingDelete = FALSE; - } - - return; - } - - if( kamiPadIsTrigger( PAD_KEY_UP ) ) - { - drawIndex--; - } - else if( kamiPadIsTrigger( PAD_KEY_DOWN ) ) - { - drawIndex++; - } - - if( kamiPadIsTrigger( PAD_KEY_LEFT ) ) - { - drawIndex -= SKIP_SPAN; - } - else if( kamiPadIsTrigger( PAD_KEY_RIGHT ) ) - { - drawIndex += SKIP_SPAN; - } - - if( kamiPadIsTrigger( PAD_BUTTON_A ) ) - { - if( 0 < numEntry ) - { - nowEntryView = !nowEntryView ; - } - } - else if( kamiPadIsTrigger( PAD_BUTTON_X ) ) - { - drawMenu(); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET, CONSOLE_ORANGE, "Copy Logfile to SD. OK ?"); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET + 1, CONSOLE_ORANGE, "A: Decide B: Cancel"); - - nowAskingCopy = TRUE; - } - else if ( kamiPadIsTrigger( PAD_BUTTON_Y ) ) - { - drawMenu(); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET, CONSOLE_ORANGE, "Delete Logfile From NAND. OK ?"); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET + 1, CONSOLE_ORANGE, "A: Decide B: Cancel"); - - nowAskingDelete = TRUE; - } - - // 操作の結果、描画インデクスがはみ出しそうだったら修正 - drawIndex = numEntry-1 < drawIndex ? numEntry-1 : drawIndex ; - drawIndex = drawIndex < 0 ? 0: drawIndex; -} - -// srcから改行を取り除いてdstに引き渡す -static void removeLC( char *dst, const char *src ) -{ - char *idx; - STD_StrCpy( dst, src ); - - while( ( idx = STD_StrChr( dst, '\n' )) != NULL ) - { - *idx = ' '; - } -} - - -static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ) -{ - va_list vlist; - char temp[BUFSIZE + 1]; - char *head, *tail; - - va_start(vlist, fmt); - (void)vsnprintf(temp, BUFSIZE+1, fmt, vlist); - va_end(vlist); - - head = temp; - - // 終端追加 - temp[BUFSIZE] = '\0'; - - // 自前でctok的な事をして改行を別々に出力する - tail = STD_StrChr( temp, '\n' ); - while( tail != NULL ) - { - *tail = '\0'; - y += kamiFontPrintfWrapSub( x, y, color, head ); - head = tail+1; - tail = STD_StrChr( head, '\n' ); - } - - kamiFontPrintfWrapSub( x, y, color, head ); -} - -// 表示可能文字数で自動折り返し -// 返り値は描画に利用した行数 -static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str ) -{ - char *head = str; - char buf[SCREEN_WIDTH+1]; - s16 linecount = 0; - int length; - - while( SCREEN_WIDTH <= ( length = STD_StrLen( head )) ) - { - STD_StrLCpy( buf, head, SCREEN_WIDTH+1 ); - kamiFontPrintf( x, (s16)(y + linecount++), color, buf ); - head += SCREEN_WIDTH; - } - - kamiFontPrintf( x, (s16)(y + linecount++), color, head ); - - return linecount; - -} - - -static BOOL deleteLogfile( void ) -{ - - if( !FS_DeleteFile( ERRORLOG_LOGFILE_PATH ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Delete Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_DeleteFile" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, - "errorCode : %d", FS_GetArchiveResultCode( ERRORLOG_LOGFILE_PATH ) ); - - return FALSE; - } - - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Delete Succeeded!") ; - return TRUE; -} - -static BOOL copyLogToSD( void ) -{ - FSFile src, dst; - // 最悪で読み込んだサイズの倍の文字列になる可能性がある - char buf[BUFSIZE + 1]; - char winbuf[BUFSIZE*2 +1]; - s32 readSize; - s32 writeSize = 0; - - buf[256] = '\0'; - FS_InitFile( &dst ); - - // まずファイルを削除 - FS_DeleteFile( DST_LOGFILE_PATH ); - - if( ! FS_CreateFile( DST_LOGFILE_PATH, FS_PERMIT_R | FS_PERMIT_W ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CreateFile" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - // ファイル作成に成功 - if( !FS_OpenFileEx( &dst , DST_LOGFILE_PATH, FS_FILEMODE_RW )) - { - // 作成したファイルをopenできなかった場合 - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile / FS_SetFileLength" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - // サイズ変更が終わったら、念のためファイルサイズ変更不可なRWLモードで開きなおしておく - // →ファイルサイズ可変長に変更 - FS_CloseFile( &dst ); - - if( !FS_OpenFileEx( &dst, DST_LOGFILE_PATH, FS_FILEMODE_RW ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile dst" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - if( !FS_OpenFileEx( &src, ERRORLOG_LOGFILE_PATH, FS_FILEMODE_R ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile src" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - } - - if( !FS_SeekFileToBegin( &src )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_SeekFileToBegin" ); - return FALSE; - } - - while( ( readSize = FS_ReadFile( &src, buf, 256 )) > 0 ) - { - int size; - size = convertLF( winbuf, buf ); - - if( FS_WriteFile( &dst, winbuf, size ) < 0 ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_WriteFile" ); - return FALSE; - } - - } - - - if( !FS_CloseFile( &src )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CloseFile(src)" ); - } - - - if( !FS_CloseFile( &dst )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CloseFile(dst)" ); - } - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Succeeded!") ; - - return TRUE; - -} - -static void drawMenu( void ) -{ - int line = 0; - - kamiFontClearMain(); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "How to"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l U/D Key : Scroll Line l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l L/R Key : Scroll Page l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l A Button : Switch View Mode l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l X Button : Copy to SDCard l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l Y Button : Delete Logfile l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+"); -} - -// LFをLFCRに置換して書き戻す -// dstは最悪時でsrcの二倍の領域が必要 -int convertLF( char *dst, char *src ) -{ - char *head = src, *tail; - int writesize = 0; - - tail = STD_StrChr( src, '\n' ); - - while( tail != NULL ) - { - *tail = '\0'; - writesize += STD_StrLCpy( &dst[writesize], head,BUFSIZE ); - dst[writesize] = 0x0d; - dst[writesize+1] = 0x0a; - writesize += 2; - - head = tail + 1; - tail = STD_StrChr( head, '\n' ); - } - - writesize += STD_StrLCpy( &dst[writesize], head, BUFSIZE ); - - return writesize; -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: VBlank割り込み処理 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -/*---------------------------------------------------------------------------* - Name: InitAllocation - - Description: ヒープの初期化. - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitAllocation(void) -{ - void *tmp; - OSHeapHandle hh; - - /* アリーナの初期化 */ - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - OS_Panic("ARM9: Fail to create heap...\n"); - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - - - -static char *s_strError[ FATAL_ERROR_MAX ] = { - "UNDEFINED", - "NAND", - "HWINFO_NORMAL", - "HWINFO_SECURE", - "TWLSETTINGS", - "SHARED_FONT", - "WLANFIRM_AUTH", - "WLANFIRM_LOAD", - "TITLE_LOAD_FAILED", - "TITLE_POINTER_ERROR", - "AUTHENTICATE_FAILED", - "ENTRY_ADDRESS_ERROR", - "TITLE_BOOTTYPE_ERROR", - "SIGN_DECRYPTION_FAILED", - "SIGN_COMPARE_FAILED", - "HEADER_HASH_CALC_FAILED", - "TITLEID_COMPARE_FAILED", - "VALID_SIGN_FLAG_OFF", - "CHECK_TITLE_LAUNCH_RIGHTS_FAILED", - "MODULE_HASH_CHECK_FAILED", - "MODULE_HASH_CALC_FAILED", - "MEDIA_CHECK_FAILED", - "DL_MAGICCODE_CHECK_FAILED", - "DL_SIGN_DECRYPTION_FAILED", - "DL_HASH_CALC_FAILED", - "DL_SIGN_COMPARE_FAILED", - "WHITELIST_INITDB_FAILED", - "WHITELIST_NOTFOUND", - "DHT_PHASE1_FAILED", - "DHT_PHASE2_FAILED", - "LANDING_TMP_JUMP_FLAG_OFF", - "TWL_BOOTTYPE_UNKNOWN", - "NTR_BOOTTYPE_UNKNOWN", - "PLATFORM_UNKNOWN", - "LOAD_UNFINISHED", - "LOAD_OPENFILE_FAILED", - "LOAD_MEMALLOC_FAILED", - "LOAD_SEEKFILE_FAILED", - "LOAD_READHEADER_FAILED", - "LOAD_LOGOCRC_ERROR = 39", - "LOAD_READDLSIGN_FAILED", - "LOAD_RELOCATEINFO_FAILED", - "LOAD_READMODULE_FAILED", - "NINTENDO_LOGO_CHECK_FAILED", - "SYSMENU_VERSION", - "DHT_PHASE1_CALC_FAILED", - "LOAD_UNKNOWN_BOOTTYPE", - "LOAD_AUTH_HEADER_FAILED", - "LOAD_NEVER_STARTED", - "EJECT_CARD_AFTER_LOAD_START", - "TITLEID_COMPARE_FAILED_NTR" -}; diff --git a/build/tests/FatalErrorChecker/Makefile b/build/tests/FatalErrorChecker/Makefile deleted file mode 100644 index 35985393..00000000 --- a/build/tests/FatalErrorChecker/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - - #---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorChecker/banner/Makefile b/build/tests/FatalErrorChecker/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/FatalErrorChecker/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/FatalErrorChecker/banner/banner_v3.bsf b/build/tests/FatalErrorChecker/banner/banner_v3.bsf deleted file mode 100644 index 3690eee1..00000000 Binary files a/build/tests/FatalErrorChecker/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp b/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp deleted file mode 100644 index 1a32e5af..00000000 Binary files a/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile b/build/tests/FatalErrorMaker/ARM9/Makefile deleted file mode 100644 index 4144a38b..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile.0 b/build/tests/FatalErrorMaker/ARM9/Makefile.0 deleted file mode 100644 index 3208af96..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile.0 +++ /dev/null @@ -1,87 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorMaker -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -MEDIA = NAND -GAMECODE = 012A -TARGET_BIN = FatalErrorMaker.tad -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c fatalErrorMaker.c \ - $(MISC_DIR)/src/misc.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DFATALMAKER_GAMECODE=$(GAMECODE) \ - -DFATALMAKER_MEDIA=$(MEDIA) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile.1 b/build/tests/FatalErrorMaker/ARM9/Makefile.1 deleted file mode 100644 index 2f3dde27..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile.1 +++ /dev/null @@ -1,87 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorMaker -# File: makefile -# -# Copyright **** 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$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -MEDIA = GameCard -GAMECODE = 0G4A -TARGET_BIN = FatalErrorMaker.srl -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c fatalErrorMaker.c \ - $(MISC_DIR)/src/misc.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DFATALMAKER_GAMECODE=$(GAMECODE) \ - -DFATALMAKER_MEDIA=$(MEDIA) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/main.rsf b/build/tests/FatalErrorMaker/ARM9/main.rsf deleted file mode 100644 index 3637e711..00000000 --- a/build/tests/FatalErrorMaker/ARM9/main.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - - _GameCode $(FATALMAKER_GAMECODE) - - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "FatalMaker" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/$(FATALMAKER_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - LockSCFG FALSE - - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(FATALMAKER_MEDIA) - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(FATALMAKER_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c b/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c deleted file mode 100644 index c73b3cc4..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c +++ /dev/null @@ -1,379 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - FatalErrorMaker - File: fatalErrorMaker.c - - Copyright **** 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 -#include -#include "misc.h" -#include "fatalErrorMaker.h" - -#define NORMAL_INFO_PATH "nand:/sys/HWINFO_N.dat" -#define SECURE_INFO_PATH "nand:/sys/HWINFO_S.dat" -#define SHARED_FONT_PATH "nand:/sys/TWLFontTable.dat" -#define WIRELESS_TITLEID 0x0003000F484E4341 - -#define NOR_BUFSIZE 128 -#define NOR_SETTING_ADDRESS_OFFSET 0x20 -#define NOR_NANDFLAG_NEGATIVE_OFFSET ( 0x1fe00 - 0x1f380 ) -#define NOR_NANDFLAG_MASK 0x10 - -#define SELECT_MESSAGE "select data for breaking." -#define SUCCESS_MESSAGE "breaking data succeeded." -#define FAIL_MESSAGE "breaking data failed." -#define ALREADY_MESSAGE "this data is broken already." - -#define MENU_LINES 5 -#define INFORMATION_LEFT 20 -#define INFORMATION_UP 150 -#define SELECTION_LEFT 40 -#define RESULT_LEFT 190 -#define SELECTION_UP 30 -#define ALLOW_LEFT 25 -#define LINE_OFFSET 20 -#define HEADER_LEFT 5 -#define HEADER_UP 0 - -typedef enum FatalErrorTarget { - BREAK_HW_NORMAL = 0, - BREAK_HW_SECURE = 1, - BREAK_FONT = 2, - BREAK_WIRELESS = 3, - BREAK_NAND = 4 -} FatalErrorTarget; - - -typedef enum ControlResult { - CONTROL_RESULT_INITIAL = 0, - CONTROL_RESULT_SUCCESS = 1, - CONTROL_RESULT_FAILED = 2, - CONTROL_RESULT_ALREADY = 3, - CONTROL_RESULT_MOVE = 4, - CONTROL_RESULT_NONE = -1 -} ControlResult; - -ControlResult control( int *line, u8 *flag ); -void draw( int select, int result, int flag ); -BOOL breakNAND( void ); -BOOL breakData( FatalErrorTarget tgt ); -static void DumpBinary(u32 offset, void* data, u32 size); -void setParity( u8 *data ); - -static char* s_strInfo[4]; -static char* s_strMenu[ MENU_LINES ]; -static char* s_strFilePath[ MENU_LINES ]; - -void fatalMakerMain( void ) -{ - static int selectLine = 0; - static u8 brokenFlag = 0; // 0: NORMAL, 1: SECURE, 2: FONT, 3: WL, 4: NAND - ControlResult result ; - - result = control( &selectLine, &brokenFlag ); // 入力を呼んで状態を更新 - - // 画面の描画 - draw( selectLine, result , brokenFlag ); -} - -void draw( int select, int result, int flag ) -{ - static int lastBreakData; - static int lastStatus = CONTROL_RESULT_INITIAL; - int i; - - // 何らかの決定動作があった場合はlastBreakDataを更新 - if( result != CONTROL_RESULT_NONE && result != CONTROL_RESULT_MOVE ) - { - lastBreakData = select; - lastStatus = result; - } - - // 操作があったときはキャンパスクリア - if( result != CONTROL_RESULT_NONE ) - { - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - } - - // 項目の羅列 - for( i = 0; i < MENU_LINES; i++ ) - { - if( i == select ) - { - PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_GREEN, s_strMenu[i] ); - } - else - { - PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_BLACK, s_strMenu[i] ); - } - - // 破壊したかどうかの表示 - if( flag & (1 << i) ) - { - PrintfSJIS( RESULT_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_RED, "BROKEN" ); - } - } - - PrintfSJIS( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "Fatal Error Maker" ); - PrintfSJIS( INFORMATION_LEFT, INFORMATION_UP, TXT_COLOR_BLACK, s_strInfo[ lastStatus ] ); - PrintfSJIS( ALLOW_LEFT, SELECTION_UP + (select * LINE_OFFSET), TXT_COLOR_BLACK, "→" ); - -} - -ControlResult control( int *line, u8 *flag ) -{ - BOOL controlFlag = FALSE; // 何らかの操作があったかどうかをメモる - - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - // デクリメントしてマイナスになったらループ - if( --*line < 0 ) - { - *line = MENU_LINES-1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - // インクリメントしてmaxを超えたらループ - if( MENU_LINES <= ++*line ) - { - *line = 0; - } - } - - if( pad.trg & PAD_BUTTON_A ) - { - controlFlag = TRUE; - - // 選択項目を破壊する - if( *flag & (1 << *line) ) - { - // フラグが立ってたら既に破壊済みなので何もしない - return CONTROL_RESULT_ALREADY; - } - - // データを実際に破壊する - if( ! breakData( (FatalErrorTarget)*line ) ) - { - // 破壊に失敗 - return CONTROL_RESULT_FAILED; - } - - // 破壊成功 - *flag |= 1 << *line ; - return CONTROL_RESULT_SUCCESS; - } - - // 特に何も破壊しない - return controlFlag ? CONTROL_RESULT_MOVE : CONTROL_RESULT_NONE; -} - -BOOL breakData( FatalErrorTarget tgt ) -{ - switch( tgt ) - { - case BREAK_FONT: - case BREAK_HW_NORMAL: - case BREAK_HW_SECURE: - case BREAK_WIRELESS: - // SharedFont, NormalInfo, SecureInfoについては該当パスきめうちで削除してしまう - if( ! FS_DeleteFile( s_strFilePath[tgt] ) ) - { - OS_TPrintf( "FS_DeleteFile Error. file: %s err: %d\n" , - s_strFilePath[tgt], FS_GetArchiveResultCode( s_strFilePath[tgt] ) ); - - return FALSE; - } - - OS_TPrintf( "delete file succeeded. : %s\n", s_strFilePath[tgt] ); - return TRUE; - - case BREAK_NAND: - return breakNAND() ; - } - - // illegal argument - return FALSE; -} - -BOOL breakNAND( void ) -{ - static u8 buf[NOR_BUFSIZE] ; - u32 settingAddress; - NVRAMResult result; - - - // まずIPLヘッダから本体設定のあるオフセットを取得 - - // キャッシュを破棄 - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Read( NOR_SETTING_ADDRESS_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // readに失敗 - OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result ); - return FALSE; - } - - OS_TPrintf("reading address... %x %x \n", buf[0], buf[1] ); - - // 格納されている値の8倍が設定アドレスの開始アドレス - settingAddress = ( (u32)(buf[1]) << 8 | (u32)buf[0]) * 8 ; - OS_TPrintf("settingAddress : %x\n", settingAddress ); - - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Read( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // readに失敗 - OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result ); - return FALSE; - } - - DumpBinary( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , buf, NOR_BUFSIZE ); - - OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] ); - buf[ NOR_BUFSIZE - 1 ] |= NOR_NANDFLAG_MASK; - setParity( &buf[NOR_BUFSIZE-1] ); - OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] ); - - // キャッシュを書き戻して、それからnvramに書き込む - DC_StoreRange(buf, sizeof(buf)); - result = NVRAMi_Write( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - // 読み直す - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Verify( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // writeに失敗 - OS_TPrintf( "nvram_verify() failed. errorcode: %d\n", result ); - return FALSE; - } - - // 書き込み成功 - return TRUE; -} - -void fatalMakerInit( void ) -{ - static char filePath[NAM_PATH_LEN+1]; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - // 無線ファームのパスを取得する - NAM_GetTitleBootContentPath( filePath , WIRELESS_TITLEID); // - s_strFilePath[ BREAK_WIRELESS ] = filePath; - OS_TPrintf( "wireless path : %s\n", filePath ); -} - -static char* s_strInfo[] = { - SELECT_MESSAGE, - SUCCESS_MESSAGE, - FAIL_MESSAGE, - ALREADY_MESSAGE -}; - -static char* s_strMenu[] = { - "HW Normal Info", - "HW Secure Info", - "Shared Font", - "Wireless Firmware", - "NAND" -}; - -static char* s_strFilePath[] = { - NORMAL_INFO_PATH, - SECURE_INFO_PATH, - SHARED_FONT_PATH, - NULL, // 無線ファームのパスはあとからNAM経由で入れる - NULL -}; - - -/*---------------------------------------------------------------------------* - Name: DumpBinary - Description: バイナリデータを 16 進数表記でダンプ出力する。 - Arguments: offset - 先頭アドレスを指定。 - data - ダンプ表示するデータへのポインタ。 - size - ダンプ表示するデータ量をバイト単位で指定。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DumpBinary(u32 offset, void* data, u32 size) -{ -#pragma unused(data) - s32 i; - - if (size > 0) - { - if ((offset % 16) != 0) - { - OS_TPrintf("%08x:", (u32)(offset & ~0xf)); - for (i = 0; i < (offset % 16); i ++) - { - OS_TPrintf(" "); - if ((i % 16) == 7) - { - OS_TPrintf(" -"); - } - } - } - for (i = 0; i < size; i ++) - { - if (((offset + i) % 16) == 0) - { - OS_TPrintf("%08x:", offset + i); - } - OS_TPrintf(" %02x", ((u8*)data)[i]); - if (((offset + i) % 16) == 7) - { - OS_TPrintf(" -"); - } - else if (((offset + i) % 16) == 15) - { - OS_TPrintf("\n"); - } - } - if (((offset + i - 1) % 16) != 15) - { - OS_TPrintf("\n"); - } - } -} - -void setParity( u8 *data ) -{ - u8 i, parity; - - parity = 1; /* 通常と逆(1が奇数個で0になる)*/ - for( i=0; i<7; i++) { /* 0-7(最上位ビットがparity) */ - parity += ((*data >> i) & 0x01); - } - /* パリティビットを上書き */ - *data &= (u8)(~(0x80)); - *data |= ((parity << 7) & 0x80); -} \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h b/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h deleted file mode 100644 index 5ac04b27..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h +++ /dev/null @@ -1,34 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - FatalErrorMaker - File: fatalErrorMaker.h - - Copyright **** 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 __FATAL_ERROR_MAKE__ -#define __FATAL_ERROR_MAKE__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void fatalMakerMain( void ); -void fatalMakerInit( void ); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/ARM9/src/main.c b/build/tests/FatalErrorMaker/ARM9/src/main.c deleted file mode 100644 index c3b8f043..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/main.c +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** 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 -#include -#include -#include - - -#include "misc.h" -#include "fatalErrorMaker.h" - -///////////////////////////// - -void VBlankHandler( void ); - -///////////////////////////// - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ - - - -void TwlMain( void ) -{ - - OS_Init(); - OS_InitTick(); - OS_TPrintf("Initialize begin\n"); - - //---- interrupt setting - OS_EnableIrq(); - OS_EnableInterrupts(); - - GX_Init(); - - OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler ); - OS_EnableIrqMask( OS_IE_V_BLANK ); - GX_VBlankIntr( TRUE ); - - OS_TPrintf("RTC Initilize...\n"); - RTC_Init(); - - OS_TPrintf("Allocator Initialize...\n"); - InitAllocator(); - - - InitBG(); - OS_TPrintf("Initialize Finished\n"); - - NVRAMi_Init(); - FS_Init( FS_DMA_NOT_USE ); - CRYPTO_SetAllocator( Alloc, Free ); - NAM_Init( Alloc, Free ); - - - fatalMakerInit(); - OS_TPrintf("begin mainloop\n"); - - - // メインループ - while( 1 ) - { - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - - fatalMakerMain(); // ビューア更新 - } - - OS_Terminate(); - -} - - -void VBlankHandler(void) -{ - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vブランク割込チェックのセット -} diff --git a/build/tests/FatalErrorMaker/Makefile b/build/tests/FatalErrorMaker/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/FatalErrorMaker/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/about.txt b/build/tests/FatalErrorMaker/about.txt deleted file mode 100644 index c58fb52b..00000000 --- a/build/tests/FatalErrorMaker/about.txt +++ /dev/null @@ -1,22 +0,0 @@ -FatalErrorMaker - -NAND、無線ファーム、共有フォント、ノーマルHW情報、セキュアHW情報を -破壊し、意図的にFatal Errorを引き起こすテストです。 -起動するとメニューが表示されるので、破壊したい項目にカーソルを合わせてAボタンを押してください。 -共有フォント以外は次回起動時に確実にFatal Errorを引き起こすと考えられるので、 -NAND Initializerが利用できることを確認したうえで実行したほうがよいと思います。 - -手法としては、NAND以外の各データはそれぞれのファイルをFS_DeleteFile()で削除することで、 -NANDに関してはNORフラッシュにおけるNAND FATALエラーフラグ(IPL/docs/フラッシュマップ_NOR.xls参照)を -立てることで該当項目の破壊を実現しています。 - - -破壊しているファイルは具体的に以下の通りです。 - -共有フォント:nand:/sys/TWLFontTable.dat -ノーマル情報:nand:/sys/HWINFO_N.dat -セキュア情報:nand:/sys/HWINFO_S.dat - -また、無線ファームに関してはコンテンツとしてtitleフォルダ以下に配置されているので、 -NAMライブラリを利用してパスを取得してから削除しにいっています。 - diff --git a/build/tests/FatalErrorMaker/banner/Makefile b/build/tests/FatalErrorMaker/banner/Makefile deleted file mode 100644 index 960abdc6..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = \ - Makefile.012A Makefile.0G4A - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/banner/Makefile.012A b/build/tests/FatalErrorMaker/banner/Makefile.012A deleted file mode 100644 index cc294ddc..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile.012A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 012A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/FatalErrorMaker/banner/Makefile.0G4A b/build/tests/FatalErrorMaker/banner/Makefile.0G4A deleted file mode 100644 index 53a0164b..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile.0G4A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -GAMECODE = 0G4A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/FatalErrorMaker/banner/banner.bnr b/build/tests/FatalErrorMaker/banner/banner.bnr deleted file mode 100644 index 7faf2304..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner.bnr and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf b/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf deleted file mode 100644 index eaf83c8d..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf b/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf deleted file mode 100644 index 248fcb42..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/bannerOption.txt b/build/tests/FatalErrorMaker/banner/bannerOption.txt deleted file mode 100644 index f8313a29..00000000 --- a/build/tests/FatalErrorMaker/banner/bannerOption.txt +++ /dev/null @@ -1,2 +0,0 @@ -012A FatalErrorMaker_card -0G4A FatalErrorMaker_nand \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/banner/banner_v3.bsf b/build/tests/FatalErrorMaker/banner/banner_v3.bsf deleted file mode 100644 index 86449213..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/012A.bmp b/build/tests/FatalErrorMaker/banner/icon/012A.bmp deleted file mode 100644 index 8fb6cafb..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/012A.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp b/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp deleted file mode 100644 index d8d531eb..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp b/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp deleted file mode 100644 index 876eca5b..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FileRecoveryTest/Makefile b/build/tests/FileRecoveryTest/Makefile deleted file mode 100644 index c06e7830..00000000 --- a/build/tests/FileRecoveryTest/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - FileRecoveryTest -# File: Makefile -# -# Copyright **** 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:$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/util/ - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c - -LLIBRARIES += libsysmutil$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/FileRecoveryTest/main.rsf b/build/tests/FileRecoveryTest/main.rsf deleted file mode 100644 index 30b63f3e..00000000 --- a/build/tests/FileRecoveryTest/main.rsf +++ /dev/null @@ -1,269 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - Secure TRUE - AppType System -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/FileRecoveryTest/src/main.c b/build/tests/FileRecoveryTest/src/main.c deleted file mode 100644 index 460c313b..00000000 --- a/build/tests/FileRecoveryTest/src/main.c +++ /dev/null @@ -1,60 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: util_recoveryFile.h - - Copyright **** 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 -#include - -static char *s_strResult[4]; - -void VBlankIntr(void); - -void TwlMain( void ) -{ - char path[] = "nand:/tmp/a/b/c/d/hogehoge.dat"; - UTL_RecoveryStatus result; - - OS_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - - // とりあえずファイルサイズに16byte指定 - result = UTL_RecoveryFile( path, 0x0010 ); - - OS_TPrintf("recovery result: %d\n", result); - OS_TPrintf("%s\n", s_strResult[result] ); - OS_TPrintf( "*** End of demo\n" ); - OS_Terminate(); - - -} - -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -static char *s_strResult[] = { - "Target file exists and file size matched.", - "File size didn't match. Changing size succeeded.", - "Target file didn't exist. Creating file and setting size succeeded.", - "ERROR: File Recovery Failed." -}; \ No newline at end of file diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile b/build/tests/HashCheckTemplate/ARM7/Makefile deleted file mode 100644 index e2d8e1b7..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb Makefile_ltd_offset - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_hyb b/build/tests/HashCheckTemplate/ARM7/Makefile_hyb deleted file mode 100644 index 0f47bbf5..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_hyb +++ /dev/null @@ -1,88 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = HYBRID -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = mongoose_hct - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = mongoose_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/mongoose.TWL/mongoose.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/mongoose.TWL/mongoose.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.HYB/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.HYB.TWL.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -# If THUMB, use ARM libraries -# CODEGEN が THUMB の場合、ARM でビルドしたものを THUMB として装います。 -ifeq ($(TARGET_CODEGEN),THUMB) -TWL_LIBSUFFIX = .TWL$(ARCHGEN_TYPE) -CODEGEN_CC = ARM -endif - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='$(if $(ISDBG_LIBS_NITRO),$(ISDBG_LIBS_NITRO),libstubsisd_sp$(TWL_LIBSUFFIX).a)' - -#-------------------------------- -# install target -#-------------------------------- -INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ - $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include - -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a \ - - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd b/build/tests/HashCheckTemplate/ARM7/Makefile_ltd deleted file mode 100644 index 5893c9ca..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd +++ /dev/null @@ -1,81 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon_hct - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = racoon_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.LTD.TWL.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#MACRO_FLAGS += -DSDK_ARM7COMP_LTD - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DADDRESS_FLXMAIN='0x02380000' - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset b/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset deleted file mode 100644 index 123e2195..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset +++ /dev/null @@ -1,83 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon_hct_offset - -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = racoon_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.LTD.TWL.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#MACRO_FLAGS += -DSDK_ARM7COMP_LTD - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DADDRESS_FLXMAIN='0x02390000' - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf b/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf deleted file mode 100644 index 78e6357d..00000000 --- a/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf +++ /dev/null @@ -1,172 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: mongoose.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - Library $(CRT0_O) \ - libos_sp$(LIBSUFFIX).a \ - libsyscall_sp.twl.a \ - libmi_sp$(LIBSUFFIX).a - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address 0x037f8000 - - Library libsubpsyscall.a - Library $(CW_LIBS) - Library libpad_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libctrdg_sp$(LIBSUFFIX).a - - Object * (.etable) - Object * (.wram) - Object $(OBJDIR)/main.o - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AddTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlCmdIf.o - ## Object OBJECT( RequestCmdTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WStop , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp.TWL$(ARCHGEN).a ) (.text) - -} - -#-------- -Autoload MAIN -{ - Address 0x02fe0000 - Library librtc_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libwl_sp.TWL$(ARCHGEN).a - Library $(ISDBG_LIBS_NITRO) - Library $(ISDBG_LIBS_TWL) -} - -#-------- -Ltdautoload LTDWRAM -{ - Address 0x03000000 - Object * (.ltdwram) - Library libi2c_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libaes_sp$(LIBSUFFIX).a - - Library libsdio_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text) - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs - -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - Object * (.ltdmain) - Library libnwm_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a -} diff --git a/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf b/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf deleted file mode 100644 index 2928fee8..00000000 --- a/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf +++ /dev/null @@ -1,231 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address $(ADDRESS_FLXMAIN) - Library $(CRT0_O) \ - libos_sp$(LIBSUFFIX).a \ - libsyscall_sp.twl.a \ - libmi_sp$(LIBSUFFIX).a - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address $(ADDRESS_LTDWRAM) - - Library libsubpsyscall.a \ - $(CW_LIBS) \ - libpad_sp$(LIBSUFFIX).a \ - libpxi_sp$(LIBSUFFIX).a \ - libstd_sp$(LIBSUFFIX).a \ - libexi_sp$(LIBSUFFIX).a \ - libsnd_sp$(LIBSUFFIX).a \ - libspi_sp$(LIBSUFFIX).a \ - libpm_sp$(LIBSUFFIX).a \ - libmath_sp$(LIBSUFFIX).a \ - libscfg_sp$(LIBSUFFIX).a \ - libtp_sp$(LIBSUFFIX).a \ - libmic_sp$(LIBSUFFIX).a \ - libfs_sp$(LIBSUFFIX).a \ - libcard_sp$(LIBSUFFIX).a \ - libi2c_sp$(LIBSUFFIX).a \ - libcamera_sp$(LIBSUFFIX).a \ - libcdc_sp$(LIBSUFFIX).a \ - libsndex_sp$(LIBSUFFIX).a \ - libtpex_sp$(LIBSUFFIX).a \ - libmicex_sp$(LIBSUFFIX).a \ - libmcu_sp$(LIBSUFFIX).a \ - - Library libsdio_sp$(LIBSUFFIX).a - - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - - - Object * (.etable) - Object * (.wram) - Object * (.ltdwram) - Object $(OBJDIR)/main.o - - # caches in fatfs library, that should be on WRAM. - # 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、 - # 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。 -# Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlCmdIf.o - Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - - -} - -#-------- -Ltdautoload RSVWRAM -{ - Address 0x03040000 - Object * (.rsvwram) - Library libathdrv_sp$(LIBSUFFIX).a (.bss) - Library libathdrv_sp$(LIBSUFFIX).a (.data) - - ##### - # Sub-routines in TWL WIRELESS Driver , that should be on WRAM. - Object OBJECT( HTCSendPktCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCIssueSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCTrySend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCSendPkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessCreditRpt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRecvPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessRecvHeader, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvCompleteHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvMessagePendingHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAddReceivePkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KFreeIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KAllocIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevGetEventAsyncHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevCheckPendingRecvMsgsAsync, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevDsrHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFReadWrite, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifIRQHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFAckInterrupt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_credit_distribute, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_put, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_push, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_pull, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_free, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_data, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_len, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_headroom, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_drv_return_netbuf, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_remove_from_head, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_insert_tail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_alloc_cookie, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_driver_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_tx_complete, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_dix_2_dot3, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_add, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_remove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_ibss_map_epid, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListInsertTail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListRemove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_control_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_cmd_send, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_control_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_implicit_create_pstream, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAllocControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCFreeControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text) - - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - - Object * (.ltdmain) - Library libwm_sp$(LIBSUFFIX).a \ - libnwm_sp$(LIBSUFFIX).a \ - libwvr_sp$(LIBSUFFIX).a \ - libwl_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Library libfatfs_sp$(LIBSUFFIX).a \ - libaes_sp$(LIBSUFFIX).a - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) -} diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile b/build/tests/HashCheckTemplate/ARM9/Makefile deleted file mode 100644 index a63deeb2..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile_hyb b/build/tests/HashCheckTemplate/ARM9/Makefile_hyb deleted file mode 100644 index 79a3f290..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile_hyb +++ /dev/null @@ -1,75 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = HYBRID - -TARGET_NAME = HashCheckTemplate -TARGET_BIN = $(TARGET_NAME).tad - -TITLEID_LO = 0DTA - -ROM_SPEC = main.rsf -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/rom_header_$(call toLower,$(TITLEID_LO)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/libsyscall.a - -MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc - -SRCS = main.c HashCheckTemplate.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -#デバッグ用パラメータ追加 -MAKEROM_FLAGS += -DSYSCALL_C='$(call empath,$(LIBSYSCALL:.a=_c.bin))' \ - -DARM9FLX_EXPAND=0x27c000 \ - -DARM7FLX_EXPAND=0x40000 \ - -DARM9LTD_EXPAND=0x280000 \ - -DARM7LTD_EXPAND=0x108000 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.DEBUG.exe - -DEFAULT_COMP_ARM7 = mongoose_hct -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -LDIRT_CLEAN = $(TARGET_TAD) -INSTALL_TARGETS = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile_ltd b/build/tests/HashCheckTemplate/ARM9/Makefile_ltd deleted file mode 100644 index bf6f7936..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile_ltd +++ /dev/null @@ -1,75 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = LIMITED - -TARGET_NAME = HashCheckTemplate -TARGET_BIN = $(TARGET_NAME).tad - -TITLEID_LO = 0DTA - -ROM_SPEC = main.rsf -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/rom_header_$(call toLower,$(TITLEID_LO)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/libsyscall.a - -MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc - -SRCS = main.c HashCheckTemplate.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -#デバッグ用パラメータ追加 -MAKEROM_FLAGS += -DSYSCALL_C='$(call empath,$(LIBSYSCALL:.a=_c.bin))' \ - -DARM9FLX_EXPAND=0x27c000 \ - -DARM7FLX_EXPAND=0x40000 \ - -DARM9LTD_EXPAND=0x280000 \ - -DARM7LTD_EXPAND=0x108000 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.DEBUG.exe - -DEFAULT_COMP_ARM7 = racoon_hct -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -LDIRT_CLEAN = $(TARGET_TAD) -INSTALL_TARGETS = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/main.rsf b/build/tests/HashCheckTemplate/ARM9/main.rsf deleted file mode 100644 index 8f742b9a..00000000 --- a/build/tests/HashCheckTemplate/ARM9/main.rsf +++ /dev/null @@ -1,185 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c b/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c deleted file mode 100644 index 3764fe64..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c +++ /dev/null @@ -1,151 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: HashCheckTemplate.c - - Copyright 2007 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 -#include -#include "misc.h" -#include "HashCheckTemplate.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define UNDEF_CODE 0xe7ffdeff - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- -static BOOL s_switch = TRUE; - -//static u32 dummy[1024*1024/2]={1,2,3,};//2MB - -// const data ----------------------------------------- - -//====================================================== -// 再配置チェッカー(多分ここからやる事は表示のみ) -//====================================================== - -/* -static void draw_sub1(u8 *ram_addr, u8 *header_addr, int y) -{ - int l; - PrintfSJIS(8,y,TXT_UCOLOR_DARKGREEN, "ARM9FLX ( VERIFY %s ) :",( (*(u32 *)0x02000180 == UNDEF_CODE) ? "OK" : "NG" )); - - for (l=0; l<20; l++) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), TXT_COLOR_BLACK, "%.2x", *(ram_addr+l)); - if(s_switch) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), (*(ram_addr+l) != *(header_addr+l)) ? TXT_COLOR_RED : TXT_COLOR_BLUE, "%.2x", *(header_addr+l)); - } - } -} -*/ - -static void draw_sub2(u8 *ram_addr, u8 *header_addr, int y, const u16 *str) -{ - int l; - PutStringUTF16(8,y,TXT_UCOLOR_DARKGREEN, str); - for (l=0; l<20; l++) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), TXT_COLOR_BLACK, "%.2x", *(ram_addr+l)); - if(s_switch ) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), (*(ram_addr+l) != *(header_addr+l)) ? TXT_COLOR_RED : TXT_COLOR_BLUE, "%.2x", *(header_addr+l)); - } - } -} - -static void encryObjdraw(void) -{ - int l; - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"decrypted encryObj (first 200 bytes)"); - for (l=0; l<50; l++) - { - PrintfSJIS(4+(l%4)*64, 24+12*(l/4), TXT_COLOR_BLACK, "%.8x", *(((u32 *)0x02000180)+l) ); - } -} - -static void draw() -{ - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"SelfDigestChecker"); - PutStringUTF16( 3 * 8, 1 * 12, TXT_COLOR_BLACK, (const u16 *)L"Press A to Check Digest...."); - - draw_sub2((u8 *)0x02000100, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x38c), 12*2+4, (const u16 *)L"ARM9FLX :" ); - draw_sub2((u8 *)0x02000120, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x314), 12*5+8, (const u16 *)L"ARM7FLX :" ); - draw_sub2((u8 *)0x02000140, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x350), 12*8+12, (const u16 *)L"ARM9LTD :" ); - draw_sub2((u8 *)0x02000160, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x364), 12*11+16, (const u16 *)L"ARM7LTD :" ); -} - -// 初期化 -void HashCheckTemplateInit( void ) -{ - GX_DispOff(); - GXS_DispOff(); - - draw(); - - GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); -} - -static u32 c; -// メインループ -void HashCheckTemplateMain(void) -{ - BOOL tp_cancel = FALSE; - - ReadTP(); // タッチパネル入力の取得 - - // [RETURN]ボタン押下チェック - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - if( ( pad.trg & PAD_BUTTON_A )) { - s_switch = !s_switch; - draw(); - } - - if( ( pad.trg & PAD_BUTTON_X )) { - encryObjdraw(); - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h b/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h deleted file mode 100644 index fe20f46a..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: HashCheckTemplate.h - - Copyright 2007 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 __HASH_CHECK_TEMPLATE_H__ -#define __HASH_CHECK_TEMPLATE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include - -// define data---------------------------------------------------------- - -void HashCheckTemplateInit( void ); -void HashCheckTemplateMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __HASH_CHECK_TEMPLATE_H__ diff --git a/build/tests/HashCheckTemplate/ARM9/src/main.c b/build/tests/HashCheckTemplate/ARM9/src/main.c deleted file mode 100644 index c42a2d4d..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/main.c +++ /dev/null @@ -1,87 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 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 -#include "misc.h" -#include "HashCheckTemplate.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // 初期化---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON - - // 割り込み許可---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // デバイス初期化------------------------------- - TP_Init(); - (void)RTC_Init(); - - // システムの初期化------------------ - OS_SetArenaHi(OS_ARENA_MAIN, (void *)0x02d00000);// arm9MMEMheap - InitAllocator(); - - InitBG(); - HashCheckTemplateInit(); - // メインループ---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - ReadTP(); // TP入力の取得 - - HashCheckTemplateMain(); - } -} - - -// ============================================================================ -// 割り込み処理 -// ============================================================================ - -// Vブランク割り込み -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット -} - diff --git a/build/tests/HashCheckTemplate/Makefile b/build/tests/HashCheckTemplate/Makefile deleted file mode 100644 index 96d468e9..00000000 --- a/build/tests/HashCheckTemplate/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner crt ARM7 ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/banner/Makefile b/build/tests/HashCheckTemplate/banner/Makefile deleted file mode 100644 index cf9ea411..00000000 --- a/build/tests/HashCheckTemplate/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/HashCheckTemplate/banner/banner_v3.bsf b/build/tests/HashCheckTemplate/banner/banner_v3.bsf deleted file mode 100644 index fb39aad4..00000000 Binary files a/build/tests/HashCheckTemplate/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp b/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp deleted file mode 100644 index 2d6194b1..00000000 Binary files a/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile b/build/tests/HashCheckTemplate/crt/ARM7/Makefile deleted file mode 100644 index 75aef4bf..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.LTD -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb b/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb deleted file mode 100644 index 1af439e1..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb +++ /dev/null @@ -1,52 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.HYB -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -override TWL_PROC = ARM7 - -# Avoid to use pre-compile-header of "nitro.h" -TWL_NO_STD_PCHDR = True - -# Avoid to build THUMB version object -override TARGET_CODEGEN = ARM - -# Avoid to build LIMITED version object -override TWL_ARCHGEN = HYBRID - -SRCDIR = src -INCDIR = ../common/include - -SRCS = crt0_hct.HYB.c -TARGET_OBJ = crt0_hct.HYB.TWL.o - -MACRO_FLAGS += -DSDK_NOINIT - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(OBJDIR)/$(TARGET_OBJ): $(OBJDIR)/$(SRCS:.c=.o) - $(CP) $< $@ - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd b/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd deleted file mode 100644 index 9b602b3f..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd +++ /dev/null @@ -1,52 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.LTD -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -override TWL_PROC = ARM7 - -# Avoid to use pre-compile-header of "nitro.h" -TWL_NO_STD_PCHDR = True - -# Avoid to build THUMB version object -override TARGET_CODEGEN = ARM - -# Avoid to build HYBRID version object -override TWL_ARCHGEN = LIMITED - -SRCDIR = src -INCDIR = ../common/include - -SRCS = crt0_hct.LTD.c -TARGET_OBJ = crt0_hct.LTD.TWL.o - -MACRO_FLAGS += -DSDK_NOINIT - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(OBJDIR)/$(TARGET_OBJ): $(OBJDIR)/$(SRCS:.c=.o) - $(CP) $< $@ - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c b/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c deleted file mode 100644 index 1e2a39f7..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c +++ /dev/null @@ -1,918 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.HYB.c - - Copyright 2007 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "boot_sync.h" - - - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); -void WVR_ShelterExtWram(void); -void INIT_InitializeScfg(void); - -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 - -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* 外部関数参照定義 */ -extern void OS_IrqHandler(void); -extern void _fp_init(void); -extern void __call_static_initializers(void); - -/* 内部関数プロトタイプ定義 */ -static void INITi_SetHMACSHA1ToAppParam(void); -static void INITi_DoAutoload(void); -static void INITi_ShelterLtdBinary(void); -static BOOL INITi_IsRunOnTwl( void ); -static void INITi_CopySysConfig( void ); -static void INITi_DetectMainMemorySize(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/* リンカスクリプトにより定義されるシンボル参照 */ -extern void SDK_WRAM_ARENA_LO(void); -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); - -void* const _start_ModuleParams[] = -{ - (void*)SDK_AUTOLOAD_LIST, - (void*)SDK_AUTOLOAD_LIST_END, - (void*)SDK_AUTOLOAD_START, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, // CompressedStaticEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_CURRENT_VERSION_NUMBER, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, // CompressedLtdautoloadEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LTDMAIN_START(void); - -void* const _start_LtdMainParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LTDMAIN_START, -}; - -#ifdef DEBUG_WRAM_SETTING -u32 const wramMapping[12] = { - 0x8d898581, 0x8c888480, 0x9c989490, 0x8c888480, - 0x9c989490, 0x00000000, 0x09403900, 0x09803940, - 0x00403000, 0x09403900, 0x09803940, 0x0300000f -}; -#endif - -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) -static const u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = -{ - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24, -}; - -/* IPL によってメインメモリ上に展開される情報のアドレス定義 */ -#define IPL_PARAM_DOWNLOAD_PARAMETER 0x023fe904 -#define IPL_PARAM_CARD_ROM_HEADER 0x023fe940 - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 の ShakeHand 関数と同期を取る。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - ARM9 同期用変数へのポインタ。 - r1 - ARM7 同期用変数へのポインタ。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; 同期変数9を共有メモリから読む */ - 0xe1d130b0, /* ldrh r3, [r1] ; 同期変数7を共有メモリから読む */ - 0xe2833001, /* @1: add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; 同期変数9の現状を共有メモリから読む */ - 0xe152000c, /* cmp r2, r12 ; 同期変数9の変化を判定する */ - 0x0afffffa, /* beq @1 ; 変化していなければループ */ - 0xe2833001, /* add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe12fff1e /* bx lr ; ハンドシェイク完了 */ -}; - -#ifdef DEBUG_WRAM_SETTING -/*---------------------------------------------------------------------------* - Name: WaitAgreement - Description: ARM9 の起動ベクタが特定の状態になるまで待つ。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - 同期用フェーズ管理変数へのポインタ。 - r1 - 待機するフェーズ番号。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_WaitAgreement[7] = -{ - 0xe1d020b0, /* @1: ldrh r2, [r0] ; フェーズ管理変数を共有メモリから読む */ - 0xe1510002, /* cmp r1, r2 ; 待機フェーズ番号と比較 */ - 0x012fff1e, /* bxeq lr ; 一致していれば待機完了 */ - 0xe3a03010, /* mov r3, #16 ; 空ループ回数初期化 */ - 0xe2533001, /* @2: subs r3, r3, #1 ; 空ループ回数 -- */ - 0x1afffffd, /* bne @2 ; 16 回ループ */ - 0xeafffff8 /* b @1 ; 先頭に戻る */ -}; -#endif - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 に特定の状態になったことを伝えた上で、Main 関数へジャンプ - する。メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - Main 関数のポインタ。Main 関数が Thumb コードである場合 - には、bx 命令でジャンプするため最下位ビットが 1 になって - いる必要がある。 - r1 - 同期用フェーズ管理変数へのポインタ。 - r2 - ARM9 に伝えるフェーズ番号。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[2] = -{ - 0xe1c120b0, /* strh r2, [r1] ; フェーズ管理変数を更新 */ - 0xe12fff10 /* bx r0 ; Main 関数へジャンプ */ -}; - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: 起動ベクタ。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* 割り込み禁止 */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0 - - /* ハンドシェイク用マイクロコードを専用 WRAM にコピー */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 -@001: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @001 - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - - // ロードされたアプリのダイジェストを計算してアプリ間パラメータに格納 - bl INITi_SetHMACSHA1ToAppParam - -@010: - /* スタックポインタ設定 */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for stack check code - - /* スタック領域をクリア */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* SCFG を HW_SYS_CONF_BUF へコピー */ - bl INIT_InitializeScfg - bl INITi_CopySysConfig - - /* TWL ハードウェア上で動作しているかどうかを調査 */ - bl INITi_IsRunOnTwl - bne @013 - - /* TWL ハードウェア上で動作している場合 */ - /* プリロードパラメータアドレスが格納されていない場合は、デフォルト値をセット */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - b @020 - -@013: /* NTR ハードウェア上で動作している場合 */ - /* ブートタイプが MB の場合のみ、ROM ヘッダ情報を所定位置にコピー */ - ldr r0, =HW_WM_BOOT_BUF - ldrh r0, [r0] - cmp r0, #OS_BOOTTYPE_DOWNLOAD_MB - bne @020 - /* カードの ROM ヘッダ情報を共有エリアに退避 */ - ldr r0, =HW_CARD_ROM_HEADER - ldr r1, =IPL_PARAM_CARD_ROM_HEADER - mov r2, #HW_CARD_ROM_HEADER_SIZE - bl INITi_Copy32 - /* ダウンロードパラメータ情報を共有エリアに退避 */ - ldr r0, =HW_DOWNLOAD_PARAMETER - ldr r1, =IPL_PARAM_DOWNLOAD_PARAMETER - mov r2, #HW_DOWNLOAD_PARAMETER_SIZE - bl INITi_Copy32 - -@020: - /* Autoload を実施 */ - bl INITi_DoAutoload - - /* STATIC ブロックの .bss セクションを 0 クリア */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - //---- detect main memory size - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - //---- set debug print window - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7<<8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR<<8) - strh r0, [r1, #2] -#endif - - /* 割り込みベクタ設定 */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ 用初期化 */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@030: - /* Main 関数へのジャンプ用マイクロコードをスタックの底にコピー */ - ldr r1, =microcode_GotoMain - ldr r0, [r1], #4 - str r0, [sp, #-4] - ldr r0, [r1] - str r0, [sp] - - /* マイクロコードを経由して Main 関数へジャンプ */ - ldr r0, =TwlSpMain - ldr r1, =HW_BOOT_SYNC_PHASE - mov r2, #BOOT_SYNC_PHASE_4 - ldr lr, =HW_RESET_VECTOR - sub r3, sp, #4 - bx r3 -} - -#include -#include -#include -/*---------------------------------------------------------------------------* - Name: INITi_SetHMACSHA1ToAppParam - Description: ROMがロードされた各アプリ領域のHMACSHA1を計算し、特定のアドレ - スに保存 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -#define UNDEF_CODE 0xe7ffdeff -#define ENCRYPT_DEF_SIZE 0x800 -#define DGT_TGT_ADDR ( HW_MAIN_MEM + 0x0100 ) - -static void INITi_SetHMACSHA1ToAppParam(void) -{ - SVCHMACSHA1Context *pCon = ( SVCHMACSHA1Context * ) (0x2000300 - sizeof(SVCHMACSHA1Context)); - ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; - u32 bak; - - // arm9_flx - bak = *(u32 *)pROMH->main_autoload_done; - *(u32 *)pROMH->main_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ram_address, pROMH->main_size); - SVC_HMACSHA1GetHash(pCon, (void *)DGT_TGT_ADDR); - *(u32 *)pROMH->main_autoload_done = bak; - // arm7_flx - bak = *(u32 *)pROMH->sub_autoload_done; - *(u32 *)pROMH->sub_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ram_address, pROMH->sub_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 32)); - *(u32 *)pROMH->sub_autoload_done = bak; - // arm9_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ltd_ram_address, pROMH->main_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 2 * 32)); - // arm7_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ltd_ram_address, pROMH->sub_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 3 * 32)); -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: リンク情報に沿って、各オートロードブロックの固定データ部の展開 - 及び変数部の 0 クリアを行う。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -/* - * < 二段階オートロード > - * 0x02380000 に crt0 及び一段目ロード元バイナリが配置されている。 - * NITRO と共有可能な WRAM 上に配置されるべきバイナリデータを 0x037f8000 にロードする。 - * NITRO と共有可能な MAIN 上に配置されるべきバイナリデータを 0x02fe0000 にロードする。 - * NITRO と共有可能な VRAM 上に配置されるべきバイナリデータがある場合は WVR ライブラリのローダ関数を呼び出す。 - * 0x02400000 に ARM9 の二段目ロード元バイナリが配置されている。 - * 0x04000 バイト分はカード ROM から再読み出し不可なので、0x02f80000 - 0x02f84000 に退避する。 - * 0x02e80000 に二段目ロード元バイナリが配置されている。 - * 0x04000 バイト分はカード ROM から再読み出し不可なので、0x02f84000 - 0x02f88000 に退避する。 - * TWL でしか動作しない WRAM 上に配置されるべきバイナリデータを 0x03000000 にロードする。 - * TWL でしか動作しない MAIN 上に配置されるべきバイナリデータを 0x02f88000 にロードする。 - */ -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - -@01_autoload: - /* NITRO 共用ブロックをオートロード */ - ldr r0, =_start_ModuleParams - ldr r12, [r0] // r12 = SDK_AUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_AUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@01_segments_loop: - cmp r12, r3 - bge @02_start - /* VRAM へのオートロードブロックかどうかを調査 */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, =HW_EXT_WRAM - cmp r0, r2 - beq @01_shelter_vram_segment - /* 固定セクション */ - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 // r0 = start address of source range of static initializers table -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the autoload segment - b @01_segments_loop - -@01_shelter_vram_segment: - ldr r2, [r12], #12 // r2 = size of fixed section - add r1, r1, r2 // r1 = end address of source range of the autoload segment - /* VRAM へのオートロードブロックをバックアップ */ - stmfd sp!, {r1, r3, r12} - bl WVR_ShelterExtWram - ldmfd sp!, {r1, r3, r12} - b @01_segments_loop - -@02_start: - /* TWL ハードウェア上で動作しているかどうか調査 */ - bl INITi_IsRunOnTwl - bne @03_start - /* 再読み出し不可部分を退避 */ - bl INITi_ShelterLtdBinary - - /* TWL 専用オートロードブロックの存在を確認 */ - ldr r1, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r1, #ROM_Header.s.sub_ltd_size] - cmp r0, #0 - beq @03_start - -@02_autoload: - /* TWL 専用ブロックをオートロード */ - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@02_segments_loop: - cmp r12, r3 - bge @03_start - /* 固定セクション */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the ltdautoload segment - b @02_segments_loop - -@03_start: - /* オートロード完了コールバック関数呼び出し */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -/*---------------------------------------------------------------------------* - Name: INITi_ShelterLtdBinary - Description: TWL 専用のオートロード元バイナリデータの内、カード ROM から - 再読み出しできない領域のデータを退避エリアに退避する。 - 再読み出しできない領域のデータは ARM7 用と ARM9 用の拡張常駐 - モジュールの2つに分かれている可能性があるので、冗長ではあるが - 両方の先頭から 0x4000 分をそれぞれ退避する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterLtdBinary(void) -{ - stmfd sp!, {lr} - - /* NAND からブートした場合には退避するデータの使い道がない為、処理をスキップ */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r3, #ROM_Header.s.titleID_Hi] - tst r0, #TITLE_ID_HI_MEDIA_MASK - ldmnefd sp!, {pc} - -@shelter_arm7_ltdautoload_src: - /* ARM7 用拡張常駐モジュールの存在を確認 */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_size] - cmp r1, #0 - beq @shelter_arm9_ltdautoload_src - - /* ARM7 用拡張常駐モジュールの先頭 16K bytes を退避 */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x4000 - bl INITi_Copy32 - -@shelter_arm9_ltdautoload_src: - /* ARM9 用拡張常駐モジュールの存在を確認 */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r1, [r3, #ROM_Header.s.main_ltd_size] - cmp r1, #0 - beq @end - - /* ARM9 用拡張常駐モジュールの先頭 16K bytes を退避 */ - ldr r1, [r3, #ROM_Header.s.main_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x8000 - bl INITi_Copy32 - -@end: - ldmfd sp!, {pc} -} - -#ifndef SDK_NOINIT -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: 各オートロードセグメント内の static initializer へのポインタ - テーブルを IRQ スタックの最上部に退避する。 - Arguments: ptr - セグメント内のポインタテーブルへのポインタ。 - テーブルは NULL で終端されている必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* 引数確認 */ - cmp r0, #0 - bxeq lr - - /* 退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* 退避場所先頭から空き場所を調査 */ -@001: ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 - - /* 空き場所にテーブルをコピー */ -@002: ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: 各オートロードセグメント内の static initializer を呼び出す。 - オートロード処理によって IRQ スタックの最上部に退避されている - 関数ポインタテーブルを一つずつ呼び出す。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* テーブル退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* テーブルに管理されているポインタを一つずつ呼び出し */ -@001: ldr r0, [r1] - cmp r0, #0 - beq @002 - stmdb sp!, {r1} - mov lr, pc - bx r0 - ldmia sp!, {r1} - /* 一旦呼び出したポインタはゼロクリア (IRQスタックを間借りしている為) */ - mov r0, #0 - str r0, [r1], #4 - b @001 - -@002: ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: オートロード完了コールバック。 - Arguments: argv - オートロードパラメータを保持している配列。 - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_IsRunOnTwl - - Description: check running platform - - This function is used in only Nitro-TWL hybrid mode. - (In Nitro mode and TWL limited mode, treated as constant) - - Arguments: None - - Returns: TRUE : running on TWL - FALSE : running on NITRO - *---------------------------------------------------------------------------*/ -static asm BOOL INITi_IsRunOnTwl( void ) -{ - ldr r0, =HW_PRV_WRAM_SYSRV - ldrb r0, [r0,#HWi_WSYS08_WRAMOFFSET] - and r0, r0, #HWi_WSYS08_ROM_ARM9SEC_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - moveq r0, #TRUE - movne r0, #FALSE - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。 - 処理の実体は crt0 の外部に定義するため、弱シンボルとする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -INIT_InitializeScfg(void) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CopySysConfig - - Description: copy SCFG registers to HW_SYS_CONF_BUF and HW_PRV_WRAM_SYSRV - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static asm void INITi_CopySysConfig( void ) -{ - //---- copy scfg setting - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - - Description: detect main memory size. - result is written into (u32*)HW_MMEMCHECKER_SUB. - value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB| - OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB] - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE 0x400000 -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void INITi_DetectMainMemorySize( void ) -{ - stmfd sp!, {lr} - - //---- detect memory size - mov r0, #OS_CONSOLE_SIZE_4MB - mov r1, #0 - - ldr r2, =HW_MMEMCHECKER_SUB - sub r3, r2, #OSi_IMAGE_DIFFERENCE -@1: - strh r1, [r2] - ldrh r12, [r3] - cmp r1, r12 - bne @2 - - add r1, r1, #1 - cmp r1, #2 // check 2 loop - bne @1 - - //---- 4MB - b @3 - - //---- 8MB or 16MB or 32MB -@2: - // check if running on twl/nitro - bl INITi_IsRunOnTwl - movne r0, #OS_CONSOLE_SIZE_8MB - bne @3 - - //---- 16MB or 32MB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - ldrb r2, [r3] - - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@4 subs r12, r12, #4 - bcs @4 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @3 - - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@5 subs r12, r12, #4 - bcs @5 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@3: - //---- check SMX_CNT - strb r2, [r3] - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - ldr r2, =HW_MMEMCHECKER_SUB - strh r0, [r2] - - ldmfd sp!, {lr} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: WVR_ShelterExtWram - Description: WVR ライブラリ用に 拡張 WRAM に配置されるオートロードブロックを - メインメモリに退避する関数のダミー。 - 実際に拡張 WRAM にライブラリを配置する必要のあるコンポーネント - では、当関数の強シンボルが別途リンクされる。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -WVR_ShelterExtWram(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 可能な限り 32 バイト単位で、半端な分は 4 バイト単位でコピーを - 行う。 - スタックを 36 バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - コピー先へのポインタ ( 4 バイトアライン )。 - r1 - コピー元へのポインタ ( 4 バイトアライン )。 - r2 - コピーする長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - コピー後のコピー先へのポインタ ( r0 + r2 )。 - r1 - コピー後のコピー元へのポインタ ( r1 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 可能な限り 32 バイト単位で、半端な分は 4 バイト単位でバッファ - 内容を指定データで埋める。 - スタックを 36 バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - バッファへのポインタ ( 4 バイトアライン )。 - r1 - バッファを埋める内容を 32 bit 値で指定。 - r2 - バッファを埋める長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - 処理後のバッファへのポインタ ( r0 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c b/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c deleted file mode 100644 index 110841fd..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c +++ /dev/null @@ -1,861 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.LTD.c - - Copyright 2007 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); -void INIT_InitializeScfg(void); - -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 - -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* 外部関数参照定義 */ -extern void OS_IrqHandler(void); -extern void _fp_init(void); -extern void __call_static_initializers(void); - -/* 内部関数プロトタイプ定義 */ -static void INITi_SetHMACSHA1ToAppParam(void); -static void INITi_DoAutoload(void); -static void INITi_ShelterLtdBinary(void); -static BOOL INITi_IsRunOnTwl( void ); -static void INITi_CopySysConfig( void ); -static void INITi_DetectMainMemorySize(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/* リンカスクリプトにより定義されるシンボル参照 */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); - -void* const _start_ModuleParams[] = -{ - (void*)SDK_AUTOLOAD_LIST, - (void*)SDK_AUTOLOAD_LIST_END, - (void*)SDK_AUTOLOAD_START, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, // CompressedStaticEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_CURRENT_VERSION_NUMBER, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, // CompressedLtdautoloadEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LTDMAIN_START(void); - -void* const _start_LtdMainParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LTDMAIN_START, -}; - -#ifdef DEBUG_WRAM_SETTING -u32 const wramMapping[12] = { - 0x8d898581, 0x8c888480, 0x9c989490, 0x8c888480, - 0x9c989490, 0x00000000, 0x09403900, 0x09803940, - 0x080037c0, 0x09403900, 0x09803940, 0x0000000f -}; -#endif - -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) -static const u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = -{ - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 の ShakeHand 関数と同期を取る。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - ARM9 同期用変数へのポインタ。 - r1 - ARM7 同期用変数へのポインタ。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; 同期変数9を共有メモリから読む */ - 0xe1d130b0, /* ldrh r3, [r1] ; 同期変数7を共有メモリから読む */ - 0xe2833001, /* @1: add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; 同期変数9の現状を共有メモリから読む */ - 0xe152000c, /* cmp r2, r12 ; 同期変数9の変化を判定する */ - 0x0afffffa, /* beq @1 ; 変化していなければループ */ - 0xe2833001, /* add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe12fff1e /* bx lr ; ハンドシェイク完了 */ -}; - -#ifdef DEBUG_WRAM_SETTING -/*---------------------------------------------------------------------------* - Name: WaitAgreement - Description: ARM9 の起動ベクタが特定の状態になるまで待つ。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - 同期用フェーズ管理変数へのポインタ。 - r1 - 待機するフェーズ番号。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_WaitAgreement[7] = -{ - 0xe1d020b0, /* @1: ldrh r2, [r0] ; フェーズ管理変数を共有メモリから読む */ - 0xe1510002, /* cmp r1, r2 ; 待機フェーズ番号と比較 */ - 0x012fff1e, /* bxeq lr ; 一致していれば待機完了 */ - 0xe3a03010, /* mov r3, #16 ; 空ループ回数初期化 */ - 0xe2533001, /* @2: subs r3, r3, #1 ; 空ループ回数 -- */ - 0x1afffffd, /* bne @2 ; 16 回ループ */ - 0xeafffff8 /* b @1 ; 先頭に戻る */ -}; -#endif - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 に特定の状態になったことを伝えた上で、Main 関数へジャンプ - する。メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - Main 関数のポインタ。Main 関数が Thumb コードである場合 - には、bx 命令でジャンプするため最下位ビットが 1 になって - いる必要がある。 - r1 - 同期用フェーズ管理変数へのポインタ。 - r2 - ARM9 に伝えるフェーズ番号。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[2] = -{ - 0xe1c120b0, /* strh r2, [r1] ; フェーズ管理変数を更新 */ - 0xe12fff10 /* bx r0 ; Main 関数へジャンプ */ -}; - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: 起動ベクタ。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* 割り込み禁止 */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0 - - /* ハンドシェイク用マイクロコードを専用 WRAM にコピー */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 -@001: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @001 - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - - // ロードされたアプリのダイジェストを計算してアプリ間パラメータに格納 - bl INITi_SetHMACSHA1ToAppParam - -@010: - /* スタックポインタ設定 */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for stack check code - mov r0, #HW_PSR_SYS_MODE - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for stack check code - - /* スタック領域をクリア */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* SCFG を HW_SYS_CONF_BUF へコピー */ - bl INIT_InitializeScfg - bl INITi_CopySysConfig - - /* TWL ハードウェア上で動作しているかどうかを調査 */ - bl INITi_IsRunOnTwl - /* TWL ハードウェア上で動作していない場合は永久ループ */ -@012: bne @012 - - /* プリロードパラメータアドレスが格納されていない場合は、デフォルト値をセット */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - -@020: - /* Autoload を実施 */ - bl INITi_DoAutoload - - /* STATIC ブロックの .bss セクションを 0 クリア */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - //---- detect main memory size - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - //---- set debug print window - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7<<8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR<<8) - strh r0, [r1, #2] -#endif - - /* 割り込みベクタ設定 */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ 用初期化 */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@030: - /* Main 関数へのジャンプ用マイクロコードをスタックの底にコピー */ - ldr r1, =microcode_GotoMain - ldr r0, [r1], #4 - str r0, [sp, #-4] - ldr r0, [r1] - str r0, [sp] - - /* マイクロコードを経由して Main 関数へジャンプ */ - ldr r0, =TwlSpMain - ldr r1, =HW_BOOT_SYNC_PHASE - mov r2, #BOOT_SYNC_PHASE_4 - ldr lr, =HW_RESET_VECTOR - sub r3, sp, #4 - bx r3 -} - -#include -#include -#include -/*---------------------------------------------------------------------------* - Name: INITi_SetHMACSHA1ToAppParam - Description: ROMがロードされた各アプリ領域のHMACSHA1を計算し、特定のアドレ - スに保存 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -#define UNDEF_CODE 0xe7ffdeff -#define ENCRYPT_DEF_SIZE 0x800 -#define DGT_TGT_ADDR ( HW_MAIN_MEM + 0x0100 ) - -static void INITi_SetHMACSHA1ToAppParam(void) -{ - SVCHMACSHA1Context *pCon = ( SVCHMACSHA1Context * ) (0x2000300 - sizeof(SVCHMACSHA1Context)); - ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; - u32 bak; - - // arm9_flx - bak = *(u32 *)pROMH->main_autoload_done; - *(u32 *)pROMH->main_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ram_address, pROMH->main_size); - SVC_HMACSHA1GetHash(pCon, (void *)DGT_TGT_ADDR); - *(u32 *)pROMH->main_autoload_done = bak; - // arm7_flx - bak = *(u32 *)pROMH->sub_autoload_done; - *(u32 *)pROMH->sub_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ram_address, pROMH->sub_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 32)); - *(u32 *)pROMH->sub_autoload_done = bak; - // arm9_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ltd_ram_address, pROMH->main_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 2 * 32)); - // arm7_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ltd_ram_address, pROMH->sub_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 3 * 32)); -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: リンク情報に沿って、各オートロードブロックの固定データ部の展開 - 及び変数部の 0 クリアを行う。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -/* - * < 二段階オートロード > - * 0x02380000 に crt0 及び一段目ロード元バイナリが配置されている。 - * NITRO と共有可能な WRAM 上に配置されるべきバイナリデータを 0x037c0000 にロードする。 - * TWL でしか動作しない WRAM 上に配置されるべきバイナリデータを続きのアドレスにロードする。 - * 0x02400000 に ARM9 の二段目ロード元バイナリが配置されている。 - * 0x04000 バイト分はカード ROM から再読み出し不可なので、0x02f80000 - 0x02f84000 に退避する。 - * 0x02e80000 に二段目ロード元バイナリが配置されている。 - * 0x04000 バイト分はカード ROM から再読み出し不可なので、0x02f84000 - 0x02f88000 に退避する。 - * NITRO と共有可能な MAIN 上に配置されるべきバイナリデータを 0x02f88000 にロードする。 - * TWL でしか動作しない MAIN 上に配置されるべきバイナリデータを続きのアドレスにロードする。 - */ -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - -@01_autoload: - /* WRAM 用ブロックをオートロード */ - ldr r0, =_start_ModuleParams - ldr r12, [r0] // r12 = SDK_AUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_AUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@01_segments_loop: - cmp r12, r3 - bge @02_start - /* 固定セクション */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 // r0 = start address of source range of static initializers table -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the autoload segment - b @01_segments_loop - -@02_start: -#ifndef SDK_SYSMENU_BUILD - /* 再読み出し不可部分を退避 */ - bl INITi_ShelterLtdBinary -#endif // SDK_SYSMENU_BUILD - - /* メインメモリ用オートロードブロックの存在を確認 */ - ldr r1, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r1, #ROM_Header.s.sub_ltd_size] - cmp r0, #0 - beq @03_start - -@02_autoload: - /* メインメモリ用ブロックをオートロード */ - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@02_segments_loop: - cmp r12, r3 - bge @03_start - /* 固定セクション */ - ldr r0, [r12], #4 - ldr r2, [r12], #4 - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} - mov r1, #0 - ldr r2, [r12], #4 - bl INITi_Fill32 - ldmfd sp!, {r1} - b @02_segments_loop - -@03_start: - /* オートロード完了コールバック関数呼び出し */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -/*---------------------------------------------------------------------------* - Name: INITi_ShelterLtdBinary - Description: TWL 専用のオートロード元バイナリデータの内、カード ROM から - 再読み出しできない領域のデータを退避エリアに退避する。 - 再読み出しできない領域のデータは ARM7 用と ARM9 用の拡張常駐 - モジュールの2つに分かれている可能性があるので、冗長ではあるが - 両方の先頭から 0x4000 分をそれぞれ退避する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterLtdBinary(void) -{ - stmfd sp!, {lr} - - /* NAND からブートした場合には退避するデータの使い道がない為、処理をスキップ */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r3, #ROM_Header.s.titleID_Hi] - tst r0, #TITLE_ID_HI_MEDIA_MASK - ldmnefd sp!, {pc} - -@shelter_arm7_ltdautoload_src: - /* ARM7 用拡張常駐モジュールの存在を確認 */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_size] - cmp r1, #0 - beq @shelter_arm9_ltdautoload_src - - /* ARM7 用拡張常駐モジュールの先頭 16K bytes を退避 */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x4000 - bl INITi_Copy32 - -@shelter_arm9_ltdautoload_src: - /* ARM9 用拡張常駐モジュールの存在を確認 */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r1, [r3, #ROM_Header.s.main_ltd_size] - cmp r1, #0 - beq @end - - /* ARM9 用拡張常駐モジュールの先頭 16K bytes を退避 */ - ldr r1, [r3, #ROM_Header.s.main_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x8000 - bl INITi_Copy32 - -@end: - ldmfd sp!, {pc} -} - -#ifndef SDK_NOINIT -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: 各オートロードセグメント内の static initializer へのポインタ - テーブルを IRQ スタックの最上部に退避する。 - Arguments: ptr - セグメント内のポインタテーブルへのポインタ。 - テーブルは NULL で終端されている必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* 引数確認 */ - cmp r0, #0 - bxeq lr - - /* 退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* 退避場所先頭から空き場所を調査 */ -@001: ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 - - /* 空き場所にテーブルをコピー */ -@002: ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: 各オートロードセグメント内の static initializer を呼び出す。 - オートロード処理によって IRQ スタックの最上部に退避されている - 関数ポインタテーブルを一つずつ呼び出す。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* テーブル退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* テーブルに管理されているポインタを一つずつ呼び出し */ -@001: ldr r0, [r1] - cmp r0, #0 - beq @002 - stmdb sp!, {r1} - mov lr, pc - bx r0 - ldmia sp!, {r1} - /* 一旦呼び出したポインタはゼロクリア (IRQスタックを間借りしている為) */ - mov r0, #0 - str r0, [r1], #4 - b @001 - -@002: ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: オートロード完了コールバック。 - Arguments: argv - オートロードパラメータを保持している配列。 - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_IsRunOnTwl - - Description: check running platform - - This function is used in only Nitro-TWL hybrid mode. - (In Nitro mode and TWL limited mode, treated as constant) - - Arguments: None - - Returns: TRUE : running on TWL - FALSE : running on NITRO - *---------------------------------------------------------------------------*/ -static asm BOOL INITi_IsRunOnTwl( void ) -{ - ldr r0, =HW_PRV_WRAM_SYSRV - ldrb r0, [r0,#HWi_WSYS08_WRAMOFFSET] - and r0, r0, #HWi_WSYS08_ROM_ARM9SEC_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - moveq r0, #TRUE - movne r0, #FALSE - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。 - 処理の実体は crt0 の外部に定義するため、弱シンボルとする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -INIT_InitializeScfg(void) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CopySysConfig - - Description: copy SCFG registers to HW_SYS_CONF_BUF and HW_PRV_WRAM_SYSRV - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static asm void INITi_CopySysConfig( void ) -{ - //---- copy scfg setting - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - - Description: detect main memory size. - result is written into (u32*)HW_MMEMCHECKER_SUB. - value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB| - OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB] - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE 0x400000 -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void INITi_DetectMainMemorySize( void ) -{ - stmfd sp!, {lr} - - //---- detect memory size - mov r0, #OS_CONSOLE_SIZE_4MB - mov r1, #0 - - ldr r2, =HW_MMEMCHECKER_SUB - sub r3, r2, #OSi_IMAGE_DIFFERENCE -@1: - strh r1, [r2] - ldrh r12, [r3] - cmp r1, r12 - bne @2 - - add r1, r1, #1 - cmp r1, #2 // check 2 loop - bne @1 - - //---- 4MB - b @3 - - //---- 8MB or 16MB or 32MB -@2: - // check if running on twl/nitro - bl INITi_IsRunOnTwl - movne r0, #OS_CONSOLE_SIZE_8MB - bne @3 - - //---- 16MB or 32MB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - ldrb r2, [r3] - - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@4 subs r12, r12, #4 - bcs @4 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @3 - - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@5 subs r12, r12, #4 - bcs @5 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@3: - //---- check SMX_CNT - strb r2, [r3] - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - ldr r2, =HW_MMEMCHECKER_SUB - strh r0, [r2] - - ldmfd sp!, {lr} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 可能な限り 32 バイト単位で、半端な分は 4 バイト単位でコピーを - 行う。 - スタックを 36 バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - コピー先へのポインタ ( 4 バイトアライン )。 - r1 - コピー元へのポインタ ( 4 バイトアライン )。 - r2 - コピーする長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - コピー後のコピー先へのポインタ ( r0 + r2 )。 - r1 - コピー後のコピー元へのポインタ ( r1 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 可能な限り 32 バイト単位で、半端な分は 4 バイト単位でバッファ - 内容を指定データで埋める。 - スタックを 36 バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - バッファへのポインタ ( 4 バイトアライン )。 - r1 - バッファを埋める内容を 32 bit 値で指定。 - r2 - バッファを埋める長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - 処理後のバッファへのポインタ ( r0 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/HashCheckTemplate/crt/Makefile b/build/tests/HashCheckTemplate/crt/Makefile deleted file mode 100644 index e7337139..00000000 --- a/build/tests/HashCheckTemplate/crt/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = ARM7 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h b/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h deleted file mode 100644 index c744ffe2..00000000 --- a/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - common - File: boot_sync.h - - Copyright 2007 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 TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ -#define TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ -#ifdef __cplusplus -extern "C" { -#endif -/*---------------------------------------------------------------------------*/ - -#define BOOT_SYNC_PHASE_1 1 -#define BOOT_SYNC_PHASE_2 2 -#define BOOT_SYNC_PHASE_3 3 -#define BOOT_SYNC_PHASE_4 4 -#define BOOT_SYNC_PHASE_5 5 -#define BOOT_SYNC_PHASE_6 6 - -/*---------------------------------------------------------------------------*/ -#ifdef __cplusplus -} /* extern "C" */ -#endif -#endif /* TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ */ diff --git a/build/tests/HashCheckTemplate/memo.txt b/build/tests/HashCheckTemplate/memo.txt deleted file mode 100644 index cf41343d..00000000 --- a/build/tests/HashCheckTemplate/memo.txt +++ /dev/null @@ -1,49 +0,0 @@ -【ISデバッガがコードを変更する箇所】 -・ARM9.flx.static, ARM7.flx.static - _start_AutoloadDoneCallbackの先頭コードをISデバッガのモニタプログラムへの分岐に書き換えるので、 - ハッシュを正しく計算する場合は、そのアドレスのコードを元々の値である0xE12FFF1E(= BX LR)にアプリで書き換えてやる - 必要がある。 -・ブレークポイント設定箇所 - ブレークポイント設定箇所は、デバッガによって未定義命令が埋め込まれるので、ハッシュを正しく計算する場合は、全ての - ブレークポイントを無効にする必要がある。 - -なお、これらは、単体ブートなら何もケアしなくてOK. - - - -【blowfish暗号化システムコール】 -ARM9FLXの先頭0x800バイト(2kバイト)はシステムコールが配置され、Blowfish暗号化されている(暗号化領域)。 -で、ランチャーがブート直前に暗号化を解除する。 -ヘッダに埋め込まれているARM9FLXのハッシュは、暗号化された状態でのハッシュである。 -HashCheckTemplateでARM9FLXのハッシュを計算する時点では、すでに暗号化が解除されているため、計算が合わない。 -どうにかして解除前の暗号化領域を手に入れる必要がある。 - - -・ROMヘッダが"NTRJ"の場合 - アプリケーション上で上記暗号領域を00で埋めれば計算が合う。 - HashCheckTemplateのようなテストプログラムでは、暗号化領域は00で埋められるためである。 - <暗号化領域が00であった事の確認> - 1)暗号解除時、先頭0x800バイトのうち先頭2バイトの暗号解除結果が"encryObj"でない場合は全体の暗号解除をせず、特殊処理 -  として未定義命令コード(0xe7ffdeff)で埋められる。 -  よって、暗号化領域に当たる部分が実行時に未定義命令コードで埋まってるのを確認すれば良い。 - - 2)makerom特別版のmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exeを使用する。(SDKに添付) -  このmakeromを使用して、MAKEROM_FLAGSで、-DSYSCALL_Cの指定をしなかった場合、ROMヘッダのnitro_whitelist_phase2_diegstに -  上記暗号領域を除いた状態のARM9.FLX.staticのハッシュ値が格納される。 - -・ROMヘッダが"NTRJ"以外の正式ROMヘッダを使用している場合 - makerom特別版のmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exeを使用する。(SDKに添付) - このmakeromを使用して、MAKEROM_FLAGS += -DSYSCALL_C='hoge/libsyscall_c.bin'の形式で、正式版ROMヘッダに添付している - クローンブート用のデコード済みシステムコールバイナリを指定することで、ROMヘッダのnitro_whitelist_phase2_diegstに - 上記暗号領域をデコードした状態のARM9.FLX.staticのハッシュ値が格納される。 - - - -【staticサイズ拡張】 - makerom特別版のmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exeを使用する。(SDKに添付) - MAKEROM_FLAGSに下記定義を追加することで、対象セグメントを指定サイズ分ランダム値で拡張できる。 - ARM9.FLX.static : -DARM9FLX_EXPAND=拡張サイズ (ランチャーで正常ブート可能 max サイズ = 0x27c000) - ARM7.FLX.static : -DARM7FLX_EXPAND=拡張サイズ (  〃           max サイズ = 0x40000) - ARM9.LTD.static : -DARM9LTD_EXPAND=拡張サイズ (  〃           max サイズ = 0x280000) - ARM7.LTD.static : -DARM7LTD_EXPAND=拡張サイズ (  〃           max サイズ = 0x108000) - diff --git a/build/tests/HashCheckTemplate/test_roms/rombreak.bat b/build/tests/HashCheckTemplate/test_roms/rombreak.bat deleted file mode 100644 index 83c6ea10..00000000 --- a/build/tests/HashCheckTemplate/test_roms/rombreak.bat +++ /dev/null @@ -1,199 +0,0 @@ -mkdir break_dev -mkdir prod -mkdir break_prod - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0E8A.srl -b HEADER -o "break_dev/twl_0E8A.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0E9A.nand.srl -b HEADER -o "break_dev/twl_0E9A.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EAA.srl -b ARM9FLX -o "break_dev/twl_0EAA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EBA.nand.srl -b ARM9FLX -o "break_dev/twl_0EBA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ECA.srl -b ARM7FLX -o "break_dev/twl_0ECA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EDA.nand.srl -b ARM7FLX -o "break_dev/twl_0EDA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EEA.srl -b ARM9LTD -o "break_dev/twl_0EEA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EFA.nand.srl -b ARM9LTD -o "break_dev/twl_0EFA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EGA.srl -b ARM7LTD -o "break_dev/twl_0EGA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EHA.nand.srl -b ARM7LTD -o "break_dev/twl_0EHA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EIA.nand.srl -b HEADER -o "break_dev/twl_0EIA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EJA.nand.srl -b ARM9FLX -o "break_dev/twl_0EJA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EKA.nand.srl -b ARM7FLX -o "break_dev/twl_0EKA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ELA.nand.srl -b ARM9LTD -o "break_dev/twl_0ELA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EMA.nand.srl -b ARM7LTD -o "break_dev/twl_0EMA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ENA.srl -b HEADER -o "break_dev/twl_0ENA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EOA.nand.srl -b HEADER -o "break_dev/twl_0EOA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EPA.srl -b ARM9FLX -o "break_dev/twl_0EPA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EQA.nand.srl -b ARM9FLX -o "break_dev/twl_0EQA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ERA.srl -b ARM7FLX -o "break_dev/twl_0ERA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ESA.nand.srl -b ARM7FLX -o "break_dev/twl_0ESA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ETA.srl -b ARM9LTD -o "break_dev/twl_0ETA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EUA.nand.srl -b ARM9LTD -o "break_dev/twl_0EUA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EVA.srl -b ARM7LTD -o "break_dev/twl_0EVA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EWA.nand.srl -b ARM7LTD -o "break_dev/twl_0EWA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0E8A.srl "prod/twl_0E8A.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0E9A.nand.srl "prod/twl_0E9A.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EAA.srl "prod/twl_0EAA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EBA.nand.srl "prod/twl_0EBA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ECA.srl "prod/twl_0ECA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EDA.nand.srl "prod/twl_0EDA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EEA.srl "prod/twl_0EEA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EFA.nand.srl "prod/twl_0EFA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EGA.srl "prod/twl_0EGA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EHA.nand.srl "prod/twl_0EHA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EIA.nand.srl "prod/twl_0EIA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EJA.nand.srl "prod/twl_0EJA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EKA.nand.srl "prod/twl_0EKA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ELA.nand.srl "prod/twl_0ELA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EMA.nand.srl "prod/twl_0EMA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ENA.srl "prod/twl_0ENA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EOA.nand.srl "prod/twl_0EOA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EPA.srl "prod/twl_0EPA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EQA.nand.srl "prod/twl_0EQA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ERA.srl "prod/twl_0ERA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ESA.nand.srl "prod/twl_0ESA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ETA.srl "prod/twl_0ETA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EUA.nand.srl "prod/twl_0EUA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EVA.srl "prod/twl_0EVA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EWA.nand.srl "prod/twl_0EWA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0E8A.srl -b HEADER -o "break_prod/twl_0E8A.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0E9A.nand.srl -b HEADER -o "break_prod/twl_0E9A.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EAA.srl -b ARM9FLX -o "break_prod/twl_0EAA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EBA.nand.srl -b ARM9FLX -o "break_prod/twl_0EBA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ECA.srl -b ARM7FLX -o "break_prod/twl_0ECA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EDA.nand.srl -b ARM7FLX -o "break_prod/twl_0EDA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EEA.srl -b ARM9LTD -o "break_prod/twl_0EEA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EFA.nand.srl -b ARM9LTD -o "break_prod/twl_0EFA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EGA.srl -b ARM7LTD -o "break_prod/twl_0EGA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EHA.nand.srl -b ARM7LTD -o "break_prod/twl_0EHA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EIA.nand.srl -b HEADER -o "break_prod/twl_0EIA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EJA.nand.srl -b ARM9FLX -o "break_prod/twl_0EJA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EKA.nand.srl -b ARM7FLX -o "break_prod/twl_0EKA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ELA.nand.srl -b ARM9LTD -o "break_prod/twl_0ELA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EMA.nand.srl -b ARM7LTD -o "break_prod/twl_0EMA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ENA.srl -b HEADER -o "break_prod/twl_0ENA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EOA.nand.srl -b HEADER -o "break_prod/twl_0EOA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EPA.srl -b ARM9FLX -o "break_prod/twl_0EPA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EQA.nand.srl -b ARM9FLX -o "break_prod/twl_0EQA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ERA.srl -b ARM7FLX -o "break_prod/twl_0ERA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ESA.nand.srl -b ARM7FLX -o "break_prod/twl_0ESA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ETA.srl -b ARM9LTD -o "break_prod/twl_0ETA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EUA.nand.srl -b ARM9LTD -o "break_prod/twl_0EUA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EVA.srl -b ARM7LTD -o "break_prod/twl_0EVA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EWA.nand.srl -b ARM7LTD -o "break_prod/twl_0EWA.nand.srl" - - -mkdir "break_dev/tad" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0E9A.nand.srl -v 0 -o break_dev/tad/twl_0E9A.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EBA.nand.srl -v 0 -o break_dev/tad/twl_0EBA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EDA.nand.srl -v 0 -o break_dev/tad/twl_0EDA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EFA.nand.srl -v 0 -o break_dev/tad/twl_0EFA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EHA.nand.srl -v 0 -o break_dev/tad/twl_0EHA.tad - -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EIA.nand.srl -s -v 0 -o break_dev/tad/twl_0EIA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EJA.nand.srl -s -v 0 -o break_dev/tad/twl_0EJA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EKA.nand.srl -s -v 0 -o break_dev/tad/twl_0EKA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0ELA.nand.srl -s -v 0 -o break_dev/tad/twl_0ELA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EMA.nand.srl -s -v 0 -o break_dev/tad/twl_0EMA.tad - -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EOA.nand.srl -s -v 0 -o break_dev/tad/twl_0EOA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EQA.nand.srl -s -v 0 -o break_dev/tad/twl_0EQA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0ESA.nand.srl -s -v 0 -o break_dev/tad/twl_0ESA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EUA.nand.srl -s -v 0 -o break_dev/tad/twl_0EUA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EWA.nand.srl -s -v 0 -o break_dev/tad/twl_0EWA.tad - -mkdir "break_prod/0E9A/v0" -cd "break_prod/0E9A/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0E9A.nand.srl -v 0 -p -o twl_0E9A.tad -mv properties ../ -cd ../../ - -mkdir "0EBA/v0" -cd "0EBA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EBA.nand.srl -v 0 -p -o twl_0EBA.tad -mv properties ../ -cd ../../ - -mkdir "0EDA/v0" -cd "0EDA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EDA.nand.srl -v 0 -p -o twl_0EDA.tad -mv properties ../ -cd ../../ - -mkdir "0EFA/v0" -cd "0EFA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EFA.nand.srl -v 0 -p -o twl_0EFA.tad -mv properties ../ -cd ../../ - -mkdir "0EHA/v0" -cd "0EHA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EHA.nand.srl -v 0 -p -o twl_0EHA.tad -mv properties ../ -cd ../../ - - -mkdir "0EIA/v0" -cd "0EIA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EIA.nand.srl -s -v 0 -p -o twl_0EIA.tad -mv properties ../ -cd ../../ - -mkdir "0EJA/v0" -cd "0EJA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EJA.nand.srl -s -v 0 -p -o twl_0EJA.tad -mv properties ../ -cd ../../ - -mkdir "0EKA/v0" -cd "0EKA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EKA.nand.srl -s -v 0 -p -o twl_0EKA.tad -mv properties ../ -cd ../../ - -mkdir "0ELA/v0" -cd "0ELA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0ELA.nand.srl -s -v 0 -p -o twl_0ELA.tad -mv properties ../ -cd ../../ - -mkdir "0EMA/v0" -cd "0EMA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EMA.nand.srl -s -v 0 -p -o twl_0EMA.tad -mv properties ../ -cd ../../ - - -mkdir "0EOA/v0" -cd "0EOA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EOA.nand.srl -s -v 0 -p -o twl_0EOA.tad -mv properties ../ -cd ../../ - -mkdir "0EQA/v0" -cd "0EQA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EQA.nand.srl -s -v 0 -p -o twl_0EQA.tad -mv properties ../ -cd ../../ - -mkdir "0ESA/v0" -cd "0ESA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0ESA.nand.srl -s -v 0 -p -o twl_0ESA.tad -mv properties ../ -cd ../../ - -mkdir "0EUA/v0" -cd "0EUA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EUA.nand.srl -s -v 0 -p -o twl_0EUA.tad -mv properties ../ -cd ../../ - -mkdir "0EWA/v0" -cd "0EWA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EWA.nand.srl -s -v 0 -p -o twl_0EWA.tad -mv properties ../ -cd ../../ diff --git a/build/tests/HashCheckTemplate/test_roms/遐エ螢翫★縺ソROM縺ョ菴懊j譁ケ.txt b/build/tests/HashCheckTemplate/test_roms/遐エ螢翫★縺ソROM縺ョ菴懊j譁ケ.txt deleted file mode 100644 index 10b74350..00000000 --- a/build/tests/HashCheckTemplate/test_roms/遐エ螢翫★縺ソROM縺ョ菴懊j譁ケ.txt +++ /dev/null @@ -1,9 +0,0 @@ -TestMakerで - -make boottest -make - -したあと、このディレクトリが作業ディレクトリになっている状態でrombreak.batを実行。 -(要するにexplorerからダブルクリックでOK) - -これでbraek_devおよびbreak_prodの中にsrlとtadまでが完成。 diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile b/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile deleted file mode 100644 index 08b0b206..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -# nandapp にする場合はこの辺とかのコメントをはずす -# rsfの方もmediaをNandにするi - -TWL_NANDAPP = TRUE - - -SRCS = main.c font.c screen.c keypad.c -LINCLUDES = ./include -SRCDIR = ./src - #TARGET_BIN = NewApp.srl -TARGET_BIN = JumpToSetting.tad -ROM_SPEC = main.rsf - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - MAKETAD_OPTION += -s -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h deleted file mode 100644 index 9e703b04..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h +++ /dev/null @@ -1,43 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: font.h - - Copyright 2003-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. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h deleted file mode 100644 index 7e55f3e1..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: screen.h - - Copyright 2003-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. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#ifndef SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern u16 gScreen[32 * 32]; - -#define CONSOLE_BLACK 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 -#define CONSOLE_BLUE 3 -#define CONSOLE_YELLOW 4 -#define CONSOLE_WHITE 15 - -void ClearScreen(void); -void PrintString(s16 x, s16 y, u8 palette, char *text, ...); -void ColorString(s16 x, s16 y, s16 length, u8 palette); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf b/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf deleted file mode 100644 index 623fabb5..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf +++ /dev/null @@ -1,197 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "JumpSetting" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - Secure TRUE - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0JSA - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 fikle size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c deleted file mode 100644 index c5c4bf70..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c +++ /dev/null @@ -1,580 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: font.c - - Copyright 2003-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. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 -#include "keypad.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c deleted file mode 100644 index 87a0dc63..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c +++ /dev/null @@ -1,174 +0,0 @@ - -#include -#include -#include "font.h" -#include "screen.h" -#include "keypad.h" - -#define DAMMY_TITLEID_HI 0x00030005 -#define DAMMY_TITLEID_LO 0x484e4a00 -#define JUMP_GAMECODE 0x00030015484e4241ULL -#define JUMP_PARAMETER 50 - -void VBlankIntr(void); -void myInit(void); - -void TwlMain( void ) -{ - unsigned char regioncode; - myInit(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - - PrintString(0, 0, CONSOLE_WHITE, "Press A key To AppJump"); - - switch(OS_GetRegion()){ - case OS_TWL_REGION_JAPAN: - regioncode = 'J'; - break; - case OS_TWL_REGION_AMERICA: - regioncode = 'E'; - break; - case OS_TWL_REGION_EUROPE: - regioncode = 'P'; - break; - case OS_TWL_REGION_AUSTRALIA: - regioncode = 'U'; - break; - case OS_TWL_REGION_KOREA: - regioncode = 'K'; - break; - case OS_TWL_REGION_CHINA: - regioncode = 'C'; - break; - default: - PrintString(0, 1, CONSOLE_RED, "Illegal Region setting!"); - OS_Terminate(); - goto ERROR; - } - - - while(1){ - kamiPadRead(); - - if(kamiPadIsTrigger(PAD_BUTTON_A)){ - OSDeliverArgInfo info; - u32 dammycode_lo = (u32)(DAMMY_TITLEID_LO | (u32)regioncode); - - // romheaderのタイトルIDを書き換えて騙す - PrintString(0,3, CONSOLE_WHITE, "%x", dammycode_lo); - OS_WaitVBlankIntr(); - MI_StoreLE32((void*)(HW_TWL_ROM_HEADER_BUF + 0x230), dammycode_lo); - MI_StoreLE32((void*)(HW_TWL_ROM_HEADER_BUF + 0x234), DAMMY_TITLEID_HI); - - OS_InitDeliverArgInfo(&info, 0); - OS_SetSysParamToDeliverArg(JUMP_PARAMETER); - OS_EncodeDeliverArg(); - OS_DoApplicationJump(JUMP_GAMECODE, OS_APP_JUMP_NORMAL); - - PrintString(0, 1, CONSOLE_RED, "Jump Failed"); - } - - OS_WaitVBlankIntr(); - } - -ERROR: - - OS_WaitVBlankIntr(); - OS_Terminate(); -} - - -static void -VBlankIntr(void) -{ - //---- upload pseudo screen to VRAM - DC_FlushRange(gScreen, sizeof(gScreen)); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - - -void myInit(void) -{ - //---- init - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - FX_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - //---- init displaying - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- setting 2D for top screen - GX_SetBankForBG(GX_VRAM_BG_128_A); - - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - G2_BG0Mosaic(FALSE); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - - //---- setting 2D for bottom screen - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - G2S_BG0Mosaic(FALSE); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - //---- screen - MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen)); - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - //---- init interrupt - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - //---- FileSytem init - FS_Init(FS_DMA_NOT_USE); - - //---- start displaying - GX_DispOn(); - GXS_DispOn(); -} - diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c deleted file mode 100644 index 5b7b735e..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c +++ /dev/null @@ -1,112 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: screen.c - - Copyright 2003-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. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include -#include "screen.h" - -u16 gScreen[32 * 32]; - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: clear screen buffer - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast((void *)gScreen, sizeof(gScreen)); -} - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: enter string into screen buffer - string must be within 32 chars - - Arguments: x : x - y : y - palette : color (0-15) - text : string. end mark is NULL - - Returns: None. - *---------------------------------------------------------------------------*/ -void PrintString(s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2], *tempPtr; - s32 i; - u16 *p, *pLimit; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0; - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - tempPtr = &temp[0]; - - for (i = 0; *tempPtr; i++, tempPtr++) - { - *p = (u16)((palette << 12) | *tempPtr); - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} - -/*---------------------------------------------------------------------------* - Name: ColorString - - Description: change string color which is put in screen buffer - - Arguments: x : x - y : y - length : number of characters to change color - palette : color (0-15) - - Returns: None. - *---------------------------------------------------------------------------*/ -void ColorString(s16 x, s16 y, s16 length, u8 palette) -{ - s32 i; - u16 *p, *pLimit; - - if (length < 0) - return; - - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - - for (i = 0; i < length; i++) - { - u16 temp = *p; - temp &= 0x0fff; - temp |= (palette << 12); - *p = temp; - - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} diff --git a/build/tests/JumpToSettingForZonetest/Makefile b/build/tests/JumpToSettingForZonetest/Makefile deleted file mode 100644 index 063c7eaf..00000000 --- a/build/tests/JumpToSettingForZonetest/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - camera -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - banner \ - ARM9.TWL - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/JumpToSettingForZonetest/banner/Makefile b/build/tests/JumpToSettingForZonetest/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/JumpToSettingForZonetest/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf b/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf deleted file mode 100644 index 8881d35e..00000000 Binary files a/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp b/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp deleted file mode 100644 index 3057c17d..00000000 Binary files a/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/Launcher_sdlog/Makefile b/build/tests/Launcher_sdlog/Makefile deleted file mode 100644 index 4b5881c4..00000000 --- a/build/tests/Launcher_sdlog/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -export SDLOG ?= ARM9 - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SUBMAKES = sdlog/Makefile scripts/Makefile \ - $(LAUNCHER_DIR)/banner/Makefile $(LAUNCHER_DIR)/ARM9/Makefile_sdlog - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/jackal.TWL/Makefile b/build/tests/Launcher_sdlog/jackal.TWL/Makefile deleted file mode 100644 index c72c408c..00000000 --- a/build/tests/Launcher_sdlog/jackal.TWL/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -# Definition to override for jackal with sdlog -# - -LLIBRARIES += libossdlog_sp$(TWL_LIBSUFFIX).a -LLIBRARY_DIRS += $(call eupath, $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE)) - -COMPONENT_DIR += $(SYSMENU_ROOT)/build/components/jackal.TWL -COMPONENT_SRC_DIR += $(COMPONENT_DIR)/../hyena.TWL/src - -override SUBDIRS = $(SYSMENU_ROOT)/build/libraries/aes \ - $(SYSMENU_ROOT)/build/components/jackal.TWL/wram_regs - -override SRCS =$(COMPONENT_SRC_DIR)/crt0.LTD.c $(COMPONENT_SRC_DIR)/main.c $(COMPONENT_SRC_DIR)/initScfg.c - -override TARGET_NAME = jackal - -# Generate my own lsf from original lsf of mongoose -LSF_ORG = $(COMPONENT_DIR)/$(TARGET_NAME).lsf -MAKE_LSF = make_lsf.pl -AUTOGEN_LSF = $(TARGET_NAME)_sdlog.lsf - -LDIRT_CLEAN = $(AUTOGEN_LSF) - -override TARGET_NEF = $(TARGET_NAME).tef -override LCFILE_SPEC = $(AUTOGEN_LSF) -override LCFILE_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).lcf.template - -override TWL_INSTALL_COMPONENTSDIR= $(call eupath, $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/components) -override INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -# - -include $(TWL_IPL_RED_ROOT)/build/components/jackal.TWL/Makefile - -$(AUTOGEN_LSF): $(LSF_ORG) $(MAKE_LSF) - @echo " make:" $@ - @perl $(MAKE_LSF) $(TARGET_NAME) - -#===== End of Makefile ===== - diff --git a/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl b/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl deleted file mode 100755 index cc4770f1..00000000 --- a/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - components - mongoose_sdlog.TWL -# File: make_lsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -my $COMPONENT = $ARGV[0]; -print $COMPONENT; -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src = sprintf("$ROOT/build/components/%s.TWL/%s.lsf", $COMPONENT, $COMPONENT); -my $dst = sprintf("%s_sdlog.lsf", $COMPONENT); - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/libos_sp/ ) - { - my $tmp = $line; - $tmp =~ s/libos_sp/libossdlog_sp/; - - print OUT $tmp; - next; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/Launcher_sdlog/readme.txt b/build/tests/Launcher_sdlog/readme.txt deleted file mode 100644 index 1a1c542a..00000000 --- a/build/tests/Launcher_sdlog/readme.txt +++ /dev/null @@ -1,48 +0,0 @@ -■ SDLOG対応版ランチャーについて - -実機等でのでデバッグ用に、SDカードにデバッグプリントを出力するランチャーです。 - -TwlIPL/build/tests/Launcher_sdlogに移動してビルドすると、 -同じディレクトリにHNAA.tadが作成されますので、NandInitializer等でImportして下さい。 - -●ARM9のデバッグプリントのみを出力 - -$ make SDLOG=ARM9 - -●ARM9/ARM7のデバッグプリントを出力 - -$ make SDLOG=ALL - - -■ SDLOG(改造版)ライブラリ超適当リファレンス - -// SDLOGシステムの開始。開始以降、OS_Printf系を乗っ取り、SDログバッファに蓄積→SDカード書き出しを行います。 -// -// path: 出力するファイルを置くSDカード上のディレクトリ(例:sdmc:/log) -// filename: 出力するファイル名 -// buffer: ログの一時書込先。大量のログを残す場合は 1KB 以上を推奨 -// partitionSize: SD カードに書き込むサイズ。 bufferSize の 1/n を推奨 -// writeType: 上書き or 追記の指定。ファイルが存在しない場合はどちらも新規作成となる - -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - -// OS_Printf系を乗っ取らない版 -// path: 保存先。 sdmc:/sample と指定すると sdmc:/sample/Log0.log に -// ログが保存される(ファイル名は固定です。) -BOOL SDLOG_Init(const char* path, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - - -// SDLOGにデバッグ情報を書き出す。 -void SDLOG_Printf(const char *fmt, ...); - -// バッファに貯められたログを強制的に SD カードに書き込む -// ここでは確実にログを書き出したいという場所に追加することを推奨。 -void SDLOG_Flush(void); - -// まだ書き出していないログを SD カードに書き込んでファイルをクローズ -void SDLOG_FinishEx(void); // OS_Printf乗っ取り版 -void SDLOG_Finish(void); // OS_Printf乗っ取らない版 - -// ARM7のデバッグログを出力 -void SDLOG_PrintServer(void); - diff --git a/build/tests/Launcher_sdlog/scripts/Makefile b/build/tests/Launcher_sdlog/scripts/Makefile deleted file mode 100644 index 75bcf9e9..00000000 --- a/build/tests/Launcher_sdlog/scripts/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -SCRIPTS_DIR = . - -MAKEFILES_ORG = $(LAUNCHER_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/sdlog_makefile.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/ARM9/Makefile_sdlog -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -MAIN_ORG = $(LAUNCHER_DIR)/ARM9/src/main.c -MAKE_MAIN = $(SCRIPTS_DIR)/sdlog_main_c.pl -AUTOGEN_MAIN = $(LAUNCHER_DIR)/ARM9/src/main_sdlog.c -LDIRT_CLEAN += $(AUTOGEN_MAIN) - - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_MAIN) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_MAIN): $(MAIN_ORG) $(MAKE_MAIN) - @echo " make:" $@ - @perl $(MAKE_MAIN) - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl b/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl deleted file mode 100755 index 4ac96bbd..00000000 --- a/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: sdlog_main_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/main.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/main_sdlog.c"; - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - print OUT $line; - - if( $line =~ m/^\#include \"scanWDS\.h\"/ ) - { - print OUT "//\t[AUTO COMMENT] SDLOGのヘッダをインクルードし、ログ用バッファを定義します。", $rn; - print OUT <<__SDLOG_DEFINE__; -\#ifdef USE_SDLOG -\#include "sd_log_wrapper.h" -\#define BUFFER_SIZE 0x800 -char logBuffer[ (BUFFER_SIZE + 1) ]; -\#endif -__SDLOG_DEFINE__ - } - if( $line =~ m/^[\t ]*RTC_Init\(\);/ ) - { - print OUT "//\t[AUTO COMMENT] SDカードにOS_Printfのログを記録するために、SDLOGを初期化します。", $rn; - print OUT <<__SDLOG_INITEX__; -\#ifdef USE_SDLOG - { - RTCDate rDate; - RTCTime rTime; - char filename[FS_ENTRY_LONGNAME_MAX]; - - (void)RTC_GetDateTime(&rDate, &rTime); - OS_SPrintf(filename, "Launcher_%02d%02d%02d_%02d%02d.txt", - rDate.year, rDate.month, rDate.day, - rTime.hour, rTime.minute); - - SDLOG_InitEx("sdmc:/log", filename, logBuffer, - BUFFER_SIZE, 0x80, SDLOG_WRITE_TYPE_CONTINUANCE); - } -\#endif -__SDLOG_INITEX__ - } - - if( $line =~ m/^[\t ]*OS_SetIrqCheckFlag\(OS_IE_V_BLANK\);/ ) - { - print OUT <<__SDLOG_PRINTARM7__; -\#ifdef USE_SDLOG -\#ifdef USE_SDLOG_SUBP - SDLOG_PrintServer(); -\#endif -\#endif -__SDLOG_PRINTARM7__ - } - -} -close(OUT); - diff --git a/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl b/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl deleted file mode 100755 index 04931aa7..00000000 --- a/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: sdlog_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_sdlog"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/main\.c/ ) - { - $line =~ s/main\.c/main_sdlog\.c/; - } - - if( $line =~ m/^COMPONENT_DIR/ ) - { - $line =~ s/\/build\/components/\/build\/tests\/Launcher_sdlog/; - print OUT $line; - print OUT "override COMPONENTSDIR\t=\t\$(call eupath, \$(COMPONENT_DIR)/../components)", $rn; - next; - } - - if( $line =~ m/^WRAM_MAP_FILE[\t ]*=[\t ]*\$\(COMPONENT_DIR\)\/wram_regs\/wram_regs.rbin/ ) - { - $line =~ s/\$\(COMPONENT_DIR\)/\$\(TWL_IPL_RED_ROOT\)\/build\/components\/\$\(DEFAULT_COMP_ARM7\)\.TWL/; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - $line =~ s/\$\(SDK_NMENU_DATADIR\)/\$\(TWL_IPL_RED_ROOT\)\/build\/tests\/Launcher_sdlog/; - } - - if( $line =~ m/^TARGET_BIN[\t ]*=[\t ]*\$\(TITLEID_LO\)\.tad/ ) - { - $line =~ s/\.tad/_sdlog\.tad/; - print OUT <<__SDLOG_DESCRIPTIONS__; -\# -------------------------------------------------------------- -\# SDLOG -ifeq (\$(TWL_FINALROM),) \# SDLOG is enabled only on Release and Debug - -ifeq (\$(SDLOG), TRUE) -override SDLOG = ARM9 -endif - -ifneq (\$(filter ARM7,\$(SDLOG)),) -\$(error "Invalid SDLOG option : should be SDLOG=[ARM9/ALL]") -endif - -SDLOG_LIST = \$(if \$(filter ALL,\$(SDLOG)),ARM7 ARM9,\$(SDLOG)) - -ifneq (\$(filter ARM9,\$(SDLOG_LIST)),) -MACRO_FLAGS += -DUSE_SDLOG -ELIBRARIES += libsdlogRed\$(TWL_LIBSUFFIX).a -ELIBRARY_DIRS += \$(SYSMENU_ROOT)/build/tests/Launcher_sdlog/lib/\$(TWL_LIBTYPE) -EINCLUDES += \$(SYSMENU_ROOT)/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include \\ - \$(ROOT)/build/tests/sdlog/sdlog/include -ifneq (\$(filter ARM7,\$(SDLOG_LIST)),) -MACRO_FLAGS += -DUSE_SDLOG_SUBP -endif \# SDLOG [ARM7] -endif \# SDLOG [ARM9] - -endif \# FINALROM - -__SDLOG_DESCRIPTIONS__ - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile b/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile deleted file mode 100644 index 75ec2c71..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile +++ /dev/null @@ -1,100 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL - -TARGET_CODEGEN ?= ARM -TWL_ARCHGEN ?= LIMITED -TWL_PROC = ARM7 - -OS_LIBRARY_SRC_DIR_BASE = $(ROOT)/build/libraries/os -OS_LIBSRC_ARM7 = $(OS_LIBRARY_SRC_DIR_BASE)/ARM7/src -OS_LIBSRC_ARM7TWL = $(OS_LIBRARY_SRC_DIR_BASE)/ARM7.TWL/src -OS_LIBSRC_COMMON = $(OS_LIBRARY_SRC_DIR_BASE)/common/src - -SRCDIR = src ../common/src ../ARM7/src -INCDIR = $(OS_LIBSRC_ARM7TWL)/../../common/include - -SRCS = $(OS_LIBSRC_ARM7TWL)/os_irqHandler.c \ - $(OS_LIBSRC_COMMON)/os_irqTable.c \ - $(OS_LIBSRC_COMMON)/os_interrupt.c \ - $(OS_LIBSRC_COMMON)/os_pxi.c \ - $(OS_LIBSRC_COMMON)/os_spinLock.c \ - os_printf.c \ - $(OS_LIBSRC_COMMON)/os_thread.c \ - $(OS_LIBSRC_COMMON)/os_context.c \ - $(OS_LIBSRC_COMMON)/os_emulator.c \ - $(OS_LIBSRC_COMMON)/os_message.c \ - $(OS_LIBSRC_COMMON)/os_mutex.c \ - $(OS_LIBSRC_COMMON)/os_init.c \ - $(OS_LIBSRC_COMMON)/os_arena.c \ - $(OS_LIBSRC_COMMON)/os_alloc.c \ - $(OS_LIBSRC_COMMON)/os_exception.c \ - $(OS_LIBSRC_COMMON)/os_timer.c \ - $(OS_LIBSRC_COMMON)/os_tick.c \ - $(OS_LIBSRC_COMMON)/os_alarm.c \ - $(OS_LIBSRC_COMMON)/os_valarm.c \ - $(OS_LIBSRC_COMMON)/os_system.c \ - $(OS_LIBSRC_COMMON)/os_systemWork.c \ - $(OS_LIBSRC_COMMON)/os_profile.c \ - $(OS_LIBSRC_COMMON)/os_reset.c \ - $(OS_LIBSRC_COMMON)/os_ownerInfo.c \ - $(OS_LIBSRC_COMMON)/os_ownerInfoEx.c \ - $(OS_LIBSRC_COMMON)/os_entropy.c \ - $(OS_LIBSRC_ARM7)/os_terminate_sp.c \ - $(OS_LIBSRC_COMMON)/os_event.c \ - $(OS_LIBSRC_COMMON)/os_application_jump.c - -TARGET_LIB = libossdlog_sp$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# DEBUG版ビルドの場合、RELEASE版でビルドして -# DEBUG版のライブラリを装います。 - -ifdef TARGET_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef TWL_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef NITRO_DEBUG -TWL_BUILD_TYPE = RELEASE -endif -endif -endif - -#---------------------------------------------------------------------------- -# HYBRID / LIMITED 両方のライブラリを作成します -TWL_ARCHGEN ?= ALL - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -INSTALL_TARGETS = $(TARGETS) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c b/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c deleted file mode 100644 index 44c337ea..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c +++ /dev/null @@ -1,1536 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - OS - File: os_printf.c - - Copyright 2003 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 -#include - -//---------------- for IS-NITRO-DEBUGGER -#ifdef SDK_LINK_ISD -# pragma warn_extracomma off -# include // has extracomma in enum -# pragma warn_extracomma reset -#else -void ISDPrint(const char *); -#endif - -//---------------- for IS-TWL-DEBUGGER -#ifdef SDK_LINK_ISTD -# pragma warn_extracomma off -# include // has extracomma in enum -# pragma warn_extracomma reset -#else -void ISTDPrintEx(int console, const char *); -#endif -//---- print output -#ifdef SDK_ARM9 -#define OSi_PRINT_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM9) -#define OSi_PRINT_ERR_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM9ERR) -#else -#define OSi_PRINT_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM7) -#define OSi_PRINT_ERR_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM7ERR) -#endif - -#ifndef SDK_FINALROM -static char common_buffer[256]; // thread unsafe, but less use of stack -#endif - -#if !defined(SDK_FINALROM) && defined(SDK_NO_MESSAGE) -#undef OSi_Warning -#undef OSi_TWarning -#undef OSi_Panic -#undef OSi_TPanic -void OSi_Warning(const char *file, int line, const char *fmt, ...); -void OSi_TWarning(const char *file, int line, const char *fmt, ...); -void OSi_Panic(const char *file, int line, const char *fmt, ...); -void OSi_TPanic(const char *file, int line, const char *fmt, ...); -#endif /* SDK_NO_MESSAGE */ - - -/*---------------------------------------------------------------------------* - Name: OS_PutChar - OS_FPutChar - - Description: put a letter for debug console - - Arguments: console : output window - c : char code , shuild be 0x01-0xff - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_PutChar(char c) -{ - OS_FPutChar((int)OSi_PRINT_OUTPUT, c); -} - -SDK_WEAK_SYMBOL void OS_FPutChar(int console, char c) -{ - char str[2]; - - str[0] = c; - str[1] = '\0'; - - // Because of no putchar-type function on ISDebugger library, - // use 'putstring' for a single letter outputting - OS_FPutString(console, str); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutString - - Description: put a string to debug console. - console port are automatically switched depends on emu/hw - - Arguments: console : output window - str : string - - Returns: None. - *---------------------------------------------------------------------------*/ -static void OS_PutStringDefault(const char* str); -static void OS_FPutStringInit(int console, const char *str); - -#ifndef SDK_FINALROM -static void OS_FPutStringDummy(int console, const char *str); -static void OS_FPutStringAris(int console, const char *str); -static void OS_FPutStringISD(int console, const char *str); -static void OS_FPutStringISTD(int console, const char *str); -#ifdef SDK_ARM7 -static void OS_FPutStringPrnSrv(int console, const char *str); -#endif -#endif - -#ifndef SDK_FINALROM -void (*OS_PutString) (const char *str) = OS_PutStringDefault; -void (*OS_FPutString) (int console, const char *str) = OS_FPutStringInit; -void (*OSi_FuncTerminate) (void) = OS_Terminate; -//---- hook function -static OSFPutStringHookType OSi_FPutStringHook = NULL; -#endif - - -/*---------------------------------------------------------------------------* - Name: OS_PutStringDefault - Description: OS_PutString initializer - *---------------------------------------------------------------------------*/ -static void OS_PutStringDefault(const char* str) -{ -#pragma unused(str) -#ifndef SDK_FINALROM - OS_FPutString(OS_PRINT_OUTPUT_CURRENT, str); -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringInit - Description: OS_FPutString initializer - *---------------------------------------------------------------------------*/ -static void OS_FPutStringInit(int console, const char *str) -{ -#ifndef SDK_FINALROM - OSIntrMode intr = OS_DisableInterrupts(); - u32 consoleType = OS_GetConsoleType(); - - OS_FPutString = OS_FPutStringDummy; - -#ifdef SDK_ARM9 - //---- arm9 - if ( consoleType & OS_CONSOLE_ENSATA ) - { - OS_FPutString = OS_FPutStringAris; - } - else if ( consoleType & OS_CONSOLE_TWLDEBUGGER ) - { - OS_FPutString = OS_FPutStringISTD; - } - else if ( consoleType & OS_CONSOLE_ISDEBUGGER ) - { -#ifndef SDK_TWLLTD - OS_FPutString = OS_FPutStringISD; -#endif - } -#else - //---- arm7 -// if ( consoleType & OS_CONSOLE_TWLDEBUGGER ) -// { -// OS_FPutString = OS_FPutStringISTD; -// } -// else - { - OS_FPutString = OS_FPutStringPrnSrv; - } -#endif - - OS_FPutString(console, str); - - (void)OS_RestoreInterrupts(intr); - -#else -#pragma unused(console, str) -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringDummy - Description: dummy OS_FPutString. do nothing. - *---------------------------------------------------------------------------*/ -static void OS_FPutStringDummy(int console, const char *str) -{ -#pragma unused(console, str) -#ifndef SDK_FINALROM - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_DUMMY, console, str); - } -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringAris - Description: OS_FPutString for software simulator called ARIS - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -static void OS_FPutStringAris(int console, const char *str) -{ - char c; - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - while ('\0' != (c = *str)) - { - reg_OS_EMU_CONSOLE_OUT = (u8)c; // Console out - str++; - } - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ARIS, console, str); - } - } -} -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringISD - Description: OS_FPutString for hardware emulator called IS Debugger - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -static void OS_FPutStringISD(int console, const char *str) -{ - // ISDPrint の初期化処理 - OS_InitLock(); - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - ISDPrint(str); - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ISD, console, str); - } - } -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringISTD - Description: OS_FPutString for hardware emulator called IS TWL Debugger - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -static void OS_FPutStringISTD(int console, const char *str) -{ - // ISTDPrintEx の初期化処理 - OS_InitLock(); - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - ISTDPrintEx(console, str); - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ISTD, console, str); - } - } -} -#endif - - -/*---------------------------------------------------------------------------* - Name: OS_VPrintf/OS_TVPrintf - - Description: print formatted strings (vprintf ver.) - - Arguments: fmt : format string - vlist : parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -// If you want to use "vsnprintf()" in ARM7, define SDK_USE_VSNPRINTF. -// "vsnprintf()" is able to print float format but the code size become hugely bigger. -// #define SDK_USE_VSNPRINTF - -#ifndef SDK_FINALROM -#if defined(SDK_ARM9) || defined(SDK_USE_VSNPRINTF) -SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) -{ - OS_VFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_VFPrintf(int console, const char *fmt, va_list vlist) -{ - (void)vsnprintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -#else -SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) -{ - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_VFPrintf(int console, const char *fmt, va_list vlist) -{ - OS_TVFPrintf(console, fmt, vlist); -} -#endif -SDK_WEAK_SYMBOL void OS_TVPrintf(const char *fmt, va_list vlist) -{ - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_TVFPrintf(int console, const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -SDK_WEAK_SYMBOL void OS_TVPrintfEx(const char *fmt, va_list vlist) -{ - OS_TVFPrintfEx(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_TVFPrintfEx(int console, const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintfEx(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_Printf/OS_TPrintf/OS_TPrintfEx - OS_FPrintf/OS_TFPrintf/OS_TFPrintfEx - - Description: print formatted strings. - - Arguments: console : output window - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_Printf(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_VFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_FPrintf(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_VFPrintf(console, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintf(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TFPrintf(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintf(console, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintfEx(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintfEx(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TFPrintfEx(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintfEx(console, fmt, vlist); - va_end(vlist); -} -#endif - - -/*---------------------------------------------------------------------------* - Name: OSi_Warning / OSi_TWarning - - Description: print warning message. - - Arguments: file : filename of warning location - line : line number of warning location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_Warning(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "%s:%d Warning:", file, line); - OS_VFPrintf(OS_PRINT_OUTPUT_ERROR, fmt, vlist); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "\n"); - va_end(vlist); -} - - -SDK_WEAK_SYMBOL void OSi_TWarning(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TPrintf("%s:%d Warning:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - va_end(vlist); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_Panic/OSi_TPanic - - Description: print panic message and halt cpu. - - Arguments: file : filename of panic location - line : line number of panic location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_Panic(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "%s:%d Panic:", file, line); - OS_VFPrintf(OS_PRINT_OUTPUT_ERROR, fmt, vlist); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "\n"); - OSi_FuncTerminate(); // Never Returns -} - -SDK_WEAK_SYMBOL void OSi_TPanic(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_TPrintf("%s:%d Panic:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - OSi_FuncTerminate(); // Never Returns -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_FWarning / OSi_TFWarning - - Description: print warning message. - - Arguments: console : output window - file : filename of warning location - line : line number of warning location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_FWarning(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_FPrintf(console, "%s:%d Warning:", file, line); - OS_VFPrintf(console, fmt, vlist); - OS_FPrintf(console, "\n"); - va_end(vlist); -} - - -SDK_WEAK_SYMBOL void OSi_TFWarning(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TFPrintf(console, "%s:%d Warning:", file, line); - OS_TVFPrintf(console, fmt, vlist); - OS_TFPrintf(console, "\n"); - va_end(vlist); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_FPanic/OSi_TFPanic - - Description: print panic message and halt cpu. - - Arguments: file : filename of panic location - line : line number of panic location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_FPanic(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_FPrintf(console, "%s:%d Panic:", file, line); - OS_VFPrintf(console, fmt, vlist); - OS_FPrintf(console, "\n"); - OSi_FuncTerminate(); // Never Returns -} - -SDK_WEAK_SYMBOL void OSi_TFPanic(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_TFPrintf(console, "%s:%d Panic:", file, line); - OS_TVFPrintf(console, fmt, vlist); - OS_TFPrintf(console, "\n"); - OSi_FuncTerminate(); // Never Returns -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_InitPrintServer - - Description: initialize print server - - this code should be called before OS_InitLock() - - OS_InitLock() are also called from OS_Init() - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -void OS_InitPrintServer(void) -{ - OSPrintServerBuffer *p; - - // first, allocate buffer and register it. - OS_InitArena(); - p = OS_AllocFromSharedArenaHi(sizeof(OSPrintServerBuffer), 4); - p->in = p->out = 0UL; - PXI_SetComponentParam((u32)p); -} -#endif //SDK_FINALROM -#endif //SDK_ARM9 - - -/*---------------------------------------------------------------------------* - Name: OS_PrintServer - - Description: print a string comes from ARM7 via shared memory - - Arguments: str : string - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -#include // to access 'common_buffer' via cache -void OS_PrintServer(void) -{ - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, out; - int i; - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - - //---- If print buffer isn't set up, do nothing. - if (!p) - { - return; - } - - out = p->out; - in = p->in; - - while (in != out) - { - i = 0; - - while (in != out && i < sizeof(common_buffer) - 3) - { - word.s = p->buffer[out].s; - if (word.c[0]) - { - common_buffer[i++] = word.c[0]; // store via cache - - if (word.c[1]) - { - common_buffer[i++] = word.c[1]; // store via cache - } - } - out++; - if (out >= OS_PRINTSRV_WCHARSIZE) - out = 0; - } - common_buffer[i] = '\0'; // store via cache - OS_FPutString(OS_PRINT_OUTPUT_CURRENT, common_buffer); - } - - // tell finished - p->out = out; -} - -#include -#endif //SDK_FINALROM -#endif //SDK_ARM9 - - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringPrnSrv - - Description: sends string to ARM9 via shared memory - - Arguments: console : output window - str : string to be sent - - Returns: None - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM7 -static void OS_FPutStringPrnSrv(int console, const char *str) -{ -#pragma unused(console, str) -#ifndef SDK_FINALROM - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, in_tmp, out; - u32 isOdd; - - if ( console == OS_PRINT_OUTPUT_NONE ) - { - return; - } - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - in = p->in; - out = p->out; - isOdd = ((u32)str) & 1; - - while (1) - { - in_tmp = in + 1; - if (in_tmp >= OS_PRINTSRV_WCHARSIZE) - in_tmp = 0; - if (out == in_tmp) - break; // Buffer full, then exit - - if (isOdd) - { - p->buffer[in].s = word.s = (u16)((*(u16 *)(str - 1)) & 0xff00); - str++; - isOdd = 0UL; - if (!word.c[1]) - break; - in = in_tmp; - } - else - { - p->buffer[in].s = word.s = *(u16 *)str; - str += 2; - if (!word.c[0]) - break; - in = in_tmp; - if (!word.c[1]) - break; - } - } - p->in = in; -#endif //SDK_FINALROM -} -#endif //SDK_ARM7 - - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -/* inner function for sized-buffer output */ -typedef struct dst_string_tag -{ - size_t len; - char *cur; - char *base; -} -dst_string; - -static void string_put_char(dst_string * p, char c) -{ - if (p->len > 0) - *p->cur = c, --p->len; - ++p->cur; -} - -static void string_fill_char(dst_string * p, char c, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } -} - -static void string_put_string(dst_string * p, const char *s, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } -} - -/*---------------------------------------------------------------------------* - Name: OS_SPrintf - - Description: equal to 'OS_VSPrintf' except argument style. - - Arguments: dst : destination buffer. - fmt : format string. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_SPrintf(char *dst, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSPrintf(dst, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSPrintf - - Description: equal to 'OS_VSNPrintf' except buffer size argument. - - Arguments: dst : destination buffer. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSPrintf(char *dst, const char *fmt, va_list vlist) -{ - return OS_VSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_SNPrintf - - Description: equal to 'OS_VSNPrintf' except argument style. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_SNPrintf(char *dst, size_t len, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSNPrintf(dst, len, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintf - - Description: small-size vsnprintf which is similar to 'vsnprintf' - without following supports. - * CodeWarrior Extensions (#s) - * MSL AltiVec Extensions (v, vh, vl, hv, lv, @) - * indexed argments (%m$, *m$) - * floating-point - * wchar_t - - Note: '+' and '#' do not work, MSL's sprintf(). - to keep same result, they are no implement. - { // exsample - char buf[5]; - sprintf(buf, "%-i\n", 45); // "45" (OK) - sprintf(buf, "%0i\n", 45); // "45" (OK) - sprintf(buf, "% i\n", 45); // " 45" (OK) - sprintf(buf, "%+i\n", 45); // "%+i" ("+45" expected) - sprintf(buf, "%#x\n", 45); // "%#x" ("0x2d" expected) - // but, this works correctly! - sprintf(buf, "% +i\n", 45); // "+45" (OK) - } - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSNPrintf(char *dst, size_t len, const char *fmt, va_list vlist) -{ - return STD_TVSNPrintf(dst, len, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintfEx - - Description: OS_VSNPrintfEx is an addition of binary output to OS_VSNPrintfEx. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSNPrintfEx(char *dst, size_t len, const char *fmt, va_list vlist) -{ - char buf[24]; - int n_buf; - char prefix[2]; - int n_prefix; - - const char *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while (*s) - { - if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) - { - /* Shift JIS character */ - string_put_char(&str, *s++); - if (*s) - string_put_char(&str, *s++); - } - else if (*s != '%') - { - /* normal ASCII character */ - string_put_char(&str, *s++); - } - else - { - /* output with format */ - enum - { - flag_blank = 000001, /* ' ' */ - flag_plus = 000002, /* '+' */ - flag_sharp = 000004, /* '#' */ - flag_minus = 000010, /* '-' */ - flag_zero = 000020, /* '0' */ - flag_l1 = 000040, /* "l" */ - flag_h1 = 000100, /* "h" */ - flag_l2 = 000200, /* "ll" */ - flag_h2 = 000400, /* "hh" */ - flag_unsigned = 010000, /* 'o', 'u', ... */ - flag_binary = 020000, /* 'b' */ - flag_colon = 040000, /* ':' */ - flag_end - }; - int flag = 0, width = 0, precision = -1, radix = 10; - char hex_char = 'a' - 10; - const char *p_start = s; - /* flags */ - for (;;) - { - switch (*++s) - { - case '+': - if (s[-1] != ' ') - break; - flag |= flag_plus; - continue; - case ' ': - flag |= flag_blank; - continue; - case '-': - flag |= flag_minus; - continue; - case '0': - flag |= flag_zero; - continue; - case ':': - flag |= flag_colon; - continue; - } - break; - } - /* width */ - if (*s == '*') - { - ++s, width = va_arg(vlist, int); - if (width < 0) - width = -width, flag |= flag_minus; - } - else - { - while ((*s >= '0') && (*s <= '9')) - width = (width * 10) + *s++ - '0'; - } - /* precision */ - if (*s == '.') - { - ++s, precision = 0; - if (*s == '*') - { - ++s, precision = va_arg(vlist, int); - if (precision < 0) - precision = -1; - } - else - { - while ((*s >= '0') && (*s <= '9')) - precision = (precision * 10) + *s++ - '0'; - } - } - /* option */ - switch (*s) - { - case 'h': - if (*++s != 'h') - flag |= flag_h1; - else - ++s, flag |= flag_h2; - break; - case 'l': - if (*++s != 'l') - flag |= flag_l1; - else - ++s, flag |= flag_l2; - break; - } - - /* type */ - switch (*s) - { - case 'd': /* signed decimal */ - case 'i': /* signed decimal */ - goto put_integer; - case 'o': /* unsigned octal */ - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case 'u': /* unsigned decimal */ - flag |= flag_unsigned; - goto put_integer; - case 'X': /* unsigned hexadecimal */ - hex_char = 'A' - 10; - goto put_hexadecimal; - case 'x': /* unsigned hexadecimal */ - goto put_hexadecimal; - case 'p': /* pointer */ - /* equal to code warrior */ - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - - case 'C': /* unicode-character */ - flag |= flag_l1; - case 'c': /* character */ - if (precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if (flag & flag_minus) - { - if (flag & flag_l1) - { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - } - else - { - string_put_char(&str, (char)c); - } - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) - { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - } - else - { - string_put_char(&str, (char)c); - } - } - ++s; - } - break; - - case 'S': /* unicode-string */ - flag |= flag_l1; - case 's': /* string */ - { - int n_buf = 0; - const char *p_buf = va_arg(vlist, const char *); - - if (precision < 0) - { - while (p_buf[n_buf]) - { - if (flag & flag_l1) - { - n_buf += 2; - } - else - { - ++n_buf; - } - } - } - else - { - while ((n_buf < precision) && p_buf[n_buf]) - { - if (flag & flag_l1) - { - n_buf += 2; - } - else - { - ++n_buf; - } - } - } - if (flag & flag_l1) - { - n_buf /= 2; - } - width -= n_buf; - if (flag & flag_minus) - { - if (flag & flag_l1) - { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) - { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } - else - { - string_put_string(&str, p_buf, n_buf); - } - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) - { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) - { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } - else - { - string_put_string(&str, p_buf, n_buf); - } - } - ++s; - } - break; - - case 'B': /* binary */ - hex_char = 'A' - 10; - case 'b': /* binary */ - { - int n_buf = width; - int count = 0; - char *p_buf = va_arg(vlist, char *); - int column_count; - - if (n_buf <= 0) - { - n_buf = 1; - } - if (precision == 0) - { - precision = -1; - } - column_count = precision; - - while (1) - { - char left_char, right_char; - int left = ((p_buf[count] & 0xF0) >> 4); - int right = (p_buf[count] & 0x0F); - - left_char = (char)((left < 10) ? (left + '0') : (left + hex_char)); - right_char = (char)((right < 10) ? (right + '0') : (right + hex_char)); - - string_put_char(&str, left_char); - string_put_char(&str, right_char); - - count++; - - if (count >= n_buf) - break; - - if (column_count > 0) - { - --column_count; - } - - if (column_count == 0) - { - string_put_char(&str, '\n'); - if ((flag & flag_blank) && !(flag & flag_minus)) - { - string_put_char(&str, ' '); - } - column_count = precision; - } - else if (flag & flag_colon) - { - string_put_char(&str, ':'); - } - else if (flag & flag_blank) - { - string_put_char(&str, ' '); - } - } - ++s; - } - break; - - case 'n': /* store the number of output */ - { - int pos = str.cur - str.base; - if (flag & flag_h2) - ; - else if (flag & flag_h1) - *va_arg(vlist, signed short *) = (signed short)pos; - else if (flag & flag_l2) - *va_arg(vlist, u64 *) = (u64)pos; - else - *va_arg(vlist, signed int *) = (signed int)pos; - } - ++s; - break; - - case '%': /* output '%' */ - if (p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: /* invalid type */ - goto put_invalid; - - put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - - put_hexadecimal: - radix = 16; - flag |= flag_unsigned; - put_integer: - { - u64 val = 0; - n_prefix = 0; - - if (flag & flag_minus) - flag &= ~flag_zero; - if (precision < 0) - precision = 1; - else - flag &= ~flag_zero; - - if (flag & flag_unsigned) - { - if (flag & flag_h2) - val = va_arg(vlist, unsigned char); - else if (flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if (flag & flag_sharp) - { - if (radix == 16) - { - if (val != 0) - { - prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); - prefix[1] = '0'; - n_prefix = 2; - } - } - else if (radix == 8) - { - prefix[0] = '0'; - n_prefix = 1; - } - } - } - else - { - if (flag & flag_h2) - val = va_arg(vlist, char); - else if (flag & flag_h1) - val = va_arg(vlist, short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if ((val >> 32) & 0x80000000) - { - val = ~val + 1; - prefix[0] = '-'; - n_prefix = 1; - } - else - { - if (val || precision) - { - if (flag & flag_plus) - { - prefix[0] = '+'; - n_prefix = 1; - } - else if (flag & flag_blank) - { - prefix[0] = ' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - switch (radix) - { - case 8: - while (val != 0) - { - int d = (int)(val & 0x07); - val >>= 3; - buf[n_buf++] = (char)(d + '0'); - } - break; - case 10: - if ((val >> 32) == 0) - { -#if defined(SDK_CW) || defined(SDK_RX) || defined(__MWERKS__) -#pragma optimize_for_size off -#endif - u32 v = (u32)val; - while (v != 0) - { - // u32 と定数の除算であれば、コンパイラが自動的に - // マジックナンバーを使用した積算に変換する - u32 r = v / 10; - int d = (int)(v - (r * 10)); - v = r; - buf[n_buf++] = (char)(d + '0'); - } - } - else - { - while (val != 0) - { - u64 r = val / 10; - int d = (int)(val - (r * 10)); - val = r; - buf[n_buf++] = (char)(d + '0'); - } - } - break; - case 16: - while (val != 0) - { - int d = (int)(val & 0x0f); - val >>= 4; - buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); - } - break; - } - if ((n_prefix > 0) && (prefix[0] == '0')) - { - n_prefix = 0; - buf[n_buf++] = '0'; - } - } - goto put_to_stream; - - put_to_stream: - { - int n_pad = precision - n_buf; - if (flag & flag_zero) - { - if (n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if (n_pad > 0) - width -= n_pad; - width -= n_prefix + n_buf; - if (!(flag & flag_minus)) - string_fill_char(&str, ' ', width); - while (n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, '0', n_pad); - while (n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if (flag & flag_minus) - string_fill_char(&str, ' ', width); - ++s; - } - break; - } - } - } - - if (str.len > 0) - *str.cur = '\0'; - else if (len > 0) - str.base[len - 1] = '\0'; - return str.cur - str.base; -} - - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -//================================================================================ -// Set output of print (for IS-TWL-DEBUGGER) -//================================================================================ -#ifndef SDK_FINALROM -#ifdef SDK_LINK_ISTD -/*---------------------------------------------------------------------------* - Name: OS_SetPrintOutput - - Description: Specify the output window OS_Printf uses. - This is only for IS-TWL-DEBUGGER. - - Arguments: proc : processor - OS_PRINT_OUTPUT_PROC_ARM9 : ARM9 - OS_PRINT_OUTPUT_PROC_ARM7 : ARM7 - OS_PRINT_OUTPUT_PROC_ARM9ERR : ARM9 for error - OS_PRINT_OUTPUT_PROC_ARM7ERR : ARM7 for error - num : window number (0-3) - - Returns: None. - *---------------------------------------------------------------------------*/ -void OS_SetPrintOutput( OSPrintOutputProc proc, int num ) -{ - SDK_ASSERT( (0<=num && num<=OS_PRINT_OUTPUT_WINDOW_MAX) || num==OS_PRINT_OUTPUT_NONE ); - SDK_ASSERT( 0<=(int)proc && (int)proc<=OS_PRINT_OUTPUT_PROC_ARM7ERR ); - *(u8*)(HW_PRINT_OUTPUT_ARM9 + proc) = (u8)num; -} -#endif -#endif - -//================================================================================ -// FPutString hook -//================================================================================ -#ifndef SDK_FINALROM -/*---------------------------------------------------------------------------* - Name: OS_SetFPutStringHook - - Description: set hook function in FPutString - - Arguments: func : hook function - - Returns: None. - *---------------------------------------------------------------------------*/ -void OS_SetFPutStringHook( OSFPutStringHookType func ) -{ - OSi_FPutStringHook = func; -} - -/*---------------------------------------------------------------------------* - Name: OS_GetFPutStringHook - - Description: get hook function in FPutString - - Arguments: None. - - Returns: hook function - *---------------------------------------------------------------------------*/ -OSFPutStringHookType OS_GetFPutStringHook(void) -{ - return OSi_FPutStringHook; -} -#endif - -//================================================================================ -// DUMMY PRINT (stub for FINALROM) -//================================================================================ -#ifdef SDK_FINALROM -#ifdef OS_Printf -#undef OS_Printf -#endif -void OS_Printf(const char *fmt, ...); -void OS_Printf(const char *fmt, ...) -{ -#pragma unused( fmt ) -} -#endif diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile deleted file mode 100644 index dca6850a..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - libraries - os -# File: Makefile -# -# Copyright 2003 - 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. -# -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -TWL_PROC = ARM9 - -TARGET_CODEGEN ?= ARM -TWL_ARCHGEN ?= LIMITED - -SRCDIR = ./src -INCDIR = ./include $(ROOT)/build/tests/sdlog/sdlog/include \ - $(ROOT)/build/tests/sdlog/sdlog/src - -SRCS = sd_log_wrapper.c - -SRCS += $(ROOT)/build/tests/sdlog/sdlog/src/os_log.c - -#---------------------------------------------------------------------------- - -TARGET_LIB = libsdlogRed$(TWL_LIBSUFFIX).a - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -INSTALL_TARGETS = $(TARGETS) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h deleted file mode 100644 index d32dc48e..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SDLOG - include - File: sd_log_wrapper.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 TWL_SD_LOG_WRAPPER_H_ -#define TWL_SD_LOG_WRAPPER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "log.h" -#include "sd_log.h" - -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - -void SDLOG_FinishEx(void); - -inline -void SDLOG_PrintServer(void) -{ - OS_PrintServer(); -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* TWL_SD_LOG_WRAPPER_H_ */ -#endif diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c deleted file mode 100644 index d974dd09..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c +++ /dev/null @@ -1,179 +0,0 @@ - -#include -#include -#include "sd_log_wrapper.h" - -#include "sd_log.c" - -/* Function Prototype */ -static void OS_FPutStringSD(int console, const char *str); -static void SDLOGi_WriteThreadEx(void* arg); - -/* Static */ -static void (*HookedFPutString)(int console, const char *string); - -void TwlStartUp(void) -{ - OS_InitPrintServer(); // Should be called before PXI_Init() -} - -/*---------------------------------------------------------------------------* - Name: SDLOG_Init - - Description: Initialize - - Arguments: None - - Returns: ファイルの作成に失敗した場合は FALSE を返す - *---------------------------------------------------------------------------*/ -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType) -{ - if( isInitialized ) - { - return FALSE; - } - - if( !FS_IsAvailable() ) - { - FS_Init(FS_DMA_NOT_USE); - } - - OS_InitLog(); - - { - int i = 0; - FS_InitFile(&work.logInfo[i].file); - - /* ファイルシステムの初期化 */ - { - char tmpPath[256]; - - STD_TSPrintf(tmpPath, "%s/%s", path, filename); - - if( writeType == SDLOG_WRITE_TYPE_OVERWRITE ) - { - /* 上書き設定の場合はファイルを削除 */ - (void)FS_DeleteFileAuto(tmpPath); - } - - if( !FS_CreateDirectoryAuto( path, FS_PERMIT_W | FS_PERMIT_R ) ) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - } - - if( !FS_CreateFile( tmpPath, FS_PERMIT_W | FS_PERMIT_R ) ) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - } - - if(!FS_OpenFileEx(&work.logInfo[i].file, tmpPath, FS_PERMIT_R | FS_PERMIT_W)) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - goto file_error; - } - - if( writeType == SDLOG_WRITE_TYPE_CONTINUANCE ) - { - /* 追記設定の場合はファイル端までシーク */ - FS_SeekFileToEnd(&work.logInfo[i].file); - } - } - - /* OS_Log の諸設定 */ - work.logInfo[i].buffer = buffer; - work.logInfo[i].current = 0; - work.logInfo[i].bufferSize = bufferSize; - work.logInfo[i].partitionSize = partitionSize; - work.logInfo[i].writeType = writeType; - - OS_InitLogBuffer(&work.logInfo[i].info, buffer, partitionSize); - OS_SetLogWarningOffset(&work.logInfo[i].info, OS_LOG_WARNING_OFFSET_FULL ); - OS_SetLogAnnounceType(&work.logInfo[i].info, OS_LOG_ANNOUNCE_IMM); - - OS_SetLogCallback(&work.logInfo[i].info, SDlogCallback, (void *)i ); - } - - /* カレントは IS_TWL_DEBBUGER と同じく出力ゼロ */ - OS_SetLogCurrentInfo(&work.logInfo[0].info); - - /* Thread */ - if( OS_IsThreadAvailable() == FALSE ) - { - /*スレッドシステムが立ち上がっていない場合は立ち上げる*/ - OS_InitThread(); - } - - OS_InitMessageQueue(&work.writeQueue, work.writeMsg, WRITE_MESSAGE_COUNT ); - OS_CreateThread(&work.writeThread, SDLOGi_WriteThreadEx, NULL, - work.writeThreadStack+SDLOG_THREAD_STACK_SIZE/sizeof(u32), SDLOG_THREAD_STACK_SIZE, 15); - OS_WakeupThreadDirect(&work.writeThread); - - HookedFPutString = OS_FPutString; - OS_FPutString = OS_FPutStringSD; - - SDLOG_Printf("------------ START ------------\n"); - - isInitialized =TRUE; - - return TRUE; - -file_error: - return FALSE; -} - - -void OS_FPutStringSD(int console, const char *str) -{ -#pragma unused (console) - OS_LockMutex( &work.logInfo[0].info.mutex ); - OS_LogFPutString( &work.logInfo[0].info, str ); - OS_UnlockMutex( &work.logInfo[0].info.mutex ); -} - - -void SDLOG_FinishEx(void) -{ - SDLOG_Finish(); - - if (OS_FPutString == OS_FPutStringSD) { - OS_FPutString = HookedFPutString; - } -} - - -static void SDLOGi_WriteThreadEx(void* arg) -{ -#pragma unused(arg) - - u32 num; - const char* buffer; - u32 dataSize; - - OSMessage msg; - - while(TRUE) - { - - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - num =(u32) msg; - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - buffer =(const char*) msg; - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - dataSize =(u32) msg; - - if(FS_WriteFile(&work.logInfo[num].file, buffer, (u16)dataSize) < 0) - { - if (OS_FPutString == OS_FPutStringSD) { - OS_FPutString = HookedFPutString; - OS_TPrintf("%s L:%d SD Write Error\n",__FILE__, __LINE__); - } - } else { - if (OS_FPutString == HookedFPutString) { - OS_FPutString = OS_FPutStringSD; - } - } - - FS_FlushFile(&work.logInfo[num].file); - - } -} \ No newline at end of file diff --git a/build/tests/Launcher_sdlog/sdlog/Makefile b/build/tests/Launcher_sdlog/sdlog/Makefile deleted file mode 100644 index b3a6c676..00000000 --- a/build/tests/Launcher_sdlog/sdlog/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - libraries - os -# File: Makefile -# -# Copyright 2003 - 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. -# -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS := $(GSUBDIRS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Makefile b/build/tests/Makefile deleted file mode 100644 index f1c4722d..00000000 --- a/build/tests/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS_P = \ - CheckDSHashTable \ - FatalErrorMaker \ - RomTypeTest \ - WirelessChecker \ - CheckPreloadParameters \ - FileRecoveryTest \ - Shared2File \ - build4WLDev \ - CheckSharedFont \ - HashCheckTemplate \ - SimpleBenchmark \ - compressSharedFontLoad/compSharedFont \ - compressSharedFontLoad/testLoadSpeed \ - DisplaySystemInformation \ - Launcher_sdlog \ - TestMaker \ - yuv2rgb \ - ErrorLogTest \ - Makefile \ - WDSTest \ - FatalErrorChecker \ - WDSWrapperTest \ - - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile b/build/tests/NotLaunchRom/Makefile deleted file mode 100644 index 103cac67..00000000 --- a/build/tests/NotLaunchRom/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.0 b/build/tests/NotLaunchRom/Makefile.0 deleted file mode 100644 index a464e703..00000000 --- a/build/tests/NotLaunchRom/Makefile.0 +++ /dev/null @@ -1,51 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE - -TARGET_BIN = notLaunch_secure.tad -ROM_SPEC = secure.rsf - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c - - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKETAD_OPTION += -s -MAKEROM = $(TWLSDK_ROOT)/tools/bin/makerom.TWL.secure.exe -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.1 b/build/tests/NotLaunchRom/Makefile.1 deleted file mode 100644 index d01da319..00000000 --- a/build/tests/NotLaunchRom/Makefile.1 +++ /dev/null @@ -1,51 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE - -TARGET_BIN = notLaunch_system.tad -ROM_SPEC = system.rsf - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c - - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKETAD_OPTION += -s -MAKEROM = $(call eupath,$(TWLSDK_ROOT)/tools/bin/makerom.TWL.sys.exe) -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.2 b/build/tests/NotLaunchRom/Makefile.2 deleted file mode 100644 index b893f5e1..00000000 --- a/build/tests/NotLaunchRom/Makefile.2 +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -FILE_IDX = 0 -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED -GAMECODE = 010A - -TWL_NANDAPP = TRUE -TARGET_BIN = notLaunch_user.tad - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c -ROM_SPEC = user.rsf - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - - -MAKEROM_FLAGS += -DLOGOCHECK_MEDIA=$(MEDIA) \ - -DLOGOCHECK_BANNERPATH=$(BANNERPATH) \ - -DLOGOCHECK_GAMECODE=$(GAMECODE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/include/data.h b/build/tests/NotLaunchRom/include/data.h deleted file mode 100644 index 524c8fe8..00000000 --- a/build/tests/NotLaunchRom/include/data.h +++ /dev/null @@ -1,28 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: data.h - - Copyright 2003 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 BG_DATA_H_ -#define BG_DATA_H_ - -#define SCREEN_SIZE (32 * 24) - -/*-------------------------- Data -------------------------------*/ -#define CHAR_SIZE (16 * 128 * sizeof(int)) -extern const unsigned int d_64_256_bg_schDT[16 * 128]; -extern const unsigned int d_64_256_bg_sclDT[8 * 16]; - -#endif diff --git a/build/tests/NotLaunchRom/secure.rsf b/build/tests/NotLaunchRom/secure.rsf deleted file mode 100644 index a267fce7..00000000 --- a/build/tests/NotLaunchRom/secure.rsf +++ /dev/null @@ -1,196 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - Secure TRUE - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch FALSE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 011A - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/NotLaunchRom/src/data.c b/build/tests/NotLaunchRom/src/data.c deleted file mode 100644 index a8c960e0..00000000 --- a/build/tests/NotLaunchRom/src/data.c +++ /dev/null @@ -1,573 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: data.c - - Copyright 2003 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 "data.h" - -/*---------------------- Palette Data ---------------------------*/ -const unsigned int d_64_256_bg_sclDT[8 * 16] = { - 0x628a7ffe, 0x6f0d6acb, 0x6aec6f2f, 0x77757352, // 0000h - 0x51e6460d, 0x66f05a27, 0x41845a8f, 0x49c53943, - 0x41c73567, 0x4e2c5668, 0x62ad41cb, 0x566c2924, // 0010h - 0x5eb1524f, 0x45e93566, 0x1ca16f55, 0x24e26b13, - 0x31442d02, 0x10607798, 0x7bba39aa, 0x7bdc779b, // 0020h - 0x66c90820, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0030h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0040h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0050h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0070h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0080h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0090h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00c0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00d0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00e0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00f0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------- Character Data -------------------------*/ -const unsigned int d_64_256_bg_schDT[16 * 128] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0001h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x0f000000, - 0x00000000, 0x090d0000, 0x00000000, 0x0f0f0d0f, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0002h - 0x00000000, 0x01010000, 0x09000000, 0x0201010a, - 0x0f0e0d00, 0x0101010a, 0x090f0f0f, 0x1101010a, - 0x0a090f09, 0x11010101, 0x010a090f, 0x11010109, - 0x00000000, 0x00000000, 0x02010000, 0x04030302, // 0003h - 0x05020201, 0x04040403, 0x03050101, 0x06040404, - 0x04121110, 0x06060604, 0x17111016, 0x0b070603, - 0x1b111a1a, 0x0815171b, 0x17131b1b, 0x08080817, - 0x00000000, 0x00000000, 0x04030304, 0x00000304, // 0004h - 0x06070706, 0x06070706, 0x07060b04, 0x07070707, - 0x06151413, 0x06070b06, 0x0c080808, 0x18181318, - 0x0c180808, 0x18180c18, 0x0c18080c, 0x0c0c0c18, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0005h - 0x00000808, 0x00000000, 0x0b0c0b06, 0x00000006, - 0x0707060b, 0x00080b07, 0x07060c18, 0x13190b07, - 0x07060c18, 0x180b1c07, 0x0b0c1919, 0x1c060707, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0006h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000000c, 0x00000000, - 0x00000b06, 0x00000000, 0x0b0b0707, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0007h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0008h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0009h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0010h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x0d000000, 0x00000000, 0x23000000, - 0x00000000, 0x1d0e0000, 0x00000000, 0x0e0e0e00, - 0x1d000000, 0x0f090d0d, 0x0f0f0000, 0x0a0a0f0d, // 0011h - 0x1f0e0f00, 0x0a0a0d1d, 0x201d0e0f, 0x21090f0d, - 0x0f1d0e0f, 0x16200f0f, 0x0f0e0e20, 0x201f160d, - 0x0f090f0e, 0x161f2016, 0x0d0f090d, 0x1f1f0e1f, - 0x01010a0d, 0x1b020201, 0x0101010a, 0x03030502, // 0012h - 0x0201010a, 0x04030201, 0x01010a21, 0x04040111, - 0x11112121, 0x1317021b, 0x1a1a2121, 0x1b241b16, - 0x16090a09, 0x1b101b10, 0x1a020201, 0x151b1b1b, - 0x0604171b, 0x0c180c06, 0x0606171b, 0x180b0b06, // 0013h - 0x06041313, 0x0b0c180b, 0x0c0c130b, 0x0b0c0c0c, - 0x08150b17, 0x180c1813, 0x13041314, 0x19181308, - 0x0c0c141b, 0x19181813, 0x17141b15, 0x0c181808, - 0x180c0b0b, 0x190c0c0c, 0x0c0c070b, 0x070c0c0c, // 0014h - 0x0c181e07, 0x0707190c, 0x0c0c0b1e, 0x0722071e, - 0x19180c18, 0x1c220707, 0x1e190c0b, 0x1c1c0707, - 0x1c070707, 0x25071c07, 0x07070707, 0x1c1c0722, - 0x190c0c1e, 0x07070706, 0x1919191e, 0x19191e1e, // 0015h - 0x1e19191e, 0x1919191e, 0x1c1e1e1c, 0x1e19191e, - 0x221e1e1e, 0x1e1e1e22, 0x221c1c1c, 0x1c220722, - 0x221c1c25, 0x22222225, 0x22262525, 0x25252525, - 0x0707071c, 0x0000000b, 0x071c190c, 0x00000b06, // 0016h - 0x07061919, 0x000b061c, 0x1e1e1e1e, 0x0b0b0707, - 0x071e1e1e, 0x06060707, 0x07071e1c, 0x1c07071c, - 0x1e070722, 0x1c071e19, 0x1e1c2222, 0x0707070b, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0017h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0000000c, 0x00000000, 0x00000006, 0x00000000, - 0x00000c0b, 0x00000000, 0x000c0b06, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0018h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0019h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x20200e00, 0x00000000, 0x200e0e1d, // 0020h - 0x00000000, 0x0d0e201d, 0x0e000000, 0x0e201f20, - 0x20000000, 0x0d0e0e0d, 0x20000000, 0x0f0f0d0e, - 0x1f200000, 0x0d0f0f20, 0x200e0000, 0x200d0e1d, - 0x1f0d090d, 0x0921211f, 0x2009090d, 0x0a211621, // 0021h - 0x0d09090f, 0x0a201f21, 0x0909090f, 0x090d0d0f, - 0x0f090f0f, 0x1f1a090f, 0x0a0f0f09, 0x110a0909, - 0x0a0d0d09, 0x01110a01, 0x0a210f0f, 0x0a090102, - 0x1a020502, 0x0b1b101b, 0x1a120505, 0x04131010, // 0022h - 0x11161103, 0x0404131a, 0x1111110a, 0x04060b1a, - 0x1a1b0a21, 0x0c03151b, 0x101b020a, 0x24111a10, - 0x1b120105, 0x0b171313, 0x1b110102, 0x0b131b15, - 0x0c141506, 0x19181819, 0x0c140b06, 0x07190c0b, // 0023h - 0x14140b06, 0x071c1e06, 0x08081904, 0x07070618, - 0x13142414, 0x07071813, 0x130c1414, 0x1c1e1918, - 0x0c040604, 0x0c180808, 0x14080b0b, 0x0c181808, - 0x221e1e1c, 0x221c1c1c, 0x221e191e, 0x25221c22, // 0024h - 0x221e191e, 0x25252225, 0x221e1919, 0x25221c22, - 0x1c1e1e07, 0x25221c07, 0x1e1e1c07, 0x221c1c1e, - 0x2207071e, 0x221c1c22, 0x1e19190c, 0x22221e1e, - 0x25252525, 0x25252626, 0x27272525, 0x22262627, // 0025h - 0x27272725, 0x22262727, 0x27272725, 0x22262727, - 0x27272725, 0x25252727, 0x27272525, 0x25252527, - 0x25252525, 0x25252525, 0x25252522, 0x25252525, - 0x07222222, 0x07070707, 0x22222222, 0x07070722, // 0026h - 0x22221c1c, 0x07071e07, 0x22071c1c, 0x190c0c19, - 0x1c071c22, 0x180c191e, 0x07222222, 0x180c1e1e, - 0x07070722, 0x18191c1e, 0x071c1c22, 0x191e1c07, - 0x000c0c1e, 0x00000000, 0x13131819, 0x00000000, // 0027h - 0x17180c06, 0x00000000, 0x14180b1e, 0x00000014, - 0x08130b0b, 0x00000014, 0x130c0b0b, 0x00000008, - 0x080c0b19, 0x00001308, 0x080c060b, 0x00001408, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0028h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0029h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x201d0000, 0x090f0e23, 0x201f0000, 0x090f0f20, // 0030h - 0x0d0d2000, 0x090f0f0d, 0x0d0d0e00, 0x090f0f0f, - 0x0d0d2000, 0x0f090f0d, 0x0d0e1d00, 0x0e090f0f, - 0x0e1d1d00, 0x200f0f0f, 0x1d1f2000, 0x0d0e0f0f, - 0x0f200d09, 0x02020202, 0x0f0e0d0a, 0x0201010a, // 0031h - 0x090f090a, 0x020a010a, 0x0d210d0f, 0x0502010a, - 0x1f1f231d, 0x0a0a0a20, 0x20201d23, 0x1f20161d, - 0x1f201d1d, 0x201f1d1d, 0x1f1f0e0e, 0x211d1f1f, - 0x1b111102, 0x1311241b, 0x11112112, 0x1b1b1110, // 0032h - 0x1a111b02, 0x141b1116, 0x10111103, 0x13150b13, - 0x15101a11, 0x04040404, 0x1b1a1a1f, 0x06040415, - 0x101a1a1a, 0x04040413, 0x1b112111, 0x24241b1b, - 0x14141b14, 0x190c0c13, 0x08131414, 0x18180c08, // 0033h - 0x08142414, 0x180c0b0c, 0x08131713, 0x0c0b070b, - 0x17131315, 0x0b06070b, 0x15241404, 0x080c0406, - 0x13141b0b, 0x0814130c, 0x1414241b, 0x13081314, - 0x1919190c, 0x25071e19, 0x190c1818, 0x22221e19, // 0034h - 0x19191813, 0x22221c19, 0x0c190c0c, 0x07220719, - 0x0b18180c, 0x07070706, 0x07190c18, 0x07070707, - 0x1e181813, 0x07070707, 0x180c1813, 0x07070618, - 0x25222222, 0x22252525, 0x22072222, 0x07222222, // 0035h - 0x22072222, 0x1e071e1c, 0x1c070707, 0x1e071c1e, - 0x07070707, 0x07070707, 0x07070707, 0x071e061e, - 0x07070707, 0x1c1e0b1e, 0x07070707, 0x1c1e0707, - 0x07071c07, 0x06061c07, 0x071e1e07, 0x06061c1c, // 0036h - 0x0719191e, 0x06061c06, 0x1e1e0619, 0x1c1c060b, - 0x180c0707, 0x06071c19, 0x18181e22, 0x06061c0c, - 0x18190707, 0x0606060c, 0x06060707, 0x06060604, - 0x0b06060b, 0x00001717, 0x0b0c0b0c, 0x00000403, // 0037h - 0x1914180b, 0x00130b04, 0x15170606, 0x00130c0c, - 0x0b0b0606, 0x00131b14, 0x06060606, 0x00041413, - 0x030b0606, 0x000b1413, 0x24241706, 0x000b1414, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0038h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0039h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x20200e00, 0x0f0d090f, 0x0e1d2000, 0x2021210f, // 0040h - 0x0d201d00, 0x1f0f0f0f, 0x0d0e2000, 0x0f090d0d, - 0x0d0d0e00, 0x090f0d0d, 0x0d0d0e00, 0x0f090f0f, - 0x0f0e0000, 0x1f0f0f0f, 0x20230000, 0x230e0f0f, - 0x1d0e0909, 0x11211f1d, 0x0d09090d, 0x090d200d, // 0041h - 0x0a0a0d1f, 0x020a090a, 0x0a09201f, 0x0201010a, - 0x09090d0e, 0x01020a0f, 0x0909090d, 0x020a0d0f, - 0x0a090f1d, 0x09200e0a, 0x090f0920, 0x161f210f, - 0x1b1b1a1a, 0x1b111010, 0x05151201, 0x17030117, // 0042h - 0x05030502, 0x04041701, 0x02010502, 0x04041717, - 0x05010101, 0x03151112, 0x02010102, 0x151b1112, - 0x17120a0a, 0x1b161202, 0x11111a1f, 0x12161112, - 0x1314141b, 0x08131313, 0x1314141b, 0x13140813, // 0043h - 0x24241013, 0x17241b1b, 0x13131504, 0x17241414, - 0x13130404, 0x04132413, 0x04040404, 0x04031703, - 0x04060404, 0x04040404, 0x04040604, 0x03030b04, - 0x0b060c08, 0x07070b0b, 0x0604060b, 0x0604060c, // 0044h - 0x0b040606, 0x0b0b0617, 0x0b040606, 0x0b040404, - 0x0b0b0406, 0x0b0b190b, 0x15030304, 0x0b15130b, - 0x03030304, 0x1b0b0b0b, 0x03030b0b, 0x240b0b03, - 0x071c061c, 0x06060707, 0x06060606, 0x06060606, // 0045h - 0x0606040b, 0x0c0b0404, 0x06060b0c, 0x170c0406, - 0x06040b03, 0x0404040b, 0x0b041513, 0x040b150b, - 0x0b040b1b, 0x15151503, 0x030b0414, 0x03170303, - 0x0606071c, 0x0b0b0b0b, 0x0604040b, 0x04030b0b, // 0046h - 0x0b040b15, 0x1504040b, 0x0b150b0b, 0x0b040603, - 0x0b17150b, 0x04040b04, 0x0b150b03, 0x04151503, - 0x15040404, 0x04030303, 0x15040404, 0x03121215, - 0x13241413, 0x00051b1b, 0x04131b17, 0x00151503, // 0047h - 0x040b1b17, 0x00171704, 0x13150b17, 0x00010117, - 0x10111504, 0x00010512, 0x10111504, 0x0001051b, - 0x11130504, 0x00000312, 0x13111703, 0x00000104, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0048h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0049h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1d280000, 0x1d231d1d, 0x23280000, 0x0e231d1d, // 0050h - 0x20000000, 0x0f1d1d0e, 0x20000000, 0x090d0d0e, - 0x0e000000, 0x090f0e0d, 0x00000000, 0x0f0d200e, - 0x00000000, 0x0e0d0d0e, 0x00000000, 0x23200e00, - 0x200f0a0f, 0x0d201d1d, 0x0d0a0909, 0x011f1f20, // 0051h - 0x0a21200a, 0x0f0d0d0f, 0x0a1f0e09, 0x0f210f01, - 0x0a0a0e0d, 0x2020090a, 0x1d0d0d0d, 0x211d200e, - 0x231d1d1d, 0x0a1d231d, 0x23282323, 0x011f1f0f, - 0x1a1a1209, 0x03131111, 0x16120305, 0x121b101a, // 0052h - 0x21111209, 0x12161111, 0x1221090a, 0x1b160911, - 0x0101120f, 0x11161a01, 0x0212090a, 0x121a1101, - 0x1e180102, 0x120a1212, 0x14150202, 0x12091b16, - 0x03050303, 0x03031703, 0x0403171b, 0x15151504, // 0053h - 0x04030505, 0x17150304, 0x04030505, 0x03030304, - 0x03030502, 0x02020404, 0x03051201, 0x17050403, - 0x03051201, 0x05050303, 0x05021212, 0x02050305, - 0x15031515, 0x17171515, 0x03151b1b, 0x04040b15, // 0054h - 0x12101b17, 0x04040315, 0x1b130504, 0x03040312, - 0x03040101, 0x03030305, 0x0305171b, 0x05030303, - 0x03050502, 0x05030303, 0x03051212, 0x01050303, - 0x15050415, 0x04150517, 0x15151504, 0x04151512, // 0055h - 0x01050304, 0x04041513, 0x05150303, 0x04040305, - 0x05050503, 0x03040217, 0x05050502, 0x03030117, - 0x03011b02, 0x05030303, 0x03051112, 0x01050503, - 0x03040404, 0x17101715, 0x03040404, 0x121b1205, // 0056h - 0x05030304, 0x12020215, 0x05040403, 0x01121705, - 0x05030303, 0x01010205, 0x01050505, 0x1b05111a, - 0x1b030505, 0x12011111, 0x01121212, 0x01111205, - 0x031b1203, 0x00001205, 0x05111705, 0x00002111, // 0057h - 0x1b1b0205, 0x00000016, 0x11010502, 0x00000016, - 0x02011212, 0x00000012, 0x2912011b, 0x00000000, - 0x12120111, 0x00000000, 0x00091112, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0058h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0059h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x23281d00, 0x00000000, 0x23280000, // 0060h - 0x00000000, 0x23000000, 0x00000000, 0x23000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1f231d23, 0x091d0f0e, 0x1f1d1d1d, 0x201d201f, // 0061h - 0x1d1d1d23, 0x20231d1d, 0x1d1d2323, 0x0e201f23, - 0x1f1d201d, 0x200f1d23, 0x1f1f2300, 0x1d0d1623, - 0x1f230000, 0x1d1d1f23, 0x1d000000, 0x1f1d1f1d, - 0x1f160a02, 0x1a16211d, 0x1f200e0a, 0x1f23231f, // 0062h - 0x1d0e0e0e, 0x1d1d1d1d, 0x1d1f1d1d, 0x1f1f1d1d, - 0x1d201d1d, 0x0d0f201f, 0x201d1d1d, 0x2902201d, - 0x1d0e2323, 0x090a0d23, 0x231d1d1f, 0x0f0a0a1d, - 0x031b1611, 0x05020503, 0x0112161f, 0x05052902, // 0063h - 0x12291a1f, 0x09010212, 0x09291220, 0x1f0d0a12, - 0x09290512, 0x0d1f110a, 0x29292929, 0x29090a01, - 0x29120a0a, 0x01292929, 0x2929090f, 0x01091229, - 0x05111f12, 0x12011205, 0x111f1105, 0x11011201, // 0064h - 0x1f1f1a09, 0x0a120511, 0x16211f1f, 0x01122911, - 0x09090a11, 0x0a290202, 0x29292929, 0x1f12091b, - 0x0d120229, 0x0d090916, 0x1d0d0a29, 0x120a0d1f, - 0x05030212, 0x01020205, 0x05030212, 0x05020205, // 0065h - 0x03050501, 0x03291b12, 0x02050505, 0x03011111, - 0x05050501, 0x29122929, 0x05022921, 0x01120105, - 0x02022909, 0x09090205, 0x02020229, 0x09120205, - 0x01091f21, 0x161f0d09, 0x12161601, 0x1f16111b, // 0066h - 0x12110504, 0x21160d01, 0x29010102, 0x12160f01, - 0x01020201, 0x021b1202, 0x12021229, 0x0005020a, - 0x12121201, 0x00002912, 0x2909110a, 0x00000029, - 0x00201101, 0x00000000, 0x00002912, 0x00000000, // 0067h - 0x00000001, 0x00000000, 0x00000029, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0068h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0069h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0070h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x200d2123, 0x00000000, 0x0d0f0000, // 0071h - 0x00000000, 0x0d000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1d231d1d, 0x0d0d0f1f, 0x20201f20, 0x1d1f0a0d, // 0072h - 0x0909090d, 0x0e090a0a, 0x20200d00, 0x0a0a0a0e, - 0x23000000, 0x0a091d23, 0x00000000, 0x09090000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x090a090d, 0x12090d0d, 0x0e0e200f, 0x01010e20, // 0073h - 0x290d1d0d, 0x0d110d0a, 0x010e231d, 0x230d0502, - 0x1d1d200e, 0x23210a0e, 0x200e090a, 0x1d231f1d, - 0x090a0000, 0x1d1f2020, 0x00000000, 0x00000000, - 0x1f1d0d29, 0x200d201d, 0x211f2112, 0x20112120, // 0074h - 0x1621201f, 0x09161d0d, 0x1d21201f, 0x1d1d1d23, - 0x0d202121, 0x201f210d, 0x0f0d200d, 0x1f1d200f, - 0x0d201d1d, 0x00001d1d, 0x00000000, 0x00000000, - 0x2912090f, 0x0a292929, 0x121d2021, 0x090a0912, // 0075h - 0x091d210a, 0x09091112, 0x0f1d1111, 0x00090a0f, - 0x091d1d1d, 0x00000009, 0x00001d1d, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0912120a, 0x00000000, 0x00001201, 0x00000000, // 0076h - 0x0000000a, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0077h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0078h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0079h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - - -/* EOF */ diff --git a/build/tests/NotLaunchRom/src/main.c b/build/tests/NotLaunchRom/src/main.c deleted file mode 100644 index 32bb2741..00000000 --- a/build/tests/NotLaunchRom/src/main.c +++ /dev/null @@ -1,109 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: main.c - - Copyright 2003 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$ - *---------------------------------------------------------------------------*/ -//--------------------------------------------------------------------------- -// A sample that use BG #0 as text mode: -// -// This sample simply displays a sphere on the display. -// -// HOWTO: -// 1. Transfer the character data by GX_LoadBGxChar(). -// 2. Transfer the palette data by GX_LoadBGPltt(). -// 3. Transfer the screen data by GX_LoadBGxScr(). -// -// Do not forget to flush the corresponding cache if you modified the data -// before transfer. -//--------------------------------------------------------------------------- - -#ifdef SDK_TWL -#include -#else -#include -#endif -#include "DEMO.h" -#include "data.h" - -static u16 sScrnBuf[SCREEN_SIZE]; // Buffer for screen data(BG #0) - -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - //--------------------------------------------------------------------------- - // Initialize: - // They enable IRQ interrupts, initialize VRAM, and set BG #0 for text mode. - //--------------------------------------------------------------------------- - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBG0Only(); - - //--------------------------------------------------------------------------- - // Transmitting the character data and the palette data - //--------------------------------------------------------------------------- - GX_LoadBG0Char(d_64_256_bg_schDT, 0, sizeof(d_64_256_bg_schDT)); - GX_LoadBGPltt(d_64_256_bg_sclDT, 0, sizeof(d_64_256_bg_sclDT)); - - { - int i, j; - for (i = 0; i < 8; i++) - { - for (j = 0; j < 8; j++) - { - sScrnBuf[(i * 32) + j] = (u16)((i * 0x10) + j); - } - } - } - // Store the data onto the main memory, and invalidate the cache. - DC_FlushRange(sScrnBuf, sizeof(sScrnBuf)); - /* DMA操作でIOレジスタへアクセスするのでキャッシュの Wait は不要 */ - // DC_WaitWriteBufferEmpty(); - - // DMA transfer to BG #0 screen - GX_LoadBG0Scr(sScrnBuf, 0, sizeof(sScrnBuf)); - - DEMOStartDisplay(); - - //--------------------------------------------------------------------------- - // Main Loop - //--------------------------------------------------------------------------- - while (1) - { -#ifdef SDK_AUTOTEST - GX_SetBankForLCDC(GX_VRAM_LCDC_C); - EXT_TestSetVRAMForScreenShot(GX_VRAM_LCDC_C); - EXT_TestScreenShot(100, 0xC7953680); - EXT_TestTickCounter(); -#endif //SDK_AUTOTEST - - OS_WaitVBlankIntr(); // Waiting the end of VBlank interrupt - GX_LoadBG0Scr(sScrnBuf, 0, sizeof(sScrnBuf)); - } -} - -//--------------------------------------------------------------------------- -// VBlank interrupt function: -// -// Interrupt handlers are registered on the interrupt table by OS_SetIRQFunction. -// OS_EnableIrqMask selects IRQ interrupts to enable, and -// OS_EnableIrq enables IRQ interrupts. -// Notice that you have to call 'OS_SetIrqCheckFlag' to check a VBlank interrupt. -//--------------------------------------------------------------------------- -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} diff --git a/build/tests/NotLaunchRom/system.rsf b/build/tests/NotLaunchRom/system.rsf deleted file mode 100644 index 7dd8942e..00000000 --- a/build/tests/NotLaunchRom/system.rsf +++ /dev/null @@ -1,195 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch FALSE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 011A - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/NotLaunchRom/user.rsf b/build/tests/NotLaunchRom/user.rsf deleted file mode 100644 index 85b18697..00000000 --- a/build/tests/NotLaunchRom/user.rsf +++ /dev/null @@ -1,195 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(LOGOCHECK_GAMECODE) - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/Makefile b/build/tests/RomTypeTest/ARM9/Makefile deleted file mode 100644 index 3ef269e2..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3 Makefile.4 Makefile.5 \ - Makefile.6 Makefile.7 Makefile.8 Makefile.9 Makefile.a Makefile.b \ - Makefile.c Makefile.h \ - Makefile.i Makefile.j Makefile.k - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.0 b/build/tests/RomTypeTest/ARM9/Makefile.0 deleted file mode 100644 index a0db88bd..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.0 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.1 b/build/tests/RomTypeTest/ARM9/Makefile.1 deleted file mode 100644 index 295a0190..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.1 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 1 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.2 b/build/tests/RomTypeTest/ARM9/Makefile.2 deleted file mode 100644 index fdb9e52e..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.2 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 2 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.3 b/build/tests/RomTypeTest/ARM9/Makefile.3 deleted file mode 100644 index dceb5ad8..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.3 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 3 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.4 b/build/tests/RomTypeTest/ARM9/Makefile.4 deleted file mode 100644 index 023be1e1..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.4 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 4 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.5 b/build/tests/RomTypeTest/ARM9/Makefile.5 deleted file mode 100644 index 25957624..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.5 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 5 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.6 b/build/tests/RomTypeTest/ARM9/Makefile.6 deleted file mode 100644 index 9eccec93..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.6 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 6 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.7 b/build/tests/RomTypeTest/ARM9/Makefile.7 deleted file mode 100644 index fae03c69..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.7 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 7 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.8 b/build/tests/RomTypeTest/ARM9/Makefile.8 deleted file mode 100644 index b1b44b6f..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.8 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 8 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.9 b/build/tests/RomTypeTest/ARM9/Makefile.9 deleted file mode 100644 index 26a85d17..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.9 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 9 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.a b/build/tests/RomTypeTest/ARM9/Makefile.a deleted file mode 100644 index 83348305..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.a +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = a -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.b b/build/tests/RomTypeTest/ARM9/Makefile.b deleted file mode 100644 index 08b8224b..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.b +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = b -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.c b/build/tests/RomTypeTest/ARM9/Makefile.c deleted file mode 100644 index f8bd7ad8..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.c +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = c -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.h b/build/tests/RomTypeTest/ARM9/Makefile.h deleted file mode 100644 index ad5100a2..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.h +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = h -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.i b/build/tests/RomTypeTest/ARM9/Makefile.i deleted file mode 100644 index a1a1cb33..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.i +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = i -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.j b/build/tests/RomTypeTest/ARM9/Makefile.j deleted file mode 100644 index be75d339..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.j +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = j -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.k b/build/tests/RomTypeTest/ARM9/Makefile.k deleted file mode 100644 index caf16051..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.k +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = k -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/main0.rsf b/build/tests/RomTypeTest/ARM9/main0.rsf deleted file mode 100644 index 4ba1965f..00000000 --- a/build/tests/RomTypeTest/ARM9/main0.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main1.rsf b/build/tests/RomTypeTest/ARM9/main1.rsf deleted file mode 100644 index 3f11e2da..00000000 --- a/build/tests/RomTypeTest/ARM9/main1.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_1.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main2.rsf b/build/tests/RomTypeTest/ARM9/main2.rsf deleted file mode 100644 index 045dddc3..00000000 --- a/build/tests/RomTypeTest/ARM9/main2.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_2.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main3.rsf b/build/tests/RomTypeTest/ARM9/main3.rsf deleted file mode 100644 index 78932ce2..00000000 --- a/build/tests/RomTypeTest/ARM9/main3.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_3.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main4.rsf b/build/tests/RomTypeTest/ARM9/main4.rsf deleted file mode 100644 index 68adda4e..00000000 --- a/build/tests/RomTypeTest/ARM9/main4.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_4.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main5.rsf b/build/tests/RomTypeTest/ARM9/main5.rsf deleted file mode 100644 index 95188af0..00000000 --- a/build/tests/RomTypeTest/ARM9/main5.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_5.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main6.rsf b/build/tests/RomTypeTest/ARM9/main6.rsf deleted file mode 100644 index b8155275..00000000 --- a/build/tests/RomTypeTest/ARM9/main6.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_6.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main7.rsf b/build/tests/RomTypeTest/ARM9/main7.rsf deleted file mode 100644 index bfc391a5..00000000 --- a/build/tests/RomTypeTest/ARM9/main7.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_7.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main8.rsf b/build/tests/RomTypeTest/ARM9/main8.rsf deleted file mode 100644 index 7ee473d5..00000000 --- a/build/tests/RomTypeTest/ARM9/main8.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_8.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main9.rsf b/build/tests/RomTypeTest/ARM9/main9.rsf deleted file mode 100644 index 9cdf6617..00000000 --- a/build/tests/RomTypeTest/ARM9/main9.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_9.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maina.rsf b/build/tests/RomTypeTest/ARM9/maina.rsf deleted file mode 100644 index b575ba4e..00000000 --- a/build/tests/RomTypeTest/ARM9/maina.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_a.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainb.rsf b/build/tests/RomTypeTest/ARM9/mainb.rsf deleted file mode 100644 index 85a3c914..00000000 --- a/build/tests/RomTypeTest/ARM9/mainb.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_b.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainc.rsf b/build/tests/RomTypeTest/ARM9/mainc.rsf deleted file mode 100644 index ac929d83..00000000 --- a/build/tests/RomTypeTest/ARM9/mainc.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_c.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainh.rsf b/build/tests/RomTypeTest/ARM9/mainh.rsf deleted file mode 100644 index 02d4c355..00000000 --- a/build/tests/RomTypeTest/ARM9/mainh.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_h.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maini.rsf b/build/tests/RomTypeTest/ARM9/maini.rsf deleted file mode 100644 index 28e76872..00000000 --- a/build/tests/RomTypeTest/ARM9/maini.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_i.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainj.rsf b/build/tests/RomTypeTest/ARM9/mainj.rsf deleted file mode 100644 index 084716a8..00000000 --- a/build/tests/RomTypeTest/ARM9/mainj.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_j.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maink.rsf b/build/tests/RomTypeTest/ARM9/maink.rsf deleted file mode 100644 index c53b6cd6..00000000 --- a/build/tests/RomTypeTest/ARM9/maink.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_k.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c deleted file mode 100644 index 0f77a0a7..00000000 --- a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c +++ /dev/null @@ -1,419 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 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 -#include -#include "misc.h" -#include "RomTypeTest.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define ENABLE_CONTENT 0 -#define ENABLE_SHARED2 0 - -#if (ENABLE_CONTENT == 1) -#define CTRUE TRUE -#else -#define CTRUE FALSE -#endif - -#if (ENABLE_SHARED2 == 1) -#define STRUE TRUE -#else -#define STRUE FALSE -#endif - -#define TEST_NUM 15 - -typedef enum AccessPermission { - PERMISSION_NA = 0, - PERMISSION_RO, - PERMISSION_RW, - PERMISSION_ERROR, - PERMISSION_MAX -} -AccessPermission; - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static AccessPermission RWExTestCore( char *path, char *testfile ); -static AccessPermission SRLTest( void ); -static AccessPermission ContentTest( void ); -static void FinalizeRWTest( FSFile *file, char* filename ); -static AccessPermission RWTestCore( char *path, char *testfile ); -static AccessPermission RWTest( char *path ); -static void TestFSPermission( void ); - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- -static BOOL s_quiettest = FALSE; - -// const data ----------------------------------------- -static AccessPermission s_answer_data[TEST_NUM]; - -static const u16 *s_answer_str[PERMISSION_MAX] = -{ - L"NA", - L"RO", - L"RW", - L"×", -}; - -static const u16 *s_test_name[TEST_NUM] = -{ - L"nand:", - L"nand2:", - L"content:", - L"shared1:", - L"shared2:", - L"photo:", - L"dataPub:", - L"dataPrv:", - L"sdmc:", - L"nand:/sys", - L"nand:/import", - L"nand:/tmp", - L"nand:/", - L"nand:/", - L"nand:/" -}; - -//====================================================== -// テストプログラム -//====================================================== - -static AccessPermission RWExistTestCore( char *path, char *testfile ) -{ - char filename[256]; - int len; - char buf[5]; - FSFile file[1]; - AccessPermission result = PERMISSION_RW; - - FS_InitFile( file ); - STD_TSNPrintf( filename, 256, "%s/%s", path, testfile ); - - // RWLモードファイルオープン - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_RWL ) ) - { - // RWLモードファイルオープン失敗 - if( !s_quiettest ) OS_TPrintf("%s:RWL mode open failed.\n",filename); - FS_CloseFile( file ); - // Rモードファイルオープン - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - // Rモードファイルオープン失敗 - if( !s_quiettest ) OS_TPrintf("%s:R mode open failed.\n",filename); - return PERMISSION_NA; - } - result = PERMISSION_RO; - } - - // ファイルリード - len = FS_ReadFile( file, buf, 3 ); - if( len != 3 ) - { - // リード失敗 - if( !s_quiettest ) OS_TPrintf("%s:read failed.\n",filename); - FS_CloseFile( file ); - return PERMISSION_ERROR; - } - - // ファイルクローズ - if( !FS_CloseFile( file ) ) - { - // クローズ失敗 - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - return PERMISSION_ERROR; - } - - return result; -} - -static AccessPermission BannerTest( void ) -{ - return RWExistTestCore( "nand:", "" ); -} - -static AccessPermission SRLTest( void ) -{ - return RWExistTestCore( "nand:", "" ); -} - -static AccessPermission ContentTest( void ) -{ - return RWExistTestCore( "content:", "title.tmd" ); -} - -static AccessPermission Shared1Test( void ) -{ - return RWExistTestCore( "shared1:", "TWLCFG0.dat" ); -} - -static void FinalizeRWTest( FSFile *file, char* filename ) -{ - FS_CloseFile( file ); - FS_DeleteFile( filename ); -} - -// パス名は最後にスラッシュを入れない事 -static AccessPermission RWTestCore( char *path, char *testfile ) -{ - char filename[256]; - int len; - char buf[5]; - FSFile file[1]; - - FS_InitFile( file ); - STD_TSNPrintf( filename, 256, "%s/%s", path, testfile ); - - // ファイル残ってると嫌なので削除を先に走らせておく(テスト結果には影響せず) - FS_DeleteFile(filename); - - // ファイル作成テスト - if ( FS_CreateFile(filename, FS_PERMIT_R | FS_PERMIT_W) ) - { - // ファイルオープン - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_W ) ) - { - // ファイルオープン失敗 - if( !s_quiettest ) OS_TPrintf("%s:open failed.\n",filename); - FS_DeleteFile( filename ); - return PERMISSION_ERROR; - } - // ファイルライト - len = FS_WriteFile( file, "test", 5); - if( len != 5 ) - { - // ライト失敗 - if( !s_quiettest ) OS_TPrintf("%s:write failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ファイルクローズ - if( !FS_CloseFile( file ) ) - { - // クローズ失敗 - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - - // ファイルオープン - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - // ファイルオープン失敗 - if( !s_quiettest ) OS_TPrintf("%s:open failed.\n",filename); - FS_DeleteFile( filename ); - return PERMISSION_ERROR; - } - // ファイルリード - len = FS_ReadFile( file, buf, len ); - if( len != 5 || STD_CompareString( buf, "test" ) != 0 ) - { - // リード失敗 - if( !s_quiettest ) OS_TPrintf("%s:read failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ファイルクローズ - if( !FS_CloseFile( file ) ) - { - // クローズ失敗 - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ファイルデリート - if( !FS_DeleteFile( filename )) - { - // デリート失敗 - if( !s_quiettest ) OS_TPrintf("%s:delete failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - }else - { - // ファイル作成失敗 - FSResult fs_result = FS_GetArchiveResultCode( filename ); - if( !s_quiettest ) OS_TPrintf("%s:cleate failed.\n",filename); - OS_TPrintf( "FS_GetArchiveResultCode(%s) : %d\n", filename, fs_result ); - if( FS_RESULT_ERROR == fs_result ) - { - // ファイル作成にNO_ENTRY=存在しないディレクトリの下にファイルを作ろうとしたかマウントされていない - // どちらにせよアクセスできないし、ディレクトリの存在を確認する事もできないので、パーミッションNAとして扱う - return PERMISSION_NA; - }else if( FS_RESULT_PERMISSION_DENIED == fs_result ) - { - // PERMISSION_DENIEDを貰った場合、ROでない事を確認する必要がある - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - if( FS_RESULT_PERMISSION_DENIED == FS_GetArchiveResultCode( filename ) ) - { - // 架空のファイルをRモードで読み込もうとした結果もDENIEDならパーミッションNA - return PERMISSION_NA; - } - } - return PERMISSION_ERROR; - } - // あとはERROR扱い - return PERMISSION_ERROR; - } - - return PERMISSION_RW; -} - -static AccessPermission RWTest( char *path ) -{ - return RWTestCore( path, "test.txt" ); -} - -static AccessPermission TMPJumpTest( void ) -{ - return RWTestCore( "nand:", "" ); -} - -static void TestFSPermission( void ) -{ - AccessPermission result[TEST_NUM]; - BOOL test_ok = TRUE; - int l; - - result[0] = RWTest( "nand:" ); // nand: - result[1] = RWTest( "nand2:" ); // nand2: - result[2] = ContentTest(); // content: - result[3] = Shared1Test(); // shared1: - result[4] = RWTest( "shared2:" ); // shared2: - result[5] = RWTest( "photo:" ); // photo: - result[6] = RWTest( "dataPub:" ); // dataPub: - result[7] = RWTest( "dataPrv:" ); // dataPrv: - result[8] = RWTest( "sdmc:" ); // sdmc: - result[9] = RWTest( "nand:/sys" ); // nand:/sys - result[10] = RWTest( "nand:/import" ); // nand:/import - result[11] = RWTest( "nand:/tmp" ); // nand:/tmp - result[12] = SRLTest(); // nand:/ - result[13] = BannerTest(); // nand:/ - result[14] = TMPJumpTest(); // nand:/ - - for( l=0; ltitleID_Lo[1]); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_WHITE, test_ok ? (const u16 *)L"Test Succeeded." : (const u16 *)L"Test Failed..." ); - - for( l=0; l<15; l++ ) - { - PutStringUTF16Sub( 8*1, l * 12, TXT_COLOR_WHITE, s_test_name[l]); - PutStringUTF16Sub( 8*18 + 8, l * 12, TXT_COLOR_WHITE, s_answer_str[ s_answer_data[l] ]); - PutStringUTF16Sub( 8*18 + 8*7, l * 12, ( result[l]==s_answer_data[l] ? TXT_COLOR_CYAN : TXT_COLOR_YELLOW ), s_answer_str[ result[l] ]); - } - -} - -static void makeAnswerData( void ) -{ - ROM_Header_Short *rhs = (ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF); - - BOOL isNandApp = (rhs->titleID_Hi & TITLE_ID_HI_MEDIA_MASK) ? TRUE : FALSE; - BOOL isSecureApp = (rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK) ? TRUE : FALSE; - BOOL isNandAccessOn = (rhs->access_control.nand_access) ? TRUE : FALSE; - BOOL isSDCardAccessOn = (rhs->access_control.sd_card_access) ? TRUE : FALSE; - BOOL isEnablePublicSaveData = ( rhs->public_save_data_size != 0 ) ? TRUE : FALSE; - BOOL isEnablePrivateSaveData = ( rhs->private_save_data_size != 0 ) ? TRUE : FALSE; - - // 正しいアクセス設定情報を生成、特筆しない限りは、指定条件下でフルアクセス - s_answer_data[0] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand: (NANDアプリ or NANDアクセスON)and SecureApp - s_answer_data[1] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand2: (NANDアプリ or NANDアクセスON)and SecureApp - s_answer_data[2] = ( isNandApp && CTRUE ) ? PERMISSION_RO : PERMISSION_NA; // content: 現在無効。有効の場合はNANDアプリのみReadOnly - s_answer_data[3] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RO : PERMISSION_NA; // shared1: (NANDアプリ or NANDアクセスON)でReadOnly - s_answer_data[4] = ( ( isNandApp || isNandAccessOn ) && STRUE ) ? PERMISSION_RW : PERMISSION_NA; // shared2: 現在無効。有効の場合は(NANDアプリ or NANDアクセスON) - s_answer_data[5] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RW : PERMISSION_NA; // photo: NANDアプリ or NANDアクセスON - s_answer_data[6] = ( isNandApp && isEnablePublicSaveData ) ? PERMISSION_RW : PERMISSION_NA; // dataPub: NANDアプリ and dataPub サイズ設定あり - s_answer_data[7] = ( isNandApp && isEnablePrivateSaveData ) ? PERMISSION_RW : PERMISSION_NA; // dataPrv: NANDアプリ and dataPrv サイズ設定あり - s_answer_data[8] = isSDCardAccessOn ? PERMISSION_RW : PERMISSION_NA; // sdmc: SDアクセス可(SDカードが刺さっていないと失敗) - s_answer_data[9] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/sys (NANDアプリ or NANDアクセスON)and SecureApp - s_answer_data[10] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/import (NANDアプリ or NANDアクセスON)and SecureApp - s_answer_data[11] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/tmp (NANDアプリ or NANDアクセスON)and SecureApp - s_answer_data[12] = isNandApp ? ( isSecureApp ? PERMISSION_RW : PERMISSION_RO ) : PERMISSION_NA; // nand:/ NANDアプリでReadOnly(Secureの場合はフルアクセス) - s_answer_data[13] = isNandApp ? PERMISSION_RW : PERMISSION_NA; // nand:/ NANDアプリ - s_answer_data[14] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RW : PERMISSION_NA; // nand:/ NANDアプリ or NANDアクセスON -} - -// テストプログラムの初期化 -void RomTypeTestInit( void ) -{ - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PrintfSJIS( 1 * 8, 9 * 8, TXT_COLOR_BLACK, "FATFSPermissionCheck %c", (char)((ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF))->titleID_Lo[1]); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"Start." ); - //GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - s_quiettest = FALSE; - - makeAnswerData(); - - TestFSPermission(); - -} - - -// テストプログラムのメインループ -void RomTypeTestMain(void) -{ - BOOL tp_cancel = FALSE; - - ReadTP(); // タッチパネル入力の取得 - - // [RETURN]ボタン押下チェック - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - if( ( pad.trg & PAD_BUTTON_A ) ) { - } - - if( ( pad.trg & PAD_BUTTON_X ) ) { - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - //GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h deleted file mode 100644 index 86e4339b..00000000 --- a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 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 __ROM_TYPE_TEST_H__ -#define __ROM_TYPE_TEST_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void RomTypeTestInit( void ); -void RomTypeTestMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __ROM_TYPE_TEST_H__ diff --git a/build/tests/RomTypeTest/ARM9/src/main.c b/build/tests/RomTypeTest/ARM9/src/main.c deleted file mode 100644 index 72fe2c5e..00000000 --- a/build/tests/RomTypeTest/ARM9/src/main.c +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 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 -#include "misc.h" -#include "RomTypeTest.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // 初期化---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON - - // 割り込み許可---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // デバイス初期化------------------------------- - TP_Init(); - (void)RTC_Init(); - - // システムの初期化------------------ - InitAllocator(); - - InitBG(); - RomTypeTestInit(); - // メインループ---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - ReadTP(); // TP入力の取得 - - RomTypeTestMain(); - } -} - - -// ============================================================================ -// 割り込み処理 -// ============================================================================ - -// Vブランク割り込み -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット -} - diff --git a/build/tests/RomTypeTest/Makefile b/build/tests/RomTypeTest/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/RomTypeTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/banner/Makefile b/build/tests/RomTypeTest/banner/Makefile deleted file mode 100644 index a03da7d0..00000000 --- a/build/tests/RomTypeTest/banner/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3 Makefile.4 Makefile.5 \ - Makefile.6 Makefile.7 Makefile.8 Makefile.9 Makefile.a Makefile.b \ - Makefile.c Makefile.d Makefile.e Makefile.f Makefile.g Makefile.h \ - Makefile.i Makefile.j Makefile.k - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.0 b/build/tests/RomTypeTest/banner/Makefile.0 deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.0 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.1 b/build/tests/RomTypeTest/banner/Makefile.1 deleted file mode 100644 index 54f8cd07..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.1 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 1 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.2 b/build/tests/RomTypeTest/banner/Makefile.2 deleted file mode 100644 index 13eeca27..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.2 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 2 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.3 b/build/tests/RomTypeTest/banner/Makefile.3 deleted file mode 100644 index 5bfadf81..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.3 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 3 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.4 b/build/tests/RomTypeTest/banner/Makefile.4 deleted file mode 100644 index 7ea01f33..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.4 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 4 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.5 b/build/tests/RomTypeTest/banner/Makefile.5 deleted file mode 100644 index 4c44bd16..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.5 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 5 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.6 b/build/tests/RomTypeTest/banner/Makefile.6 deleted file mode 100644 index a3cb390c..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.6 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 6 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.7 b/build/tests/RomTypeTest/banner/Makefile.7 deleted file mode 100644 index c4e38d94..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.7 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 7 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.8 b/build/tests/RomTypeTest/banner/Makefile.8 deleted file mode 100644 index b42bcec4..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.8 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 8 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.9 b/build/tests/RomTypeTest/banner/Makefile.9 deleted file mode 100644 index 5657c255..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.9 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 9 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.a b/build/tests/RomTypeTest/banner/Makefile.a deleted file mode 100644 index fc320423..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.a +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = a - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.b b/build/tests/RomTypeTest/banner/Makefile.b deleted file mode 100644 index 77b38975..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.b +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = b - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.c b/build/tests/RomTypeTest/banner/Makefile.c deleted file mode 100644 index c80098fe..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.c +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = c - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.d b/build/tests/RomTypeTest/banner/Makefile.d deleted file mode 100644 index 1187190a..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.d +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = d - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.e b/build/tests/RomTypeTest/banner/Makefile.e deleted file mode 100644 index 32024fb5..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.e +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = e - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.f b/build/tests/RomTypeTest/banner/Makefile.f deleted file mode 100644 index 2360a8d6..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.f +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = f - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.g b/build/tests/RomTypeTest/banner/Makefile.g deleted file mode 100644 index 3d947db4..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.g +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = g - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.h b/build/tests/RomTypeTest/banner/Makefile.h deleted file mode 100644 index 55893d65..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.h +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = h - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.i b/build/tests/RomTypeTest/banner/Makefile.i deleted file mode 100644 index 298a0bdb..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.i +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = i - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.j b/build/tests/RomTypeTest/banner/Makefile.j deleted file mode 100644 index e8d5ea6a..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.j +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = j - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.k b/build/tests/RomTypeTest/banner/Makefile.k deleted file mode 100644 index b1cff1b6..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.k +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = k - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/banner_v3.bsf b/build/tests/RomTypeTest/banner/banner_v3.bsf deleted file mode 100644 index d595b6d3..00000000 Binary files a/build/tests/RomTypeTest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/icon/gameIcon.bmp b/build/tests/RomTypeTest/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/RomTypeTest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin b/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index f91f07dd..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf deleted file mode 100644 index b793ddcf..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf deleted file mode 100644 index b5bcbdb4..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf deleted file mode 100644 index e506e210..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf deleted file mode 100644 index e2025bf5..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf deleted file mode 100644 index f6cbe8a3..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf deleted file mode 100644 index 9886587c..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf deleted file mode 100644 index 27726336..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf deleted file mode 100644 index 8cb61ef2..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf deleted file mode 100644 index 3a35c6d0..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf deleted file mode 100644 index e7206a8a..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf deleted file mode 100644 index 02983981..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf deleted file mode 100644 index 7475a88a..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf deleted file mode 100644 index 58156ac8..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf deleted file mode 100644 index 69ecd6ec..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf deleted file mode 100644 index 63a152b1..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf deleted file mode 100644 index 3fcb24cf..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf deleted file mode 100644 index 19e03afe..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf deleted file mode 100644 index 59f07fb2..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf deleted file mode 100644 index cd034555..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf deleted file mode 100644 index 88b33805..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/Shared2File/Makefile b/build/tests/Shared2File/Makefile deleted file mode 100644 index 199b8d48..00000000 --- a/build/tests/Shared2File/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos.TWL - nandApp - build -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED - -TITLEID_LO = 0S2A -SRCS = main.c -TARGET_BIN = shared2Test.tad - -TWL_NANDAPP = TRUE - -#------------------------- -#-- NAND アプリではいくつかのパラメータの指定のために固有の RSF ファイルが必要です。 - -ROM_SPEC = main.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/Shared2File/main.rsf b/build/tests/Shared2File/main.rsf deleted file mode 100644 index d58d4d04..00000000 --- a/build/tests/Shared2File/main.rsf +++ /dev/null @@ -1,198 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0S2A - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/Shared2File/src/main.c b/build/tests/Shared2File/src/main.c deleted file mode 100644 index f182ab80..00000000 --- a/build/tests/Shared2File/src/main.c +++ /dev/null @@ -1,490 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - nandApp - demos - backup - File: main.c - - Copyright 2007 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 -#include - -static void PrintBootType(); - -static void InitDEMOSystem(); -static void InitInteruptSystem(); -static void InitAllocSystem(); -static void InitFileSystem(); - -static char* LoadFile(const char* path); -static BOOL SaveFile(const char* path, void* pData, u32 size); -static u32 GetCounter(const char* root); -static void SetCounter(const char* root, u32 counter); -static void PrintBackup(const char* root); -static BOOL AddBackup(const char* root); -static void PrintAndAddBackup(const char* root); - -// OS_Printfのフック関数 -#ifndef SDK_FINALROM -void OS_Printf(const char *fmt, ...) -{ - char dst[256]; - - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSPrintf(dst, fmt, va); - va_end(va); - - OS_PutString(dst); -} -#endif - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: メイン関数です。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - OS_Init(); - RTC_Init(); - InitInteruptSystem(); - InitFileSystem(); - InitAllocSystem(); - InitDEMOSystem(); - OS_Printf("*** start nandApp demo\n"); - - OS_Printf("Build:%s %s\n", __DATE__, __TIME__); - - PrintBootType(); - - // Shared2 ファイルは NAND 上に保存されます。 - // そのため使用する API は FS API となり、 - // ファイルシステムとしてアクセスすることができます。 - { - // 「shared2」は アプリ間で共有できるファイルのアーカイブ名です。 - OS_Printf("Shared2 file %04x:\n", *(u16 *)( HW_TWL_ROM_HEADER_BUF + 0x020c ) ); - PrintAndAddBackup("shared2:"); - - OS_Printf("\n"); - } - - OS_Printf("*** End of demo\n"); - - - // ランチャーに戻れるように、 - // 終了しない - for (;;) - { - // フレーム更新。 - { - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } - } - - OS_Terminate(); -} - - -/*---------------------------------------------------------------------------* - Name: LoadFile - - Description: 内部でメモリを確保しファイルを読み込みます。 - - Arguments: path: 読み込むファイルのパス。 - - Returns: ファイルが存在するならファイルの内容が読み込まれた - 内部で確保したバッファへのポインタを返します。 - このポインタは FS_Free で解放する必要があります。 - *---------------------------------------------------------------------------*/ -static char* LoadFile(const char* path) -{ - FSFile f; - BOOL bSuccess; - char* pBuffer; - u32 fileSize; - s32 readSize; - - FS_InitFile(&f); - - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); - if( ! bSuccess ) - { - return NULL; - } - - fileSize = FS_GetFileLength(&f); - pBuffer = (char*)OS_Alloc(fileSize + 1); - SDK_POINTER_ASSERT(pBuffer); - - readSize = FS_ReadFile(&f, pBuffer, (s32)fileSize); - SDK_ASSERT( readSize == fileSize ); - - bSuccess = FS_CloseFile(&f); - SDK_ASSERT( bSuccess ); - - pBuffer[fileSize] = '\0'; - return pBuffer; -} - -/*---------------------------------------------------------------------------* - Name: SaveFile - - Description: ファイルを作成しデータを書き込みます。 - 途中のディレクトリは作成しません。 - - Arguments: path: 作成するファイルのパス。 - pData: 書き込むデータ。 - size: 書き込むデータのサイズ。 - - Returns: 成功すればTRUE - *---------------------------------------------------------------------------*/ -static BOOL SaveFile(const char* path, void* pData, u32 size) -{ - FSFile f; - BOOL bSuccess; - FSResult fsResult; - s32 writtenSize; - - FS_InitFile(&f); - - FS_CreateFile(path, (FS_PERMIT_R|FS_PERMIT_W)); - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_W); - if (bSuccess == FALSE) - { - FSResult res = FS_GetArchiveResultCode(path); - OS_Printf("Failed create file:%d\n", res); - return FALSE; - } - SDK_ASSERT( bSuccess ); - - fsResult = FS_SetFileLength(&f, 0); - SDK_ASSERT( fsResult == FS_RESULT_SUCCESS ); - - writtenSize = FS_WriteFile(&f, pData, (s32)size); - SDK_ASSERT( writtenSize == size ); - - bSuccess = FS_CloseFile(&f); - SDK_ASSERT( bSuccess ); - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: GetCounter - - Description: /counter.bin に保存されているカウンタ値を読み込みます。 - - Arguments: root: counter.bin が保存されているディレクトリのパス。 - - Returns: カウンタ値を返します。 - /counter.bin が存在しない場合は 0 を返します。 - *---------------------------------------------------------------------------*/ -static u32 GetCounter(const char* root) -{ - char path[FS_FILE_NAME_MAX]; - char* pBuffer; - u32 counter = 0; - - STD_TSNPrintf(path, sizeof(path), "%s/counter.bin", root); - - pBuffer = LoadFile(path); - if( pBuffer != NULL ) - { - counter = MI_LoadLE32(pBuffer); - OS_Free(pBuffer); - } - - OS_Printf("%s counter is %d.\n", root, counter); - - return counter; -} - -/*---------------------------------------------------------------------------* - Name: SetCounter - - Description: /counter.bin にカウンタ値を保存します。 - ファイルが無い場合は作成します。 - - Arguments: root: counter.bin を保存するディレクトリのパス。 - counter: 保存するカウンタ値。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void SetCounter(const char* root, u32 counter) -{ - char path[FS_FILE_NAME_MAX]; - - STD_TSNPrintf(path, sizeof(path), "%s/counter.bin", root); - (void)SaveFile(path, &counter, sizeof(counter)); -} - -/*---------------------------------------------------------------------------* - Name: PrintBackup - - Description: 指定されたディレクトリの内容を print します。 - サブディレクトリの内容は print しません。 - - Arguments: root: 対象のディレクトリのパス。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void PrintBackup(const char* root) -{ - FSFile dir; - FSDirectoryEntryInfo entry; - BOOL bSuccess; - int numEntry = 0; - - FS_InitFile(&dir); - - bSuccess = FS_OpenDirectory(&dir, root, FS_FILEMODE_R); - if( bSuccess ) - { - while( FS_ReadDirectory(&dir, &entry) ) - { - // 自分や親を指すエントリはスキップします - if( (STD_CompareString(entry.longname, ".") == 0) - || (STD_CompareString(entry.longname, "..") == 0) ) - { - continue; - } - - if( (entry.attributes & FS_ATTRIBUTE_IS_DIRECTORY) != 0 ) - { - // ディレクトリ - OS_Printf(" d %s\n", entry.longname); - } - else - { - // ファイル - - char path[FS_FILE_NAME_MAX]; - char* text; - char* found_cr; - char* found_lf; - - // 最初の改行までの内容を表示します。 - STD_TSNPrintf(path, sizeof(path), "%s/%s", root, entry.longname); - text = LoadFile(path); - SDK_POINTER_ASSERT(text); - - found_cr = STD_SearchString(text, "\r"); - if( found_cr != NULL ) - { - *found_cr = '\0'; - } - found_lf = STD_SearchString(text, "\n"); - if( found_lf != NULL ) - { - *found_lf = '\0'; - } - - OS_Printf(" f %-6s %s\n", entry.longname, text); - OS_Free(text); - } - - numEntry++; - } - - bSuccess = FS_CloseDirectory(&dir); - SDK_ASSERT( bSuccess ); - } - - if( numEntry == 0 ) - { - OS_TPrintf(" (no entry)\n"); - } -} - -/*---------------------------------------------------------------------------* - Name: AddBackup - - Description: 対象のディレクトリにテスト用のディレクトリとファイルを - 作成します。 - - Arguments: root: 対象のディレクトリのパス。 - - Returns: 成功すればTRUE - *---------------------------------------------------------------------------*/ -static BOOL AddBackup(const char* root) -{ - char path[FS_FILE_NAME_MAX]; - char text[256]; - u32 counter; - BOOL bSuccess; - u8 GameCode[ 5 ]; - - // ROMヘッダからGameCode取得 - { - int i; - u8 *p = (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x0233 ); - MI_CpuClear8( GameCode, sizeof(GameCode) ); - for( i = 0; i < 4; i++ ) { - GameCode[ i ] = *p--; - } - } - // ファイルに書き込む内容を生成します。 - STD_TSNPrintf(text, sizeof(text), ": generated by %s", GameCode ); - - // ファイル名の生成に使用するカウンタ値を取得/更新します。 - counter = GetCounter(root); - counter++; - SetCounter(root, counter); - - // ディレクトリを作成 - STD_TSNPrintf(path, sizeof(path), "%s/dir_%d", root, counter); - bSuccess = FS_CreateDirectory(path, (FS_PERMIT_R|FS_PERMIT_W)); - if (bSuccess == FALSE) - { - FSResult res = FS_GetArchiveResultCode(path); - OS_Printf("Failed create directory:%d\n", res); - return FALSE; - } - SDK_ASSERT( bSuccess ); - - // ファイルを作成 - STD_TSNPrintf(path, sizeof(path), "%s/file_%d", root, counter); - (void)SaveFile(path, text, (u32)STD_GetStringLength(text)); - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: PrintAndAddBackup - - Description: 対象のディレクトリの内容を表示した後、テスト用の - ディレクトリとファイルを作成します。 - - Arguments: root: 対象のディレクトリのパス。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void PrintAndAddBackup(const char* root) -{ - PrintBackup(root); - (void)AddBackup(root); -} - - -/*---------------------------------------------------------------------------* - Name: PrintBootType - - Description: BootType を print します。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void PrintBootType() -{ - const OSBootType btype = OS_GetBootType(); - - switch( btype ) - { - case OS_BOOTTYPE_ROM: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_ROM\n"); break; - case OS_BOOTTYPE_NAND: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_NAND\n"); break; - default: - { - OS_Warning("unknown BootType(=%d)", btype); - } - break; - } -} - -/*---------------------------------------------------------------------------* - Name: InitDEMOSystem - - Description: コンソールの画面出力用の表示設定を行います。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitDEMOSystem() -{ - // 画面表示の初期化。 - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); -} - -/*---------------------------------------------------------------------------* - Name: InitInteruptSystem - - Description: 割り込みを初期化します。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitInteruptSystem() -{ - // 個別割り込みフラグを全て不許可に - (void)OS_SetIrqMask(0); - - // マスター割り込みフラグを許可に - (void)OS_EnableIrq(); - - // IRQ 割り込みを許可します - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitAllocSystem - - Description: ヒープを作成して OS_Alloc が使えるようにします。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitAllocSystem() -{ - void* newArenaLo; - OSHeapHandle hHeap; - - // メインアリーナのアロケートシステムを初期化 - newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetMainArenaLo(newArenaLo); - - // メインアリーナ上にヒープを作成 - hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); -} - -/*---------------------------------------------------------------------------* - Name: InitFileSystem - - Description: FS を初期化します。 - この関数を呼び出す前に InitInteruptSystem() が - 呼ばれている必要があります。 - - Arguments: なし。 - - Returns: なし。 - *---------------------------------------------------------------------------*/ -static void InitFileSystem() -{ - // ARM7との通信FIFO割り込み許可 - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - - // ファイルシステム初期化 - FS_Init( FS_DMA_NOT_USE ); -} diff --git a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template b/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template deleted file mode 100644 index bdc95bb6..00000000 --- a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template +++ /dev/null @@ -1,1048 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-TS.lcf.template -# -# Copyright 2007 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$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - dummy.MAIN_EX.NITRO (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 - arena.MAIN.NITRO (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 - arena.MAIN_EX.NITRO (RW) : ORIGIN = AFTER(dummy.MAIN_EX.NITRO,), LENGTH = 0x0 - arena.ITCM (RW) : ORIGIN = AFTER(ITCM,), LENGTH = 0x0 - arena.DTCM (RW) : ORIGIN = AFTER(DTCM,), LENGTH = 0x0 - - check.ITCM (RW) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check - check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check - check.MAIN.NITRO (RW) : ORIGIN = 0x02000000, LENGTH = 0x0f80000 > main.nitro.check - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - dummy.MAIN_EX.TWL (RW) : ORIGIN = 0x0d000000, LENGTH = 0x0 - arena.MAIN.TWL (RW) : ORIGIN = AFTER(,,LTDMAIN,), LENGTH = 0x0 - arena.MAIN_EX.TWL (RW) : ORIGIN = AFTER(dummy.MAIN_EX.TWL,,,LTDMAIN,), LENGTH = 0x0 - - check.MAIN.TWL (RW) : ORIGIN = 0x02000000, LENGTH = 0x0f80000 > main.twl.check - - binary.MODULE_FILES (RW) : ORIGIN = 0, LENGTH = 0x0 > component.files -} - -FORCE_ACTIVE -{ - SVC_SoftReset -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - SDK_STATIC_TEXT_START =.; - #:::::::::: text/rodata - libsyscall.a (.text) - OBJECT(_start,*) - crt0.FLX.TWL.o (.text) - crt0.FLX.TWL.o (.rodata) - # - # .version セクションを追加しています。 - # このセクションに含まれる情報はロットチェックの際に - # 必要となりますので、必ずこの位置に残すようにして下さい。 - # - * (.version) - OBJECT(TwlMain,*) - - - - - - - * (.exception) - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_STATIC_SINIT_END =.; - #:::::::::: text/rodata - SDK_STATIC_TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); # Fit to cache line - SDK_STATIC_DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - . = ALIGN(4); - - SDK_LTDOVERLAYTABLE_DIGEST =.; - . = . + 20; - SDK_LTDOVERLAYTABLE_DIGEST_END =.; - SDK_OVERLAYTABLE_DIGEST =.; - . = . + 20; - SDK_OVERLAYTABLE_DIGEST_END =.; - SDK_OVERLAY_DIGEST =.; - . = . + * 20; - . = . + * 20; - SDK_OVERLAY_DIGEST_END =.; - #:::::::::: data - . = ALIGN(32); - SDK_STATIC_DATA_END =.; - SDK_STATIC_END =.; - - SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; - SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - - ############################ AUTOLOADS ############################## - SDK_AUTOLOAD.ITCM.START = 0x01ff8000; - SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.SIZE = 0; - SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; - SDK_AUTOLOAD.DTCM.START = 0x02fe0000; - SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.SIZE = 0; - SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; - SDK_AUTOLOAD_START = SDK_STATIC_END; - SDK_AUTOLOAD_SIZE = 0; - SDK_AUTOLOAD_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_AUTOLOAD__ID =; - SDK_AUTOLOAD..ID =; - SDK_AUTOLOAD..START =.; - SDK_AUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_AUTOLOAD..SINIT_START = .; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_AUTOLOAD..SINIT_END = .; - #:::::::::: text/rodata - SDK_AUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(32); - SDK_AUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_AUTOLOAD..DATA_END =.; - . = ALIGN(32); - SDK_AUTOLOAD..END =.; - - SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; - SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; - SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL - - - # - # BSS BLOCK - # - SDK_AUTOLOAD..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_AUTOLOAD..BSS_END = .; - - SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; - - } >> - - - - SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; - SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; - SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; - SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; - SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; - SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; - SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; - SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; - - ############################ AUTOLOAD_INFO ########################## - .binary.AUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_AUTOLOAD..SIZE; - WRITEW SDK_AUTOLOAD..SINIT_START; - WRITEW SDK_AUTOLOAD..BSS_SIZE; - - - } > binary.AUTOLOAD_INFO - - SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; - SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW SDK_OVERLAY_DIGEST - ADDR(.); - WRITEW _start_LtdModuleParams - ADDR(.); - } > binary.STATIC_FOOTER - - ############################ OVERLAYS ############################### - SDK_OVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID - SDK_OVERLAY..ID =; - SDK_OVERLAY..START =.; - SDK_OVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_OVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_OVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_OVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_OVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_OVERLAY..DATA_END =.; - . = ALIGN(32); - SDK_OVERLAY..END =.; - - SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; - SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; - SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_OVERLAY..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_OVERLAY..BSS_END = .; - - SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; - - } >> - - - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - ### overlay filename - - WRITES (""); # Overlay - - - } > F - - ############################ OVERLAYTABLE ########################### - .F: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_OVERLAY..SIZE; # size of module - WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_OVERLAY..SINIT_START; # start address of static init - WRITEW SDK_OVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # compressed state - - - } > F - - ############################ ARENA ################################## - .dummy.MAIN_EX.NITRO: - { - . = ALIGN(32); - - } > dummy.MAIN_EX.NITRO - - .arena.MAIN.NITRO: - { - . = ALIGN(32); - SDK_SECTION_ARENA_START =.; - - } > arena.MAIN.NITRO - - .arena.MAIN_EX.NITRO: - { - . = ALIGN(32); - SDK_SECTION_ARENA_EX_START =.; - - } > arena.MAIN_EX.NITRO - - .arena.ITCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_ITCM_START =.; - - } > arena.ITCM - - .arena.DTCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_DTCM_START =.; - - } > arena.DTCM - - ############################ OTHERS ################################# - SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; - SDK_IRQ_STACKSIZE = ; # allocated in DTCM - SDK_SYS_STACKSIZE = ; # when 0 means all remains of DTCM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.ITCM: - { - . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; - - . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; - - - } > check.ITCM - - .check.DTCM: - { - . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; - - . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; - - . = . + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - } > check.DTCM - - .check.MAIN.NITRO: - { - . = SDK_SECTION_ARENA_START; - - } > check.MAIN.NITRO - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD.LTDMAIN.START = SDK_STATIC_BSS_END; - SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_EDN = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02400000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_NUMBER = ; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDAUTOLOAD__ID =; - SDK_LTDAUTOLOAD..ID =; - SDK_LTDAUTOLOAD..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START = .; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDAUTOLOAD..SINIT_END = .; - #:::::::::: text/rodata - SDK_LTDAUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_LTDAUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_LTDAUTOLOAD..DATA_END =.; - . = ALIGN(32); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..TEXT_SIZE = SDK_LTDAUTOLOAD..TEXT_END - SDK_LTDAUTOLOAD..TEXT_START; - SDK_LTDAUTOLOAD..DATA_SIZE = SDK_LTDAUTOLOAD..DATA_END - SDK_LTDAUTOLOAD..DATA_START; - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_LTDAUTOLOAD..BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - - SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################### LTDOVERLAYS ############################# - SDK_LTDOVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDOVERLAY__ID =; - SDK_LTDOVERLAY..ID =; - SDK_LTDOVERLAY..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDOVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDOVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDOVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDOVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_LTDOVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_LTDOVERLAY..DATA_END =.; - . = ALIGN(32); - SDK_LTDOVERLAY..END =.; - - SDK_LTDOVERLAY..TEXT_SIZE = SDK_LTDOVERLAY..TEXT_END - SDK_LTDOVERLAY..TEXT_START; - SDK_LTDOVERLAY..DATA_SIZE = SDK_LTDOVERLAY..DATA_END - SDK_LTDOVERLAY..DATA_START; - SDK_LTDOVERLAY..SIZE = SDK_LTDOVERLAY..END - SDK_LTDOVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDOVERLAY..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_LTDOVERLAY..BSS_END =.; - - SDK_LTDOVERLAY..BSS_SIZE = SDK_LTDOVERLAY..BSS_END - SDK_LTDOVERLAY..BSS_START; - - } >> - - - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW 0; # padding - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - ### TWL limited overlay filename - - WRITES (""); - - - } > L - - ######################### LTDOVERLAYTABLE ########################### - .L: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_LTDOVERLAY..SIZE; # size of module - WRITEW SDK_LTDOVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_LTDOVERLAY..SINIT_START; # start address of static init - WRITEW SDK_LTDOVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # compressed state - - - } > L - - ############################ ARENA ################################## - .dummy.MAIN_EX.TWL: - { - . = ALIGN(32); - - } > dummy.MAIN_EX.TWL - - .arena.MAIN.TWL: - { - . = ALIGN(32); - SDK_LTDMAIN_ARENA_LO =.; - - } > arena.MAIN.TWL - - .arena.MAIN_EX.TWL: - { - . = ALIGN(32); - SDK_LTDMAIN_EX_ARENA_LO =.; - - } > arena.MAIN_EX.TWL - - .check.MAIN.TWL: - { - . = SDK_LTDMAIN_ARENA_LO; - - } > check.MAIN.TWL - - ############################ OTHERS ################################# - # Module filelist - .binary.MODULE_FILES: - { - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - - } > binary.MODULE_FILES - -} diff --git a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf b/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf deleted file mode 100644 index b4de7a96..00000000 --- a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf +++ /dev/null @@ -1,53 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-BB.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address 0x02680200 - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) -} - -Autoload ITCM -{ - Address 0x01ff8000 - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL 共有のオーバーレイが在る場合は、さらにその後ろに配置する必要があります。 - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile b/build/tests/SimpleBenchmark/ARM9/Makefile deleted file mode 100644 index 4144a38b..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile.0 b/build/tests/SimpleBenchmark/ARM9/Makefile.0 deleted file mode 100644 index fcfff216..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile.0 +++ /dev/null @@ -1,77 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -# コンポーネント選択 ( jackal ) - -export DEFAULT_COMP_ARM7 = jackal - -COMPONENT_DIR = $(TWL_IPL_RED_ROOT)/build/components/$(DEFAULT_COMP_ARM7).TWL -WRAM_MAP_FILE = $(COMPONENT_DIR)/wram_regs/wram_regs.rbin - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = SimpleBenchmark$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad -LCFILE_SPEC = ARM9-TS.lsf -LCFILE_TEMPLATE = ARM9-TS.lcf.template - -TITLEID_LO = SB$(TARGET_NUMBER)A - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c SimpleBenchmark.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES = libhotsw$(TWL_LIBSUFFIX).a - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) -ADDRESS_DTCM = 0x0e000000 - -MAKEROM_FLAGS += -DWRAM_MAP_FILE='$(WRAM_MAP_FILE)' -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile.1 b/build/tests/SimpleBenchmark/ARM9/Makefile.1 deleted file mode 100644 index c9ab05b9..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile.1 +++ /dev/null @@ -1,64 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 1 -TARGET_NAME = SimpleBenchmark$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = SB$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c SimpleBenchmark.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -LLIBRARIES = libhotsw$(TWL_LIBSUFFIX).a - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/main0.rsf b/build/tests/SimpleBenchmark/ARM9/main0.rsf deleted file mode 100644 index 7b576398..00000000 --- a/build/tests/SimpleBenchmark/ARM9/main0.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMappingDirect $(WRAM_MAP_FILE) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/SimpleBenchmark/ARM9/main1.rsf b/build/tests/SimpleBenchmark/ARM9/main1.rsf deleted file mode 100644 index 8045315d..00000000 --- a/build/tests/SimpleBenchmark/ARM9/main1.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_1.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c b/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c deleted file mode 100644 index 95ad3985..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 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 -#include -#include "misc.h" -#include "SimpleBenchmark.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// テストプログラムの初期化 -void SimpleBenchmarkInit( void ) -{ - OS_InitTick(); - - - if( (u32)OS_GetTitleId() == 0x53423041 ) //SB0A - { - HOTSW_Init(); - } - - GX_DispOff(); - GXS_DispOff(); - - GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); -} - - -// テストプログラムのメインループ -void SimpleBenchmarkMain(void) -{ - BOOL tp_cancel = FALSE; - OSTick ot; - static u64 tm = 0; - - ReadTP(); // タッチパネル入力の取得 - - // [RETURN]ボタン押下チェック - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - - ot = OS_GetTick(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - PrintfSJIS( 0 * 8, 0 * 8, TXT_COLOR_RED, "%d\n",tm); - PutStringUTF16( 1 * 8, 2 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 3 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 4 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 5 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 6 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 7 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 8 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 9 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 10 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 12 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 13 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 14 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 15 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 16 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 17 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 18 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 19 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 20 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 21 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 22 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - ot = OS_GetTick()-ot; - - tm = OS_TicksToMicroSeconds(ot); - - OS_TPrintf("%d\n", tm); - - if( ( pad.trg & PAD_BUTTON_A ) ) { - } - - if( ( pad.trg & PAD_BUTTON_X ) ) { - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h b/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h deleted file mode 100644 index c62094e6..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 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 __SIMPLE_BENCHMARK_H__ -#define __SIMPLE_BENCHMARK_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void SimpleBenchmarkInit( void ); -void SimpleBenchmarkMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __SIMPLE_BENCHMARK_H__ diff --git a/build/tests/SimpleBenchmark/ARM9/src/main.c b/build/tests/SimpleBenchmark/ARM9/src/main.c deleted file mode 100644 index 7bac66bc..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/main.c +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 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 -#include "misc.h" -#include "SimpleBenchmark.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // 初期化---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON - - // 割り込み許可---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // デバイス初期化------------------------------- - TP_Init(); - (void)RTC_Init(); - - // システムの初期化------------------ - InitAllocator(); - - InitBG(); - SimpleBenchmarkInit(); - // メインループ---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち - - ReadKeyPad(); // キー入力の取得 - ReadTP(); // TP入力の取得 - - SimpleBenchmarkMain(); - } -} - - -// ============================================================================ -// 割り込み処理 -// ============================================================================ - -// Vブランク割り込み -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット -} - diff --git a/build/tests/SimpleBenchmark/Makefile b/build/tests/SimpleBenchmark/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/SimpleBenchmark/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/banner/Makefile b/build/tests/SimpleBenchmark/banner/Makefile deleted file mode 100644 index a11fb47a..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - - -# diff --git a/build/tests/SimpleBenchmark/banner/Makefile.0 b/build/tests/SimpleBenchmark/banner/Makefile.0 deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile.0 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/SimpleBenchmark/banner/Makefile.1 b/build/tests/SimpleBenchmark/banner/Makefile.1 deleted file mode 100644 index 54f8cd07..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile.1 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 1 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/SimpleBenchmark/banner/banner_v3.bsf b/build/tests/SimpleBenchmark/banner/banner_v3.bsf deleted file mode 100644 index d595b6d3..00000000 Binary files a/build/tests/SimpleBenchmark/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp b/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin b/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf b/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index f59e3078..00000000 Binary files a/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf b/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf deleted file mode 100644 index 462ba007..00000000 Binary files a/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/TestComponent/ARM7.TWL/Makefile b/build/tests/TestComponent/ARM7.TWL/Makefile deleted file mode 100644 index da5bad5c..00000000 --- a/build/tests/TestComponent/ARM7.TWL/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -##override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -override TARGET_CODEGEN = ARM - -TARGET_FIRM = SYSTEMMENU - -ifndef TWLSDK_NOCRYPTO -#---------------------------------------------------------------------------- - -SRCS = crt0.SCFG_NOLOCK.c \ - main.c \ - kami_pxi.c \ - formatter.c \ - mcu_firm.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template - -CRT0_O = crt0.SCFG_NOLOCK.o - -# スタック不足防止の為、インライン展開せずにコンパイルする -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \ - $(ROOT)/build/libraries/os/common/include \ - $(TWL_IPL_RED_ROOT)/include \ - ../common/include \ - $(ROOT)/build/libraries/init/common/include \ - $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/common/ARM7/include \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/fatfs \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7 - -SRCDIR += ../../../systemMenu_tools/common/ARM7/src - -LLIBRARY_DIRS += $(TWL_IPL_RED_ROOT)/lib/ARM7-TS/$(TWL_BUILD_DIR) \ - ./obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libhotsw_sp$(TWL_LIBSUFFIX).a \ - libreloc_info_sp$(TWL_LIBSUFFIX).a - -LLIBRARIES += libpm_sp.SYSMENU$(TWL_LIBSUFFIX).a -GLIBRARIES := $(filter-out libpm_sp$(TWL_LIBSUFFIX).a,$(GLIBRARIES)) - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -#-------------------------------- -# install target -#-------------------------------- -INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ - $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -INSTALL_DIR = $(SYSMENU_COMPONENTSDIR)/$(TARGET_NAME)_uji/$(TWL_BUILDTYPE) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -endif #ifndef TWLSDK_NOCRYPTO - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/ARM7.TWL/armadillo.lsf b/build/tests/TestComponent/ARM7.TWL/armadillo.lsf deleted file mode 100644 index abe99fa6..00000000 --- a/build/tests/TestComponent/ARM7.TWL/armadillo.lsf +++ /dev/null @@ -1,89 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/kami_pxi.o - Object $(OBJDIR)/formatter.o - Object $(OBJDIR)/mcu_firm.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp.SYSMENU$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - Library libhotsw_sp$(LIBSUFFIX).a - Library libreloc_info_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h b/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h deleted file mode 100644 index cbce8090..00000000 --- a/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 TWL_CAMERA_TEST_CAMERATEST_H_ -#define TWL_CAMERA_TEST_CAMERATEST_H_ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -void KamiPxiInit( void ); - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_CAMERA_TEST_CAMERATEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c b/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c deleted file mode 100644 index 84ea2ede..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c +++ /dev/null @@ -1,798 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.SCR.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 -#include -#include -#include -#include -#include -#ifndef SDK_FINALROM -#include -#endif -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); - -/*---------------------------------------------------------------------------* - 外部参照 - *---------------------------------------------------------------------------*/ -/* リンカスクリプトにより定義されるシンボル参照 */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); -extern void SDK_WRAM_ARENA_LO(void); - -/* 外部関数参照 */ -extern void OS_IrqHandler(void); -#ifndef SDK_NOINIT -extern void _fp_init(void); -extern void __call_static_initializers(void); -#endif - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* .rodata セクションに配置するロードに必要な情報 */ -void* const _start_ModuleParams[] = -{ - (void*)0, - (void*)0, - (void*)0, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, - (void*)0, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 の ShakeHand 関数と同期を取る。 - メインメモリでないメモリ空間で実行される必要がある。 - Arguments: r0 - ARM9 同期用変数へのポインタ。 - r1 - ARM7 同期用変数へのポインタ。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; 同期変数9を共有メモリから読む */ - 0xe1d130b0, /* ldrh r3, [r1] ; 同期変数7を共有メモリから読む */ - 0xe2833001, /* @1: add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; 同期変数9の現状を共有メモリから読む */ - 0xe152000c, /* cmp r2, r12 ; 同期変数9の変化を判定する */ - 0x0afffffa, /* beq @1 ; 変化していなければループ */ - 0xe2833001, /* add r3, r3, #1 ; 同期変数7 ++ */ - 0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */ - 0xe12fff1e /* bx lr ; ハンドシェイク完了 */ -}; - -/*---------------------------------------------------------------------------* - Name: Stop - Description: プログラムを停止する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_Stop[2] = -{ - 0xef000006, /* @1: swi #6 ; SVC_Halt */ - 0xeafffffd /* b @1 ; ループ */ -}; - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 に特定の状態になったことを伝えた上で、Main 関数へジャンプ - する。同時に指定バッファの 0 クリアを行う。スタック内で動作させ - ることを想定している為、スタックを一切使用しない。 - Arguments: r0 - 0 クリアするバッファの先頭アドレス。 - 4 バイトアラインされたアドレスである必要がある。 - r1 - 上位 8 bit: ARM9 に伝えるフェーズ番号。 - 下位 24 bit: 0 クリアするバッファのサイズ。 - 4 の倍数である必要がある。 - r2 - 同期用フェーズ管理変数へのポインタ。 - r3 - Main 関数のポインタ。Main 関数が Thumb コードである場合 - には、bx 命令でジャンプするため最下位ビットが 1 になって - いる必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[10] = -{ - 0xe59fc01c, /* @1: ldr r12, [pc, #28] ; 下位 24 bit マスクを用意 */ - 0xe111000c, /* tst r1, r12 ; クリアバッファ残サイズをチェック */ - 0xe3a0c000, /* mov r12, #0 ; クリア用変数を用意 */ - 0x1480c004, /* strne r12, [r0], #4 ; 4 バイトクリア */ - 0x12411004, /* subne r1, r1, #4 ; クリアバッファ残サイズ -= 4 */ - 0x1afffff9, /* bne @1 ; 残サイズが 0 になるまでループ */ - 0xe1a01c21, /* mov r1, r1, LSR #24 ; フェーズ管理変数の更新値を用意 */ - 0xe1c210b0, /* strh r1, [r2] ; フェーズ管理変数を更新 */ - 0xe12fff13, /* bx r3 ; Main 関数へジャンプ */ - 0x00fffffc /* 0x00fffffc */ -}; - - -/*---------------------------------------------------------------------------* - 内部関数プロトタイプ - *---------------------------------------------------------------------------*/ -static void INITi_CheckSysConfig(void); -static void INITi_DetectMainMemorySize(void); -static void INITi_Stop(void); -static void INITi_DoAutoload(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif - -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: 起動ベクタ。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* 割込み禁止 */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - - /* SCFG 設定を確認 */ - bl INITi_CheckSysConfig - - /* プリロードパラメータアドレスが格納されていない場合は、デフォルト値をセット */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - /* ランチャーから渡された情報を退避 */ - ldr r3, =SDK_WRAM_ARENA_LO - sub r2, r3, #0x40 - ldr r1, =HW_LAUNCHER_DELIVER_PARAM_BUF -@001: - cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @001 - - - /* ハンドシェイク用マイクロコードを専用 WRAM にコピー */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 // sizeof(microcode_ShakeHand) -@002: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @002 - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - -@010: - /* スタックポインタ設定 */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for IRQ stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for SYS stack check code - - /* スタック領域をクリア */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* Autoload を実施 */ - bl INITi_DoAutoload - - /* STATIC セグメントの .bss セクションを 0 クリア */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - /* メインメモリサイズを調査 */ - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - /* デバッグ出力ウィンドウを設定 */ - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7 << 8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR << 8) - strh r0, [r1, #2] -#endif - - /* IRQ 割込みベクタ設定 */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ 用初期化 */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@0f0: - /* Main 関数へのジャンプ用マイクロコードをスタックの底にコピー */ - ldr r1, =microcode_GotoMain - sub r2, sp, #40 - mov r3, sp -@0f1: cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @0f1 - - /* マイクロコードを経由して Main 関数へジャンプ */ - ldr r0, =SDK_STATIC_START - bic r0, r0, #0x00000003 - ldr r1, =SDK_STATIC_BSS_END - sub r1, r1, r0 - add r1, r1, #3 - bic r1, r1, #0x00000003 - bic r1, r1, #0xff000000 - mov r2, #BOOT_SYNC_PHASE_4 - mov r2, r2, LSL #24 - orr r1, r1, r2 - ldr r2, =HW_BOOT_SYNC_PHASE - ldr r3, =TwlSpMain - ldr lr, =HW_RESET_VECTOR - sub r12, sp, #40 - bx r12 - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: オートロード完了コールバック。 - Arguments: argv - オートロードパラメータを保持している配列。 - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: なし。 - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CheckSysConfig - Description: SCFG 関連 I/O レジスタの内容を確認する。 - A7-SCFG ブロックがアクセス有効な場合には、ローダーが行う設定処 - 理を代行した上でアクセスを無効化する。 - ARM7 専用 WRAM 内にローダーが展開している I/O レジスタ情報を確 - 認した上でメインメモリ上の共有領域にコピーする。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CheckSysConfig(void) -{ - /* A7-SCFG のアクセス可否判定 */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - ldr r2, =HW_PRV_WRAM_SYSRV - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @invalid - -@valid: - /* ARM7 Secure-ROM 切り離し */ - ldr r1, =REG_A7ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A7ROM_SEC_MASK - strb r0, [r1] - - /* ARM9 Secure-ROM 切り離し */ - ldr r1, =REG_A9ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A9ROM_SEC_MASK - strb r0, [r1] - - /* NITRO 無線を有効化 */ - ldr r1, =REG_WL_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_WL_OFFB_MASK - strh r0, [r1] - - /* ROM 設定、NITRO 無線設定、ボンディングオプション情報を WRAM に展開 */ - ldr r3, =REG_OP_ADDR // SCFG-OP - ldrb r1, [r3] - and r0, r1, #(REG_SCFG_OP_OP1_MASK | REG_SCFG_OP_OP0_MASK) - ldr r3, =REG_A9ROM_ADDR // SCFG-ROM:0~7 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) - ldr r3, =REG_A7ROM_ADDR // SCFG-ROM:8~15 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) - ldr r3, =REG_WL_ADDR // SCFG-WL - ldrb r1, [r3] - and r3, r1, #REG_SCFG_WL_OFFB_MASK - orr r0, r0, r3, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) - strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - - /* 各新規ブロックへクロックを供給 */ - ldr r1, =REG_CLK_ADDR - ldrh r0, [r1] - ldr r3, =REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK | REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK - orr r0, r0, r3 - strh r0, [r1] - - /* JTAG 情報を WRAM に展開 */ - ldr r3, =REG_JTAG_ADDR // SCFG-JTAG - ldrh r1, [r3] - and r0, r1, #(REG_SCFG_JTAG_CPUJE_MASK | REG_SCFG_JTAG_ARM7SEL_MASK) - and r3, r1, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r3, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] - - /* 各拡張機能を有効化 */ - ldr r1, =REG_EXT_ADDR // SCFG_EXT - ldr r0, [r1] - ldr r3, =REG_SCFG_EXT_WRAM_MASK | REG_SCFG_EXT_GPIO_MASK | REG_SCFG_EXT_I2C_MASK | REG_SCFG_EXT_I2S_MASK | REG_SCFG_EXT_MIC_MASK | REG_SCFG_EXT_SD2_MASK | REG_SCFG_EXT_SD1_MASK | REG_SCFG_EXT_AES_MASK | REG_SCFG_EXT_DMAC_MASK - orr r0, r0, r3 - orr r0, r0, #(REG_SCFG_EXT_DSEL_MASK | REG_SCFG_EXT_INTC_MASK) - bic r0, r0, #REG_SCFG_EXT_MC_B_MASK - str r0, [r1] - - /* 各拡張機能の制御設定内容を WRAM に展開 */ - str r0, [r2, #HWi_WSYS04_WRAMOFFSET] - - /* メモリーカード I/F のスロット選択 */ - ldr r1, =REG_MC1_ADDR // SCFG_MC1 - ldr r0, [r1] - bic r0, r0, #REG_MI_MC1_SWP_MASK - str r0, [r1] - - /* WRAM-A/B/C が ARM7 に割り当たっていることを確認 */ - ldr r1, =REG_MBK1_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK2_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK3_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK4_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK5_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - - /* WRAM-A/B/C のメモリマップを設定 */ - ldr r1, =REG_MBK6_ADDR - ldr r0, =0x080037c0 - str r0, [r1] - ldr r1, =REG_MBK7_ADDR - ldr r0, =0x07c03780 - str r0, [r1] - ldr r1, =REG_MBK8_ADDR - ldr r0, =0x07803740 - str r0, [r1] - ldr r1, =REG_MBK9_ADDR - ldr r0, =0x00ffff0f - str r0, [r1] - - /* A7-SCFG ブロックへのアクセスを無効化 */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] -/* bic r0, r0, #REG_SCFG_EXT_CFG_MASK */ - str r0, [r1] - -@invalid: - /* ROM 設定、NITRO 無線設定内容を確認 */ - ldrb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - and r0, r0, #(HWi_WSYS08_ROM_ARM7RSEL_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK | HWi_WSYS08_ROM_ARM9SEC_MASK) - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - blne INITi_Stop - - /* SCFG レジスタ設定情報を共有領域にコピー */ - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - Description: メインメモリサイズを調査する。 - 調査結果は (u16*)HW_MMEMCHECER_SUB に格納される。 - 格納される値は [OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32B] - NOTE: プラットフォームが NITRO の場合は考慮していない。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void -INITi_DetectMainMemorySize(void) -{ - ldr r2, =HW_MMEMCHECKER_SUB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - - /* OSi_CHECKNUM1 (0x55) 書き込みテスト */ - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@1 subs r2, r2, #4 - bcs @1 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @check_smix - - /* OSi_CHECKNUM2 (0xaa) を 書き込みテスト */ - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@2 subs r2, r2, #4 - bcs @2 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@check_smix: - /* SMIX レジスタを調査 */ - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - /* 調査結果を格納 */ - ldr r2, =HW_MMEMCHECKER_SUB - strb r0, [r2] - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Stop - Description: プログラムを停止する。ARM7 専用 WRAM に Halt を繰り返すループ - 関数をコピーし、コピーした関数を実行する。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_Stop(void) -{ - ldr r1, =microcode_Stop - ldr r2, =HW_PRV_WRAM - add r3, r2, #8 // sizeof(microcode_Stop) -@copy_loop: - ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @copy_loop - -@stop_loop: - ldr r0, =HW_PRV_WRAM - mov lr, pc - bx r0 - b @stop_loop - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: リンク情報に沿って、各オートロードブロックの固定データ部の展開 - 及び変数部の 0 クリアを行う。 - NITRO 互換オートロードセグメントは存在せず、TWL 専用セグメント - のみが存在するという前提。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ - -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - - /* オートロードを実施 */ -@000: - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@001: - cmp r12, r3 - bge @010 - /* 固定セクション */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer テーブル */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss セクション */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = sizeo of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} - b @001 - - /* オートロードリスト・オートロード元バッファをクリア */ -@010: - ldr r1, =_start_LtdModuleParams - ldr r12, [r1] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r1, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r0, [r1, #8] // r0 = SDK_LTDAUTOLOAD_START -@011: - cmp r12, r3 - bge @0f0 - mov r1, #0 // r1 = clear value - str r1, [r12], #4 - ldr r2, [r12] // r2 = size of fixed section - str r1, [r12], #4 - str r1, [r12], #4 - str r1, [r12], #4 - bl INITi_Fill32 - b @011 - -@0f0: - /* オートロード完了コールバック呼び出し */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -#ifndef SDK_NOINIT - -static asm void -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: 各オートロードセグメント内の static initializer へのポインタ - テーブルを IRQ スタックの最上部に退避する。 - Arguments: ptr - セグメント内のポインタテーブルへのポインタ。 - テーブルは NULL で終端されている必要がある。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* 引数確認 */ - cmp r0, #0 - bxeq lr - - /* 退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* 退避場所先頭から空き場所を調査 */ - ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 -@002: - /* 空き場所にテーブルをコピー */ - ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: 各オートロードセグメント内の static initializer を呼び出す。 - オートロード処理によって IRQ スタックの最上部に退避されている - 関数ポインタテーブルを一つずつ呼び出す。 - Arguments: なし。 - Returns: なし。 - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* テーブル退避場所先頭アドレスを計算 */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* テーブルに管理されているポインタを一つずつ呼び出し */ - ldr r0, [r1] - cmp r0, #0 - beq @002 - stmfd sp!, {r1} - mov lr, pc - bx r0 - ldmfd sp!, {r1} - /* 一旦呼び出したポインタはゼロクリア (IRQスタックを間借りしている為) */ - mov r0, #0 - str r0, [r1], #4 - b @001 -@002: - ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 32 bit 単位でコピーを行う。スタックを 36 バイト消費するが、 - レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - コピー先へのポインタ ( 4 バイトアライン )。 - r1 - コピー元へのポインタ ( 4 バイトアライン )。 - r2 - コピーする長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - コピー後のコピー先へのポインタ ( r0 + r2 )。 - r1 - コピー後のコピー元へのポインタ ( r1 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 32 bit 単位でバッファ内容を指定データで埋める。スタックを 36 - バイト消費するが、レジスタ r3 - r12 は破壊しない。 - Arguments: r0 - バッファへのポインタ ( 4 バイトアライン )。 - r1 - バッファを埋める内容を 32 bit 値で指定。 - r2 - バッファを埋める長さをバイト単位で指定 ( 4 の倍数 )。 - Returns: r0 - 処理後のバッファへのポインタ ( r0 + r2 )。 - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c b/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c deleted file mode 100644 index cb0e5ac4..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c +++ /dev/null @@ -1,413 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 -#include -#include "kami_pxi.h" -#include "fifo.h" -#include "twl/cdc.h" -#include "formatter.h" -#include "mcu_firm.h" -#include -#include -#include -#include -#include - -/* sdmc.h はFATFSライブラリ内の非公開ヘッダのため、必要な定義をローカルで持つ。 */ -//#include - -typedef enum { - SDMC_PORT_CARD = 0x400, - SDMC_PORT_NAND = 0x401 -}SDMC_PORT_NO; - -#define TRUE 1 /* Don't change */ -#define FALSE 0 /* Don't change */ - -typedef unsigned char byte; /* Don't change */ -typedef unsigned short word; /* Don't change */ -typedef unsigned long dword; /* Don't change */ - -#define BOOLEAN int - -extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading); -extern BOOL sdmcFormatNandLog( BOOL verify_flag); -extern void sdmcGetCID( SDMC_PORT_NO port, u32* dest); -extern void SPI_Lock(u32 id); -extern void SPI_Unlock(u32 id); - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define KAMITEST_MESSAGE_ARRAY_MAX 4 // スレッド同期用メッセージキューのサイズ -#define KAMITEST_THREAD_STACK_SIZE 2048 // スレッドのスタックサイズ - -#define KAMITEST_THREAD_PRIORITY 6 - -// アライメント調整してコピーする -#define KAMI_UNPACK_U8(d, s) \ - (*(d) = (u8)((((u8*)s)[0] << 0))) -#define KAMI_UNPACK_U16(d, s) \ - (*(d) = (u16)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8))) -#define KAMI_UNPACK_U32(d, s) \ - (*(d) = (u32)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8) | (((u8*)s)[2] << 16) | (((u8*)s)[3] << 24))) - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL result; - u32 total; - u32 current; - KamiCommand command; - u8 data[KAMITEST_PXI_DATA_SIZE_MAX]; // 後続データ格納用 - - OSMessageQueue msgQ; // スレッド同期用メッセージキュー - OSMessage msgArray[KAMITEST_MESSAGE_ARRAY_MAX]; - // メッセージを格納するバッファ - OSThread thread; // KAMI用スレッド - u64 stack[KAMITEST_THREAD_STACK_SIZE / sizeof(u64)]; - // KAMI用スレッドのスタック -} -KamiWork; - -/*---------------------------------------------------------------------------* - 静的変数定義 - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; -static u32 kamiSpiLockId; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result); -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data); -static void KamiThread(void *arg); - -void KamiPxiInit(void) -{ - if (kamiInitialized) - { - return; - } - kamiInitialized = TRUE; - kamiSpiLockId = (u32)OS_GetLockID(); - if (kamiSpiLockId == OS_LOCK_ID_ERROR) - { - OS_Panic("%s: OS_GetLockID failed.\n", __FUNCTION__); - } - - PXI_Init(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - - OS_InitMessageQueue(&kamiWork.msgQ, kamiWork.msgArray, KAMITEST_MESSAGE_ARRAY_MAX); - OS_CreateThread(&kamiWork.thread, KamiThread, 0, - (void *)(kamiWork.stack + (KAMITEST_THREAD_STACK_SIZE / sizeof(u64))), - KAMITEST_THREAD_STACK_SIZE, KAMITEST_THREAD_PRIORITY); - OS_WakeupThreadDirect(&kamiWork.thread); -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - return; - } - if (data & KAMITEST_PXI_START_BIT) // 先頭データ - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.data[kamiWork.current++] = (u8)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // 後続データ - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - if (kamiWork.current >= kamiWork.total) - { - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - case KAMI_NAND_IO: - case KAMI_MCU_WRITE_FIRM: - case KAMI_MCU_IO: - case KAMI_CODEC_IO: - case KAMI_ARM7_IO: - case KAMI_CDC_GO_DSMODE: - case KAMI_CLEAR_NAND_ERRORLOG: - case KAMI_GET_CAMERA_MODULE_TYPE: - case KAMI_GET_NAND_CID: - if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((1 << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - (((size+1) << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - int i; - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - for (i = 0; i < size; i+= 3) - { - pxiData = (u32)((data[i] << 16) | (data[i+1] << 8) | data[i+2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - } -} - -static void KamiThread(void *arg) -{ -#pragma unused( arg ) - OSMessage msg; - BOOL result; - - while (TRUE) - { - (void)OS_ReceiveMessage(&kamiWork.msgQ, &msg, OS_MESSAGE_BLOCK); - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - { - result = ExeFormat((FormatMode)kamiWork.data[0]); // Quick or Full - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_NAND_IO: - { - BOOL is_read; - u32 block; - void* buffer; - u32 count; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&block, &kamiWork.data[1]); - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]); - KAMI_UNPACK_U32(&count, &kamiWork.data[9]); - - result = FATFSi_nandRtfsIo( 0, block, buffer, (u16)count, is_read ); - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_MCU_WRITE_FIRM: - { - void* buffer; - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[1]); - - if ( MCU_WriteFirm( buffer ) ) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_MCU_IO: - { - BOOL is_read; - u32 reg_no; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(®_no, &kamiWork.data[1]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - read = MCU_ReadRegister( (u8)reg_no ); - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u8), (u8*)&read ); - } - else - { - MCU_WriteRegister( (u8)reg_no, (u8)write ); - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_CODEC_IO: - { - BOOL is_read; - u8 page; - u8 reg_no; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U8(&page, &kamiWork.data[1]); - KAMI_UNPACK_U8(®_no, &kamiWork.data[2]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - SPI_Lock(kamiSpiLockId); // CODEC用SPI排他ロック - read = CDC_ReadSpiRegisterEx( page, reg_no ); - SPI_Unlock(kamiSpiLockId); // CODEC用SPI排他ロック - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u8), (u8*)&read ); - } - else - { - SPI_Lock(kamiSpiLockId); // CODEC用SPI排他ロック - CDC_WriteSpiRegisterEx( page, reg_no, (u8)write ); - SPI_Unlock(kamiSpiLockId); // CODEC用SPI排他ロック - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_ARM7_IO: - { - BOOL is_read; - u32 addr; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&addr, &kamiWork.data[1]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - read = *(u32 *)addr; - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u32), (u8*)&read ); - } - else - { - *(u32 *)addr = write; - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_CDC_GO_DSMODE: - { - CDC_Init(); // IIRなどのパラメータ初期化のため - CDC_GoDsMode(); - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - break; - - case KAMI_CLEAR_NAND_ERRORLOG: - { - if (sdmcFormatNandLog(TRUE)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_GET_CAMERA_MODULE_TYPE: - { - CameraModuleTypes types; - if (CAMERAi_IsSharpModule(CAMERA_SELECT_IN)) - { - types.in = CAMERA_MODULE_TYPE_SHARP; - } - else if (CAMERAi_IsMicronModule(CAMERA_SELECT_IN)) - { - types.in = CAMERA_MODULE_TYPE_MICRON; - } - else - { - types.in = CAMERA_MODULE_TYPE_UNKNOWN; - } - if (CAMERAi_IsSharpModule(CAMERA_SELECT_OUT)) - { - types.out = CAMERA_MODULE_TYPE_SHARP; - } - else if (CAMERAi_IsMicronModule(CAMERA_SELECT_OUT)) - { - types.out = CAMERA_MODULE_TYPE_MICRON; - } - else - { - types.out = CAMERA_MODULE_TYPE_UNKNOWN; - } - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(CameraModuleTypes), (u8*)&types); - } - break; - - case KAMI_GET_NAND_CID: - { - u8 buffer[16]; - sdmcGetCID( SDMC_PORT_NAND, (u32*)buffer); - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(buffer), (u8*)buffer ); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -#include diff --git a/build/tests/TestComponent/ARM7.TWL/src/main.c b/build/tests/TestComponent/ARM7.TWL/src/main.c deleted file mode 100644 index b2a99285..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/main.c +++ /dev/null @@ -1,654 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "kami_pxi.h" -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -/* 各スレッド優先度 */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // 暫定 -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_HOTSW 11 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM 内登録エリアの拡張言語コード */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* 使用 DMA 番号 */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM 3 - -/* カードチャタリングカウンタ */ -#define CHATTERING_COUNTER 0x1988 // 100ms分 (0x1988 * 15.3us = 100000us) - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void InitializeCardPower(void); -static void InitializeCdc(void); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: 起動ベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - /* OS 初期化 */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM からユーザー情報読み出し */ - ReadUserInfo(); - - /* ヒープ領域設定 */ - heapHandle = InitializeAllocateSystem(); - - /* ボタン入力サーチ初期化 */ - (void)PAD_InitXYButton(); - - /* 割込み許可 */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); -#endif - - /* 各ライブラリ初期化 */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA - FS_Init(FS_DMA_NOT_USE); // FS for CARD - FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL 無線 - MCU_InitIrq(THREAD_PRIO_MCU); // マイコン - - if (OSi_IsCodecTwlMode() == TRUE) - { - InitializeCdc(); // CODEC - CAMERA_Init(); // カメラ - } - - SND_Init(THREAD_PRIO_SND); // サウンド - SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張 - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO 無線 - SPI_Init(THREAD_PRIO_SPI); - InitializeCardPower(); // カード電源ON(検査プログラム用) - - while (TRUE) - { - OS_Halt(); - - /* ソフトウェアリセット要求は監視しない */ - /* AGB カートリッジの挿抜チェックは行わない */ - /* DS カードの挿抜チェックは行わない */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 コンポーネントの情報をデバッグ出力する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: メモリ割当てシステムを初期化する。 - Arguments: None. - Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。 - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB アリーナを SUBPRIV アリーナに吸収 */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* アリーナを 0 クリア */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ヒープ作成初期化 */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* カレントヒープに設定 */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ヒープサイズの確認 */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSライブラリを初期化する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - // FATFSライブラリの初期化 - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMライブラリを初期化する。 - Arguments: hh - 利用可能なヒープのハンドルを指定。 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] 確保しているヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: InitializeCardPower - Description: カード電源をONする。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeCardPower(void) -{ - // チャッタリングカウンタの値を設定 - reg_MI_MC1 = (u32)((reg_MI_MC1 & ~REG_MI_MC1_CC_MASK) | - (CHATTERING_COUNTER << REG_MI_MC1_CC_SHIFT)); - - // チャタリングカウンタ分待つことによりCDETが0になる - OS_SpinWait( OS_MSEC_TO_CPUCYC(200) ); - - // カードスロット1電源ON - HOTSWi_TurnCardPowerOn(1); -} - -/*---------------------------------------------------------------------------* - Name: InitializeCdc - Description: CDCライブラリを初期化する。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeCdc(void) -{ - u32 spiLockId; - - spiLockId = (u32)OS_GetLockID(); - if (spiLockId == OS_LOCK_ID_ERROR) - { - OS_Warning("OS_GetLockID failed.\n"); - } - - /* CODEC 初期化 */ - SPI_Lock(spiLockId); - CDC_Init(); - SPI_Unlock(spiLockId); -} - -//#ifdef WM_PRECALC_ALLOWEDCHANNEL -//extern u16 WMSP_GetAllowedChannel(u16 bitField); -//#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。 - ミラーリングされているバッファが両方壊れている場合は、 - 共有領域のユーザー情報格納場所をクリアする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // オフセット読み出し -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCDEx(temp); -#else - // ミラーされた2つのデータを読み出し - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // 2つの内どちらを使うか判断 - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // アプリケーションの起動を抑制 - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ニックネームを補正 - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // コメントを補正 - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // 共有領域にストア - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // 共有領域をクリア - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // 無線MACアドレスをユーザー情報の後ろに展開 - { - u8 wMac[6]; - - // NVRAMからMACアドレスを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // 展開先アドレスを計算 - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // 共有領域に展開 - MI_CpuCopy8(wMac, p, 6); - } -/* -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // 使用可能チャンネルから使用許可チャンネルを計算 - { - u16 enableChannel; - u16 allowedChannel; - - // 使用可能チャンネルを読み出し - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // 使用許可チャンネルを計算 - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // 展開先アドレスを計算(MACアドレスの後ろの2バイト) - p = (u8 *)((u32)p + 6); - // 共有領域に展開 - *((u16 *)p) = allowedChannel; - } -#endif -*/ -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。 - - Arguments: None. - - Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。 - 無効である場合はFALSEを返す。 - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ - に関する情報を抽出する。 - - Arguments: None. - - Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している - 言語コードのビットマップを返す。DSカードが拡張言語 - コードに対応していない場合は 0 を返す。 - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM内登録エリアの拡張言語コードを確認 - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - 3: アプリの起動を抑制すべき。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPLが拡張言語コードに対応しているか - if (IsValidConfigEx()) - { - // IPLが拡張言語コードに対応している場合 - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断 - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // 拡張言語コードで通常言語コードを上書き - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、 - // IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制 - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPLが拡張言語コードに対応していない場合 - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制 - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断 - crc_flag |= (1 << i); - } - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。 - - Arguments: nvdsp - 比較するコンフィグデータ2つの配列。 - - Returns: s32 - 0: 両方不適切。 - 1: 配列[ 0 ]が適切。 - 2: 配列[ 1 ]が適切。 - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // 各ミラーデータのCRC & saveCount正当性チェック - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRCが正しく、saveCount値が0x80未満のデータを正当と判断。 - crc_flag |= (1 << i); - } - } - - // 正当なデータのうちどのデータが有効かを判定する。 - switch (crc_flag) - { - case 1: - case 2: - // 片方のCRCだけ正常 - return crc_flag; - - case 3: - // 両方ともCRCが正しければどちらが最新のデータか判断する。 - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // 両方ともCRCが不正 - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ブランク割り込みベクタ。 - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf b/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf deleted file mode 100644 index 9e89469d..00000000 --- a/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-TS.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address $(ADDRESS_STATIC) - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) - StackSize 4096 4096 -} - -Autoload ITCM -{ - Address $(ADDRESS_ITCM) - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) - Object $(OBJS_AUTOLOAD) (.init) - Object $(OBJS_AUTOLOAD) (.ctor) - Object $(OBJS_AUTOLOAD) (.sinit) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL 共有のオーバーレイが在る場合は、さらにその後ろに配置する必要があります。 - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/TestComponent/ARM9.TWL/Makefile b/build/tests/TestComponent/ARM9.TWL/Makefile deleted file mode 100644 index 755c4c59..00000000 --- a/build/tests/TestComponent/ARM9.TWL/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - systemMenu_RED - NandInitializerRed -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- - -#============================================================================ -#製品鍵を使った書き込みを行う場合は、TwlIPL/build/buildtools/commondefsの"FIRM_USE_PRODUCT_KEYS=TRUE"を有効にしてください。 -#============================================================================ -#============================================================================ -# ワイヤレスの強制Disableフラグを設定可能にする場合定義します。(要:Make Clean) -MACRO_FLAGS += -DUSE_WIRELESS_FORCE_DISABLE_SETTING -#============================================================================ -#============================================================================ -# 各種データを書き込み可能にする場合定義します。(要:Make Clean) -# 具体的には TWLFontTable.dat wrap.bin cert.sys の3つです。 -MACRO_FLAGS += -DUSE_WRITE_VARIOUS_DATA -#============================================================================ -#============================================================================ -# dev.kpを書き込み可能にする場合定義します。(要:Make Clean) -#MACRO_FLAGS += -DWRITE_DEVKP_ENABLE -#============================================================================ -#============================================================================ -# マリクラデバッグ用として作成する場合定義します。(要:Make Clean) -# ・自動処理において"nand:/shared2/launcher/wrap.bin"を作成します。 -# ・自動処理において開発用CLSの証明書(cert.sys)を書き込みます。 -# ・自動処理の最後に本体初期化を行います。 -#MACRO_FLAGS += -DMARIOCLUB_VERSION -#============================================================================ - -SYSM_DISABLE_DEBUG = FALSE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#TARGET_CODEGEN = THUMB - -TITLEID_LO = 0NRA -#TARGET_TAD = - -TARGET_BIN = TestComponent.srl -LCFILE_SPEC = ARM9-TS.lsf -ROM_SPEC = main.rsf - -MAKEROM_ARM7_BASE = $(SYSMENU_COMPONENTSDIR)/armadillo_uji/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -SRCS = main.c \ - kami_pxi.c \ - font_data.c \ - graphics.c \ - keypad.c \ - kami_font.c \ - - -LINCLUDES = ../common/include \ - $(ROOT)/build/libraries/lcfg/ARM9.TWL/include \ - ../../../systemMenu_tools/common/ARM9/include - -SRCDIR = src \ - ../../../systemMenu_tools/HWInfoWriter/ARM9/src \ - ../../../systemMenu_tools/common/ARM9/src - -#LCFILE = # using default - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -ifdef FIRM_USE_PRODUCT_KEYS -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' \ - -DHWID_PRIVKEY='private_HWID.der' -else -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' \ - -DHWID_PRIVKEY='private_HWID_dev.der' -endif -endif - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' \ - -DCARD_REGION='$(CARD_REGION)' \ - -DDISABLE_DEBUG='$(SYSM_DISABLE_DEBUG)' - -MAKETAD_FLAGS += -s - -SYSMENU_LIBS = \ - libnamut$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - liblcfg$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = -#INSTALL_TARGETS = -INSTALL_DIR = $(SDK_NMENU_DATADIR) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/ARM9.TWL/include/graphics.h b/build/tests/TestComponent/ARM9.TWL/include/graphics.h deleted file mode 100644 index ddd8c4f6..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/graphics.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: graphics.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 GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/kami_font.h b/build/tests/TestComponent/ARM9.TWL/include/kami_font.h deleted file mode 100644 index d9855fd0..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/kami_font.h +++ /dev/null @@ -1,95 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapハンドル; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// 上画面コンソール文字列用パレット -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// 下画面フォント用パレット -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// 下画面背景用パレット -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 -#define BG_COLOR_BROWN 11 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h b/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h deleted file mode 100644 index a9ca7a50..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h +++ /dev/null @@ -1,123 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 TWL_KAMI_TEST_KAMITEST_H_ -#define TWL_KAMI_TEST_KAMITEST_H_ - -#include "fifo.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -// 処理結果定義 -typedef enum KAMIResult -{ - KAMI_RESULT_SUCCESS = 0, - KAMI_RESULT_SUCCESS_TRUE = 0, - KAMI_RESULT_SUCCESS_FALSE, - KAMI_RESULT_INVALID_COMMAND, - KAMI_RESULT_INVALID_PARAMETER, - KAMI_RESULT_ILLEGAL_STATUS, - KAMI_RESULT_BUSY, - KAMI_RESULT_FATAL_ERROR, - KAMI_RESULT_SEND_ERROR, - KAMI_RESULT_MAX -} -KAMIResult; - - -typedef enum { - FORMAT_MODE_QUICK, // Quickフォーマット - FORMAT_MODE_FULL // Fullフォーマット(各パーティション内を0xFFで埋める) -} FormatMode; - -// コールバック -typedef void (*KAMICallback)(KAMIResult result, void *arg); - - -void KamiPxiInit( void ); - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback); -KAMIResult ExeFormat(FormatMode format_mode); -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); -KAMIResult kamiMcuWriteFirm(void* buffer ); -KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read); -KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read); -KAMIResult kamiCDC_GoDsMode( void ); -KAMIResult kamiClearNandErrorLog( void ); -KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg ); -KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes ); -KAMIResult kamiGetNandCID( void* buffer ); -KAMIResult kamiCodecIo(u8 page, u8 reg_no, u8* buffer, u8 value, BOOL is_read); - -// (重要) -// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。 -// -static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, TRUE); -} -static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, FALSE); -} -static KAMIResult kamiMcuRead(u8 reg_no, void* buffer) -{ - return kamiMcuIo((u32)reg_no, buffer, 0, TRUE); -} -static KAMIResult kamiMcuWrite(u8 reg_no, u8 value) -{ - return kamiMcuIo((u32)reg_no, NULL, (u32)value, FALSE); -} -static KAMIResult kamiARM7Read(u32 addr, void* buffer) -{ - return kamiARM7Io(addr, buffer, 0, TRUE); -} -static KAMIResult kamiARM7Write(u32 addr, u8 value) -{ - return kamiARM7Io(addr, NULL, value, FALSE); -} - -static KAMIResult kamiCodecRead(u8 page, u8 reg_no, u8* buffer) -{ - return kamiCodecIo(page, reg_no, buffer, 0, TRUE); -} - -static KAMIResult kamiCodecWrite(u8 page, u8 reg_no, u8 value) -{ - return kamiCodecIo(page, reg_no, NULL, value, FALSE); -} - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_KAMITEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/keypad.h b/build/tests/TestComponent/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/main.rsf b/build/tests/TestComponent/ARM9.TWL/main.rsf deleted file mode 100644 index 7d39d6cb..00000000 --- a/build/tests/TestComponent/ARM9.TWL/main.rsf +++ /dev/null @@ -1,232 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - RomVersion 2 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 2G - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - CommonClientKey TRUE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - HwAESSlotC TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SCFG: scfg lock [TRUE/FALSE] - # - LockSCFG FALSE - - # - # DisableDebug :最終ROMでは、実行時にデバッグできないようにTRUEにする必要があります。 - # - DisableDebug $(DISABLE_DEBUG) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL -# HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandInitializerRed/data -# Root /data -# File cert.sys -# HostRoot $(PRIVKEY_PATH) -# Root /key -# File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/font_data.c b/build/tests/TestComponent/ARM9.TWL/src/font_data.c deleted file mode 100644 index aa1ba501..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: font_data.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 - -/*---------------------- BGスクリーン ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- パレットデータ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// 上画面コンソール文字列パレット -const u16 PlttDataMain[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Black -}; - -// 下画面コンソール文字列パレット -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // 背景カラーはこの16番パレット - // 白 黒 灰 むらさき ピンク みずいろ 緑 青紫 赤 黄 茶 - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(25, 15, 15), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- キャラクタデータ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/src/graphics.c b/build/tests/TestComponent/ARM9.TWL/src/graphics.c deleted file mode 100644 index 1de138e9..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/graphics.c +++ /dev/null @@ -1,160 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: praphics.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 -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: 表示の初期化処理 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM クリア - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAMとパレットクリア - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- OBJバンクの設定 - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- BGバンクの設定 - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- 表示モード設定 - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D初期化 - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(0); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KバイトのOBJで2Dマップモードで使用 - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // スクリーンオフセット及びキャラクターオフセットの設定 - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- データロード - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: 三角ポリゴンで線を描画 - - Arguments: sx - 描画する線の開始点のx座標 - sy - 描画する線の開始点のy座標 - ex - 描画する線の終点のx座標 - ey - 描画する線の終点のy座標 - color - 描画する線の色 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/kami_font.c b/build/tests/TestComponent/ARM9.TWL/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.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 -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - 内部関数宣言 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // 背景用キャラクタデータ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // 背景用スクリーンデータセット - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // 背景キャラクタデータ書き換え - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: 仮想スクリーンをクリアする - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: 仮想スクリーンに文字列を配置する。文字列は32文字まで。 - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: 仮想スクリーンに - - Arguments: x - 文字列の先頭を配置する x 座標( × 8 ドット )。 - y - 文字列の先頭を配置する y 座標( × 8 ドット )。 - color - 文字の色をパレット番号で指定。 - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // 終端追加 - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // 改行コード - kamiFontReturnConsole(); - } - else - { - // 一文字ずつ書き込み - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // X座標が右端に到達した場合は改行処理 - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: 仮想コンソールに文字列を配置する。文字列は256文字まで。 - OS_Printfもついでに実行する。 - - Arguments: color - 文字の色をパレット番号で指定。 - text - 配置する文字列。終端文字はNULL。 - ... - 仮想引数。 - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: 仮想コンソールにおける改行処理を行う - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // 次の行へ - sYPos++; - } - else - { - // 既に最終行に到達している場合シフトを行う - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c b/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c deleted file mode 100644 index eb6359ab..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c +++ /dev/null @@ -1,743 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.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 -#include "kami_pxi.h" -#include "fifo.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -// 詰めてコピーする -#define KAMI_PACK_U8(d, s) \ - ((d)[0] = (u8)((*((u8*)s) >> 0) & 0xFF)) - - -#define KAMI_PACK_U16(d, s) \ - ((d)[0] = (u8)((*((u16*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u16*)s) >> 8) & 0xFF)) - -#define KAMI_PACK_U32(d, s) \ - ((d)[0] = (u8)((*((u32*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u32*)s) >> 8) & 0xFF), \ - (d)[2] = (u8)((*((u32*)s) >> 16) & 0xFF), \ - (d)[3] = (u8)((*((u32*)s) >> 24) & 0xFF)) - - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL lock; - - KamiCommand command; - KAMIPxiResult result; - KAMICallback callback; - void* arg; - - u32 total; - u32 current; - u8* data; -} -KamiWork; - -/*---------------------------------------------------------------------------* - 静的変数定義 - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data); -static void KamiSendPxiData(u8 *pData); -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiDone(KAMIResult result); -static void KamiWaitBusy(void); - - -void KamiPxiInit( void ) -{ - kamiWork.lock = FALSE; - - PXI_Init(); - while ( !PXI_IsCallbackReady(PXI_FIFO_TAG_KAMITEST, PXI_PROC_ARM7 )) - { - } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - if ( 0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, KAMITEST_PXI_START_BIT | (KAMI_TEST_COMMAND << KAMITEST_PXI_COMMAND_SHIFT), 0)) - { - return; - } -} - - - -/////////////////////////////////////////////////////////////////// - -//typedef void (*KAMICallback)(KAMIResult result, void *arg); -/* -void CDC_ReadCallback(KAMIResult result, void* arg); -void CDC_ReadCallback(KAMIResult result, void* arg) -{ - -} -*/ - -/*---------------------------------------------------------------------------* - Name: フォーマット実行関数 - - Description: - - Arguments: FormatMode - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = callback; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode) == FALSE) - { - return KAMI_RESULT_SEND_ERROR; - } - return KAMI_RESULT_SUCCESS; -} - -KAMIResult ExeFormat(FormatMode format_mode) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: NANDアクセス関数 - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - // データ作成 - KAMI_PACK_U32(&data[0], &block); - KAMI_PACK_U32(&data[4], &buffer); - KAMI_PACK_U32(&data[8], &count); - - if (KamiSendPxiCommand(KAMI_NAND_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiMcuWriteFirm - - Description: MCUファーム更新関数 - - Arguments: buffer : new mcu data buffer - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiMcuWriteFirm(void* buffer ) -{ - OSIntrMode enabled; - u8 data[4+2]; // 3の倍数 - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - - // データ作成 - KAMI_PACK_U32(&data[0], &buffer); - - if (KamiSendPxiCommand(KAMI_MCU_WRITE_FIRM, 5, (u8)0)) - { - for (i = 0; i < 4; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: MCUアクセス関数 - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // データ作成 - KAMI_PACK_U32(&data[0], ®_no); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_MCU_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: CODECアクセス関数 - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiCodecIo(u8 page, u8 reg_no, u8* buffer, u8 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // データ作成 - KAMI_PACK_U8(&data[0], &page); - KAMI_PACK_U8(&data[1], ®_no); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_CODEC_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: ARM7アクセス関数 - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // データ作成 - KAMI_PACK_U32(&data[0], &addr); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_ARM7_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiCDC_GoDsMode - - Description: CODECをDSモードへ遷移させる関数 - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiCDC_GoDsMode( void ) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CDC_GO_DSMODE, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiClearNandErrorLog - - Description: NVRAMのNANDエラー情報をクリアします。 - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiClearNandErrorLog( void ) -{ - OSIntrMode enabled; - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetCameraModuleTypesAsync - - Description: カメラモジュールタイプを取得します(非同期版) - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg ) -{ - OSIntrMode enabled; - - if (pTypes == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = callback; - kamiWork.arg = arg; - kamiWork.data = (u8*)pTypes; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0)) - { - return KAMI_RESULT_SUCCESS; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetCameraModuleTypes - - Description: カメラモジュールタイプを取得します(同期版) - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes ) -{ - OSIntrMode enabled; - - if (pTypes == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)pTypes; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetNandCID - - Description: NANDのCIDを取得します。 - - Arguments: buffer : 16バイトバッファ - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetNandCID(void* buffer ) -{ - OSIntrMode enabled; - u8 data[4+2]; // 3の倍数 - - MI_CpuClear8( data, sizeof(data)); - - // ロック - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)buffer; - - if (KamiSendPxiCommand(KAMI_GET_NAND_CID, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - PXI関連 - *---------------------------------------------------------------------------*/ - -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((size << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((data << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - return FALSE; - } - return TRUE; -} - -static void KamiSendPxiData(u8 *pData) -{ - u32 pxiData = (u32)((pData[0] << 16) | (pData[1] << 8) | pData[2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (data & KAMITEST_PXI_START_BIT) // 先頭データ - { - if (data & KAMITEST_PXI_RESULT_BIT) - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.result = (KAMIPxiResult)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // 未知のデータ - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - } - else // 後続データ - { - if (kamiWork.data == NULL) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - } - if (kamiWork.current == kamiWork.total-1) - { - KAMIResult result; - switch (kamiWork.result) - { - case KAMI_PXI_RESULT_SUCCESS: // alias KAMI_PXI_RESULT_SUCCESS_TRUE - result = KAMI_RESULT_SUCCESS; // alias KAMI_RESULT_SUCCESS_TRUE - break; - case KAMI_PXI_RESULT_SUCCESS_FALSE: - result = KAMI_RESULT_SUCCESS_FALSE; - break; - case KAMI_PXI_RESULT_INVALID_COMMAND: - result = KAMI_RESULT_INVALID_COMMAND; - break; - case KAMI_PXI_RESULT_INVALID_PARAMETER: - result = KAMI_RESULT_INVALID_PARAMETER; - break; - case KAMI_PXI_RESULT_ILLEGAL_STATUS: - result = KAMI_RESULT_ILLEGAL_STATUS; - break; - case KAMI_PXI_RESULT_BUSY: - result = KAMI_RESULT_BUSY; - break; - default: - result = KAMI_RESULT_FATAL_ERROR; - } - KamiDone(result); - return; - } -} - -extern void PXIi_HandlerRecvFifoNotEmpty(void); -static void KamiWaitBusy(void) -{ - volatile BOOL *p = &kamiWork.lock; - - while (*p) - { - if (OS_GetCpsrIrq() == OS_INTRMODE_IRQ_DISABLE) - { - PXIi_HandlerRecvFifoNotEmpty(); - } - } -} - -static void KamiDone(KAMIResult result) -{ - KAMICallback callback = kamiWork.callback; - void* arg = kamiWork.arg; - kamiWork.callback = NULL; - kamiWork.arg = NULL; - if (kamiWork.lock) - { - kamiWork.lock = FALSE; - } - if (callback) - { - callback(result, arg); - } -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/keypad.c b/build/tests/TestComponent/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.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 -#include "keypad.h" - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/TestComponent/ARM9.TWL/src/main.c b/build/tests/TestComponent/ARM9.TWL/src/main.c deleted file mode 100644 index 64ca2f34..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/main.c +++ /dev/null @@ -1,230 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - 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 -#include -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "graphics.h" -#include "keypad.h" -#include "kami_pxi.h" - -#define SCRAMBLE_MASK 0x00406000 - -extern void HWInfoWriterInit( void ); - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ -typedef void* (*Process)(void); - -/*---------------------------------------------------------------------------* - 内部変数定義 - *---------------------------------------------------------------------------*/ - -static Process sProcess; -static FSEventHook sSDHook; - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); - -static void* DummyProcess0(void) -{ - return DummyProcess0; -} - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - // 製品ビルドランチャー&デバッガ上での起動対応 - if ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) - { - ROM_Header *dh = (void *)HW_ROM_HEADER_BUF; - dh->s.game_cmd_param &= ~SCRAMBLE_MASK; - } - - OS_Init(); - OS_InitTick(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - FX_Init(); - SND_Init(); - SNDEX_Init(); - TP_Init(); - RTC_Init(); - -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); /* 独自PXI初期化 */ -#endif - - // Vブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - // FATドライバを初期化します。 - // NANDにアクセスするために必要です。 - // この関数はTwlSDK_branchUIGには含まれていません。 - FS_InitFatDriver(); - - // SDカードの挿抜イベント監視コールバック設定 -// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL); - - // FS_Initの後の方が良い模様 - InitAllocation(); - - // 表示関連初期化 - InitGraphics(); - kamiFontInit(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - // 初期シーケンス設定 - sProcess = DummyProcess0; - - kamiFontPrintfConsole( CONSOLE_ORANGE, "This is Test Component\n"); - -#ifdef TWL_CAPTURE_VERSION - // memory-launcher経由で立ち上がるTWLCaptureSystemWriterでは - // RED_LAUNCHER_VERが0でフォーマットに失敗するので強制的に書き換える - MI_StoreLE8((void*)HW_TWL_RED_LAUNCHER_VER, 1); -#endif - -#ifdef AUTO_FORMAT_MODE -// 検査工程ではNANDが初期化されていないがその状態でFATにアクセスすると -// 問題があるため強制的にフォーマットを行う 2008/06/18 -// ExeFormat(FORMAT_MODE_QUICK); -// -// Secure情報を読み込む前にフォーマットしてしまうとSecure情報が消えてしまう。 -// そうするとシリアルNoが書き換わってしまうのでこの処理はなくす。 -// 検査工程と異なりNandInitializerが実行される段階ではフォーマット済みなはず。 -// 仮に未フォーマットであったとしてもBadFormat扱いとなる。2009/03/05 -#endif - - // NAMライブラリ初期化 - NAM_Init( OS_AllocFromMain, OS_FreeToMain); - NAMUT_Init( OS_AllocFromMain, OS_FreeToMain); - -/* -{ - u8 temp; - kamiCodecRead( 1, 31, &temp); - OS_Printf("temp = %x\n", temp); - kamiCodecWrite( 1, 31, (temp & 0x7f)); - kamiCodecRead( 1, 31, &temp); - OS_Printf("temp = %x\n", temp); - -} -*/ - - while (1) - { - kamiPadRead(); - - // コマンドフラッシュ -// (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); - - // Vブランク待ち - OS_WaitVBlankIntr(); - - // ARM7コマンド応答受信 -// while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) -// { -// } - - // フォントスクリーンデータロード - kamiFontLoadScreenData(); - - sProcess = sProcess(); - } -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: VBlank割り込み処理 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -/*---------------------------------------------------------------------------* - Name: InitAllocation - - Description: ヒープの初期化. - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitAllocation(void) -{ - void *tmp; - OSHeapHandle hh; - - /* アリーナの初期化 */ - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - OS_Panic("ARM9: Fail to create heap...\n"); - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - diff --git a/build/tests/TestComponent/Makefile b/build/tests/TestComponent/Makefile deleted file mode 100644 index d593101e..00000000 --- a/build/tests/TestComponent/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - camera -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - banner \ - ARM7.TWL \ - ARM9.TWL \ - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/banner/Makefile b/build/tests/TestComponent/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/TestComponent/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/TestComponent/banner/banner_v3.bsf b/build/tests/TestComponent/banner/banner_v3.bsf deleted file mode 100644 index a86a720b..00000000 Binary files a/build/tests/TestComponent/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/TestComponent/banner/icon/gameIcon.bmp b/build/tests/TestComponent/banner/icon/gameIcon.bmp deleted file mode 100644 index 34909746..00000000 Binary files a/build/tests/TestComponent/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/TestComponent/common/include/fifo.h b/build/tests/TestComponent/common/include/fifo.h deleted file mode 100644 index 7e00b943..00000000 --- a/build/tests/TestComponent/common/include/fifo.h +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - camera-test - include - File: fifo.h - - Copyright 2007 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 TWL_KAMI_TEST_FIFO_H_ -#define TWL_KAMI_TEST_FIFO_H_ - -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ -#define PXI_FIFO_TAG_KAMITEST PXI_FIFO_TAG_USER_1 - -#define KAMI_PXI_CONTINUOUS_PACKET_MAX 10 -#define KAMITEST_PXI_DATA_SIZE_MAX ((KAMI_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // 最大データ数 - -#define KAMITEST_PXI_START_BIT 0x02000000 // 先頭パケットを意味する -#define KAMITEST_PXI_RESULT_BIT 0x00008000 // PXIの応答を示す - -#define KAMITEST_PXI_COMMAND_SHIFT 8 // コマンド格納部分の位置 -#define KAMITEST_PXI_COMMAND_MASK 0x00007f00 // コマンド格納部分のマスク -#define KAMITEST_PXI_DATA_NUMS_MASK 0x00ff0000 // データ数領域 -#define KAMITEST_PXI_DATA_NUMS_SHIFT 16 // データ数位置 -#define KAMITEST_PXI_1ST_DATA_MASK 0x000000ff // 先頭パケットのデータ領域 -#define KAMITEST_PXI_1ST_DATA_SHIFT 0 // 先頭パケットのデータ位置 - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -typedef enum KAMIPxiResult -{ - KAMI_PXI_RESULT_SUCCESS = 0, // 処理成功 (void/void*型) // 場合により後続パケットあり - KAMI_PXI_RESULT_SUCCESS_TRUE = 0, // 処理成功 (BOOL型) - KAMI_PXI_RESULT_SUCCESS_FALSE, // 処理成功 (BOOL型) - KAMI_PXI_RESULT_INVALID_COMMAND, // 不正なPXIコマンド - KAMI_PXI_RESULT_INVALID_PARAMETER, // 不正なパラメータ - KAMI_PXI_RESULT_ILLEGAL_STATUS, // KAMIの状態により処理を実行不可 - KAMI_PXI_RESULT_BUSY, // 他のリクエストを実行中 - KAMI_PXI_RESULT_FATAL_ERROR, // その他何らかの原因で処理に失敗 - KAMI_PXI_RESULT_MAX -} -KAMIPxiResult; - - -typedef enum KamiCommand -{ - KAMI_TEST_COMMAND, - KAMI_EXE_FORMAT, - KAMI_NAND_IO, - KAMI_MCU_IO, - KAMI_MCU_WRITE_FIRM, - KAMI_ARM7_IO, - KAMI_CDC_GO_DSMODE, - KAMI_CLEAR_NAND_ERRORLOG, - KAMI_GET_CAMERA_MODULE_TYPE, - KAMI_GET_NAND_CID, - KAMI_CODEC_IO -} -KamiCommand; - - -typedef enum CameraModuleType -{ - CAMERA_MODULE_TYPE_UNKNOWN, - CAMERA_MODULE_TYPE_SHARP, - CAMERA_MODULE_TYPE_MICRON -} -CameraModuleType; - - -typedef struct CameraModuleTypes -{ - CameraModuleType in; - CameraModuleType out; -} -CameraModuleTypes; - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_FIFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestMaker/Makefile b/build/tests/TestMaker/Makefile deleted file mode 100644 index a4b0b349..00000000 --- a/build/tests/TestMaker/Makefile +++ /dev/null @@ -1,241 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - GX - demos - UnitTours/3D_Shininess -# File: Makefile -# -# Copyright 2003 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$ -#---------------------------------------------------------------------------- - -ifeq ($(GAMECODE),) -#------------------------------------------------------------------------------------ -# sub make 起動 - -CONFIG = ./script/config.py -GENCLS = ./script/clsdir.py -GENFONT = ./script/fontcode.py -GENPARENTAL = ./script/parentalcontrol.py -FONTCODES = ./doc/20080617_DS_fontcodeList_NOE_FIANL.xls -CLSROMPARAM = ./config/romparam_forCLStest.yaml -PCROMPARAM = ./config/twl_parentalcontrol_spec.yaml -EULAROMPARAM = ./config/romparam_forEULAtest.yaml -SHOPROMPARAM = ./config/romparam_forShoptest.yaml -SAVEROMPARAM = ./config/romparam_forSavetest.yaml -FATFSPERMISSIONROMPARAM = ./config/romparam_forFATFSPermissiontest.yaml -BOOTROMPARAM = ./config/romparam_forBoottest.yaml -ROMPARAM = ./romparam.yaml -CODESLIST = ./codeslist - --include $(CODESLIST) - -build: $(GAMECODES) - -.PHONY: $(GAMECODES) clean config clstest fonttest parentaltest - -#---- CLS テスト設定 -clstest: - cp -f $(CLSROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "CLS" - -#---- fontcode テスト設定 -fonttest: - $(GENFONT) $(FONTCODES) $(ROMPARAM) "Reverse" - $(CONFIG) $(ROMPARAM) $(CODESLIST) "FONT" - -#---- parentarlcontrol テスト設定 -parentaltest: - $(GENPARENTAL) $(PCROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "PARENTAL" - -#---- eula テスト設定 -eulatest: - cp -f $(EULAROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "EULA" - -#---- shop テスト設定 -shoptest: - cp -f $(SHOPROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "SHOP" - -#---- savedate テスト設定 -savetest: - cp -f $(SAVEROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "SAVE" - -#---- fatfspermissiontest テスト設定 -fatfspermissiontest: - cp -f $(FATFSPERMISSIONROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "FATFSPERMISSION" - -#---- boottest テスト設定 -boottest: - cp -f $(BOOTROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "BOOT" - -#---- config -config: - $(CONFIG) $(ROMPARAM) $(CODESLIST) "DEFAULT" - -$(GAMECODES): $(CODESLIST) - install -d $@ && $(MAKE) -k -C $@ -f ../Makefile GAMECODE=$@ TEST_TYPE=$(TEST_TYPE) - -forcls: - $(GENCLS) $(ROMPARAM) - -clean: - rm -Rf $(GAMECODES) - rm -f $(CODESLIST) - rm -Rf roms - rm -Rf forCLS - -else -#------------------------------------------------------------------------------------ -# sub make 本体 - -SUBDIRS = - -#---- sysm_red_misc -MISC_DIR = ../../../systemMenu_RED/misc - -#---- default -BASEDIR = $(ROOT)/build/demos/os/consoleType-1 -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c font.c screen.c -BANNERSRC := $(wildcard ../banner/dummy/Cell/*.nce) -INSTALL_DIR = ../roms -MY_COMMONDEFS = $(TWLSDK_ROOT)/build/buildtools/commondefs \ - $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib -MY_MODULERULES = $(TWLSDK_ROOT)/build/buildtools/modulerules - -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED -TWL_NANDAPP := TRUE - -ifeq ($(TEST_TYPE),CLS) -BASEDIR = $(ROOT)/build/demos/os/consoleType-1 -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c font.c screen.c -BANNERSRC := $(wildcard ../banner/dummy/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),FONT) -BASEDIR = $(ROOT)/build/demos/gx/UnitTours/3D_BoxTest -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c data.c -BANNERSRC := $(wildcard ../banner/font/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),PARENTAL) -BASEDIR = $(ROOT)/build/tests/ogntest/ -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c -BANNERSRC := $(wildcard ../banner/parental/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),EULA) -BASEDIR = $(ROOT)/build/demos/gx/UnitTours/3D_BoxTest -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c data.c -BANNERSRC := $(wildcard ../banner/eula/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),SHOP) -BASEDIR = $(ROOT)/build/tests/nandApp/40M -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -MAKEROM_ROMROOT = $(ROOT)/build/tests/nandApp/40M/rom_data -MAKEROM_ROMFILES = *.* -endif - -ifeq ($(TEST_TYPE),SAVE) -BASEDIR = $(ROOT)/build/tests/save_data/DisplayVersion -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = dataver.c font.c main.c menu.c screen.c -BANNERSRC := $(wildcard $(BASEDIR)/banner/data/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),FATFSPERMISSION) -TARGET_FIRM = SYSTEMMENU -BASEDIR = ../../RomTypeTest -SRCDIR = $(BASEDIR)/ARM9/src -INCDIR = $(BASEDIR)/ARM9/src $(MISC_DIR)/include -SRCS = main.c RomTypeTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -INSTALL_DIR = $(BASEDIR)/test_roms -INSTALL_TARGETS += $(BINDIR)/twl_$(GAMECODE).$(INT_ROM_EXT) -MAKEROM_ROMROOT = ../../../systemMenu_RED/ -MAKEROM_ROMFILES = ./data/NTR_IPL_font_m.NFTR -MY_COMMONDEFS = $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MY_MODULERULES = $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -endif - -ifeq ($(TEST_TYPE),BOOT) -TARGET_FIRM = SYSTEMMENU -BASEDIR = ../../HashCheckTemplate -SUBDIRS = $(BASEDIR)/crt $(BASEDIR)/ARM7 -SRCDIR = $(BASEDIR)/ARM9/src -INCDIR = $(BASEDIR)/ARM9/src $(MISC_DIR)/include -SRCS = main.c HashCheckTemplate.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -INSTALL_DIR = $(BASEDIR)/test_roms -INSTALL_TARGETS += $(BINDIR)/twl_$(GAMECODE).$(INT_ROM_EXT) -MAKEROM_ROMROOT = ../../../systemMenu_RED/ -MAKEROM_ROMFILES = ./data/NTR_IPL_font_m.NFTR -MY_COMMONDEFS = $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MY_MODULERULES = $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -endif - -BANNER = ./banner.bnr -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - -#---------------------------------------------------------------------------- - -TARGET_BIN = twl_$(GAMECODE).$(TARGET_SUFFIX) -ROM_SPEC = twl_$(GAMECODE).rsf - -#SRCDIR = # using default -#LCFILE = # using default - -INSTALL_TARGETS += $(BINDIR)/$(TARGET_BIN) - -include $(GAMECODE).param - -include $(MY_COMMONDEFS) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(TARGETS): $(BANNER) - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - -include $(MY_MODULERULES) - -# sub make 本体 -#------------------------------------------------------------------------------------ -endif - -#===== End of Makefile ===== diff --git a/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce b/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce deleted file mode 100644 index becd7177..00000000 Binary files a/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg b/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg deleted file mode 100644 index 383dda18..00000000 Binary files a/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl b/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl deleted file mode 100644 index da867522..00000000 Binary files a/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv b/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 のコピー.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn b/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn deleted file mode 100644 index 5a18ca2b..00000000 --- a/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\banner_anm_idea03.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\banner_anm_idea03_ALL.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:177:87:1203:702 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 6 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 542,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:64:10:862:685 -OBJECT.DOCUMENT0.FRAME0.LayerID = 1 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 624 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-1:-1:135:323:1085:976 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 113 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 546 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/dummy/workset.ini b/build/tests/TestMaker/banner/dummy/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/dummy/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/eula/Cell/Cell0.nce b/build/tests/TestMaker/banner/eula/Cell/Cell0.nce deleted file mode 100644 index ab3ba8fb..00000000 Binary files a/build/tests/TestMaker/banner/eula/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/Character/eula.ncg b/build/tests/TestMaker/banner/eula/Character/eula.ncg deleted file mode 100644 index b7de68cd..00000000 Binary files a/build/tests/TestMaker/banner/eula/Character/eula.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl b/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/Preview/Preview0.npv b/build/tests/TestMaker/banner/eula/Preview/Preview0.npv deleted file mode 100644 index 2c89eced..00000000 --- a/build/tests/TestMaker/banner/eula/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5348 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\eula.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\eula.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn b/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn deleted file mode 100644 index d447d80e..00000000 --- a/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\eula.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\eula.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 2:3:-1:-1:-4:-30:107:187:1251:751 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 0 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 10 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 1329,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:156:74:857:824 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 527 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:45:26:1239:777 -OBJECT.DOCUMENT0.FRAME1.LayerID = 1 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/eula/workset.ini b/build/tests/TestMaker/banner/eula/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/eula/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/font/Cell/Cell0.nce b/build/tests/TestMaker/banner/font/Cell/Cell0.nce deleted file mode 100644 index ca5a3fb2..00000000 Binary files a/build/tests/TestMaker/banner/font/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/Character/font.ncg b/build/tests/TestMaker/banner/font/Character/font.ncg deleted file mode 100644 index 428f74e1..00000000 Binary files a/build/tests/TestMaker/banner/font/Character/font.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/ColorPalette/font.ncl b/build/tests/TestMaker/banner/font/ColorPalette/font.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/font/ColorPalette/font.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/Preview/Preview0.npv b/build/tests/TestMaker/banner/font/Preview/Preview0.npv deleted file mode 100644 index 2ee73f82..00000000 --- a/build/tests/TestMaker/banner/font/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5360 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\font.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\font.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/font/Scene/Scene0.nsn b/build/tests/TestMaker/banner/font/Scene/Scene0.nsn deleted file mode 100644 index 59c312c0..00000000 --- a/build/tests/TestMaker/banner/font/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\font.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\font.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-4:-30:107:187:1251:751 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 0 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 0,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:156:74:857:824 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 527 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:45:26:1239:777 -OBJECT.DOCUMENT0.FRAME1.LayerID = 1 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/font/workset.ini b/build/tests/TestMaker/banner/font/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/font/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/parental/Cell/Cell0.nce b/build/tests/TestMaker/banner/parental/Cell/Cell0.nce deleted file mode 100644 index 32c9539e..00000000 Binary files a/build/tests/TestMaker/banner/parental/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/Character/parental_control.ncg b/build/tests/TestMaker/banner/parental/Character/parental_control.ncg deleted file mode 100644 index ae83167b..00000000 Binary files a/build/tests/TestMaker/banner/parental/Character/parental_control.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl b/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/Preview/Preview0.npv b/build/tests/TestMaker/banner/parental/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/parental/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 のコピー.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn b/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn deleted file mode 100644 index 2872adb9..00000000 --- a/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\parental_control.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\parental_control.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-4:-30:404:56:1548:620 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 4 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 0,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:275:56:852:806 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 403 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:12:111:1206:862 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 1,6 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/parental/workset.ini b/build/tests/TestMaker/banner/parental/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/parental/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/shop/Cell/Cell0.nce b/build/tests/TestMaker/banner/shop/Cell/Cell0.nce deleted file mode 100644 index becd7177..00000000 Binary files a/build/tests/TestMaker/banner/shop/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg b/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg deleted file mode 100644 index 383dda18..00000000 Binary files a/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl b/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl deleted file mode 100644 index da867522..00000000 Binary files a/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/Preview/Preview0.npv b/build/tests/TestMaker/banner/shop/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/shop/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 のコピー.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn b/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn deleted file mode 100644 index 5a18ca2b..00000000 --- a/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\banner_anm_idea03.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\banner_anm_idea03_ALL.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:177:87:1203:702 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 6 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 542,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:64:10:862:685 -OBJECT.DOCUMENT0.FRAME0.LayerID = 1 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 624 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-1:-1:135:323:1085:976 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 113 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 546 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/shop/workset.ini b/build/tests/TestMaker/banner/shop/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/shop/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf b/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf deleted file mode 100644 index 35e5167d..00000000 --- a/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf +++ /dev/null @@ -1,251 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - #CERO FREE - #ESRB FREE - #USK FREE - #PEGI_GEN FREE - #PEGI_PRT FREE - #PEGI_BBFC FREE - #OFLC FREE - #GRB FREE -} diff --git a/build/tests/TestMaker/config/romparam_forBoottest.yaml b/build/tests/TestMaker/config/romparam_forBoottest.yaml deleted file mode 100644 index 29387e6c..00000000 Binary files a/build/tests/TestMaker/config/romparam_forBoottest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forCLStest.yaml b/build/tests/TestMaker/config/romparam_forCLStest.yaml deleted file mode 100644 index 72206362..00000000 Binary files a/build/tests/TestMaker/config/romparam_forCLStest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forEULAtest.yaml b/build/tests/TestMaker/config/romparam_forEULAtest.yaml deleted file mode 100644 index 1f9532f9..00000000 Binary files a/build/tests/TestMaker/config/romparam_forEULAtest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml b/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml deleted file mode 100644 index 980299c9..00000000 Binary files a/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forShoptest.yaml b/build/tests/TestMaker/config/romparam_forShoptest.yaml deleted file mode 100644 index 6804a5ed..00000000 Binary files a/build/tests/TestMaker/config/romparam_forShoptest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml b/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml deleted file mode 100644 index 70502ddc..00000000 Binary files a/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml and /dev/null differ diff --git a/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls b/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls deleted file mode 100644 index 6da552de..00000000 Binary files a/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls and /dev/null differ diff --git a/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls b/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls deleted file mode 100644 index 9329f55a..00000000 Binary files a/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls and /dev/null differ diff --git a/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls b/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls deleted file mode 100644 index 3a612cca..00000000 Binary files a/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls and /dev/null differ diff --git a/build/tests/TestMaker/readme.txt b/build/tests/TestMaker/readme.txt deleted file mode 100644 index 95b161ae..00000000 --- a/build/tests/TestMaker/readme.txt +++ /dev/null @@ -1,39 +0,0 @@ -#---------------------------------------------------------------------------- -# [CLS テスト用] ROM 作成 -# -# -- CLS テスト 用 ROM を作成します。 -# このドキュメントはほぼ覚書です。 -# -#---------------------------------------------------------------------------- - -* 注意 -- Python 2.5 の実行環境が必須です。すいません。 -- PyYAML のインストールが必須です。すいません。 -- pyExcelerator のインストールが一部必要です。すいません。 --- http://pyyaml.org/ を参照してください。 - -* 利用方法 - -- CLS テスト ROM 作成には make clstest -> make してください。 -- FONT テスト ROM 作成には make fonttest -> make してください。 -- PARENTAL テスト ROM 作成には make parentaltest -> make してください。 -- EULA テスト ROM 作成には make eulatest -> make してください。 -- 上記 make 作業後に、make forcls と打つと、~ - CLS 操作用ディレクトリ (forCLS) が生成されます。 - -* ROM 生成パラメータ -- romparam.yaml にパラメータが指定されています。 -- CLS テスト用パラメータに関しては、 - ./docs/twl_cls_checksheet_20080508.xls を参照してください。 -- FONT テスト用パラメータに関しては、 - ./docs/20080617_DS_fontcodeList_NOE_FIANL.xls を参照してください。 -- PARENTAL テスト用パラメータに関しては、 - ./docs/twl_parentalcontrol_spec_20080704.xls を参照してください。 -- EULA テスト用パラメータに関しては、 - 今後検証内容の詳細をつめる必要があります。 - -* CLS テスト生成物 - HZ0A : System/NAND/セキュア --> ShopApp / Menu - HZ4A : System/NAND/データ --> 写真帳 - HZ5A : System/非表示/NAND/データ --> 無線 Firm - KZ2A : User/NAND --> Shop 販売 App \ No newline at end of file diff --git a/build/tests/TestMaker/romparam.yaml b/build/tests/TestMaker/romparam.yaml deleted file mode 100644 index 051094cf..00000000 Binary files a/build/tests/TestMaker/romparam.yaml and /dev/null differ diff --git a/build/tests/TestMaker/rsf/ROM-TS_custom.rsf b/build/tests/TestMaker/rsf/ROM-TS_custom.rsf deleted file mode 100644 index 3b2f97af..00000000 --- a/build/tests/TestMaker/rsf/ROM-TS_custom.rsf +++ /dev/null @@ -1,319 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotA_SSLClientCert: launcher deliver HW AES slot A setting [TRUE/FALSE] - # - #HwAESSlotA_SSLClientCert FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotB for Sign JPEG for Launcher: launcher deliver HW AES slot B setting for Sign JPEG for Launcher [TRUE/FALSE] - # - #HwAESSlotB_SignJPEGForLauncher FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - #Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE - - # - # Shared2 file size: [DISABLE/0-4194304/0K-4096K/0M-4M] - # - #Shared2File0Size Disable - #Shared2File1Size Disable - #Shared2File2Size Disable - #Shared2File3Size Disable - #Shared2File4Size Disable - #Shared2File5Size Disable -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/TestMaker/script/clsdir.py b/build/tests/TestMaker/script/clsdir.py deleted file mode 100644 index bfbfa795..00000000 --- a/build/tests/TestMaker/script/clsdir.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, shutil -import yaml,codecs -import binascii - -romparampath = sys.argv[1] -romparam = yaml.load(codecs.open(romparampath,'r','utf16')) - -#----- 螳壽焚 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -#----- forCLS 繝繧」繝ャ繧ッ繝医Μ縺ョ逕滓 ------------------------------------ -forclsdir = './forCLS' -try: - os.mkdir(forclsdir) -except: - print 'clsdir.py : can not create dir %s' % forclsdir - -#----- cls 謫堺ス懃畑繝繧」繝ャ繧ッ繝医Μ縺ョ逕滓 --------------------------------- -for num in romparam.keys(): - gamecode = romparam[num][rsfkey]['GameCode'] - tadpath = ''.join(['./roms/','twl_',gamecode,'.tad']) - - #----- gamecode dir 縺ョ逕滓. - if os.path.exists(tadpath): - try: - clsappdir = ''.join([forclsdir,'/',gamecode]) - os.mkdir(clsappdir) - except: - print 'clsdir.py : can not create dir %s' % clsappdir - else: - print 'clsdir.py : can not create dir %s' % clsappdir - continue - - #----- version 繝繧」繝ャ繧ッ繝医Μ縺ョ逕滓 - verdir = ''.join([clsappdir,'/v',str(romparam[num][rsfkey]['Version'])]) - try: - os.mkdir(verdir) - except: - print 'clsdir.py : can not create dir %s' % verdir - continue - - #----- tadfile 縺ョ繧ウ繝斐シ - try: - shutil.copy(tadpath,verdir) - except (IOError, os.error), why: - print "Can't copy %s to %s: %s" % (`tadpath`, `verdir`, str(why)) - continue - - #----- TitleID 蜿門セ - tmpId = 0x00030000 - keys = ('AppType','Launch','Media','DataOnly','Secure') - for shiftbit, key in enumerate(keys): - if key == 'Launch': - if not romparam[num][rsfkey][key]: - tmpId = tmpId + (1< 2 and key[1] == 1][:-29] - fonts = [sheet[key][1] for key in keys if key[0] > 2 and key[1] == 2][:-29] - - #--- ROM 縺ョ菴懈宣蠎上ョ螟画峩 - if reverseflg: - fontcodes.reverse() - fonts.reverse() - - #--- romparam.yaml 縺ョ逕滓 - try: - yamlfile = codecs.open(yamlpath, 'w', 'utf16') - except: - print 'genparam.py : can not open %s file' % yamlpath - continue - else: - #--- 螳壽焚蛟、 - version = '0x0000' - apptype = 'USER' - launch = 'TRUE' - media = 'NAND' - dataonly = 'FALSE' - secure = 'FALSE' - etikect = 'personalized' - titlename = '' - titletype = 'TWL_APP' - filename = 'banner.bnr' - bnrver = '3' - codes = map(chr,range(ord('a'),ord('z')+1)) - for index, font in enumerate(fonts): - #--- gamecode, bnrtitle 縺ョ豎コ螳 - gamecode = ''.join(['4',codes[index/26],codes[(index%26)],'A']) - #--- 0x0060 縺縺醍音蛻・蟇セ蠢懊Excel 繝繝シ繧ソ縺悟ュ伜惠縺励↑縺縺溘aシimg 雋シ莉假シ - if fontcodes[index] == '0x0060': - bnrline1 = repr(''.join(['\x60_',fontcodes[index]]))[2:-1] - else: - bnrline1 = repr(''.join([font,'_',fontcodes[index]]))[2:-1] - #--- index - yamlfile.write('#-- ROM No.%d ------------------------\n' % index) - yamlfile.write('%d:\n' % index) - #--- rsf & properties parameter - yamlfile.write(' RSF :\n') - yamlfile.write(' GameCode : %s\n' % gamecode ) - yamlfile.write(' Version : %s\n' % version ) - #yamlfile.write(' AppType : %s\n' % apptype ) - #yamlfile.write(' Launch : %s\n' % launch ) - yamlfile.write(' Media : %s\n' % media ) - #yamlfile.write(' DataOnly : %s\n' % dataonly ) - #yamlfile.write(' Secure : %s\n' % secure ) - yamlfile.write(' TitleName : %s\n' % titlename ) - yamlfile.write(' TitleType : %s\n' % titletype ) - yamlfile.write(' eTicket : %s\n' % etikect ) - #--- bsf parameter - yamlfile.write(' Banner :\n') - yamlfile.write(' File : %s\n' % filename ) - yamlfile.write(' Version : %s\n' % bnrver ) - for language in ('JP','EN','FR','GE','IT','SP','CN','HN'): - bnrline2 = ''.join(['No.',str(index),' Lang:',language]) - if font == '"': - yamlfile.write(" %s : ['%s', '%s']\n" % (language, bnrline1, bnrline2)) - else: - yamlfile.write(' %s : ["%s", "%s"]\n' % (language, bnrline1, bnrline2)) - yamlfile.write('\n\n') - finally: - yamlfile.close() \ No newline at end of file diff --git a/build/tests/TestMaker/script/parentalcontrol.py b/build/tests/TestMaker/script/parentalcontrol.py deleted file mode 100644 index 105a36d4..00000000 --- a/build/tests/TestMaker/script/parentalcontrol.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import sys, yaml, codecs - - -target = sys.argv[1] -yamlpath = sys.argv[2] -#target = '../config/twl_parentalcontrol_spec.yaml' -#yamlpath = '../romparam.yaml' -ognparam = yaml.load(codecs.open(target,'r','utf16')) - -#--- romparam.yaml 縺ョ逕滓 -try: - yamlfile = codecs.open(yamlpath, 'w', 'utf16') -except: - print '%s : can not open %s file' % ('hoge', yamlpath) -else: - #--- 螳壽焚蛟、 - version = '0x0000' - apptype = 'USER' - launch = 'TRUE' - media = 'NAND' - dataonly = 'FALSE' - secure = 'FALSE' - etikect = 'personalized' - titlename = '' - titletype = 'TWL_APP' - filename = 'banner.bnr' - bnrver = '3' - codes = map(chr,range(ord('a'),ord('z')+1)) - - index = 0 - for ogn in sorted(ognparam.keys()): - #--- CardRegion 縺ョ豎コ螳 - region = ognparam[ogn][0] - for age in ognparam[ogn][1]: - #--- gamecode, bnrtitle 縺ョ豎コ螳 - gamecode = ''.join(['4',codes[index/26],codes[(index%26)],'A']) - bnrline1 = ''.join([ogn,'/',str(age)]) - #--- index - yamlfile.write('#-- ROM No.%d ------------------------\n' % index) - yamlfile.write('%d:\n' % index) - #--- rsf & properties parameter - yamlfile.write(' RSF :\n') - yamlfile.write(' GameCode : %s\n' % gamecode ) - yamlfile.write(' Version : %s\n' % version ) - yamlfile.write(' AppType : %s\n' % apptype ) - yamlfile.write(' Launch : %s\n' % launch ) - yamlfile.write(' Media : %s\n' % media ) - yamlfile.write(' DataOnly : %s\n' % dataonly ) - yamlfile.write(' Secure : %s\n' % secure ) - yamlfile.write(' CardRegion : %s\n' % region ) - yamlfile.write(' TitleName : %s\n' % titlename ) - yamlfile.write(' TitleType : %s\n' % titletype ) - yamlfile.write(' eTicket : %s\n' % etikect ) - #--- bsf parameter - yamlfile.write(' Banner :\n') - yamlfile.write(' File : %s\n' % filename ) - yamlfile.write(' Version : %s\n' % bnrver ) - for language in ('JP','EN','FR','GE','IT','SP','CN','HN'): - bnrline2 = ''.join(['No.',str(index),' Lang:',language]) - yamlfile.write(" %s : %s" % (language,str(yaml.dump([bnrline1,bnrline2])))) - #--- Rating - yamlfile.write(' Rating :\n') - yamlfile.write(' Ogn : %s\n' % ogn ) - yamlfile.write(' Age : %s\n' % age ) - yamlfile.write('\n\n') - index = index + 1 -finally: - yamlfile.close() \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_eula.py b/build/tests/TestMaker/script/rename_eula.py deleted file mode 100644 index d65863f1..00000000 --- a/build/tests/TestMaker/script/rename_eula.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 螳壽焚 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]),'.tad']) - os.rename(srcname,destname) \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_font.py b/build/tests/TestMaker/script/rename_font.py deleted file mode 100644 index 47074a1e..00000000 --- a/build/tests/TestMaker/script/rename_font.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 螳壽焚 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - #destname = ''.join([('No.%03d_' % num), - # romparam[num][bnrkey]['JP'][0].split('_')[1], - # '.tad']) - destname = ''.join([('No.%03d_' % num), - romparam[num][bnrkey]['JP'][1].split('_')[0], - '_L2.tad']) - - try: - os.rename(srcname,destname) - except: - print srcname, destname \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_parental.py b/build/tests/TestMaker/script/rename_parental.py deleted file mode 100644 index 5d6d11fe..00000000 --- a/build/tests/TestMaker/script/rename_parental.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 螳壽焚 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]).replace('/','_'),'.tad']) - os.rename(srcname,destname) - - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.srl']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]).replace('/','_'),'.srl']) - os.rename(srcname,destname) \ No newline at end of file diff --git a/build/tests/UjiPackage/Makefile b/build/tests/UjiPackage/Makefile deleted file mode 100644 index 9b70d85c..00000000 --- a/build/tests/UjiPackage/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - build -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -# 製品技術部用リリース作成Makefile - -TARGET_FIRM = SYSTEMMENU - -# -------------------------------- -# ツリーへのExport - -ifdef TWLSYSTEM_ROOT -export NITROSYSTEM_ROOT = $(TWLSYSTEM_ROOT) -endif - -export TARGET_CODEGEN = ALL - -# -------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -# check mandatory packages - -ifneq ($(TWLSDK_PRIVATE),TRUE) -$(error "TwlSDK-private is needed.") -endif - -ifneq ($(TWLSDK_SYSMENU_PRIVATE),TRUE) -$(error "TwlSDK-SysMenu-private is needed.") -endif - -ifneq ($(TWLSDK_SECURE7_PRIVATE),TRUE) -$(error "TwlSDK-Secure7-private is needed.") -endif - -ifneq ($(TWLSDK_TWL_WIRELESS_PRIVATE),TRUE) -$(error "TwlSDK-TwlWireless-private is needed.") -endif - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/namut/ARM9 \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/reloc_info/ARM7 \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/hotsw/ARM7 \ - $(TWL_IPL_RED_ROOT)/build/tests/TestComponent/ARM7.TWL - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -FIND := find -ARCHIVE_ROOT ?= . -PACKING_DATE_AND_TIME ?= $(shell date +"%Y%m%d %H%M") -PACKING_DATE ?= $(word 1,$(PACKING_DATE_AND_TIME)) -PACKING_TIME ?= $(word 2,$(PACKING_DATE_AND_TIME)) -ARCHIVE ?= TwlIPL-uji-$(PACKING_DATE)-$(PACKING_TIME).zip -PACKAGE_TMP ?= ./TwlIPL - -.PHONY: package - -package: - @echo --- Copy sources ---; \ - mkdir -p $(PACKAGE_TMP); \ - mkdir -p $(PACKAGE_TMP)/build; \ - mkdir -p $(PACKAGE_TMP)/build/tests; \ - mkdir -p $(PACKAGE_TMP)/build/systemMenu_tools; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/tests/TestComponent $(PACKAGE_TMP)/build/tests/TestComponent; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/common $(PACKAGE_TMP)/build/systemMenu_tools/common; \ - echo --- Build TwlIPL ---; \ - $(MAKE) full; \ - echo --- Packaging ---; \ - mkdir -p $(PACKAGE_TMP); \ - $(CP) $(TWL_IPL_RED_ROOT)/setup $(PACKAGE_TMP)/setup; \ - $(CP) $(TWL_IPL_RED_ROOT)/lib $(PACKAGE_TMP)/lib; \ - $(CP) $(TWL_IPL_RED_ROOT)/include $(PACKAGE_TMP)/include; \ - $(CP) $(TWL_IPL_RED_ROOT)/components $(PACKAGE_TMP)/components; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/buildtools $(PACKAGE_TMP)/build/buildtools; \ - $(FIND) $(PACKAGE_TMP) -name ".svn" -a -type d -print -prune -exec $(RM) $(VERBOSE) {} \; - zip -r $(ARCHIVE_ROOT)/$(ARCHIVE) $(PACKAGE_TMP) - - - -#===== End of Makefile ===== diff --git a/build/tests/UjiPackage/readme.txt b/build/tests/UjiPackage/readme.txt deleted file mode 100644 index 80107ac6..00000000 --- a/build/tests/UjiPackage/readme.txt +++ /dev/null @@ -1,24 +0,0 @@ -製品技術部検査プログラム用TwlIPLパッケージ作成Makefile - -■必要なTwlSDKパッケージ - - TWLSDK-5_1-20090303-jp.zip - TWLSDK-5_1-20090303-private-jp.zip - TWLSDK-5_1-20090303-private-Secure7-jp.zip - TWLSDK-5_1-20090303-private-SysMenu-jp.zip - TwlSDK-5_1-20090303-private-TwlWireless-jp.zip - - -■作り方 -1. 各種変数を設定 - -$ export TWLSDK_PLATFORM=TWL -$ export TWLSYSTEM_ROOT=(TwlSystemのインストールディレクトリ) -※TWLSYSTEMは使用しませんが、TwlIPLのcommondefsがきちんと解釈されないため、 - 設定してください。 - -2. packageターゲットを指定してmake - -$ make package - -TwlIPL-uji-(日付)-(時間).zip がこのディレクトリに生成されます。 diff --git a/build/tests/WDSTest/Makefile b/build/tests/WDSTest/Makefile deleted file mode 100644 index fe71f85b..00000000 --- a/build/tests/WDSTest/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_PROC = ARM9 - -SRCS = main.c -TARGET_BIN = main.srl - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LLIBRARIES += WDS$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WDSTest/src/main.c b/build/tests/WDSTest/src/main.c deleted file mode 100644 index e896b5bb..00000000 --- a/build/tests/WDSTest/src/main.c +++ /dev/null @@ -1,297 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - WDSTest - File: main.c - - Copyright 2007 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 -#include - -// ヒープ初期化関数 -static void InitializeAllocateSystem(void); - -// アクセスポイント情報のデバッグ表示用関数 -static void DumpWDSApInfo( WDSApInfo *apinfo ); - -void VBlankIntr(void); - -// WDS非同期関数のコールバック関数たち -// コールバック関数内ではアプリケーションのステート変数g_appstateを変更する -void WDS_Initialize_CB(void *arg); -void WDS_StartScan_CB(void *arg); -void WDS_EndScan_CB(void *arg); -void WDS_End_CB(void *arg); - -// アプリケーションを制御するステートの列挙型 -typedef enum AppState { - APP_STATE_WDSINIT, - APP_STATE_WDSWAITINIT, - APP_STATE_WDSSCAN, - APP_STATE_WDSWAITSCAN, - APP_STATE_WDSCOMPLETESCAN, - APP_STATE_WDSENDSCAN, - APP_STATE_WDSWAITENDSCAN, - APP_STATE_WDSCOMPLETEENDSCAN, - APP_STATE_WDSEND, - APP_STATE_WDSWAITEND, - APP_STATE_WDSCOMPLETEEND -} AppState; - -// アプリケーションを制御するステート変数 -static AppState g_appstate = APP_STATE_WDSINIT; - -// 受け取ったビーコン情報を格納する変数(この配列をランチャー経由でホットスポットチャンネルに渡す) -static WDSBriefApInfo briefapinfo[WDS_APINFO_MAX]; - -// 時間計測用 -static OSTick wdsBegin; - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - u8 *wdsSysBuf; - OSTick wdsScanBeginTick = 0; - - // 各種初期化処理 - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - InitializeAllocateSystem(); - - // WDSライブラリが使用するバッファを確保(32バイトアラインメントしている必要がある) - wdsSysBuf = OS_Alloc( WDS_GetWorkAreaSize() ); - if( wdsSysBuf == NULL) - { - OS_Panic("OS_Alloc Failed"); - } - - // メインループ - while( 1 ) { - OSTick now; - int i; - - OS_WaitVBlankIntr(); - switch( g_appstate ) - { - case APP_STATE_WDSINIT: - // イニシャルステート - - // WDSライブラリの初期化関数を呼び出し、その非同期処理の完了を待つ - OS_Printf("*** WDS_Initialize\n"); - g_appstate = APP_STATE_WDSWAITINIT; - wdsBegin = OS_GetTick(); - if( WDS_Initialize( wdsSysBuf, WDS_Initialize_CB, 0 ) == 0 ) - { - OS_Printf("WDS_Initialize successed\n"); - } - else { - OS_TPrintf("WDS_Initialize failed"); - g_appstate = APP_STATE_WDSCOMPLETEEND; - } - break; - OS_Printf("*** WDS_Initialize waiting asyncronous process\n"); - case APP_STATE_WDSWAITINIT: - case APP_STATE_WDSWAITSCAN: - case APP_STATE_WDSWAITENDSCAN: - case APP_STATE_WDSWAITEND: - // 非同期処理の完了を待つステート群 - - // コールバック関数が呼び出され、ステートが変更されるのを待てばよい - break; - case APP_STATE_WDSSCAN: - // 初期化が完了した直後か、ビーコンスキャン完了時に引き続きスキャンを行う場合に入ってくるステート - - //OS_Printf("*** WDS_StartScan\n"); - // ビーコンスキャン非同期処理を開始する - g_appstate = APP_STATE_WDSWAITSCAN; - wdsBegin = OS_GetTick(); - if( WDS_StartScan( WDS_StartScan_CB ) == 0 ) - { - if( wdsScanBeginTick == 0 ) - wdsScanBeginTick = OS_GetTick(); - } - else { - OS_TPrintf("WDS_EndScan failed"); - g_appstate = APP_STATE_WDSEND; - } - break; - case APP_STATE_WDSCOMPLETESCAN: - // スキャン完了後に入ってくるステート - - // 一回のスキャンではビーコンを取れないことが多いので、2秒間ビーコン受信を繰り返す - now = OS_GetTick(); - if( OS_TicksToMilliSeconds(now - wdsScanBeginTick) < 2000 ) - { - // 再スキャンのためにスキャン開始ステートに移行 - g_appstate = APP_STATE_WDSSCAN; - } - else { - // スキャン終了ステートに移行 - g_appstate = APP_STATE_WDSENDSCAN; - } - break; - case APP_STATE_WDSENDSCAN: - // スキャンを終了させる際に入ってくるステート - OS_Printf("*** WDS_EndScan\n"); - - // スキャンを終了させる非同期処理を開始する - wdsBegin = OS_GetTick(); - g_appstate = APP_STATE_WDSWAITENDSCAN; - if( WDS_EndScan( WDS_EndScan_CB ) == 0 ) - { - OS_Printf("WDS_EndScan successed\n"); - } - else { - OS_TPrintf("WDS_EndScan failed"); - g_appstate = APP_STATE_WDSEND; - } - break; - case APP_STATE_WDSCOMPLETEENDSCAN: - // スキャン終了非同期処理が終わった際に入って来るステート - OS_Printf("*** WDS_GetApInfoAll\n"); - if( WDS_GetApInfoAll( briefapinfo ) != 0 ) - { - OS_Panic("WDS_GetApInfoAll failed\n"); - } - for( i = 0 ; i < WDS_APINFO_MAX ; i++ ) - { - if( briefapinfo[i].isvalid == TRUE ) - { - OS_TPrintf("rssi: %d\n", briefapinfo[i].rssi); - DumpWDSApInfo( &briefapinfo[i].apinfo ); - } - } - g_appstate = APP_STATE_WDSEND; - break; - case APP_STATE_WDSEND: - // WDSライブラリを終了し、無線ハードの電源を落とす非同期処理を開始する - OS_Printf("*** WDS_End\n"); - g_appstate = APP_STATE_WDSWAITEND; - wdsBegin = OS_GetTick(); - if( WDS_End( WDS_End_CB ) == 0 ) - { - OS_Printf("WDS_End successed\n"); - } - else { - OS_Panic("WDS_End failed"); - } - break; - case APP_STATE_WDSCOMPLETEEND: - // WDSライブラリの解放処理が完了した際に入って来るステート - - OS_TPrintf("WDS completed\n"); - OS_Terminate(); - } - } -} - -// アクセスポイント情報のデバッグ表示用関数 -static void DumpWDSApInfo( WDSApInfo *apinfo ) -{ - int i; - char buf[256]; - - OS_TPrintf( "================================\n" ); - // SSID - MI_CpuCopy8( apinfo->ssid, buf, WDS_SSID_BUF_SIZE) ; - buf[WDS_SSID_BUF_SIZE] = 0x00; - OS_TPrintf( "SSID: %s\n", buf ); - - // APNUM - MI_CpuCopy8( apinfo->apnum, buf, WDS_APNUM_BUF_SIZE) ; - buf[WDS_APNUM_BUF_SIZE] = 0x00; - OS_TPrintf( "APNUM: %s\n", buf ); - - // CHANNEL - OS_TPrintf( "channel: %d\n", apinfo->channel ); - - // ENCRYPTFLAG - OS_TPrintf( "encryptmethod: %d\n", apinfo->encryptflag); - - // WEPKEY - OS_TPrintf( "WEPKEY: " ); - for( i = 0 ; i < WDS_WEPKEY_BUF_SIZE ; i++ ) - { - OS_TPrintf( "%02x", apinfo->wepkey[i] ); - } - OS_TPrintf( "\n" ); - OS_TPrintf( "================================\n" ); -} - -static void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -// ヒープ初期化関数 -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -static void WDS_Initialize_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_Initialize_CB\n"); - g_appstate = APP_STATE_WDSSCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_StartScan_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_StartScan_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETESCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_EndScan_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_EndScan_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETEENDSCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_End_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_End_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETEEND; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} diff --git a/build/tests/WDSWrapperTest/Makefile b/build/tests/WDSWrapperTest/Makefile deleted file mode 100644 index efc21709..00000000 --- a/build/tests/WDSWrapperTest/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: WDSWrapperTest -# File: Makefile -# -# 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. -# -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_PROC = ARM9 - -SRCS = main.c -TARGET_BIN = main.srl - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LLIBRARIES += WDS$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WDSWrapperTest/src/main.c b/build/tests/WDSWrapperTest/src/main.c deleted file mode 100644 index c103a5d8..00000000 --- a/build/tests/WDSWrapperTest/src/main.c +++ /dev/null @@ -1,197 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - WDSWrapperTest - File: main.c - - Copyright 2007 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 - -// Vブランク関数 -static void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -// ヒープ初期化関数 -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -// WDSWrapper用アロケータ -static void *Alloc_WDSWrapper( u32 size ) -{ - return OS_Alloc( size ); -} - -static void Free_WDSWrapper( void *ptr ) -{ - OS_Free( ptr ); -} - -char *callbackstring[] = { - "WDSWRAPPER_CALLBACK_INITIALIZE", - "WDSWRAPPER_CALLBACK_CLEANUP", - "WDSWRAPPER_CALLBACK_STARTSCAN", - "WDSWRAPPER_CALLBACK_STARTSCAN2", - "WDSWRAPPER_CALLBACK_STOPSCAN", -}; - -// WDSWrapper用コールバック関数 -static void Callback_WDSWrapper( void *ptr ) -{ - WDSWrapperCallbackParam *callback = (WDSWrapperCallbackParam *)ptr; - OS_TPrintf("Callback_WDSWrapper: %s %d ", callbackstring[callback->callback], callback->errcode ); - - switch( callback->callback ) { - case WDSWRAPPER_CALLBACK_INITIALIZE: - OS_TPrintf( "初期化完了" ); - break; - case WDSWRAPPER_CALLBACK_STARTSCAN2: - // n秒間隔のビーコン間欠スキャン一回分が完了 - // ビーコンを受け取っていないという結果が出た場合、強調表示を消します - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE ) - OS_TPrintf( "強調表示を消します" ); - else { - OS_TPrintf( "強調表示をつけます" ); - } - // 受信したビーコン情報データをArgument領域に書き込む -#ifdef SDK_TWL - OS_TPrintf( "\n" ); - WDS_WrapperSetArgumentParam(); -#endif - break; - case WDSWRAPPER_CALLBACK_STARTSCAN: - // n秒間隔のビーコン間欠スキャン一回分が完了 - // ビーコンを受け取っている場合のみ強調表示を付けます - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_SUCCESS ) - OS_TPrintf( "強調表示をつけます" ); - break; - case WDSWRAPPER_CALLBACK_STOPSCAN: - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE ) - OS_TPrintf( "強調表示を消します" ); - else { - OS_TPrintf( "強調表示をつけます" ); - } - break; - case WDSWRAPPER_CALLBACK_CLEANUP: - OS_TPrintf( "解放完了" ); - break; - } - OS_TPrintf( "\n" ); -} - -// スリープモードに入る前に呼び出されるコールバック関数 -static void Callback_WDSPreSleep( void *ptr ) -{ -#pragma unused( ptr ) - WDS_WrapperCleanup(); - while( WDS_WrapperCheckThreadRunning() == WDSWRAPPER_ERRCODE_SUCCESS ) - OS_Sleep( 100 ); -} - -// スリープモードから復帰する際に呼び出されるコールバック関数 -static void Callback_WDSPostSleep( void *ptr ) -{ -#pragma unused( ptr ) - WDSWrapperInitializeParam param; - - // WDSWrapper初期化と動作開始 - param.threadprio = 20; - param.dmano = 1; - - param.callback = Callback_WDSWrapper; - param.alloc = Alloc_WDSWrapper; - param.free = Free_WDSWrapper; - WDS_WrapperInitialize( param ); -} - -// メイン関数 -void NitroMain(void) -{ - WDSWrapperInitializeParam param; - u16 lastpad = 0x0000; - u16 nowpad = 0x0000; - PMSleepCallbackInfo presleepcallbackinfo, postsleepcallbackinfo; - - // 各種初期化処理 - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - //---- power manager callback - PM_SetSleepCallbackInfo( &presleepcallbackinfo, Callback_WDSPreSleep, NULL ); - PM_AppendPreSleepCallback( &presleepcallbackinfo ); - PM_SetSleepCallbackInfo( &postsleepcallbackinfo, Callback_WDSPostSleep, NULL ); - PM_AppendPostSleepCallback( &postsleepcallbackinfo ); - - InitializeAllocateSystem(); - - OS_TPrintf( "WDSWrapper Sample\n\n" ); - OS_TPrintf( "Xボタン: WDSラッパーとWDSを初期化し、間欠スキャンを開始\n" ); - OS_TPrintf( "Bボタン: スキャンを中断\n" ); - OS_TPrintf( "Aボタン: スキャンを再開\n" ); - OS_TPrintf( "Yボタン: スキャンを中断し、WDSラッパーとWDSを解放\n" ); - OS_TPrintf( "スタートボタン: ヒープをダンプ表示\n" ); - OS_TPrintf( "セレクトボタン: スリープモードin/out\n" ); - - // キー入力で中断・再開・解放をやる - while( 1 ) { - lastpad = nowpad; - nowpad = PAD_Read(); - - // Aボタン: スキャンを再開 - // Bボタン: スキャンを中断 - // Xボタン: ラッパーを初期化 - // Yボタン: ラッパーを解放 - // スタートボタン: ヒープをダンプ表示 - if( ( lastpad ^ nowpad ) & PAD_BUTTON_A && !( nowpad & PAD_BUTTON_A ) ) - WDS_WrapperStartScan(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_B && !( nowpad & PAD_BUTTON_B ) ) - WDS_WrapperStopScan(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_X && !( nowpad & PAD_BUTTON_X ) ) { - // WDSWrapper初期化と動作開始 - param.threadprio = 20; - param.dmano = 1; - - param.callback = Callback_WDSWrapper; - param.alloc = Alloc_WDSWrapper; - param.free = Free_WDSWrapper; - WDS_WrapperInitialize( param ); - } - if( ( lastpad ^ nowpad ) & PAD_BUTTON_Y && !( nowpad & PAD_BUTTON_Y ) ) - WDS_WrapperCleanup(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_START && !( nowpad & PAD_BUTTON_START ) ) - OS_DumpHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE ); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_SELECT && !( nowpad & PAD_BUTTON_SELECT ) ) { - PM_GoSleepMode( PM_TRIGGER_KEY, PM_PAD_LOGIC_OR, PAD_BUTTON_SELECT ); - } - OS_Sleep( 100 ); - } -} diff --git a/build/tests/WirelessChecker/@ b/build/tests/WirelessChecker/@ deleted file mode 100644 index bd33deb9..00000000 --- a/build/tests/WirelessChecker/@ +++ /dev/null @@ -1 +0,0 @@ -NINTENDO_RED_CONFIDENTIAL diff --git a/build/tests/WirelessChecker/Makefile b/build/tests/WirelessChecker/Makefile deleted file mode 100644 index b8b4ad89..00000000 --- a/build/tests/WirelessChecker/Makefile +++ /dev/null @@ -1,133 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools - Wireless Checker -# File: Makefile -# -# 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$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - -SUBDIRS = libraries components rsf banner - -RES_DIR = ./resources - -SRCDIR = src -INCDIR = include $(ROOT)/build/libraries/wm/common.TWL/inc \ - $(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc - -ifeq ($(TWL_NANDAPP),TRUE) -ROM_SPEC = rsf/wireless_checker_nand.rsf -else -ROM_SPEC = rsf/wireless_checker.rsf -endif - -BANNER_FILE = ./banner/000A_WLCK.bnr -MAKEROM_FLAGS = -DBANNER_FILE='$(BANNER_FILE)' - -#---------------------------------- -# Font - -FONTCVTR_DIR = $(call empath,$(TWLSYSTEM_ROOT))/tools/fontcvtr -FONT_BMP = $(RES_DIR)/ds_ipl10.bmp - -TARGET_OBJ += $(FONT_O) -EXT_OBJS += $(OBJDIR)/$(FONT_O) - - -FONT_RES_LC = $(RES_DIR)/font.NFTR -FONT_O_LC = font.o - -FONT_RES = $(FONT_RES_LC) -FONT_O = $(FONT_O_LC) - -MACRO_FLAGS += -DTWLNMENU_USE_LC_FONT - - -LDIRT_CLEAN += $(FONT_RES_LC) $(FONT_RES_NO_LC) *.rsf $(REVISION_C) - -#---------------------------------------------------------------------------- - -ifeq ($(TWL_NANDAPP),TRUE) -TARGET_BIN = WirelessChecker_nand.tad -else -TARGET_BIN = WirelessChecker.srl -endif - -ifeq ($(TWL_NANDAPP),TRUE) -LCFILE_AUTOGEN = $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.nand.lcf)) -LDRES_AUTOGEN = $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.nand.response)) -endif - -SRCS = main.cpp \ - frame.cpp \ - test.cpp \ - test_wm.cpp \ - test_nwm.cpp \ - test_fatal.cpp \ - test_recovery.cpp \ - util/util.cpp \ - util/canvas.cpp \ - util/wprintf.cpp \ - util/memory.cpp - -LINCLUDES = $(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc \ - $(ROOT)/build/libraries/wm/common.TWL/inc - -LLIBRARY_DIRS = -LLIBRARIES = - -COMPONENT_NAME = racoon -MAKEROM_ARM7_BASE = ./components/racoon_wckr/bin/$(TWL_BUILDTYPE_ARM7)/racoon -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -include $(TWLSYSTEM_ROOT)/build/buildtools/commondefs - -LIBRARIES_UNLINK := libnwm$(TWL_LIBSUFFIX).a - -LLIBRARY_DIRS += ./libraries/nwm/ARM9/lib/$(TWL_BUILDTYPE_ARM9) -LLIBRARIES += libnwm.WCKR$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# convert font - -$(FONT_RES): $(FONT_BMP) $(FONT_FILTER) -ifdef SILENT - echo "make font:" $(notdir $<) -endif - $(FONTCVTR_DIR)/fontcvtrc.exe \ - -i bmp -if $< -io $(FONTCVTR_DIR)/xlor/ds_ipl.xlor -ib 1 \ - -o nitro -of $@ -oe utf16 -oa 0x23 $(FONT_OPTION) - -$(OBJDIR)/$(FONT_O): $(FONT_RES) -ifdef SILENT - echo " b2o font:" $(notdir $<) -endif - $(BIN2OBJ) $< $@ --begin font_NFTR_begin --end font_NFTR_end --align 32 - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -INSTALL_DIR = ./ -#$(TWLSDK_INSTALL_ROOT)/bin/$(CODEGEN_PROC)-$(TWL_PLATFORM)/$(TWL_BUILD_DIR) - -do-build: $(TARGETS) -ifneq ($(TWL_NANDAPP),TRUE) - $(REMAKE) TWL_NANDAPP=TRUE SKIP_SUBDIR=TRUE -endif - -include $(TWLSYSTEM_ROOT)/build/buildtools/modulerules -include $(TWLSDK_ROOT)/build/buildtools/twl/modulerules.add-ins.nadk - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/banner/000A_WLCK.bmp b/build/tests/WirelessChecker/banner/000A_WLCK.bmp deleted file mode 100644 index 51252b83..00000000 Binary files a/build/tests/WirelessChecker/banner/000A_WLCK.bmp and /dev/null differ diff --git a/build/tests/WirelessChecker/banner/000A_WLCK.bsf b/build/tests/WirelessChecker/banner/000A_WLCK.bsf deleted file mode 100644 index a8d31c5b..00000000 Binary files a/build/tests/WirelessChecker/banner/000A_WLCK.bsf and /dev/null differ diff --git a/build/tests/WirelessChecker/banner/Makefile b/build/tests/WirelessChecker/banner/Makefile deleted file mode 100644 index f6ef1ca6..00000000 --- a/build/tests/WirelessChecker/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: NitroSDK - tools -# File: Makefile -# -# Copyright 2003,2004 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. -# -# $Log: Makefile,v $ -# Revision 1.1 2004/11/01 08:25:59 ooe -# (none) -# -# $NoKeywords: $ -#--------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -BANNER_ICON = 000A_WLCK.bmp -BANNER_SPEC = 000A_WLCK.bsf - -TARGETS = $(BANNER_SPEC:.bsf=.bnr) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON_NAME).nbfc $(BANNER_ICON_NAME).nbfp - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/WirelessChecker/components/Makefile b/build/tests/WirelessChecker/components/Makefile deleted file mode 100644 index 6ca34f03..00000000 --- a/build/tests/WirelessChecker/components/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - components -# File: Makefile -# -# Copyright 2003 - 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. -# -# $Log: Makefile,v $ -# -# -# $NoKeywords: $ -#---------------------------------------------------------------------------- - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS_P += racoon_wckr - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/components/racoon_wckr/Makefile b/build/tests/WirelessChecker/components/racoon_wckr/Makefile deleted file mode 100644 index 81bcb35e..00000000 --- a/build/tests/WirelessChecker/components/racoon_wckr/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -# Definition to override for racoon_wckr -# - -LLIBRARIES += libnwm_sp.WCKR$(TWL_LIBSUFFIX).a -LLIBRARY_DIRS += ../../libraries/nwm/ARM7/lib/$(TWL_BUILDTYPE) - -COMPONENT_DIR += $(ROOT)/build/components/racoon.TWL -COMPONENT_SRC_DIR += $(ROOT)/build/components/mongoose.TWL/src - -override SRCS = $(COMPONENT_SRC_DIR)/main.c $(COMPONENT_SRC_DIR)/initScfg.c - -override TARGET_NAME = racoon - -# Generate my own lsf from original lsf of mongoose -LSF_ORG = $(COMPONENT_DIR)/$(TARGET_NAME).lsf -MAKE_LSF = make_lsf.pl -AUTOGEN_LSF = $(TARGET_NAME)_wckr.lsf - -LDIRT_CLEAN = $(AUTOGEN_LSF) - -override TARGET_NEF = $(TARGET_NAME).tef -override LCFILE_SPEC = $(AUTOGEN_LSF) -override LCFILE_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).lcf.template -override LDRES_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).response.template - -override TWL_INSTALL_COMPONENTSDIR= -override INSTALL_TARGETS = -override INSTALL_DIR = - -# - -include $(TWLSDK_ROOT)/build/components/racoon.TWL/Makefile - -$(AUTOGEN_LSF): $(LSF_ORG) $(MAKE_LSF) - @echo " make:" $@ - @perl $(MAKE_LSF) $(TARGET_NAME) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl b/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl deleted file mode 100755 index b3c48384..00000000 --- a/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - components - mongoose_sdlog.TWL -# File: make_lsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -my $COMPONENT = $ARGV[0]; -print $COMPONENT; -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src = sprintf("$ROOT/build/components/%s.TWL/%s.lsf", $COMPONENT, $COMPONENT); -my $dst = sprintf("%s_wckr.lsf", $COMPONENT); - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/libnwm_sp/ ) - { - $line =~ s/libnwm_sp/libnwm_sp\.WCKR/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/WirelessChecker/libraries/Makefile b/build/tests/WirelessChecker/libraries/Makefile deleted file mode 100644 index 401e4ee5..00000000 --- a/build/tests/WirelessChecker/libraries/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 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 $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = nwm - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile b/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile deleted file mode 100644 index 3d20987a..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - WM - libraries -# File: Makefile -# -# Copyright 2003 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$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -TWL_PROC = ARM7 - -# build ARM & THUMB libraries -TARGET_CODEGEN ?= ALL - -MACRO_FLAGS = -DNWM_WRACK_FIRMWARE - -NWM_SRCDIR = $(ROOT)/build/libraries/wm/ARM7.TWL/nwm - -#---------------------------------------------------------------------------- - -# INCDIR 注意点: -INCDIR = $(NWM_SRCDIR)/inc $(NWM_SRCDIR)/../../inc \ - $(NWM_SRCDIR)/../../ARM7/inc $(NWM_SRCDIR)/../../common.TWL/inc \ - $(NWM_SRCDIR)/../common/inc \ - $(NWM_SRCDIR)/../../../wpa/include \ - $(TWLWIRELESS_ROOT)/include \ - $(TWLWIRELESS_ROOT)/host/include \ - $(TWLWIRELESS_ROOT)/host/wlan/include \ - $(TWLWIRELESS_ROOT)/host/os/twl/include \ - $(TWLWIRELESS_ROOT)/host/os/twl/library/athioctl/include \ - $(TWLWIRELESS_ROOT)/host/os/nitro/include \ - $(TWLWIRELESS_ROOT)/host/os/nitro/library/athioctl/include \ - $(ROOT)/build/libraries/spi/ARM7/include - -SRCDIR_ = ../../ARM7/src src ../../common.TWL/src - -SRCDIR = $(addprefix $(NWM_SRCDIR)/, $(SRCDIR_)) - -SRCS_ARM7 = nwmsp_system.c \ - nwmsp_cmd.c \ - nwmsp_event.c \ - nwmsp_wlan_handler.c \ - nwmsp_event_handler.c \ - nwmsp_beaconinfo.c - -SRCS_COMMON = nwm_loaddev.c \ - nwm_unloaddev.c \ - nwm_open.c \ - nwm_close.c \ - nwm_startscan.c \ - nwm_connect.c \ - nwm_disconnect.c \ - nwm_sendframe.c \ - nwm_recvframe.c \ - nwm_setwepkey.c \ - nwm_setpowersave.c \ - nwm_wpa.c \ - nwm_qos.c \ - nwm_reset.c - -SRCS = $(addprefix $(NWM_SRCDIR)/src/, $(SRCS_ARM7)) \ - $(addprefix $(NWM_SRCDIR)/../../common.TWL/src/, $(SRCS_COMMON)) \ - ../src/nwm_installfirm_autogen.c - -TARGET_LIB = libnwm_sp.WCKR$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# DEBUG版ビルドの場合、RELEASE版でビルドして -# DEBUG版のライブラリを装います。 - -ifdef TARGET_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef TWL_DEBUG -TWL_BUILD_TYPE = RELEASE -CCFLAGS += -DNWM_DEBUG -else -ifdef NITRO_DEBUG -TWL_BUILD_TYPE = RELEASE -endif -endif -endif - -#---------------------------------------------------------------------------- -# Default では LIMITED のライブラリを作成します -TWL_ARCHGEN ?= LIMITED - -#---------------------------------------------------------------------------- - -# 新無線用のデバッグフラグなど - -ifdef NWM_DEBUG -CCFLAGS += -DNWM_DEBUG -endif - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#INSTALL_TARGETS = $(TARGETS) -#INSTALL_DIR = $(SYSMENU_INSTALL_LIBDIR) -#GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== - diff --git a/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile b/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile deleted file mode 100644 index e8ecb1e6..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - WM - libraries -# File: Makefile -# -# Copyright 2003 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$ -#---------------------------------------------------------------------------- -#SUBDIRS = wm_lib - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -TWL_PROC = ARM9 -TARGET_CODEGEN ?= ALL - -MACRO_FLAGS = -DNWM_WRACK_FIRMWARE - -NWM_SRCDIR = $(ROOT)/build/libraries/wm/ARM9.TWL/nwm - -# HYBRID / LIMITED 両方のライブラリを作成します -TWL_ARCHGEN ?= ALL - -# LoadDeviceEx で転送するファームウェアのディレクトリ -TWLWIRELESS_FW_DIR = $(ROOT)/add-ins/TwlWireless/$(TWLWIRELESS_PACKAGE)/binfile - -SRCDIR = ./src ../../common.TWL/src -INCDIR = $(NWM_SRCDIR)/inc $(NWM_SRCDIR)/../../inc $(NWM_SRCDIR)/../../ARM9/inc \ - $(NWM_SRCDIR)/../../common.TWL/inc $(NWM_SRCDIR)/../common/inc - -SRCS_ARM9 = nwm_init.c \ - nwm_system.c \ - nwm_end.c \ - nwm_cmd.c \ - nwm_passphrase.c - -SRCS_COMMON = nwm_loaddev.c \ - nwm_unloaddev.c \ - nwm_open.c \ - nwm_close.c \ - nwm_startscan.c \ - nwm_connect.c \ - nwm_disconnect.c \ - nwm_setwepkey.c \ - nwm_setpowersave.c \ - nwm_sendframe.c \ - nwm_recvframe.c \ - nwm_wpa.c \ - nwm_qos.c \ - nwm_reset.c - -SRCS = $(addprefix $(NWM_SRCDIR)/src/, $(SRCS_ARM9)) \ - $(addprefix $(NWM_SRCDIR)/../../common.TWL/src/, $(SRCS_COMMON)) \ - ../src/nwm_installfirm_autogen.c - -EXT_OBJS = $(OBJDIR)/nwm_firm.o - -TARGET_LIB = libnwm.WCKR$(TWL_LIBSUFFIX).a - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#INSTALL_TARGETS = $(TARGETS) - -#INSTALL_DIR = $(TWL_INSTALL_LIBDIR) - -GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- -# 新無線用のデバッグフラグなど - -ifdef NWM_DEBUG -CCFLAGS += -DNWM_DEBUG -endif - -CCFLAGS += -DENABLE_RXACK - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(OBJDIR)/nwm_firm.o: $(TWLWIRELESS_FW_DIR)/nwm_firm.bin - $(BIN2OBJ) $(call empath, $<) $@ - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/Makefile b/build/tests/WirelessChecker/libraries/nwm/Makefile deleted file mode 100644 index a7c14231..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - wm -# File: Makefile -# -# Copyright 2003 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$ -#---------------------------------------------------------------------------- - - -TARGET_PLATFORM := TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = scripts - -ifneq ($(filter TWL,$(TARGET_PLATFORM_LIST)),) -SUBDIRS_P += ARM9 -ifeq ($(TWLSDK_PRIVATE),TRUE) -SUBDIRS_P += ARM7 -endif -endif - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile b/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile deleted file mode 100644 index 2582bc5b..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - wm -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -override TARGET_CODEGEN := ARM -override TWL_ARCHGEN := LIMITED - -NWM_ORG = $(ROOT)/build/libraries/wm/common.TWL/src/nwm_installfirm.c -MAKE_NWM = make_nwm_fw_wrack.pl -AUTOGEN_NWM = src/nwm_installfirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_NWM) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -TARGETS = $(AUTOGEN_NWM) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_NWM): $(NWM_ORG) $(MAKE_NWM) - @echo " make:" $@ - @perl $(MAKE_NWM) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl b/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl deleted file mode 100755 index 50d2ebf4..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: make_nwm_fw_wrack.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $rn = "\x0D\x0A"; - -my $SDKROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $SDKROOT = $ENV{$_}; - } -} - -my $src = "$SDKROOT/build/libraries/wm/common.TWL/src/nwm_installfirm.c"; -my $dst_dir = "../src"; -my $dst_file = "nwm_installfirm_autogen.c"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - -mkdir $dst_dir unless -e $dst_dir; - -my $in_instfirm_count = 0; - -open(OUT, ">$dst_dir/$dst_file") or die "cant open $dst_dir/$dst_file\n"; -foreach my $line ( @lines ) -{ - if ( $line =~ m/^NWMRetCode NWMi_InstallFirmware\(NWMCallbackFunc callback, void\* addr, u32 size, BOOL isColdstart\)/ ) - { - print OUT <<__WRACK_FIRMWARE_API__; - -\#ifdef NWM_WRACK_FIRMWARE -NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback); - -NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback) -{ - NWMArm9Buf *sys = NWMi_GetSystemWork(); - NWMRetCode result; - - // コールバック関数を登録 - NWMi_SetCallbackTable(NWM_APIID_INSTALL_FIRMWARE, callback); - - // ARM7にFIFOで通知 - result = NWMi_SendCommand(NWM_APIID_INSTALL_FIRMWARE, 5, - (u32)(sys->NWM7), (u32)(sys->status), (u32)(sys->fifo7to9), NULL, FALSE); - - return NWM_RETCODE_OPERATING; -} -\#endif // NWM_WRACK_FIRMWARE - -__WRACK_FIRMWARE_API__ - } - - if ( $line =~ m/MCU_SetWifiLedBlinkingStatus\( FALSE \);/ ) - { - print OUT "#ifndef NWM_WRACK_FIRMWARE", $rn; - } - - if( $line =~ m/^installfirm_err:/ ) - { - print OUT <<__WRACK_FIRMWARE__; - -\#else // NWM_WRACK_FIRMWARE -\#pragma unused (err) - // set WiFi_RST to disable WiFi - NWMSPi_SetWiFiReset(FALSE); - OS_Sleep(1); // wait 1msec - // set WiFi_RST to enable WiFi - NWMSPi_SetWiFiReset(TRUE); - { - NWMCallback *cb; - - NWMSP_ClearAPIActiveFlag(NWM_APIID_INSTALL_FIRMWARE); - // 正常終了 - cb = (NWMCallback *)NWMSP_GetBuffer4Callback2Nwm9(); - cb->apiid = NWM_APIID_INSTALL_FIRMWARE; - cb->retcode = NWM_RETCODE_FATAL_ERROR; - NWMSP_ReturnResult2Nwm9((void *)cb); - return; - } -\#endif // NWM_WRACK_FIRMWARE -__WRACK_FIRMWARE__ - } - print OUT $line; - - -} -close(OUT); - diff --git a/build/tests/WirelessChecker/readme.txt b/build/tests/WirelessChecker/readme.txt deleted file mode 100644 index 980f4e29..00000000 --- a/build/tests/WirelessChecker/readme.txt +++ /dev/null @@ -1,62 +0,0 @@ -* WirelessChecker - 本体デバッグ用 無線機能チェックプログラム - -- 確認手順 - -1. 本体無線フラグの確認 - - 上画面の「無線ON/OFF設定」および「無線強制OFF本体」の設定を確認してください。 - 無線が使用できる状態は、以下の状態です。 - - 無線ON/OFF設定[ON ] - 無線強制OFF本体[No ] - - -2. DS無線の初期化テスト - - DS無線の初期化→スキャン→終了をテストします。 - アクティブスキャン(電波を出すスキャン)を行います。 - LEDの点滅を確認することで無線が正常に動作していることを確認してください。 - また、無線ON/OFF設定をOFFにすることで、初期化が失敗することを確認してください。 - -3. TWL無線の初期化テスト - - TWL無線の初期化→スキャン→終了をテストします。 - アクティブスキャン(電波を出すスキャン)を行います。 - LEDの点滅を確認することで無線が正常に動作していることを確認してください。 - また、無線ON/OFF設定をOFFにすることで、初期化が失敗することを確認してください。 - -4. FATALエラーリカバリテスト - - TWL無線モジュールのファームウェア壊れをエミュレートし、それによるFATALエラー発生後、 - アプリジャンプによるハードウェアリセットで、ファームウェアがロードし直されていることを確認します。 - 再起動後に自動的にTWL無線の初期化チェックを行います。初期化チェックが成功し、LEDが点滅していることを確認してください。 - -(以下の項目はオプションです。) - -5. FATALエラーエミュレーション - 項目4.のFATALエラーを手動で起こします。この操作を行った後、「TWL無線の初期化テスト」が失敗することを確認してください。 - - -- TODO - -・NOAとかのデバッグにむけて英語表示も対応(?) - -- 変更履歴 - -- 080801 - NANDアプリに対応。 - バナー追加。 - ゲームコード追加。 - -- 080731 - FINALROMでビルド。 - テスト用のプリントデバッグが出ていたのを修正。 - コマンドログを日本語化。 - TwlSDK 5.0 RC1でビルド。 - -- 080730 - 下画面に簡易ヘルプを表示。 - -- 080725 - 最初のリリース - diff --git a/build/tests/WirelessChecker/resources/ds_ipl10.bmp b/build/tests/WirelessChecker/resources/ds_ipl10.bmp deleted file mode 100644 index 6fc8eedc..00000000 Binary files a/build/tests/WirelessChecker/resources/ds_ipl10.bmp and /dev/null differ diff --git a/build/tests/WirelessChecker/rsf/Makefile b/build/tests/WirelessChecker/rsf/Makefile deleted file mode 100644 index 93cda094..00000000 --- a/build/tests/WirelessChecker/rsf/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: NitroWiFi - demos - ps-ping -# File: Makefile -# -# Copyright 2005 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. -# -# $Log: Makefile,v $ -# -# $NoKeywords: $ -#---------------------------------------------------------------------------- - -# Generate my own lsf from original lsf of mongoose -RSF_ORG = $(ROOT)/include/twl/specfiles/ROM-TS.rsf -MAKE_RSF = make_rsf.pl - -AUTOGEN_RSF = wireless_checker.rsf - -LDIRT_CLEAN = $(AUTOGEN_RSF) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: $(AUTOGEN_RSF) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_RSF): $(RSF_ORG) $(MAKE_RSF) - @echo " make:" $@ - perl $(MAKE_RSF) $(AUTOGEN_RSF) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/rsf/make_rsf.pl b/build/tests/WirelessChecker/rsf/make_rsf.pl deleted file mode 100755 index 49691859..00000000 --- a/build/tests/WirelessChecker/rsf/make_rsf.pl +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - demos - wifi -# File: make_rsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src1 = "$ROOT/include/twl/specfiles/ROM-TS.rsf"; -my $dst1 = "wireless_checker.rsf"; - - -my $rn = "\x0D\x0A"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/TitleName\t+/ ) - { - $line =~ s/\t\#?TitleName.*\".*\"/\tTitleName\t\t\"WLAN CHECKER\"/; - } - - if( $line =~ m/^\tBannerFile/ ) - { - print OUT "\tBannerFile\t\t\$(BANNER_FILE)", $rn; - print OUT $rn, "\t#", $rn; - print OUT "\t# Permit LandingNormalJump: for TWL \"ApplicationJump\" function [TRUE/FALSE]", $rn; - print OUT "\t#", $rn; - print OUT "\tPermitLandingNormalJump\tTRUE", $rn; - next; - } - - print OUT $line; -} -close(OUT); - - -my $src2 = "$ROOT/include/twl/specfiles/ROM-TS_nand.rsf"; -my $dst2 = "wireless_checker_nand.rsf"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^\tBannerFile/ ) - { - print OUT "\tBannerFile\t\t\$(BANNER_FILE)", $rn; - next; - } - - if( $line =~ m/InitialCode\t+/ ) - { - $line =~ s/\t\#?InitialCode.*[a-zA-Z0-9]{4}/\tInitialCode\t\t\t\t000A/; - } - - if( $line =~ m/TitleName\t+/ ) - { - $line =~ s/\t\#?TitleName.*\".*\"/\tTitleName\t\t\"WLAN CHECKER\"/; - } - - if( $line =~ m/PermitLandingNormalJump/ ) - { - $line =~ s/\t\#?.*(TRUE|FALSE)/\tPermitLandingNormalJump\tTRUE/; - } - - print OUT $line; -} \ No newline at end of file diff --git a/build/tests/WirelessChecker/src/frame.cpp b/build/tests/WirelessChecker/src/frame.cpp deleted file mode 100644 index c8582dc0..00000000 --- a/build/tests/WirelessChecker/src/frame.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 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 "util/util.h" -#include "util/canvas.h" -#include "frame.h" - -namespace -{ - -} - -CFrame::CFrame() : m_itemIndex(ITEM_TEST_WM) -{ - OS_InitMessageQueue(&m_EntrMsgq, m_EntrMsg, sizeof(m_EntrMsg)/sizeof(m_EntrMsg[0])); - -} - -CFrame::CFrame(u8 item) -{ - m_itemIndex = item; - OS_InitMessageQueue(&m_EntrMsgq, m_EntrMsg, sizeof(m_EntrMsg)/sizeof(m_EntrMsg[0])); -} - -CFrame::~CFrame() -{ - -} - -void -CFrame::InitDisp() -{ - util::CCanvas* pcm = util::GetMain1Canvas(); - util::CCanvas* pcs = util::GetSub1Canvas(); - - pcm->Clear(util::COLOR_BLACK); - pcs->Clear(util::COLOR_BLACK); - pcm->Printf(16*5, 0, util::COLOR_WHITE, L"無線機能確認ツール"); - pcm->Printf(96, 16*1, util::COLOR_WHITE, L"BUILD TIME: %s %s", L""__DATE__, L""__TIME__); - - DrawBorder(pcm, 4, 16*2 + 4, 256 - 8, 192 - (16*2 + 4), util::COLOR_WHITE); - pcm->Printf(16*1, 16*3, util::COLOR_WHITE, L"無線ON/OFF設定[ %s ]", TRUE == OS_IsAvailableWireless() ? L"ON ":L"OFF"); - pcm->Printf(16*8, 16*3, util::COLOR_WHITE, L"無線強制OFF本体[ %s ]", TRUE == OS_IsForceDisableWireless() ? L"Yes":L"No "); - - pcm->Printf(16*2, 16*5, util::COLOR_WHITE, L"DS無線の初期化テスト"); - pcm->Printf(16*2, 16*6, util::COLOR_WHITE, L"TWL無線の初期化テスト"); - pcm->Printf(16*2, 16*7, util::COLOR_WHITE, L"FATALエラーエミュレーション"); - pcm->Printf(16*2, 16*8, util::COLOR_WHITE, L"FATALエラーリカバリテスト"); - - DrawBorder(pcs, 4, 16*9 + 4, 256 - 8, 192 - (16*9 + 4), util::COLOR_WHITE); -} - -void -CFrame::CursorDisp(int xpos, int ystart, util::PaletteColor color) -{ - util::CCanvas* pcm = util::GetMain1Canvas(); - pcm->Clear(xpos, ystart, 16, 16*ITEM_NUM, util::COLOR_BLACK); - pcm->Print(xpos, ystart + 16*GetItemIndex(), color, L"■"); -} - -void -CFrame::HelpDisp(util::PaletteColor color) -{ - util::CCanvas* pcs = util::GetSub1Canvas(); - pcs->Clear(8, 16*9 + 8, 256 - 16, 16*2, util::COLOR_BLACK); - - wchar_t *pHelpString1, *pHelpString2; - - switch (GetItemIndex()) - { - case ITEM_TEST_WM: - pHelpString1 = L"DS無線の初期化テストを行います。"; - pHelpString2 = L"LEDの点滅を確認してください。"; - break; - case ITEM_TEST_NWM: - pHelpString1 = L"TWL無線の初期化テストを行います。"; - pHelpString2 = L"LEDの点滅を確認してください。"; - break; - case ITEM_TEST_FATAL: - pHelpString1 = L"FATALエラーを発生させ、TWL無線を使えなくします"; - pHelpString2 = L"HWリセットで回復します。"; - break; - case ITEM_TEST_RECOVERY: - pHelpString1 = L"FATALエラーのリカバリーをテストします。"; - pHelpString2 = L"再起動後にTWL無線初期化を確認してください。"; - break; - } - pcs->Print(8, 16*9 + 8, color, pHelpString1); - pcs->Print(8, 16*10 + 8, color, pHelpString2); -} - -BOOL -CFrame::AutoEnter() -{ - return OS_SendMessage(&m_EntrMsgq, (OSMessage)TRUE, OS_MESSAGE_NOBLOCK); -} - -void -CFrame::ProcessButton() -{ - if (util::IsPadTrigger(PAD_KEY_UP)) - { - decRound(); - } else - if (util::IsPadTrigger(PAD_KEY_DOWN)) - { - incRound(); - } - - if (util::IsPadTrigger(PAD_BUTTON_A)) - { - if (FALSE == OS_SendMessage(&m_EntrMsgq, (OSMessage)TRUE, OS_MESSAGE_NOBLOCK)) - { - // already entered - } - } -} - -BOOL -CFrame::IsEnter() -{ - OSMessage msg; - return OS_ReceiveMessage(&m_EntrMsgq, &msg, OS_MESSAGE_NOBLOCK); - -} - -void -CFrame::DrawBorder(util::CCanvas* pCanvas, int px, int py, int pw, int ph, util::PaletteColor color) -{ - pCanvas->Clear(px, py, pw, 1, color); - pCanvas->Clear(px, py + ph - 1, pw, 1, color); - pCanvas->Clear(px, py + 1, 1, ph - 2, color); - pCanvas->Clear(px + pw - 1, py + 1, 1, ph - 2, color); -} diff --git a/build/tests/WirelessChecker/src/frame.h b/build/tests/WirelessChecker/src/frame.h deleted file mode 100644 index 2fec1121..00000000 --- a/build/tests/WirelessChecker/src/frame.h +++ /dev/null @@ -1,72 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: frame.h - - Copyright 2007 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 WIRELESS_CHECHER_FRAME_H_ -#define WIRELESS_CHECHER_FRAME_H_ - -#include -#include "util/util.h" -#include - -class CFrame -{ -public: - enum { - ITEM_TEST_WM, - ITEM_TEST_NWM, - ITEM_TEST_FATAL, - ITEM_TEST_RECOVERY, - ITEM_NUM - }; -private: - u8 m_itemIndex; - OSMessageQueue m_EntrMsgq; - OSMessage m_EntrMsg[1]; - BOOL m_isEnter; - - static const u8 m_itemNum = ITEM_NUM; - void incRound() - { - if (m_itemNum) - { - m_itemIndex = (u8)((m_itemIndex + 1)%m_itemNum); - } - } - void decRound() - { - if (m_itemNum) - { - m_itemIndex = (u8)((m_itemNum + m_itemIndex - 1)%m_itemNum); - } - } -public: - CFrame(); - CFrame(u8 item); - virtual ~CFrame(); - void InitDisp(); - void CursorDisp(int xpos, int ystart, util::PaletteColor color); - void HelpDisp(util::PaletteColor color); - virtual void ProcessButton(); - u8 GetItemIndex() - { - return m_itemIndex; - } - BOOL IsEnter(); - BOOL AutoEnter(); - void DrawBorder(util::CCanvas* pCanvas, int px, int py, int pw, int ph, util::PaletteColor color); -}; - -#endif // WIRELESS_CHECHER_TEST_NWM_H_ diff --git a/build/tests/WirelessChecker/src/main.cpp b/build/tests/WirelessChecker/src/main.cpp deleted file mode 100644 index 0069788b..00000000 --- a/build/tests/WirelessChecker/src/main.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 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 -#include -#include -#include "util/util.h" -#include "util/canvas.h" -#include "frame.h" -#include "test_wm.h" -#include "test_nwm.h" -#include "test_fatal.h" -#include "test_recovery.h" -#include - -namespace -{ - -} -// end of anonymous namespace - - -void -TwlStartUp(void) -{ - -} - -void -TwlMain(void) -{ - BOOL isFatalChecking = FALSE; - util::Init(); - - OSDeliverArgInfo argInfo; - if (TRUE == OS_IsValidDeliverArg()) - { - OS_InitDeliverArgInfo(&argInfo, 0); - OS_DecodeDeliverArg(); - if( (OS_GetDeliverArgc() > 0) && ( STD_CompareNString( (const char *)OS_GetDeliverArgv(1), "fatal", 3 ) == 0 ) ) - { - isFatalChecking = TRUE; - } - } - - // display on - util::WaitVBlankIntr(); - util::dispOn(); - - CFrame menu(isFatalChecking == TRUE ? CFrame::ITEM_TEST_RECOVERY:CFrame::ITEM_TEST_WM); - if (isFatalChecking == TRUE) - { - menu.AutoEnter(); - } - CTestWm wm; - CTestNwm nwm; - CTestFatal fatal; - CTestRecovery rcv; - menu.InitDisp(); - - for (;;) - { - util::UpdateGamePad(); - menu.ProcessButton(); - menu.CursorDisp(16*1, 16*5, util::COLOR_LIMEGREEN); - menu.HelpDisp(util::COLOR_WHITE); - - if (menu.IsEnter()) - { - BOOL result; - u8 itemidx = menu.GetItemIndex(); - util::CCanvas* pcm = util::GetMain1Canvas(); - - switch (itemidx) - { - case CFrame::ITEM_TEST_WM: - pcm->Clear(16*12, 16*5, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*5, util::COLOR_YELLOW, L"TESTING"); - util::WaitVBlankIntr(); - util::UpdateDisplay(); - result = wm.WirelessTest(); - pcm->Clear(16*12, 16*5, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*5, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_NWM: - pcm->Clear(16*12, 16*6, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*6, util::COLOR_YELLOW, L"TESTING"); - util::WaitVBlankIntr(); - util::UpdateDisplay(); - result = nwm.WirelessTest(); - pcm->Clear(16*12, 16*6, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*6, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_FATAL: - pcm->Clear(16*12, 16*7, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*7, util::COLOR_YELLOW, L"TESTING"); - result = fatal.WrackTest(); - pcm->Clear(16*12, 16*7, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*7, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_RECOVERY: - pcm->Clear(16*12, 16*8, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*8, util::COLOR_YELLOW, L"TESTING"); - if (isFatalChecking == FALSE) - { - result = rcv.RecoveryTest(); - } else { - result = rcv.RecoveryTest2(); - isFatalChecking = FALSE; - } - pcm->Clear(16*12, 16*8, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*8, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - } - } - - util::WaitVBlankIntr(); - util::UpdateDisplay(); - } - -} diff --git a/build/tests/WirelessChecker/src/test.cpp b/build/tests/WirelessChecker/src/test.cpp deleted file mode 100644 index 4dd480af..00000000 --- a/build/tests/WirelessChecker/src/test.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 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 -#include "util/canvas.h" -#include "util/util.h" -#include "util/wprintf.h" -#include -#include -#include -#include -//#include -#include -#include "test.h" - -CTest::CTest() : m_state(TEST_STATE_NONE) -{ - m_pc = util::GetSub1Canvas(); -} - -CTest::~CTest() -{ - -} - -BOOL -CTest::Init(void) -{ - return TRUE; -} - -BOOL -CTest::Enable(void) -{ - return TRUE; -} - -BOOL -CTest::ScanTest(void) -{ - return TRUE; -} - -BOOL -CTest::Disable(void) -{ - return TRUE; -} - -BOOL -CTest::End(void) -{ - return TRUE; -} - -u8 -CTest::GetState(void) -{ - return m_state; -} - -void CTest::LogClear(util::CCanvas* pc) -{ - pc->Clear(0, 0, 256, 16*9, util::COLOR_BLACK); - m_line = 0; - util::WaitVBlankIntr(); - util::UpdateDisplay(); -} - -void -CTest::LogPrintf(util::CCanvas* pc, const NNSG2dChar* text, ...) -{ - std::auto_ptr pLocalBuffer(new wchar_t[LOCAL_BUFFER_LEN]); - va_list args; - - va_start(args, text); - util::VSNWPrintf(pLocalBuffer.get(), LOCAL_BUFFER_LEN, text, args); - va_end(args); - pc->Print(16*1, 16*m_line++, util::COLOR_WHITE, pLocalBuffer.get()); - util::WaitVBlankIntr(); - util::UpdateDisplay(); -} diff --git a/build/tests/WirelessChecker/src/test.h b/build/tests/WirelessChecker/src/test.h deleted file mode 100644 index 21c4d985..00000000 --- a/build/tests/WirelessChecker/src/test.h +++ /dev/null @@ -1,54 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test.h - - Copyright 2007 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 WIRELESS_CHECHER_TEST_H_ -#define WIRELESS_CHECHER_TEST_H_ - -#include -#include "util/util.h" -#include "util/canvas.h" -#include -#include -#include - -class CTest - -{ -private: - u8 m_line; - static const int LOCAL_BUFFER_LEN = 1024; -public: - enum { - TEST_STATE_NONE, - TEST_STATE_INITIALIZED, - TEST_STATE_ENABLED, - TEST_STATE_NUM - }; - u8 m_state; - util::CCanvas *m_pc; - CTest(); - virtual ~CTest(); - virtual BOOL Init(void); - virtual BOOL Enable(void); - virtual BOOL ScanTest(void); - virtual BOOL Disable(void); - virtual BOOL End(void); - u8 GetState(void); - void LogClear(util::CCanvas* pc); - void LogPrintf(util::CCanvas* pc, const NNSG2dChar* text, ...); -}; - -#endif // WIRELESS_CHECHER_TEST_H_ diff --git a/build/tests/WirelessChecker/src/test_fatal.cpp b/build/tests/WirelessChecker/src/test_fatal.cpp deleted file mode 100644 index a3684aca..00000000 --- a/build/tests/WirelessChecker/src/test_fatal.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_fatal.cpp - - Copyright 2007 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 "util/util.h" -#include "util/canvas.h" -#include "test_fatal.h" -#include "nwm_arm9_private.h" -#pragma exceptions on - -extern "C" { -extern NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback); -} - -namespace -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - - void m_WrackFirmCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_FATAL_ERROR ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestFatal::CTestFatal() -{ - m_InitMessage(); -} - -CTestFatal::~CTestFatal() -{ - -} - -BOOL -CTestFatal::Wrack(void) -{ - try - { - if (m_state < TEST_STATE_INITIALIZED) - { - throw L"ステートが不正です.\n"; - } - - if (NWM_RETCODE_OPERATING != NWMi_WrackFirmware(m_WrackFirmCallback)) - { - throw L"WrackFirmware 失敗.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WrackFirmware 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WrackFirmware 成功.\n"); - - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - return TRUE; -} - -BOOL -CTestFatal::WrackTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() 失敗.\n"; - } - - if (FALSE == Wrack()) - { - End(); - throw L"Wrack() 失敗.\n"; - } - - if (FALSE == End()) - { - throw L"End() 失敗.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"テストが完了しました.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_fatal.h b/build/tests/WirelessChecker/src/test_fatal.h deleted file mode 100644 index 128d582d..00000000 --- a/build/tests/WirelessChecker/src/test_fatal.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_fatal.h - - Copyright 2007 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 WIRELESS_CHECHER_TEST_FATAL_H_ -#define WIRELESS_CHECHER_TEST_FATAL_H_ - -#include -#include "test.h" -#include "test_nwm.h" -#include "util/canvas.h" - -class CTestFatal - : public CTestNwm -{ -private: -public: - CTestFatal(); - virtual ~CTestFatal(); - BOOL Wrack(void); - BOOL WrackTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_FATAL_H_ diff --git a/build/tests/WirelessChecker/src/test_nwm.cpp b/build/tests/WirelessChecker/src/test_nwm.cpp deleted file mode 100644 index 127afab7..00000000 --- a/build/tests/WirelessChecker/src/test_nwm.cpp +++ /dev/null @@ -1,355 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_nwm.cpp - - Copyright 2007 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 "util/util.h" -#include "util/canvas.h" -#include "test_nwm.h" -#pragma exceptions on - -namespace test_nwm -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - void m_InitMessage(void); - - void m_LoadDeviceCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - // TODO: get FW ver and RegDomain? - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_OpenCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_UnloadDeviceCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_CloseCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_ScanCallback(void *arg) - { - NWMStartScanCallback *cb = (NWMStartScanCallback*)arg; - - OS_TPrintf("Number of BSS: %d\n", cb->bssDescCount); - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestNwm::CTestNwm() : m_pNwmBuffer(0), m_pScanBuffer(0) -{ - test_nwm::m_InitMessage(); -} - -CTestNwm::~CTestNwm() -{ - -} - - -BOOL -CTestNwm::Init(void) -{ - LogClear(m_pc); - - try - { - if (m_state != TEST_STATE_NONE) - { - throw L"ステートが不正です.\n"; - } - if (m_pNwmBuffer) - { - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - throw L"NWMバッファが不正です.\n"; - } - - m_pNwmBuffer = new u8 [NWM_SYSTEM_BUF_SIZE + 0x20]; - - - if (NWM_RETCODE_SUCCESS != NWM_Init((void*)MATH_ROUNDUP((u32)m_pNwmBuffer, 32), NWM_SYSTEM_BUF_SIZE, m_DmaNo)) - { - throw L"NWM_Init 失敗.\n"; - } - - LogPrintf(m_pc, L"NWM_Init 成功.\n"); - } - - catch (const wchar_t* string) - { - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - - return TRUE; -} - -BOOL -CTestNwm::Enable(void) -{ - try { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ステートが不正です.\n"; - } - - if (NWM_RETCODE_OPERATING != NWM_LoadDevice(test_nwm::m_LoadDeviceCallback)) - { - throw L"NWM_LoadDevice 失敗.\n"; - } - - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_LoadDevice 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"NWM_LoadDevice 成功.\n"); - - if (NWM_RETCODE_OPERATING != NWM_Open(test_nwm::m_OpenCallback)) - { - throw L"NWM_Open 失敗.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_Open 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"NWM_Open 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_ENABLED; - return TRUE; -} - -BOOL -CTestNwm::ScanTest(void) -{ - try - { - - if (m_state != TEST_STATE_ENABLED) - { - throw L"ステートが不正です.\n"; - } - - if (m_pScanBuffer) - { - throw L"Scanバッファが不正です.\n"; - } - - m_pScanBuffer = new u8 [NWM_SIZE_SCANBUF_MAX + 0x20]; - - NWMScanParam param; - - MI_CpuClear8(m_pScanBuffer, NWM_SIZE_SCANBUF_MAX + 0x20); - DC_StoreRange(m_pScanBuffer, NWM_SIZE_SCANBUF_MAX + 0x20); - param.scanBuf = (NWMBssDesc*)MATH_ROUNDUP((u32)m_pScanBuffer, 32); - param.scanBufSize = NWM_SIZE_SCANBUF_MAX; - param.channelList = (u16)(NWM_GetAllowedChannel() >> 1); - param.channelDwellTime = NWM_GetDispersionScanPeriod(NWM_SCANTYPE_ACTIVE); - param.scanType = NWM_SCANTYPE_ACTIVE; - param.ssidLength = 0; - MI_CpuFill8(param.ssid, 0xFF, sizeof(param.ssid)); - - if (NWM_RETCODE_OPERATING != NWM_StartScan(test_nwm::m_ScanCallback, ¶m)) - { - throw L"NWM_StartScan 失敗.\n"; - } - - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_StartScan 非同期処理失敗.\n"; - } - - LogPrintf(m_pc, L"NWM_StartScan 成功.\n"); - - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - delete [] m_pScanBuffer; - m_pScanBuffer = 0; - - return TRUE; -} - -BOOL -CTestNwm::Disable(void) -{ - try { - if (m_state != TEST_STATE_ENABLED) - { - throw L"ステートが不正です.\n"; - } - - if (NWM_RETCODE_OPERATING != NWM_Close(test_nwm::m_CloseCallback)) - { - throw L"NWM_Close 失敗.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_Close 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"NWM_Close 成功.\n"); - - if (NWM_RETCODE_OPERATING != NWM_UnloadDevice(test_nwm::m_UnloadDeviceCallback)) - { - throw L"NWM_UnloadDevice 失敗.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_UnloadDevice 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"NWM_UnloadDevice 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_INITIALIZED; - return TRUE; - -} - -BOOL -CTestNwm::End(void) -{ - try - { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ステートが不正です.\n"; - } - if (NWM_RETCODE_SUCCESS != NWM_End()) - { - throw L"NWM_End 失敗.\n"; - } - - LogPrintf(m_pc, L"NWM_End 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_NONE; - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - - return TRUE; -} - -BOOL -CTestNwm::WirelessTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() 失敗.\n"; - } - if (FALSE == Enable()) - { - End(); - throw L"Enable() 失敗.\n"; - } - if (FALSE == ScanTest()) - { - Disable(); - End(); - throw L"ScanTest() 失敗.\n"; - } - if (FALSE == Disable()) - { - throw L"Disable() 失敗.\n"; - } - if (FALSE == End()) - { - throw L"End() 失敗.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"テストが完了しました.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_nwm.h b/build/tests/WirelessChecker/src/test_nwm.h deleted file mode 100644 index cbc725f6..00000000 --- a/build/tests/WirelessChecker/src/test_nwm.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_nwm.h - - Copyright 2007 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 WIRELESS_CHECHER_TEST_NWM_H_ -#define WIRELESS_CHECHER_TEST_NWM_H_ - -#include -#include "test.h" - -namespace test_nwm -{ - void m_LoadDeviceCallback(void *arg); - void m_OpenCallback(void *arg); - void m_UnloadDeviceCallback(void *arg); - void m_CloseCallback(void *arg); - void m_ScanCallback(void *arg); - BOOL m_WaitCallback(void); -} - -class CTestNwm - : public CTest -{ -private: - static const u8 m_DmaNo = 3; - u8 *m_pNwmBuffer; - u8 *m_pScanBuffer; -public: - CTestNwm(); - virtual ~CTestNwm(); - BOOL Init(void); - BOOL Enable(void); - BOOL ScanTest(void); - BOOL Disable(void); - BOOL End(void); - BOOL WirelessTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_NWM_H_ diff --git a/build/tests/WirelessChecker/src/test_recovery.cpp b/build/tests/WirelessChecker/src/test_recovery.cpp deleted file mode 100644 index ab8ae1f0..00000000 --- a/build/tests/WirelessChecker/src/test_recovery.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_recovery.cpp - - Copyright 2007 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 "util/util.h" -#include "util/canvas.h" -#include "test_recovery.h" -#include "nwm_arm9_private.h" -#pragma exceptions on - - -CTestRecovery::CTestRecovery() -{ -} - -CTestRecovery::~CTestRecovery() -{ - -} - - -BOOL -CTestRecovery::RecoveryTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() 失敗.\n"; - } - - if (FALSE == Enable()) - { - End(); - throw L"Enable() 失敗.\n"; - } - - if (FALSE == Wrack()) - { - Disable(); - End(); - throw L"Wrack() 失敗.\n"; - } - - LogPrintf(m_pc, L"FATALエラーを待っています.\n"); - - if (TRUE == test_nwm::m_WaitCallback()) - { - Disable(); - End(); - throw L"FATALエラーが起こりませんでした.\n"; - } - - LogPrintf(m_pc, L"FATALエラーが発生しました.\n"); - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - End(); - LogPrintf(m_pc, L"3秒後にHWリセットを行います.\n"); - OS_Sleep(3000); - - OSDeliverArgInfo argInfo; - OS_InitDeliverArgInfo(&argInfo, 0); - OSi_SetDeliverArgState( OS_DELIVER_ARG_BUF_ACCESSIBLE | OS_DELIVER_ARG_BUF_WRITABLE ); - OS_SetStringToDeliverArg( "fatal" ); - OS_EncodeDeliverArg(); - OS_DoApplicationJump( - *(const OSTitleId*)(HW_TWL_ROM_HEADER_BUF + 0x230), - OS_APP_JUMP_NORMAL); - - return TRUE; -} - -BOOL -CTestRecovery::RecoveryTest2(void) -{ - return WirelessTest(); -} - diff --git a/build/tests/WirelessChecker/src/test_recovery.h b/build/tests/WirelessChecker/src/test_recovery.h deleted file mode 100644 index c346bc17..00000000 --- a/build/tests/WirelessChecker/src/test_recovery.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_recovery.h - - Copyright 2007 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 WIRELESS_CHECHER_TEST_RECOVERY_H_ -#define WIRELESS_CHECHER_TEST_RECOVERY_H_ - -#include -#include "test.h" -#include "test_fatal.h" -#include "util/canvas.h" - -class CTestRecovery - : public CTestFatal -{ -private: -public: - CTestRecovery(); - ~CTestRecovery(); - BOOL RecoveryTest(void); - BOOL RecoveryTest2(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_RECOVERY_H_ diff --git a/build/tests/WirelessChecker/src/test_wm.cpp b/build/tests/WirelessChecker/src/test_wm.cpp deleted file mode 100644 index f2b2a151..00000000 --- a/build/tests/WirelessChecker/src/test_wm.cpp +++ /dev/null @@ -1,376 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_nwm.cpp - - Copyright 2007 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 "util/util.h" -#include "util/canvas.h" -#include "test_wm.h" -#pragma exceptions on - -namespace -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - - void m_EnableCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - // TODO: get FW ver and RegDomain? - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_PowerOnCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_DisableCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_PowerOffCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_ScanCallback(void *arg) - { - WMStartScanExCallback *cb = (WMStartScanExCallback*)arg; - - OS_TPrintf("Number of BSS: %d\n", cb->bssDescCount); - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_EndScanCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestWm::CTestWm() : m_pWmBuffer(0), m_pScanBuffer(0) -{ - m_InitMessage(); - m_pc = util::GetSub1Canvas(); -} - -CTestWm::~CTestWm() -{ - -} - - -BOOL -CTestWm::Init(void) -{ - LogClear(m_pc); - - try - { - if (m_state != TEST_STATE_NONE) - { - throw L"ステートが不正です.\n"; - } - if (m_pWmBuffer) - { - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - throw L"WM用バッファが不正です.\n"; - } - - m_pWmBuffer = new u8 [WM_SYSTEM_BUF_SIZE + 0x20]; - - - if (WM_ERRCODE_SUCCESS != WM_Init((void*)MATH_ROUNDUP((u32)m_pWmBuffer, 32), m_DmaNo)) - { - throw L"WM_Init 失敗.\n"; - } - - LogPrintf(m_pc, L"WM_Init 成功.\n"); - - } - - catch (const wchar_t* string) - { - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - - return TRUE; -} - -BOOL -CTestWm::Enable(void) -{ - try { - - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ステートが不正です.\n"; - } - - if (WM_ERRCODE_OPERATING != WM_Enable(m_EnableCallback)) - { - throw L"WM_Enable 失敗.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_Enable 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_Enable 成功.\n"); - if (WM_ERRCODE_OPERATING != WM_PowerOn(m_PowerOnCallback)) - { - throw L"WM_PowerOn 失敗.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_PowerOn 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_PowerOn 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_ENABLED; - return TRUE; -} - -BOOL -CTestWm::ScanTest(void) -{ - try - { - - if (m_state != TEST_STATE_ENABLED) - { - throw L"ステートが不正です.\n"; - } - - if (m_pScanBuffer) - { - throw L"Scanバッファが不正です.\n"; - } - - m_pScanBuffer = new u8 [WM_SIZE_SCAN_EX_BUF + 0x20]; - - WMScanExParam param; - - MI_CpuClear8(m_pScanBuffer, WM_SIZE_SCAN_EX_BUF + 0x20); - DC_StoreRange(m_pScanBuffer, WM_SIZE_SCAN_EX_BUF + 0x20); - param.scanBuf = (WMBssDesc*)MATH_ROUNDUP((u32)m_pScanBuffer, 32); - param.scanBufSize = WM_SIZE_SCAN_EX_BUF; - param.channelList = (u16)WM_GetAllowedChannel(); - param.maxChannelTime = WM_GetDispersionScanPeriod(); - param.scanType = WM_SCANTYPE_ACTIVE; - param.ssidLength = 0; - MI_CpuFill8(param.ssid, 0xFF, sizeof(param.ssid)); - param.ssidMatchLength = 0; - - if (WM_ERRCODE_OPERATING != WM_StartScanEx(m_ScanCallback, ¶m)) - { - throw L"WM_StartScanEx 失敗.\n"; - } - - if (m_WaitCallback() == FALSE) - { - throw L"WM_StartScanEx 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_StartScanEx 成功.\n"); - - if (WM_ERRCODE_OPERATING != WM_EndScan(m_EndScanCallback)) - { - throw L"WM_EndScan 失敗.\n"; - } - - if (m_WaitCallback() == FALSE) - { - throw L"WM_EndScan 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_EndScan 成功.\n"); - - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - delete [] m_pScanBuffer; - m_pScanBuffer = 0; - - return TRUE; -} - -BOOL -CTestWm::Disable(void) -{ - try { - if (m_state != TEST_STATE_ENABLED) - { - throw L"ステートが不正です.\n"; - } - - if (WM_ERRCODE_OPERATING != WM_PowerOff(m_PowerOffCallback)) - { - throw L"WM_PowerOff 失敗.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_PowerOff 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_PowerOff 成功.\n"); - - if (WM_ERRCODE_OPERATING != WM_Disable(m_DisableCallback)) - { - throw L"WM_Disable 失敗.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_Disable 非同期処理失敗.\n"; - } - LogPrintf(m_pc, L"WM_Disable 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - return TRUE; - -} - -BOOL -CTestWm::End(void) -{ - try - { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ステートが不正です\n"; - } - if (WM_ERRCODE_SUCCESS != WM_Finish()) - { - throw L"WM_Finish 失敗.\n"; - } - LogPrintf(m_pc, L"WM_Finish 成功.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_NONE; - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - - return TRUE; -} - -BOOL -CTestWm::WirelessTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() 失敗.\n"; - } - if (FALSE == Enable()) - { - End(); - throw L"Enable() 失敗.\n"; - } - if (FALSE == ScanTest()) - { - Disable(); - End(); - throw L"ScanTest() 失敗.\n"; - } - if (FALSE == Disable()) - { - throw L"Disable() 失敗.\n"; - } - if (FALSE == End()) - { - throw L"End() 失敗.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"テストが完了しました.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_wm.h b/build/tests/WirelessChecker/src/test_wm.h deleted file mode 100644 index 958a4919..00000000 --- a/build/tests/WirelessChecker/src/test_wm.h +++ /dev/null @@ -1,43 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_wm.h - - Copyright 2007 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 WIRELESS_CHECHER_TEST_WM_H_ -#define WIRELESS_CHECHER_TEST_WM_H_ - -#include -#include "test.h" -#include "util/canvas.h" - -class CTestWm - : public CTest -{ -private: - static const u8 m_DmaNo = 3; - u8 *m_pWmBuffer; - u8 *m_pScanBuffer; -public: - CTestWm(); - virtual ~CTestWm(); - BOOL Init(void); - BOOL Enable(void); - BOOL ScanTest(void); - BOOL Disable(void); - BOOL End(void); - BOOL WirelessTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_WM_H_ diff --git a/build/tests/WirelessChecker/src/util/canvas.cpp b/build/tests/WirelessChecker/src/util/canvas.cpp deleted file mode 100644 index 9e9156ef..00000000 --- a/build/tests/WirelessChecker/src/util/canvas.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Canvas.cpp - - Copyright 2007 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 -#include "util/canvas.h" -#include "util/util.h" -#include "util/wprintf.h" -#include -#include -#include -#include -//#include -#include - -namespace util -{ - -CCanvas::CCanvas() -: m_pFont(NULL) -{ -} - -CCanvas::~CCanvas() -{ -} - -void -CCanvas::Init(NNS_GFD_DST_TYPE type, u32 offset, void* pScrBase, const NNSG2dFont* pFont) -{ - m_transType = type; - m_transOffset = offset; - m_pFont = pFont; - - NNS_G2dCharCanvasInitForBG( - &m_cc, - m_offscreen, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_16 ); - - NNS_G2dTextCanvasInit( - &m_txn, - &m_cc, - m_pFont, - TEXT_HSPACE, - TEXT_VSPACE ); - - NNS_G2dMapScrToCharText( - pScrBase, - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CANVAS_CHARACTER_OFFSET, - DEFAULT_COLOR_PALETTE ); -} - -void -CCanvas::Clear(PaletteColor c) -{ - NNS_G2dCharCanvasClear(&m_cc, c); - RegisterTransferTask(); -} - -void -CCanvas::Clear(int x, int y, int w, int h, PaletteColor c) -{ - const int px = MATH_CLAMP(x, 0, HW_LCD_WIDTH); - const int py = MATH_CLAMP(y, 0, HW_LCD_HEIGHT); - const int pw = MATH_CLAMP(x + w, px, HW_LCD_WIDTH) - px; - const int ph = MATH_CLAMP(y + h, py, HW_LCD_HEIGHT) - py; - - if( pw > 0 && ph > 0 ) - { - NNS_G2dCharCanvasClearArea(&m_cc, c, px, py, pw, ph); - RegisterTransferTask(); - } -} - -void -CCanvas::Print(int x, int y, PaletteColor c, const NNSG2dChar* text) -{ - NNS_G2dTextCanvasDrawText( - &m_txn, - x, - y, - c, - DRAWTEXT_FLAG_DEFAULT, - text ); - - RegisterTransferTask(); -} - -void -CCanvas::Printf(int x, int y, PaletteColor c, const NNSG2dChar* text, ...) -{ - std::auto_ptr pLocalBuffer(new wchar_t[LOCAL_BUFFER_LEN]); - va_list args; - - va_start(args, text); - VSNWPrintf(pLocalBuffer.get(), LOCAL_BUFFER_LEN, text, args); - va_end(args); - - Print(x, y, c, pLocalBuffer.get()); -} - - -void -CCanvas::RegisterTransferTask() -{ - if( ! m_bTransferRegsitered ) - { - NNS_GfdRegisterNewVramTransferTask( - m_transType, - m_transOffset, - m_offscreen, - sizeof(m_offscreen) ); - - m_bTransferRegsitered = true; - } -} - -void -CCanvas::ResetTransferTask() -{ - m_bTransferRegsitered = false; -} - - -std::wstring -CCanvas::WrapText(std::wstring text, int width) -{ - int textWidth = 0; - - for( u32 i = 0; i < text.length(); ++i ) - { - const int charWidth = NNS_G2dFontGetCharWidth(m_pFont, text[i]); - - if( text[i] == L'\n' ) - { - textWidth = 0; - } - else if( (textWidth > 0) && ((textWidth + charWidth) > width) ) - { - text.insert(i - 1, 1, L'\n'); - textWidth = 0; - } - else - { - textWidth += charWidth + TEXT_HSPACE; - } - } - - return text; -} - - - -} -// end of namespace tlib diff --git a/build/tests/WirelessChecker/src/util/canvas.h b/build/tests/WirelessChecker/src/util/canvas.h deleted file mode 100644 index 0e6c7781..00000000 --- a/build/tests/WirelessChecker/src/util/canvas.h +++ /dev/null @@ -1,78 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Canvas.h - - Copyright 2007 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 TLIB_CONTROL_CANVAS_H_ -#define TLIB_CONTROL_CANVAS_H_ - -#define NNS_G2D_UNICODE -#include -#include -#include -#include -#include "util.h" - -namespace util -{ - -class CCanvas -{ -private: - static const int CANVAS_WIDTH = 32; - static const int CANVAS_HEIGHT = 24; - static const int CANVAS_LEFT = 0; - static const int CANVAS_TOP = 0; - static const int TEXT_HSPACE = 1; - static const int TEXT_VSPACE = 1; - static const int CANVAS_CHARACTER_OFFSET = 1; - - static const int LOCAL_BUFFER_LEN = 1024; - - static const u32 DRAWTEXT_FLAG_DEFAULT = ( NNS_G2D_VERTICALORIGIN_TOP - | NNS_G2D_HORIZONTALORIGIN_LEFT - | NNS_G2D_HORIZONTALALIGN_LEFT ); - -private: - NNSG2dCharCanvas m_cc; - NNSG2dTextCanvas m_txn; - GXCharFmt16 m_offscreen[32 * 24]; - const NNSG2dFont* m_pFont; - NNS_GFD_DST_TYPE m_transType; - u32 m_transOffset; - bool m_bTransferRegsitered; - -public: - CCanvas(); - ~CCanvas(); - -public: - void Init(NNS_GFD_DST_TYPE type, u32 offset, void* pScrBase, const NNSG2dFont* pFont); - void Clear (PaletteColor c); - void Clear (int x, int y, int w, int h, PaletteColor c); - void Print (int x, int y, PaletteColor c, const NNSG2dChar* text); - void Printf(int x, int y, PaletteColor c, const NNSG2dChar* text, ...); - std::wstring WrapText(std::wstring text, int width); - - void ResetTransferTask(); - -protected: - void RegisterTransferTask(); -}; - -} -// end of namespace tlib - - -#endif // TLIB_CONTROL_CANVAS_H_ diff --git a/build/tests/WirelessChecker/src/util/memory.cpp b/build/tests/WirelessChecker/src/util/memory.cpp deleted file mode 100644 index 5e0d1d57..00000000 --- a/build/tests/WirelessChecker/src/util/memory.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Memory.cpp - - Copyright 2007 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 "util/memory.h" - - -namespace util -{ - - -namespace -{ - NNSFndHeapHandle shHeap; - NNSFndAllocator sAllocator; - OSMutex sLock; -} - - -void -InitMemory() -{ - u32 arenaLow = MATH_ROUNDUP ((u32)OS_GetMainArenaLo(), 16); - u32 arenaHigh = MATH_ROUNDDOWN((u32)OS_GetMainArenaHi(), 16); - u32 heapSize = arenaHigh - arenaLow; - void* heapMemory = OS_AllocFromMainArenaLo(heapSize, 16); - - shHeap = NNS_FndCreateExpHeap(heapMemory, heapSize); - SDK_ASSERT( shHeap != NNS_FND_HEAP_INVALID_HANDLE ); - - NNS_FndInitAllocatorForExpHeap(&sAllocator, shHeap, 4); - - OS_InitMutex(&sLock); -} - -NNSFndHeapHandle -GetHeapHandle() -{ - return shHeap; -} - -NNSFndAllocator* -GetAllocator() -{ - return &sAllocator; -} - -void* -Alloc(size_t size, int align) -{ - OS_LockMutex(&sLock); - SDK_ASSERT(NNS_FndCheckExpHeap(shHeap, NNS_FND_HEAP_ERROR_PRINT)); - void* p = NNS_FndAllocFromExpHeapEx(shHeap, size, align); - OS_UnlockMutex(&sLock); - - return p; -} - -void -Free(void* ptr) -{ - OS_LockMutex(&sLock); - SDK_ASSERT(NNS_FndCheckExpHeap(shHeap, NNS_FND_HEAP_ERROR_PRINT)); - SDK_ASSERT(NNS_FndCheckForMBlockExpHeap(ptr, shHeap, NNS_FND_HEAP_ERROR_PRINT)); - NNS_FndFreeToExpHeap(shHeap, ptr); - OS_UnlockMutex(&sLock); -} - - -} -// end of namespace util - - - - -//------------ global namespace ------------------------------------ - -void* -operator new(size_t size) -{ - // operator new[] で 32 byte アライメントを保証できないので - // operator new でも 32 byte アライメントは行わない。 - return util::Alloc(size, 4); -} - -void* -operator new[](size_t size) -{ - // operator new[] では 32 byteアライメントを保証できない。 - return util::Alloc(size, 4); -} - -void -operator delete(void* ptr) -{ - if( ptr != NULL ) - { - util::Free(ptr); - } -} - -void -operator delete[](void* ptr) -{ - if( ptr != NULL ) - { - util::Free(ptr); - } -} diff --git a/build/tests/WirelessChecker/src/util/memory.h b/build/tests/WirelessChecker/src/util/memory.h deleted file mode 100644 index c0e1ed39..00000000 --- a/build/tests/WirelessChecker/src/util/memory.h +++ /dev/null @@ -1,38 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Memory.h - - Copyright 2007 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 TLIB_SYSTEM_MEMORY_H_ -#define TLIB_SYSTEM_MEMORY_H_ - -#include -#include - -namespace util -{ - -void InitMemory(); - -NNSFndAllocator* GetAllocator(); -NNSFndHeapHandle GetHeapHandle(); -void* Alloc(size_t size, int align=32); -void Free(void* ptr); - -} -// end of namespace tlib - - - -#endif // TLIB_SYSTEM_MEMORY_H_ diff --git a/build/tests/WirelessChecker/src/util/util.cpp b/build/tests/WirelessChecker/src/util/util.cpp deleted file mode 100644 index 5828b7e8..00000000 --- a/build/tests/WirelessChecker/src/util/util.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: util.cpp - - 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 "util/util.h" -#include "util/canvas.h" -#include "util/memory.h" -#include -#include - -extern u8 font_NFTR_begin[]; -extern u8 font_NFTR_end[]; - -namespace util -{ - GamePad System_GamePadState; - int System_BaseWidth; - int System_LineHeight; - - namespace - { - const int REPEAT_START_FRAME = 15; - const int REPEAT_INTERVAL = 30; - const u32 TASK_ARRAY_NUM = 4; - const int CANVAS_CHARACTER_OFFSET = 1; - - GXRgb COLOR_PALETTE[18] = - { - GX_RGB(26, 26, 26), - GX_RGB(31, 31, 31), - GX_RGB( 0, 0, 0), - - GX_RGB(31, 0, 3), - GX_RGB(30, 28, 0), - GX_RGB(21, 31, 0), - GX_RGB( 6, 23, 30), - GX_RGB( 0, 11, 30), - GX_RGB(25, 23, 1), - GX_RGB(22, 22, 22), - GX_RGB(16, 16, 16), - - GX_RGB(29, 31, 31) - }; - NNSG2dFont sFont; - CCanvas sCanvasMain1; - CCanvas sCanvasMain3; - CCanvas sCanvasSub1; - CCanvas sCanvasSub3; - - NNSGfdVramTransferTask sTaskArray[TASK_ARRAY_NUM]; - - void ClearVram( void ) - { - //--------------------------------------------------------------------------- - // All VRAM banks to LCDC - //--------------------------------------------------------------------------- - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - - //--------------------------------------------------------------------------- - // Clear all LCDC space - //--------------------------------------------------------------------------- - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //--------------------------------------------------------------------------- - // Disable the banks on LCDC - //--------------------------------------------------------------------------- - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); // clear the standard palette - - MI_CpuFillFast((void*)HW_DB_OAM, 192, HW_DB_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); // clear the standard palette - } - - void InitFont(void* pNFTR) - { - NNS_G2dFontInitUTF16(&sFont, pNFTR); - - System_BaseWidth = NNS_G2dFontGetCellWidth(&sFont) / 2; - System_LineHeight = NNS_G2dFontGetLineFeed(&sFont); - } - - void VBlankIntr(void) - { - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); - } - - - } // namespace - - void WaitVBlankIntr(void) - { - SVC_WaitVBlankIntr(); - } - - void dispOn(void) - { - GX_DispOn(); - GXS_DispOn(); - } - - CCanvas* GetMain1Canvas() { return &sCanvasMain1; } - CCanvas* GetMain3Canvas() { return &sCanvasMain3; } - CCanvas* GetSub1Canvas() { return &sCanvasSub1; } - CCanvas* GetSub3Canvas() { return &sCanvasSub3; } - - void UpdateGamePad(void) - { - u16 status = PAD_Read(); - - System_GamePadState.repeatTrigger = false; - - if( status != 0 ) - { - if( System_GamePadState.button == 0 ) - { - System_GamePadState.beginPress = 0; - } - else - { - System_GamePadState.beginPress++; - const int lapse = System_GamePadState.beginPress - REPEAT_START_FRAME; - - if( lapse >= 0 ) - { - if( (lapse % REPEAT_INTERVAL) == 0 ) - { - System_GamePadState.repeatTrigger = true; - } - } - } - } - - System_GamePadState.trigger = (u16)(status & (status ^ System_GamePadState.button)); - System_GamePadState.release = (u16)(System_GamePadState.button & (status ^ System_GamePadState.button)); - System_GamePadState.button = status; - } - - void UpdateDisplay(void) - { - sCanvasMain1.ResetTransferTask(); - sCanvasMain3.ResetTransferTask(); - sCanvasSub1 .ResetTransferTask(); - sCanvasSub3 .ResetTransferTask(); - NNS_GfdDoVramTransfer(); - } - - void Init() - { - OS_Init(); - FX_Init(); - GX_Init(); - - OS_InitTick(); - OS_InitAlarm(); - - GX_DispOff(); - GXS_DispOff(); - - RTC_Init(); - - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - ClearVram(); - - InitMemory(); - - // assign vram banks - GX_SetBankForBG(GX_VRAM_BG_128_A); - GX_SetBankForOBJ(GX_VRAM_OBJ_16_F); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_16_I); - GX_SetBankForLCDC(GX_VRAM_LCDC_B); - - // init screen - // BG 1 を設定 - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x0000, // スクリーンベース - GX_BG_CHARBASE_0x04000, // キャラクタベース - GX_BG_EXTPLTT_01 ); // 拡張パレットスロット - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x0000, // スクリーンベース - GX_BG_CHARBASE_0x04000, // キャラクタベース - GX_BG_EXTPLTT_01 ); // 拡張パレットスロット - - // BG 2 を設定 - G2_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x0800, // スクリーンベース - GX_BG_CHARBASE_0x0c000 ); // キャラクタベース - - G2S_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x0800, // スクリーンベース - GX_BG_CHARBASE_0x0c000 ); // キャラクタベース - - // BG 3 を設定 - G2_SetBG3ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x1000, // スクリーンベース - GX_BG_CHARBASE_0x14000 ); // キャラクタベース - - G2S_SetBG3ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 - GX_BG_SCRBASE_0x1000, // スクリーンベース - GX_BG_CHARBASE_0x14000 ); // キャラクタベース - - // BG1/3 を可視に - GX_SetVisiblePlane ( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3 ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3 ); - - // BG1/2/3 の優先順位設定 - G2_SetBG1Priority(3); - G2_SetBG2Priority(2); - G2_SetBG3Priority(1); - G2S_SetBG1Priority(3); - G2S_SetBG2Priority(2); - G2S_SetBG3Priority(1); - - GX_LoadBGPltt(COLOR_PALETTE, 0, sizeof(COLOR_PALETTE)); - GXS_LoadBGPltt(COLOR_PALETTE, 0, sizeof(COLOR_PALETTE)); - - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GXS_SetGraphicsMode(GX_BGMODE_0); - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x00000); - - InitFont(font_NFTR_begin); - - { - const u32 chrOffset = CANVAS_CHARACTER_OFFSET * sizeof(GXCharFmt16); - sCanvasMain1.Init(NNS_GFD_DST_2D_BG1_CHAR_MAIN, chrOffset, G2_GetBG1ScrPtr(), &sFont); - sCanvasMain3.Init(NNS_GFD_DST_2D_BG3_CHAR_MAIN, chrOffset, G2_GetBG3ScrPtr(), &sFont); - sCanvasSub1 .Init(NNS_GFD_DST_2D_BG1_CHAR_SUB, chrOffset, G2S_GetBG1ScrPtr(), &sFont); - sCanvasSub3 .Init(NNS_GFD_DST_2D_BG3_CHAR_SUB, chrOffset, G2S_GetBG3ScrPtr(), &sFont); - - NNS_GfdInitVramTransferManager(sTaskArray, TASK_ARRAY_NUM); - } - - PAD_Read(); - } - - u16 GetPadTrigger() - { - return static_cast(System_GamePadState.button); - } - -} // namespace util - diff --git a/build/tests/WirelessChecker/src/util/util.h b/build/tests/WirelessChecker/src/util/util.h deleted file mode 100644 index a84e4afb..00000000 --- a/build/tests/WirelessChecker/src/util/util.h +++ /dev/null @@ -1,103 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: util.h - - Copyright 2007 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 WIRELESS_CHECHER_UTIL_H_ -#define WIRELESS_CHECHER_UTIL_H_ - -#include - -namespace util -{ - -const int DEFAULT_COLOR_PALETTE = 0; - -enum PaletteColor -{ - COLOR_NULL=0, - COLOR_WHITE, - COLOR_BLACK, - - COLOR_RED, - COLOR_YELLOW, - COLOR_LIMEGREEN, - COLOR_TURQUOISE, - COLOR_BLUE, - COLOR_BROWN, - COLOR_LIGHTGRAY, - COLOR_DARKGRAY, - - COLOR_GUIDE_BG -}; - -struct GamePad -{ - u16 trigger; - u16 release; - u16 button; - bool repeatTrigger; - u8 padding0; - int beginPress; -}; - -void Init(void); -void WaitVBlankIntr(void); -void dispOn(void); -void UpdateGamePad(void); -void UpdateDisplay(void); - -class CCanvas; -CCanvas* GetMain1Canvas(); -CCanvas* GetMain3Canvas(); -CCanvas* GetSub1Canvas(); -CCanvas* GetSub3Canvas(); - -inline u16 -IsPadDown(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.trigger & key); -} -inline u16 -IsPadUp(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.release & key); -} -inline u16 -IsPadPress(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.button & key); -} -inline u16 -IsPadTrigger(u16 key) -{ - extern GamePad System_GamePadState; - if( System_GamePadState.repeatTrigger ) - { - return IsPadPress(key); - } - else - { - return IsPadDown(key); - } -} - -u16 GetPadTrigger(); - -} // namespace util - -#endif // WIRELESS_CHECHER_UTIL_H_ diff --git a/build/tests/WirelessChecker/src/util/wprintf.cpp b/build/tests/WirelessChecker/src/util/wprintf.cpp deleted file mode 100644 index 35879971..00000000 --- a/build/tests/WirelessChecker/src/util/wprintf.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: WPrintf.cpp - - Copyright 2007 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 "util/wprintf.h" - -namespace util -{ -namespace -{ - /* inner function for sized-buffer output */ - - typedef struct dst_string_tag - { - size_t len; - wchar_t *cur; - wchar_t *base; - } dst_string; - - void - string_put_char(dst_string *p, wchar_t c) - { - if(p->len > 0) *p->cur = c, --p->len; - ++p->cur; - } - - void - string_fill_char(dst_string *p, wchar_t c, int n) - { - if(n > 0) { - size_t i, k = p->len; - if(k > (size_t)n) k = (size_t)n; - for( i = 0 ; i < k ; ++i ) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } - } - - void - string_put_string(dst_string *p, const wchar_t *s, int n) - { - if(n > 0) { - size_t i, k = p->len; - if(k > (size_t)n) k = (size_t)n; - for( i = 0 ; i < k ; ++i ) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } - } -} - -// based on OS_VSNPrintf - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintf - - Description: small-size vsnprintf which is similar to 'vsnprintf' - without following supports. - * CodeWarrior Extensions (#s) - * MSL AltiVec Extensions (v, vh, vl, hv, lv, @) - * indexed argments (%m$, *m$) - * floating-point - * wchar_t - - Note: '+' and '#' do not work, MSL's sprintf(). - to keep same result, they are no implement. - { // exsample - wchar_t buf[5]; - sprintf(buf, "%-i\n", 45); // "45" (OK) - sprintf(buf, "%0i\n", 45); // "45" (OK) - sprintf(buf, "% i\n", 45); // " 45" (OK) - sprintf(buf, "%+i\n", 45); // "%+i" ("+45" expected) - sprintf(buf, "%#x\n", 45); // "%#x" ("0x2d" expected) - // but, this works correctly! - sprintf(buf, "% +i\n", 45); // "+45" (OK) - } - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -int -VSNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, va_list vlist) -{ - wchar_t buf[24]; - int n_buf; - wchar_t prefix[2]; - int n_prefix; - - const wchar_t *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while(*s) { - if(*s != L'%') { - /* normal character */ - string_put_char(&str, *s++); - } else { - /* output with format */ - enum { - flag_blank = 000001, /* L' ' */ - flag_plus = 000002, /* L'+' */ - flag_sharp = 000004, /* L'#' */ - flag_minus = 000010, /* L'-' */ - flag_zero = 000020, /* L'0' */ - flag_l1 = 000040, /* "l" */ - flag_h1 = 000100, /* "h" */ - flag_l2 = 000200, /* "ll" */ - flag_h2 = 000400, /* "hh" */ - flag_unsigned = 010000, /* L'o', L'u', ... */ - flag_end } ; - int flag = 0, width = 0, precision = -1, radix = 10; - wchar_t hex_char = L'a' - 10; - const wchar_t *p_start = s; - /* flags */ - for( ; ; ) { - switch(*++s) { - case L'+':if(s[-1] != L' ') break; - flag |= flag_plus; continue; - case L' ':flag |= flag_blank;continue; - case L'-':flag |= flag_minus;continue; - case L'0':flag |= flag_zero; continue; - } - break; - } - /* width */ - if(*s == L'*') { - ++s, width = va_arg(vlist, int); - if(width < 0) - width = -width, flag |= flag_minus; - } else { - while((*s >= L'0') && (*s <= L'9')) - width = (width * 10) + *s++ - L'0'; - } - /* precision */ - if(*s == L'.') { - ++s, precision = 0; - if(*s == L'*') { - ++s, precision = va_arg(vlist, int); - if(precision < 0) precision = -1; - } else { - while((*s >= L'0') && (*s <= L'9')) - precision = (precision * 10) + *s++ - L'0'; - } - } - /* option */ - switch(*s) { - case L'h': - if(*++s != L'h') flag |= flag_h1; - else ++s, flag |= flag_h2; - break; - case L'l': - if(*++s != L'l') flag |= flag_l1; - else ++s, flag |= flag_l2; - break; - } - - /* type */ - switch(*s) { - case L'd': /* signed decimal */ - case L'i': /* signed decimal */ - goto put_integer; - case L'o': /* unsigned octal */ - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case L'u': /* unsigned decimal */ - flag |= flag_unsigned; - goto put_integer; - case L'X': /* unsigned hexadecimal */ - hex_char = L'A' - 10; - goto put_hexadecimal; - case L'x': /* unsigned hexadecimal */ - goto put_hexadecimal; - case L'p': /* pointer */ - /* equal to code warrior */ - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - - case L'c': /* character */ - if(precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if(flag & flag_minus) { - string_put_char(&str, (wchar_t)c); - string_fill_char(&str, L' ', width); - } else { - wchar_t pad = (wchar_t)( - (flag & flag_zero) ? L'0' : L' '); - string_fill_char(&str, pad, width); - string_put_char(&str, (wchar_t)c); - } - ++s; - } - break; - - case L's': /* string */ - { - int n_buf = 0; - const wchar_t *p_buf = va_arg(vlist, const wchar_t*); - if(precision < 0) { - while(p_buf[n_buf]) - ++n_buf; - } else { - while((n_buf < precision) && p_buf[n_buf]) - ++n_buf; - } - width -= n_buf; - if(flag & flag_minus) { - string_put_string(&str, p_buf, n_buf); - string_fill_char(&str, L' ', width); - } else { - wchar_t pad = (wchar_t)( - (flag & flag_zero) ? L'0' : L' '); - string_fill_char(&str, pad, width); - string_put_string(&str, p_buf, n_buf); - } - ++s; - } - break; - - case L'n': /* store the number of output */ - { - int pos = str.cur - str.base; - if(flag & flag_h2) - ; - else if(flag & flag_h1) - *va_arg(vlist, signed short*) = (signed short)pos; - else if(flag & flag_l2) - *va_arg(vlist, u64*) = (u64)pos; - else - *va_arg(vlist, signed int*) = (signed int)pos; - } - ++s; - break; - - case L'%': /* output L'%' */ - if(p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: /* invalid type */ - goto put_invalid; - -put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - -put_hexadecimal: - radix = 16; - flag |= flag_unsigned; -put_integer: - { - u64 val = 0; - n_prefix = 0; - - if(flag & flag_minus) - flag &= ~flag_zero; - if(precision < 0) precision = 1; - else flag &= ~flag_zero; - - if(flag & flag_unsigned) { - if(flag & flag_h2) - val = va_arg(vlist, wchar_t); - else if(flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if(flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if(flag & flag_sharp) { - if(radix == 16) { - if(val != 0) { - prefix[0] = (wchar_t)(hex_char + (10 + L'x' - L'a')); - prefix[1] = L'0'; - n_prefix = 2; - } - } else if(radix == 8) { - prefix[0] = L'0'; - n_prefix = 1; - } - } - } else { - if(flag & flag_h2) - val = va_arg(vlist, wchar_t); - else if(flag & flag_h1) - val = va_arg(vlist, short); - else if(flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if((val >> 32) & 0x80000000) { - val = ~val + 1; - prefix[0] = L'-'; - n_prefix = 1; - } else { - if(val || precision) { - if(flag & flag_plus) { - prefix[0] = L'+'; - n_prefix = 1; - } else - if(flag & flag_blank) { - prefix[0] = L' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - while(val != 0) { - int d = (int)(val % radix); - val /= radix; - buf[n_buf++] = (wchar_t)((d < 10) ? - (d + L'0') : (d + hex_char)); - } - if((n_prefix > 0) && (prefix[0] == L'0')) { - n_prefix = 0; - buf[n_buf++] = L'0'; - } - } - goto put_to_stream; - -put_to_stream: - { - int n_pad = precision - n_buf; - if(flag & flag_zero) { - if(n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if(n_pad > 0) width -= n_pad; - width -= n_prefix + n_buf; - if(!(flag & flag_minus)) - string_fill_char(&str, L' ', width); - while(n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, L'0', n_pad); - while(n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if(flag & flag_minus) - string_fill_char(&str, L' ', width); - ++s; - } - break; - } - } - } - - if(str.len > 0) - *str.cur = '\0'; - else if(len > 0) - str.base[len - 1] = '\0'; - return str.cur - str.base; -} - - -} -// end of namespace tlib diff --git a/build/tests/WirelessChecker/src/util/wprintf.h b/build/tests/WirelessChecker/src/util/wprintf.h deleted file mode 100644 index d63dff9f..00000000 --- a/build/tests/WirelessChecker/src/util/wprintf.h +++ /dev/null @@ -1,100 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: WPrintf.h - - Copyright 2007 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 TLIB_SYSTEM_WPRINTF_H_ -#define TLIB_SYSTEM_WPRINTF_H_ - - - -namespace util -{ - -int VSNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, va_list vlist); - - -/*---------------------------------------------------------------------------* - Name: OS_SNPrintf - - Description: equal to 'OS_VSNPrintf' except argument style. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -inline int -SNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = VSNWPrintf(dst, len, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSPrintf - - Description: equal to 'OS_VSNPrintf' except buffer size argument. - - Arguments: dst : destination buffer. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -inline int -VSWPrintf(wchar_t *dst, const wchar_t *fmt, va_list vlist) -{ - return VSNWPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_SPrintf - - Description: equal to 'OS_VSPrintf' except argument style. - - Arguments: dst : destination buffer. - fmt : format string. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -inline int -SWPrintf(wchar_t *dst, const wchar_t *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = VSWPrintf(dst, fmt, va); - va_end(va); - return ret; -} - - -} -// end of namespace tlib - - - -#endif // TLIB_SYSTEM_WPRINTF_H_ diff --git a/build/tests/build4WLDev/Makefile b/build/tests/build4WLDev/Makefile deleted file mode 100644 index 561282d0..00000000 --- a/build/tests/build4WLDev/Makefile +++ /dev/null @@ -1,146 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -# SDK configuration for export -override TWL_ARCHGEN := LIMITED -overrice TWL_CODEGEN := THUMB -export TWL_ARCHGEN -export OBJDIR = ./obj.WLAN/$(TWL_BUILDTYPE) -export DEPENDDIR = ./depend.WLAN/$(TWL_BUILDTYPE) -export LIBDIR = ./lib.WLAN/$(TWL_BUILDTYPE) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -export LDIRT_CLEAN = ./obj.WLAN ./depend.WLAN ./lib.WLAN - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(SYSMENU_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(SYSMENU_ROOT)/build/nandfirm/menu-launcher - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdaterRegionSelect - -# 実際に書き込みたいファイルの置かれているdataフォルダを指定 -export UPDATER_HOST_ROOT_DIR = $(call empath,$(SYSMENU_ROOT)/build/tests/build4WLDev/data_sysmenu) - -SUBMAKES = $(SYSMENU_ROOT)/build/libraries_sysmenu/Makefile \ - \ - $(LAUNCHER_DIR)/banner/Makefile \ - $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAJ \ - $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAE \ - $(SYSTEMUPDATER_DIR)/banner/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM7.TWL/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile_autogen - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE -export SYSM_DISABLE_WDS_SCAN = FALSE - -############################################# -# For Wireless development -# - -# disable signature check -export SYSM_IGNORE_WLFIRM_SIGNCHECK = TRUE - -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_DEV_WHITELIST_CHECK_SKIP = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = TRUE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - -# Option for SystemUpdater -export IGNORE_VERSION_CHECK = TRUE - -############################################# -# inhibit reentrant - -FIRST_CALL ?= TRUE -SKIP_SUBDIR ?= TRUE - -DATE_AND_TIME ?= $(shell date +"%y%m%d %H%M") - -DATE ?= $(word 1,$(DATE_AND_TIME)) -TIME ?= $(word 2,$(DATE_AND_TIME)) -TIME_NOZERO = $(shell echo $(TIME) | sed -e 's/^0*\(.\)/\1/') - -ifneq ($(FIRST_CALL),TRUE) -INSTALL_TARGETS = $(SYSTEMUPDATER_DIR)/ARM9.TWL/bin/$(TWL_BUILDTYPE)/SystemUpdater.srl -INSTALL_DIR = . -endif - -GDIRT_INSTALLED += ./$(notdir $(subst .srl,_WL_$(DATE)_*.srl,$(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -do-build: do-core -clean: cl-core -clobber: cl-core - -do-build: MY_TARGET=default -clean: MY_TARGET=clean -clobber: MY_TARGET=clobber - -do-core: -ifeq ($(FIRST_CALL),TRUE) - @echo Enter remake SKIP_SUBDIR=$(SKIP_SUBDIR) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) FIRST_CALL=FALSE SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -cl-core: -ifeq ($(FIRST_CALL),TRUE) - +$(REMAKE) FIRST_CALL=FALSE SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -# Override generic DO_INSTALL -define DO_INSTALL - $(INSTALL) -d $(INSTALL_DIR) $(AND) \ - $(foreach FILE, $(INSTALL_TARGETS), \ - if [ ! -e $(INSTALL_DIR)/$(FILE) -o \ - $(FILE) -nt $(INSTALL_DIR)/$(FILE) ]; \ - then \ - $(ECHO) " install: $(FILE) -> $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))" $(AND) \ - $(INSTALL) $(FILE) $(INSTALL_DIR)/$(notdir $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))); \ - fi $(AND) ) $(TRUE) -endef - -test: - @echo SKIP_SUBDIR=$(SKIP_SUBDIR) -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/Makefile_environment b/build/tests/build4WLDev/Makefile_environment deleted file mode 100644 index d11a6952..00000000 --- a/build/tests/build4WLDev/Makefile_environment +++ /dev/null @@ -1,41 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -# skip demos -export NITRO_WITHOUT_DEMOS = TRUE -export TWL_WITHOUT_DEMOS = TRUE - -override TWLSYSTEM_ROOT= -export TWLSYSTEM_ROOT - -SUBDIRS = $(ROOT) \ - $(NITROSYSTEM_ROOT) \ - - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/Makefile_old b/build/tests/build4WLDev/Makefile_old deleted file mode 100644 index dc98d6a4..00000000 --- a/build/tests/build4WLDev/Makefile_old +++ /dev/null @@ -1,144 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -# SDK configuration for export -override TWL_ARCHGEN := LIMITED -export TWL_ARCHGEN -export OBJDIR = ./obj.WLAN/$(TWL_BUILDTYPE) -export DEPENDDIR = ./depend.WLAN/$(TWL_BUILDTYPE) -export LIBDIR = ./lib.WLAN/$(TWL_BUILDTYPE) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -export LDIRT_CLEAN = ./obj.WLAN ./depend.WLAN ./lib.WLAN - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(SYSMENU_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(SYSMENU_ROOT)/build/nandfirm/menu-launcher - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -# 実際に書き込みたいファイルの置かれているdataフォルダを指定 -export UPDATER_HOST_ROOT_DIR = $(call empath,$(SYSTEMUPDATER_DIR)/data) - -ifdef BUILD_TWLSDK -SUBMAKES += Makefile_environment -endif - -SUBMAKES += $(SYSMENU_ROOT)/build/tools/Makefile \ - $(SYSMENU_ROOT)/build/libraries/Makefile \ - $(SYSMENU_ROOT)/build/libraries_sysmenu/Makefile_autogen \ - \ - $(LAUNCHER_DIR)/Makefile_autogen \ - $(MACHINESETTINGS_DIR)/Makefile_autogen \ - $(WLANFIRM_DIR)/Makefile \ - $(DS_HASH_TABLE)/Makefile \ - $(SHARED_FONT_DIR)/Makefile \ - $(NANDFIRM_DIR)/Makefile \ - $(SYSTEMUPDATER_DIR)/data/Makefile \ - $(SYSTEMUPDATER_DIR)/banner/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM7.TWL/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = TRUE -export SYSM_DISABLE_WDS_SCAN = FALSE - -############################################# -# For Wireless development -# - -# disable signature check -export SYSM_IGNORE_WLFIRM_SIGNCHECK = TRUE - -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_DEV_WHITELIST_CHECK_SKIP = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = TRUE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - -DATE_AND_TIME ?= $(shell date +"%y%m%d %H%M") - -DATE ?= $(word 1,$(DATE_AND_TIME)) -TIME ?= $(word 2,$(DATE_AND_TIME)) -TIME_NOZERO = $(shell echo $(TIME) | sed -e 's/^0*\(.\)/\1/') - -INSTALL_TARGETS = $(SYSTEMUPDATER_DIR)/ARM9.TWL/bin/$(TWL_BUILDTYPE)/SystemUpdater.srl -INSTALL_DIR = . - -GDIRT_INSTALLED += ./$(notdir $(subst .srl,_WL_$(DATE)_*.srl,$(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -SKIP_SUBDIR ?= TRUE - -do-build: do-core -clean: cl-core -clobber: cl-core - -do-build: MY_TARGET=default -clean: MY_TARGET=clean -clobber: MY_TARGET=clobber - -do-core: -ifeq ($(SKIP_SUBDIR),TRUE) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -cl-core: -ifeq ($(SKIP_SUBDIR),TRUE) - +$(REMAKE) SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -# Override generic DO_INSTALL -define DO_INSTALL - $(INSTALL) -d $(INSTALL_DIR) $(AND) \ - $(foreach FILE, $(INSTALL_TARGETS), \ - if [ ! -e $(INSTALL_DIR)/$(FILE) -o \ - $(FILE) -nt $(INSTALL_DIR)/$(FILE) ]; \ - then \ - $(ECHO) " install: $(FILE) -> $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))" $(AND) \ - $(INSTALL) $(FILE) $(INSTALL_DIR)/$(notdir $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))); \ - fi $(AND) ) $(TRUE) -endef - - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/readme.txt b/build/tests/build4WLDev/readme.txt deleted file mode 100644 index 14f75eb3..00000000 --- a/build/tests/build4WLDev/readme.txt +++ /dev/null @@ -1,26 +0,0 @@ -* 無線開発用SystemUpdater - -1. 各種systemMenuファイルの用意 - -TwlIPL/build/tests/build4WLDev の直下に以下のディレクトリ構成で -systemMenu関連ファイルを用意してください。(HNA*.tadは除いてください。) - -※Regionは、JapanとAmericaのみをサポート、開発実機には対応していません。 - -data_sysmenu - +debugger - l +america/* - l +japan/* - -上記の*には、 -HNA*.tad以外の全tadとnandファームとフォントデータを置いてください。 - - -2.SystemUpdaterのビルド - -TwlIPL/build/tests/build4WLDev でmakeを実行してください。 -※TwlIPL_privateが必要です。 - -最終的に、以下のような日付時間タグつきのSystemUpdaterが同じディレクトリに作成されます。 - -SystemUpdater_WL_yymmdd_hhmm.srl diff --git a/build/tests/build4WLDev/scripts/Makefile b/build/tests/build4WLDev/scripts/Makefile deleted file mode 100644 index 919866fa..00000000 --- a/build/tests/build4WLDev/scripts/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdaterRegionSelect - -SCRIPTS_DIR = ./ - -MAKEFILES_ORG = $(LAUNCHER_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/launcher_makefile_region.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAJ $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAE - -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -LOADWLAN_ORG = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm.c -MAKE_LOADWLAN = $(SCRIPTS_DIR)/launcher_loadWlanFirm_c.pl -AUTOGEN_LOADWLAN = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_LOADWLAN) - -SYSUP_ORG = $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_check_console.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_select_region.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile -MAKE_SYSUP = $(SCRIPTS_DIR)/systemupdater_source.pl -AUTOGEN_SYSUP = $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_check_console_autogen.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_select_region_autogen.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile_autogen -LDIRT_CLEAN += $(AUTOGEN_SYSUP) - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_LOADWLAN) $(AUTOGEN_SYSUP) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_LOADWLAN): $(LOADWLAN_ORG) $(MAKE_LOADWLAN) - @echo " make:" $@ - @perl $(MAKE_LOADWLAN) - -$(AUTOGEN_SYSUP): $(SYSUP_ORG) $(MAKE_SYSUP) - @echo " make:" $@ - @perl $(MAKE_SYSUP) - - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/scripts/Makefile_old b/build/tests/build4WLDev/scripts/Makefile_old deleted file mode 100644 index 481ac3b3..00000000 --- a/build/tests/build4WLDev/scripts/Makefile_old +++ /dev/null @@ -1,87 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -SCRIPTS_DIR = ./ - -MAKEFILES_ORG = $(LAUNCHER_DIR)/Makefile $(LAUNCHER_DIR)/ARM9/Makefile \ - $(MACHINESETTINGS_DIR)/Makefile $(MACHINESETTINGS_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/launcher_makefile.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/Makefile_autogen $(LAUNCHER_DIR)/ARM9/Makefile_autogen \ - $(MACHINESETTINGS_DIR)/Makefile_autogen $(MACHINESETTINGS_DIR)/ARM9/Makefile_autogen - -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -LOADWLAN_ORG = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm.c -MAKE_LOADWLAN = $(SCRIPTS_DIR)/launcher_loadWlanFirm_c.pl -AUTOGEN_LOADWLAN = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_LOADWLAN) - -MACHSETTING_ORG = $(MACHINESETTINGS_DIR)/ARM9/src/MachineSetting.c -MAKE_MACHSETTING = $(SCRIPTS_DIR)/launcher_MachineSetting_c.pl -AUTOGEN_MACHSETTING = $(MACHINESETTINGS_DIR)/ARM9/src/MachineSetting_autogen.c -LDIRT_CLEAN += $(AUTOGEN_MACHSETTING) - -NWM_ORG = $(SYSMENU_LIBRARIES_DIR)/Makefile \ - $(SYSMENU_LIBRARIES_DIR)/nwm/Makefile \ - $(SYSMENU_LIBRARIES_DIR)/nwm/ARM7/Makefile \ - $(ROOT)/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler.c -MAKE_NWM = $(SCRIPTS_DIR)/launcher_fake_macaddress.pl -AUTOGEN_NWM = $(SYSMENU_LIBRARIES_DIR)/Makefile_autogen \ - $(SYSMENU_LIBRARIES_DIR)/nwm/Makefile_autogen \ - $(SYSMENU_LIBRARIES_DIR)/nwm/ARM7/Makefile_autogen \ - $(ROOT)/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler_autogen.c -LDIRT_CLEAN += $(AUTOGEN_NWM) - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_LOADWLAN) $(AUTOGEN_MACHSETTING) $(AUTOGEN_NWM) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_LOADWLAN): $(LOADWLAN_ORG) $(MAKE_LOADWLAN) - @echo " make:" $@ - @perl $(MAKE_LOADWLAN) - -$(AUTOGEN_MACHSETTING): $(MACHSETTING_ORG) $(MAKE_MACHSETTING) - @echo " make:" $@ - @perl $(MAKE_MACHSETTING) - -$(AUTOGEN_NWM): $(NWM_ORG) $(MAKE_NWM) - @echo " make:" $@ - @perl $(MAKE_NWM) - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl b/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl deleted file mode 100755 index 0d4e890a..00000000 --- a/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_MachineSetting_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting_autogen.c"; - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - print OUT $line; - # 従来版との見た目の区別のために、無線開発用の表示を追加。 - if( $line =~ m/^[\t ]*PrintfSJIS\(.*\"MACHINE SETTINGS IPL:%s SDK:%s\".*\);/ ) - { - print OUT "//\t[AUTO ADDITION] 従来版との見た目の区別のために、無線開発用の表\示を追加。", $rn; - print OUT "\tPrintfSJIS( 0, 22*8, TXT_COLOR_BLUE, \"[ BUILT FOR WIRELESS DEVELOPMENT ]\");", $rn; - } -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl b/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl deleted file mode 100755 index 4480c292..00000000 --- a/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_fake_macaddress.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $rn = "\x0D\x0A"; - -my $SDKROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $SDKROOT = $ENV{$_}; - } -} - -my $src = "$SDKROOT/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler.c"; -my $dst = "$SDKROOT/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler_autogen.c"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^ *MI_CpuCopy8\(ev->macaddr, sys->status->macAddress, NWM_SIZE_MACADDR\);/ ) - { - print OUT "//\t\t[AUTO COMMENT] fake MAC address of TWL wireless, copy MAC address from that in NOR flash.", $rn; - # add comment out at the top of line - $line =~ s/ev->macaddr,/wmMac,/; - } - - print OUT $line; -} -close(OUT); - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src_make1 = "$IPLROOT/build/libraries_sysmenu/Makefile"; -my $dst_make1 = "$IPLROOT/build/libraries_sysmenu/Makefile_autogen"; - -open(F, $src_make1) or die "cant open $src_make1\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make1") or die "cant open $dst_make1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS/ ) - { - print OUT "SUBMAKES\t\t=\t\tnwm/Makefile_autogen", $rn, $rn; - } - - if( $line =~ m/nwm/ ) - { - $line =~ s/^/\#/; - } - - print OUT $line; -} -close(OUT); - -my $src_make2 = "$IPLROOT/build/libraries_sysmenu/nwm/Makefile"; -my $dst_make2 = "$IPLROOT/build/libraries_sysmenu/nwm/Makefile_autogen"; - -open(F, $src_make2) or die "cant open $src_make2\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make2") or die "cant open $dst_make2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS_P *\+= *ARM7/ ) - { - print OUT "SUBMAKES_P += ARM7/Makefile_autogen", $rn; - next - } - - print OUT $line; -} -close(OUT); - -my $src_make3 = "$IPLROOT/build/libraries_sysmenu/nwm/ARM7/Makefile"; -my $dst_make3 = "$IPLROOT/build/libraries_sysmenu/nwm/ARM7/Makefile_autogen"; - -open(F, $src_make3) or die "cant open $src_make3\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make3") or die "cant open $dst_make3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^[\t ]*nwmsp_event_handler\.c/ ) - { - $line =~ s/nwmsp_event_handler\.c/nwmsp_event_handler_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl b/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl deleted file mode 100755 index c3841558..00000000 --- a/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_loadWlanFirm_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm_autogen.c"; - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - # WLANのLoad時に限り、FatalErrorのセット無効にする。 - if( $line =~ m/^[\t ]*UTL_SetFatalError\([\t ]*FATAL_ERROR_WLANFIRM_(LOAD|AUTH)[\t ]*\)/ ) - { - print OUT "//\t[AUTO COMMENTOUT] 無線開発用ランチャーの場合、無線関連のFATALエラー発生は無視してブートするようにします。", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/launcher_makefile.pl b/build/tests/build4WLDev/scripts/launcher_makefile.pl deleted file mode 100755 index c558652e..00000000 --- a/build/tests/build4WLDev/scripts/launcher_makefile.pl +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_RED/Launcher/Makefile"; -my $dst1 = "$IPLROOT/build/systemMenu_RED/Launcher/Makefile_autogen"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS\t*=\t*banner ARM9/ ) - { - print OUT "SUBMAKES\t\t=\tbanner/Makefile ARM9/Makefile_autogen", $rn; - next; - } - - print OUT $line; -} -close(OUT); - -my $src2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - print OUT $line; -} -close(OUT); - -my $src3 = "$IPLROOT/build/systemMenu_RED/MachineSettings/Makefile"; -my $dst3 = "$IPLROOT/build/systemMenu_RED/MachineSettings/Makefile_autogen"; - -open(F, $src3) or die "cant open $src3\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst3") or die "cant open $dst3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS\t*=\t*banner ARM9/ ) - { - print OUT "SUBMAKES\t\t=\tbanner/Makefile ARM9/Makefile_autogen", $rn; - next; - } - - print OUT $line; -} -close(OUT); - -my $src4 = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/Makefile"; -my $dst4 = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/Makefile_autogen"; - -open(F, $src4) or die "cant open $src4\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst4") or die "cant open $dst4\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/ +MachineSetting\.c/ ) - { - $line =~ s/MachineSetting\.c/MachineSetting_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/build4WLDev/scripts/launcher_makefile_region.pl b/build/tests/build4WLDev/scripts/launcher_makefile_region.pl deleted file mode 100755 index f11bf281..00000000 --- a/build/tests/build4WLDev/scripts/launcher_makefile_region.pl +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst1 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen_HNAJ"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - if( $line =~ m/^TITLEID_LO/ ) - { - $line =~ s/HNAA/HNAJ/; - } - - if( $line =~ m/^CARD_REGION/ ) - { - $line =~ s/ALL/Japan/; - print OUT $line; - print OUT "BINDIR = ./bin.HNAJ/\$(TWL_BUILDTYPE)", $rn; - next; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - print OUT "INSTALL_DIR = \$(UPDATER_HOST_ROOT_DIR)/debugger/japan", $rn; - print OUT "MAKETAD := \$(TWL_IPL_RED_PRIVATE_TOOLSDIR)/bin/maketad.updater.exe", $rn; - next; - } - - print OUT $line; -} -close(OUT); - - -my $src2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen_HNAE"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - if( $line =~ m/^TITLEID_LO/ ) - { - $line =~ s/HNAA/HNAE/; - } - - if( $line =~ m/^CARD_REGION/ ) - { - $line =~ s/ALL/America/; - print OUT $line; - print OUT "BINDIR = ./bin.HNAE/\$(TWL_BUILDTYPE)", $rn; - next; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - print OUT "INSTALL_DIR = \$(UPDATER_HOST_ROOT_DIR)/debugger/america", $rn; - print OUT "MAKETAD := \$(TWL_IPL_RED_PRIVATE_TOOLSDIR)/bin/maketad.updater.exe", $rn; - next; - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/systemupdater_source.pl b/build/tests/build4WLDev/scripts/systemupdater_source.pl deleted file mode 100755 index a997eec7..00000000 --- a/build/tests/build4WLDev/scripts/systemupdater_source.pl +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: systemupdater_source.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_check_console.c"; -my $dst1 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_check_console_autogen.c"; - -my $in_check_console = 0; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^void ProcessCheckConsole\(void\)/ ) - { - $in_check_console = 1; - } - - if ($in_check_console == 1) - { - if( $line =~ m/^\/\*/ ) - { - print OUT "\tkamiFontPrintfConsole( FONT_COLOR_GREEN, \"This updater is for Wireless development.\\n\");", $rn; - print OUT "//\t[AUTO COMMENTOUT] 無線開発用SystemUpdaterの場合、コメントアウトをはずします。", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - if( $line =~ m/^\*\// ) - { - print OUT "//\t[AUTO COMMENTOUT] 無線開発用SystemUpdaterの場合、コメントアウトをはずします。", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - if( $line =~ m/^}/ ) - { - $in_check_console = 0; - } - } - - print OUT $line; -} -close(OUT); - -my $src2 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_select_region.c"; -my $dst2 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_select_region_autogen.c"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - # WLANのLoad時に限り、FatalErrorのセット無効にする。 - if( $line =~ m/OS_TWL_REGION_AUSTRALIA/ ) - { - print OUT "//\t[AUTO COMMENTOUT] 無線開発用SystemUpdaterの場合、RegionはJapanとAmericaのみ。", $rn; - $line =~ s/OS_TWL_REGION_AUSTRALIA/OS_TWL_REGION_AMERICA/; - } - - print OUT $line; -} -close(OUT); - -my $src3 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile"; -my $dst3 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile_autogen"; - -open(F, $src3) or die "cant open $src3\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst3") or die "cant open $dst3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/UPDATER_HOST_ROOT_DIR =/ ) - { - $line =~ s/UPDATER_HOST_ROOT_DIR =/UPDATER_HOST_ROOT_DIR ?=/; - } - - if( $line =~ m/process_select_region\.c/ ) - { - $line =~ s/process_select_region\.c/process_select_region_autogen\.c/; - } - - if( $line =~ m/process_check_console\.c/ ) - { - $line =~ s/process_check_console\.c/process_check_console_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/compressSharedFontLoad/README.txt b/build/tests/compressSharedFontLoad/README.txt deleted file mode 100644 index 5fed4e21..00000000 --- a/build/tests/compressSharedFontLoad/README.txt +++ /dev/null @@ -1,60 +0,0 @@ -# ------------------------------------------ -# 共有フォント圧縮時のロード速度実験 -# -# 作成者 : nishikawa_takeshi -# ------------------------------------------ - -実験は以下の2ステップから構成されます。 - -1. 共有フォントの圧縮とインポート -2. ロード速度の測定 - -以下、各ステップについて説明します。 - - -# ------------------------------------------ -# ステップ1 共有フォントの圧縮とインポート -# ------------------------------------------ - -(1)共有フォントの圧縮 - -compSharedFont ディレクトリに移動して make してください。 - % cd compSharedFont - % make - -(2)圧縮したフォントのインポート - -圧縮された共有フォントを NandInitializerRed でインポートする必要がありますが、 -NandInitializerRed は、SDからではなく、ROMアーカイブからインポートします。 -(つまり、自身のSRL内部に共有フォントを持ちます。) -そのため、NandInitializerRed を再度、ビルドする必要があります。 -圧縮フォントは(1)の処理によって、NandInitializerRed のディレクトリに自動的にコピーされますので、 -コピーする必要はありません。 - - % cd $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandIntializerRed - % make clean; make - -再ビルドされた NandInitializerRed.srl (ARM9.TWL/bin/以下にあります) をSDカードにコピーして、 -SDカードブートすると、メニューからフォントをインポートする項目を選択できます。 - -# ------------------------------------------ -# ステップ2 ロード速度の測定 -# ------------------------------------------ - -ロード速度の測定プログラムは、testLoadSpeed ディレクトリにあります。 -ここで、OS ライブラリの共有フォント関連の関数を変更し、 -されに、TWLSDK を SYSMENU パッケージとしてビルドしなおす必要があります。 -これらの変更とテストプログラムのビルドは、make にオプションをつけると自動的に実行されます。 -(お好みで、TWL_WITHOUT_DEMOS=TRUE や TWL_FINALROM=TRUE オプションをおつけください。) - - % cd testLoadSpeed - % make TEST_TWLSDK_REBUILD=TRUE - -上記の TWLSDK の変更をしないときには、テストプログラムのビルドが正常にできません。 - -テストプログラムを変更する場合、毎回 TWLSDK をビルドするのは時間がかかりますので、 -オプションをつけずに make すると、テストプログラムのビルドのみ実行します。 - - % make - -作成されたテストプログラムを実行すれば、圧縮した共有フォントのロード時間を測定できます。 diff --git a/build/tests/compressSharedFontLoad/compSharedFont/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/Makefile deleted file mode 100644 index 3417d6b0..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile - -# -# Copyright 2007 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: -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -SUBDIRS = compBLZ_modified \ - ntrcomp - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -FONT_TIMESTAMP = 08061300 -FONT_DIR = WW -FONTS = TBF1_l.NFTR \ - TBF1_m.NFTR \ - TBF1_s.NFTR -FONT_RSC = $(addprefix $(FONT_DIR)/, $(FONTS)) - -FONT_ORG_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/sharedFont/WW -FONT_ORG_RSC = $(addprefix $(FONT_ORG_DIR)/, $(FONTS)) - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -FONT_TABLE = TWLFontTable.dat -endif - -GEN_FONT_TABLE = ./genFontTable.plx - -#---------------------------------------------------------------------------- -INSTALL_TARGETS = $(FONT_TABLE) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandInitializerRed/data - -LDIRT_CLEAN = $(FONT_TABLE) $(FONT_RSC) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -do-build : $(FONT_TABLE) - -# step1 : copy sharedFonts into local directory for work -$(FONT_RSC): - cp $(FONT_ORG_RSC) $(FONT_DIR) - -# step2 : compress sharedFonts and them in local directory -$(FONT_TABLE): $(FONT_RSC) - $(GEN_FONT_TABLE) $(FONT_TIMESTAMP) $(FONT_RSC) - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile deleted file mode 100644 index 89101f6e..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - tools - compBLZ -# File: Makefile -# -# 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$ -#--------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#--------------------------------------------------------------------------- - -TARGET_BIN = compBLZ.exe -TARGETS = $(BINDIR)/$(TARGET_BIN) - -SRCS = main.c \ - compress.c \ - file.c \ - version.c - -HEADERS = common.h \ - compress.h \ - file.h - -INCDIR += ../../../include -OBJDIR = obj -BINDIR = bin - -OBJS = $(addprefix $(OBJDIR)/,$(SRCS:.c=.o)) - -MACROS += -DSDK_TWL $(addprefix -I,$(INCDIR)) -NEWDIRS = $(OBJDIR) $(BINDIR) -LDIRT_CLEAN += $(NEWDIRS) version.c - -#INSTALL_DIR = $(TWL_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -#--------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - -do-build: $(TARGETS) - -$(TARGETS): $(OBJS) $(LIBDGT) $(MAKEFILE) - $(CC_X86) $(OBJS) $(LIBDGT) -o $@ - -$(OBJS):%.o: - $(COMPILE_C) - -$(OBJDIR)/main.o: main.c file.h version.c -$(OBJDIR)/compress.o: compress.c compress.h -$(OBJDIR)/file.o: file.c file.h -$(OBJDIR)/version.o: version.c - -version.c: $(filter-out version.c,$(SRCS)) $(HEADERS) $(MAKEFILE) - @for i in $^ ; \ - do \ - date -r $$i +'const unsigned long SDK_DATE_OF_LATEST_FILE=%Y%m%dUL;'; \ - done | sort | tail -1 > $@ - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ deleted file mode 100644 index 95665859..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ +++ /dev/null @@ -1 +0,0 @@ -SDK_CONFIDENTIAL diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h deleted file mode 100644 index 9f60ce54..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: common.h - - Copyright 2003 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 COMMON_H__ -#define COMMON_H__ - -typedef enum -{ - TRUE = 1, - FALSE = 0 -} -BOOL; - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; -typedef signed char s8; -typedef signed short s16; -typedef signed long s32; - -// macro -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define ROUNDUP4(x) (((x)+3)&~3) -#define LE(a) ((((a)<<24)&0xff000000)|(((a)<<8)&0x00ff0000)|\ - (((a)>>8)&0x0000ff00)|(((a)>>24)&0x000000ff)) -#define FREE(x) do { if (x){ free(x); x = NULL; } } while(0) - - -#endif //COMMON_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c deleted file mode 100644 index 57f4b5bc..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c +++ /dev/null @@ -1,374 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: compress.c - - Copyright 2003 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 -#include -#include "file.h" -#include "compress.h" - -static int LZCompressRV(u8 *src_buffer, int src_size, u8 *dst_buffer, int dst_size); -static int FindMatched(u8 *src_buffer, int src_size, u8 *dic_buffer, int dic_size, int *index); -static int HowManyMatched(u8 *src_buffer, u8 *dic_buffer, int max_len); -static int CheckOverwrite(int orig_size, u8 *cmprs_buffer, int cmprs_buffer_size, - int *orig_safe, int *cmprs_safe); - - -/*---------------------------------------------------------------------------* - Name: Compress - - Description: Buffer の逆順の圧縮を行なう. - ただし圧縮データと展開データがメモリ空間を共有できるように - 調整する - - buffer : 被圧縮データ - buffer_size : 被圧縮データサイズ - - Return: >=0: 圧縮後のサイズ - < 0: 失敗 - *---------------------------------------------------------------------------*/ -int Compress(u8 *buffer_original, int buffer_original_size) -{ - u8 *buffer; - int buffer_size; - int buffer_start; - u8 *temp_buffer_original; - u8 *temp_buffer; - int temp_buffer_size; - int temp_buffer_start; - int compressed_size; - int aligned_size; - int total_size; - int reduced; - int i; - CompFooter *footer; - - // 前準備 - if (NULL == (temp_buffer_original = (u8 *)malloc(buffer_original_size))) - { - ErrorPrintf("Cannot allocate memory size=%d\n", buffer_original_size); - return COMPRESS_FATAL_ERROR; - } - - if ((u32)buffer_original % 4 != 0) - { - ErrorPrintf("Top of buffer is not aligned by 4.\n"); - return COMPRESS_FATAL_ERROR; - } - - buffer = buffer_original; - buffer_size = buffer_original_size; - temp_buffer = temp_buffer_original; - temp_buffer_size = buffer_original_size; - - // 圧縮を行なう - reduced = LZCompressRV(buffer, buffer_size, temp_buffer, temp_buffer_size); - if (reduced < 0) - { - DebugPrintf("Compressed buffer size exceeds original data size.\n"); - free(temp_buffer_original); - return COMPRESS_LARGER_ORIGINAL; - } - - temp_buffer_size -= reduced; - temp_buffer += reduced; - - DebugPrintf("1: source size = %d compressed = %d\n", buffer_size, temp_buffer_size); - - // 展開不能な上書きが発生するか確認 - if (!CheckOverwrite - (buffer_size, temp_buffer, temp_buffer_size, &buffer_start, &temp_buffer_start)) - { - // 上書きが発生するなら圧縮範囲を変更する - buffer += buffer_start; - buffer_size -= buffer_start; - temp_buffer += temp_buffer_start; - temp_buffer_size -= temp_buffer_start; - - DebugPrintf(" !! Shrink back Compressed region to avoid overwriting.\n" - " !! Expand non-compressed region = +%d\n" - "2: source size = %d compressed = %d\n", - buffer_start, buffer_size, temp_buffer_size); - } - - // PADDING とパラメータ領域を加えても超えないかどうか判定 - compressed_size = buffer_start + temp_buffer_size; // header+body - aligned_size = ROUNDUP4(compressed_size); // +padding - total_size = aligned_size + sizeof(CompFooter); // +footer - - if (buffer_original_size <= total_size) - { - DebugPrintf("Compressed buffer size exceeds or equals original data size.\n"); - free(temp_buffer_original); - return COMPRESS_LARGER_ORIGINAL; - } - - // データをテンポラリバッファから元データへ上書きする - CopyBuffer(temp_buffer, buffer, temp_buffer_size); - free(temp_buffer_original); - - // サイズが 4 の倍数になるように PADDING - // LZ の実装上圧縮領域の最初のバイト値は 0xff にならない(最初は圧縮 - // フラグであり、最初のデータは圧縮なしで格納されるから)ので 0xff で - // 埋める - for (i = compressed_size; i < aligned_size; i++) - { - buffer_original[i] = 0xff; - } - - // サイズ設定 - // compressBottom は sizeof(PAD)+sizeof(footer) なので 1バイトで十分 - footer = (CompFooter *) (buffer_original + aligned_size); - footer->bufferTop = total_size - buffer_start; // 正の値 - footer->compressBottom = total_size - compressed_size; // 正の値 - footer->originalBottom = buffer_original_size - total_size; // 正の値 - - return total_size; -} - - -/*---------------------------------------------------------------------------* - Name: LZCompressRV - - Description: LZ 圧縮を行なう.ただしデータの後方から圧縮開始する - 圧縮結果も後ろ詰めになる - - Returns: 圧縮データの先頭 index - 圧縮データは dst_buffer+index から dst_buffer+dst_size-1 まで - -1: 圧縮失敗(圧縮した結果の方が大きい場合) - *---------------------------------------------------------------------------*/ -static int LZCompressRV(u8 *src_buffer, int src_size, u8 *dst_buffer, int dst_size) -{ - int src_index = src_size; - int dst_index = dst_size; - int compflag; - int compflag_index; - int i; - - while (src_index > 0) - { - if (dst_index < 1) - return -1; // Buffer Overflow - - // 8bit の圧縮フラグの挿入位置を予約 - compflag = 0x00; - compflag_index = --dst_index; - - // フラグ系列が8ビットデータとして格納されるため、8回ループ - for (i = 0; i < 8; i++) - { - compflag <<= 1; - - if (src_index > 0) // src が残っているか判定 - { - u8 *dic_buffer; - int dic_size; - u8 *ref_buffer; - int ref_size; - int index; - int len; - - dic_buffer = src_buffer + src_index; - dic_size = src_size - src_index; - ref_size = MIN(src_index, LZ_MAX_COPY); - ref_buffer = dic_buffer - ref_size; - - len = FindMatched(ref_buffer, ref_size, - dic_buffer, MIN(dic_size, LZ_MAX_DIC_LENGTH), &index); - - if (len >= LZ_MIN_COPY) - { - u16 half; - - // Offset/Len の記録が可能かどうか確認 - if (dst_index < 2) - return -1; // Buffer Overflow - - // src index 進める - src_index -= len; - - // len >= LZ_MIN_COPY なのでその分減算し値域を節約する - index -= (LZ_MIN_COPY - 1); - len -= (LZ_MIN_COPY - 0); - - // 16bit データとしてたたむ - half = (u16)((index & (LZ_MAX_INDEX - 1)) | (len << LZ_BIT_INDEX)); - dst_buffer[--dst_index] = (half >> 8) & 0xff; - dst_buffer[--dst_index] = (half >> 0) & 0xff; - - // flag セット - compflag |= 0x01; - } - else - { - // 値そのままを記録する & src index 進める - if (dst_index < 1) - return -1; // Buffer Overflow - dst_buffer[--dst_index] = src_buffer[--src_index]; - } - } - } - // 圧縮フラグの保存 - dst_buffer[compflag_index] = compflag; - } - return dst_index; -} - - -/*---------------------------------------------------------------------------* - Name: FindMatched - - Description: 一致するパターンの検索を行なう.ただしデータの後方から前方への - 検索 - - src_buffer[0...src_size-1] のパターンを src_buffer の後方から - dic_buffer[0...dic_size-1] のパターンと最大一致する部分を - 検索する. - - Returns: 一致したサイズ - *index 一致した位置 - *---------------------------------------------------------------------------*/ -static int FindMatched(u8 *src_buffer, int src_size, u8 *dic_buffer, int dic_size, int *index) -{ - u8 *src_bottom = src_buffer + src_size - 1; - u8 char_src_bottom = *src_bottom; - int n, len, max_len; - - // 返値初期化 - max_len = 0; - - for (n = 0; n < dic_size; n++) - { - // 高速化のためのキャッシュ - if (char_src_bottom == dic_buffer[n]) - { - len = HowManyMatched(src_bottom, dic_buffer + n, MIN(n + 1, src_size)); - if (max_len < len) - { - max_len = len; - *index = n; - } - } - } - - // 最小サイズ以上なら成功 - return max_len; -} - - -/*---------------------------------------------------------------------------* - Name: HowManyMatched - - Description: 2つのパターンが逆順にどこまで一致しているかを調査する - - src_buffer, dic_buffer 比較パターンのアドレス - (このアドレスから逆方向へ検索する) - max_len 最大調査する長さ - - Returns: 一致した長さ - *---------------------------------------------------------------------------*/ -static int HowManyMatched(u8 *src_buffer, u8 *dic_buffer, int max_len) -{ - int i; - - // パターン一致検索(逆順) - for (i = 0; i < max_len; i++) - { - if (*src_buffer != *dic_buffer) - { - break; - } - src_buffer--; - dic_buffer--; - } - return i; -} - - -/*---------------------------------------------------------------------------* - Name: CheckOverwrite - - Description: LZ 展開で展開先と展開元を同じアドレスに置いた場合に、どこまで - 正常に展開が可能かをチェックする - - Returns: 最後まで展開可能なら TRUE 途中までなら FALSE - *---------------------------------------------------------------------------*/ -static int CheckOverwrite(int orig_size, u8 *cmprs_buffer, int cmprs_buffer_size, - int *orig_safe, int *cmprs_safe) -{ - int src = cmprs_buffer_size; - int dst = orig_size; - int flag; - int i; - -//#define DETAIL - while (dst > 0) - { - flag = cmprs_buffer[--src]; // 圧縮非圧縮フラグ 8 ループ分 - -#ifdef DETAIL - DebugPrintf("%08x %08x FLG=0x%02x\n", src, dst, flag); -#endif - for (i = 0; i < 8; i++) - { - if (dst > 0) - { - if (flag & 0x80) // 圧縮データか? - { - u16 half; - int len; - - // 展開長を計算 - src -= 2; - half = (u16)(cmprs_buffer[src] | (cmprs_buffer[src + 1] << 8)); - len = ((half >> LZ_BIT_INDEX) & (LZ_MAX_LENGTH - 1)) + LZ_MIN_COPY; -#ifdef DETAIL - DebugPrintf("%08x %08x-%08x LEN=%d\n", src, dst - 1, dst - len, len); -#endif - // ソースデータを上書きしてしまうかチェック - dst -= len; - - if (dst < 0) - { - ErrorPrintf("System error in CheckOverwrite???\n"); - exit(-1); // Panic!! - } - - if (dst < src) - { - // 上書きしてしまうなら圧縮は現在のところまでで止める - *orig_safe = dst; - *cmprs_safe = src; - return FALSE; - } - } - else - { - // 非圧縮データならそのままコピーなので - // 破壊を伴なう上書きは起こらない - src--; - dst--; -#ifdef DETAIL - DebugPrintf("%08x %08x CHR=0x%02x\n", src, dst, cmprs_buffer[src]); -#endif - } - flag <<= 1; - } - } - } - *orig_safe = 0; - *cmprs_safe = 0; - return TRUE; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h deleted file mode 100644 index 9b141d6c..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h +++ /dev/null @@ -1,55 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: compress.h - - Copyright 2003 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 COMPRESS_H__ -#define COMPRESS_H__ -#include "common.h" - -//--------------------------------------------------------- -typedef struct -{ - u32 bufferTop:24; // 圧縮領域終端 - 先頭 - u32 compressBottom:8; // 圧縮領域終端 - データ終端 - u32 originalBottom; // 展開領域終端 - 圧縮領域終端 -} -CompFooter; - -//--------------------------------------------------------- -int Compress(u8 *buffer, int buffer_size); - -#define COMPRESS_LARGER_ORIGINAL (-1) -#define COMPRESS_FATAL_ERROR (-2) - - -// loader area -#define LOADER_SIZE_ARM9 (16*1024) -#define LOADER_SIZE_ARM7 ( 1*1024) - -// LZ compress parameters -#define LZ_BIT_INDEX 12 // 12bit offset -#define LZ_BIT_LENGTH 4 // 4bit length -#define LZ_MAX_INDEX (1 << LZ_BIT_INDEX) -#define LZ_MAX_LENGTH (1 << LZ_BIT_LENGTH) - -#define LZ_MIN_COPY 3 -#define LZ_MAX_COPY (LZ_MIN_COPY+LZ_MAX_LENGTH-1) -#define LZ_MAX_DIC_LENGTH (LZ_MIN_COPY+LZ_MAX_INDEX-1) - -// macro -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define ROUNDUP4(x) (((x)+3)&~3) - -#endif diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c deleted file mode 100644 index 871c6e46..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c +++ /dev/null @@ -1,314 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: file.c - - Copyright 2003 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 -#include // calloc() -#include // free(), exit() -#include // stat() -#include // strlen/strdup/strcpy -#include // va_start(),va_end() -#include // unlink() -#include "file.h" - - -/*---------------------------------------------------------------------------* - Name: ReadFile - - Description: ファイルの読み込み バッファの確保 - *---------------------------------------------------------------------------*/ -int ReadFile(const char *filename, u8 **buffer) -{ - FILE *fp; - struct stat filestat; - int filesize; - - fp = NULL; - *buffer = NULL; - - if (filename == NULL) - { - ErrorPrintf("Not specified filename\n"); - goto error; - } - - /* Open file */ - if (stat(filename, &filestat) || !S_ISREG(filestat.st_mode) || - NULL == (fp = fopen(filename, "rb"))) - { - ErrorPrintf("Cannot open file '%s'\n", filename); - goto error; - } - - /* Read file */ - filesize = filestat.st_size; - if (NULL == (*buffer = malloc(filesize))) - { - ErrorPrintf("Cannot allocate memory size=%d\n", filesize); - goto error; - } - - if (filesize != fread(*buffer, sizeof(u8), filesize, fp)) - { - ErrorPrintf("Cannot read file '%s'\n", filename); - goto error; - } - - DebugPrintf("%p %8d bytes ReadFile \'%s\'\n", *buffer, filesize, filename); - - /* Close file */ - fclose(fp); - return filesize; - - error: - if (*buffer) - free(*buffer); - if (fp) - fclose(fp); - return -1; -} - - -/*---------------------------------------------------------------------------* - Name: WriteFile - - Description: ファイルの作成書き込み - *---------------------------------------------------------------------------*/ -int WriteFile(const char *filename, u8 *buffer, int size) -{ - FILE *fp; - - DebugPrintf("%p %8d bytes WriteFile \'%s\'\n", buffer, size, filename); - - /* Open file */ - if (NULL == (fp = fopen(filename, "wb"))) - { - ErrorPrintf("Cannot open file '%s'\n", filename); - return -1; - } - - /* Write file */ - if (size != fwrite(buffer, sizeof(u8), size, fp)) - { - ErrorPrintf("Cannot write file '%s'\n", filename); - (void)fclose(fp); - (void)unlink(filename); - return -1; - } - - /* Close file */ - if (0 > fclose(fp)) - { - ErrorPrintf("Cannot close file '%s'\n", filename); - (void)unlink(filename); - return -1; - } - return size; -} - -/*---------------------------------------------------------------------------* - Name: CopyBuffer - - Description: バッファのコピー - *---------------------------------------------------------------------------*/ -void CopyBuffer(const u8 *src, u8 *dst, int size) -{ - int i; - - if ((unsigned int)src > (unsigned int)dst) - { - for (i = 0; i < size; i++) - { - dst[i] = src[i]; - } - } - else - { - for (i = size - 1; i >= 0; i--) - { - dst[i] = src[i]; - } - } - return; -} - -/*---------------------------------------------------------------------------* - Name: GetDirName - - Description: ファイル名のディレクトリ名を取得する - *---------------------------------------------------------------------------*/ -char *GetDirName(const char *path) -{ - int i; - char *new_path; - - for (i = strlen(path) - 1; i >= 0; i--) - { - if (path[i] == '/' || path[i] == '\\') - { - if (NULL != (new_path = strdup(path))) - { - new_path[i] = '\0'; - } - return new_path; - } - if (path[i] == ':') - { - if (NULL != (new_path = malloc(i + 3))) - { - strncpy(new_path, path, i); - strcpy(new_path + i, ":."); - } - return new_path; - } - } - - return strdup("."); -} - -/*---------------------------------------------------------------------------* - Name: DebugPrintf - - Description: Debug 出力用 Printf - *---------------------------------------------------------------------------*/ -BOOL bDebugMode = FALSE; - -void DebugPrintf(const char *fmt, ...) -{ - va_list va; - - if (bDebugMode) - { - va_start(va, fmt); - vfprintf(stderr, fmt, va); - va_end(va); - } -} - -/*---------------------------------------------------------------------------* - Name: ConsolePrintf - - Description: 通常コンソール出力用 Printf - *---------------------------------------------------------------------------*/ -void ConsolePrintf(const char *fmt, ...) -{ - va_list va; - - va_start(va, fmt); - vfprintf(stdout, fmt, va); - va_end(va); -} - -/*---------------------------------------------------------------------------* - Name: ErrorPrintf - - Description: Error 出力用 Printf - *---------------------------------------------------------------------------*/ -void ErrorPrintf(const char *fmt, ...) -{ - va_list va; - - fprintf(stderr, "Error: "); - va_start(va, fmt); - vfprintf(stderr, fmt, va); - va_end(va); -} - - -/*---------------------------------------------------------------------------* - Name: StrDup - - Description: エラーハンドリング&古い値の free 付き strdup 関数 - *---------------------------------------------------------------------------*/ -char *StrDup(char *old, char *new) -{ - if (old) - { - free(old); - } - if (new && NULL == (new = strdup(new))) - { - ErrorPrintf("Cannot allocate memory\n"); - exit(1); - } - return new; -} - - -/*---------------------------------------------------------------------------* - Name: StrCat - - Description: 文字列の連結 - *---------------------------------------------------------------------------*/ -char *StrCat(int num, ...) -{ - va_list va; - int i; - int size; - char *result; - - va_start(va, num); - size = 0; - for (i = 0; i < num; i++) - { - size += strlen(va_arg(va, char *)); - } - va_end(va); - - if (NULL == (result = malloc(size + 1))) - { - ErrorPrintf("Cannot allocate memory\n"); - exit(1); - } - - va_start(va, num); - result[0] = '\0'; - for (i = 0; i < num; i++) - { - (void)strcat(result, va_arg(va, char *)); - } - va_end(va); - - return result; -} - -//--------------------------------------------------------------------------- -// パス文字列からファイル名部分のポインタを取得し、拡張子を削る -// @param path パス -// @return ファイル名のポインタ -//--------------------------------------------------------------------------- -char *StrCutFname(char *path) -{ - char *search_tmp; - - if (path == NULL) - { - return NULL; - } - - if ((search_tmp = strrchr(path, '/')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '\\')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '.')) != NULL) - { - *search_tmp = '\0'; - } - return path; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h deleted file mode 100644 index b266b0ff..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: file.h - - Copyright 2003 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 FILE_H__ -#define FILE_H__ - -#include "common.h" - -int ReadFile(const char *filename, u8 **buffer); -int WriteFile(const char *filename, u8 *buffer, int size); -void CopyBuffer(const u8 *src, u8 *dst, int size); -char *GetDirName(const char *filename); -void DebugPrintf(const char *fmt, ...); -void ErrorPrintf(const char *fmt, ...); -void ConsolePrintf(const char *fmt, ...); -char *StrDup(char *old, char *new); -char *StrCat(int num, ...); -char *StrCutFname(char *path); - -extern BOOL bDebugMode; - -#endif //FILE_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c deleted file mode 100644 index f7ec6980..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c +++ /dev/null @@ -1,171 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compBLZ - 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 -#include -#include -#include // getopt() -#include "file.h" -#include "compress.h" - -extern const unsigned long SDK_DATE_OF_LATEST_FILE; - -static void usage(void); - -/*---------------------------------------------------------------------------* - Name: main - - Description: - *---------------------------------------------------------------------------*/ -int main(int argc, char *argv[]) -{ - int n; - int result; - int iptfilesize; - - char* optfilename; - char* suffix; - u8* filebuf; - - BOOL optfname_flag = FALSE; // if optfilename input, this flag is true. - - optfilename = suffix = NULL; - - while ((n = getopt(argc, argv, "o:e:dhv")) != -1) - { - switch (n) - { - case 'o': // output file name - optfilename = optarg; - optfname_flag = TRUE; - break; - - case 'e': - suffix = optarg; - break; - - case 'd': // Show debug message - bDebugMode = TRUE; - break; - - case 'h': - case 'v': - default: - usage(); // Never returns - break; - } - - DebugPrintf("option -%c: %s\n", n, optarg ? optarg : "No ARG"); - } - - argc -= optind; - argv += optind; - - if (bDebugMode) - { - int i; - - DebugPrintf("argc=%d optind=%d\n", argc, optind); - for (i = 0; i < argc; i++) - { - DebugPrintf("argv[%d] = [%s]\n", i, argv[i]); - } - } - - if (argc == 1) - { - if (optfilename == NULL) - { - optfilename = argv[0]; - } - iptfilesize = ReadFile(argv[0], &filebuf); - } - else - { - usage(); // Never returns - } - - if (iptfilesize < 0) - { - ConsolePrintf("exit...\n"); - return 1; - } - - if ((result = Compress(filebuf, iptfilesize)) < 0) - { - switch (result) - { - case COMPRESS_LARGER_ORIGINAL: - ConsolePrintf("Inputdata ..... Not compressed (enlarged or same size as before)\n"); - break; - case COMPRESS_FATAL_ERROR: - ConsolePrintf("Fatal error occured\n"); - break; - } - ConsolePrintf("exit...\n"); - return 1; - } - - // cut file path and suffix of input file - if (!optfname_flag) - { - optfilename = StrCutFname(optfilename); - } - - // create output filename - if (suffix == NULL) - { - optfilename = StrCat(2, optfilename, "_BLZ.bin"); - } - else - { - optfilename = StrCat(2, optfilename, suffix); - } - - // output file - if (WriteFile(optfilename, filebuf, result) < 0) - { - ConsolePrintf("exit...\n\n"); - return 1; - } - - ConsolePrintf("Inputdata ..... Compressed ... %9d -> %9d\n", iptfilesize, result); - - return 0; -} - -/*---------------------------------------------------------------------------* - Name: usage - - Description: - *---------------------------------------------------------------------------*/ -static void usage(void) -{ - fprintf(stderr, - "TWL-SDK Development Tool - compBLZ - Compress data\n" - "Build %lu\n" - "\n" - "Usage: compBLZ [-d] [-o outputFile] [-e suffix] inputFile\n" - "\n" - " Compress data (backward LZ)\n" - "\n" - " -o outputFile FILENAME for output file (default:input filename)\n" - " -e suffix SUFFIX for output file (default:\"_BLZ\")\n" - " -d Show debug messages (for test purpose)\n" - " -h Show this message\n" "\n", SDK_DATE_OF_LATEST_FILE); - - exit(1); -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx b/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx deleted file mode 100644 index 69cd3c09..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/perl - -# -# To Do -# ・Font info table の padding を圧縮後ファイルサイズを格納するエントリに変更 -# ・ファイルサイズを取得して詰め込む処理を追加 -# ・SHA-1ハッシュをつける前に圧縮する -# - -###################################################################### -# genFontTable.pl -# -# generate Secure Shared Font Data Table -# -# [[ HEADER FORMAT ]] -# security code (128 bytes) : RSA signature of Header -# -# Header ( 32 bytes) -# TimeStamp ( 4 bytes) : date %y%m%d%H -# number ( 2 bytes) : number of font files -# padding ( 6 bytes) : -# padding ( 20 bytes) : SHA1 digest of Font info table -# -# Font info table ( 64 bytes * number) -# fileName ( 32 bytes) : font file name -# comp_length ( 4 bytes) : length of the compression file -# file offset ( 4 bytes) : file offset of Font data -# length ( 4 bytes) : length of file (bytes) -# digest ( 20 bytes) : SHA1 digest of Font data -# -# note: each section image is aligned to 32 bytes. -# -###################################################################### - -use POSIX 'strftime'; -use File::Basename; - -if ($#ARGV < 2) { - printf STDOUT ("Usage: %s [genFontTable] timestamp [Target font files...]\n", $0); - exit(-1); -} - -my $outFile = "TWLFontTable.dat"; -my $infoFile = "info.bin"; -my $headerFile = "header.bin"; -my $digestFile = "sha1.bin"; -my $signFile = "sign.bin"; -my $tempFile = "temp.bin"; -my $compprog = "./compBLZ_modified/bin/compBLZ.exe"; # 圧縮プログラム -my $compoption = "-e \"\""; -#my $compprog = "./ntrcomp/gcc/ntrcomp.exe"; -#my $compoption = "-h8 -A32 -s"; - -# 後始末 -sub deleteTemp { - system ("rm -f $infoFile"); - system ("rm -f $headerFile"); - system ("rm -f $digestFile"); - system ("rm -f $signFile"); - system ("rm -f $tempFile"); -} - -# 環境変数からSDKのルートをサーチして(ntrcompの場所特定に必要) -#foreach ( sort keys ( %ENV ) ){ -# if ($_ =~ m/TWLSDK_ROOT/s) { -# $SDKROOT = $ENV{$_}; -# } -#} -#printf "TWLSDK_ROOT is ${SDKROOT}\n"; - -my $signSize = 0x80; -my $headerSize = 0x20; -my @files; - -# 要素数算出 -my $num = 0; -foreach ( @ARGV ) { - next if( $_ eq $ARGV[0] ); - $files[ $num ] = $_; - $num++; -} - -# 情報テーブルの出力 -{ - my $elementSize = 0x40; - my $fileNameMax = 0x20; - my $padLen = 0x04; - # offset length = 0x04; - # file length = 0x04; - my $sha1Len = 0x14; - - open INFO, ">$infoFile" or die; - binmode INFO; - - # オフセット算出 - my $offset = $signSize + $headerSize + $num * $elementSize; - if( ( $offset % 32 ) > 0 ) { $offset += 32 - ( $offset % 32 ); } - - printf "---------------------------------------------------------------\n"; - printf "filename\toffset \torig_size\tcompressed_size\n"; - foreach ( @files ) { - # NULL指定時は、NULL出力 - if( "NULL" eq basename( $_ ) ) { - syswrite( INFO, pack( "x$elementSize") ); - next; - } - - # ファイルネームの出力 - if( !( -e $_ ) ) { - close( INFO ); - deleteTemp(); - die "file not exist. : $_\n"; - } - my $name = basename( $_ ); - if( length $name >= $fileNameMax ) { - close( INFO ); - deleteTemp(); - die "file name length must be smaller than $fileNameMax. : $_\n"; - } - my $data = pack( "a$fileNameMax", $name ); - syswrite( INFO, $data, $fileNameMax ); - - # 圧縮 - # SDKのcompBLZ.exeは引数バグがあるためローカルに修正版を入れておく - my $compfile = "$_.comp"; - system ("${compprog} $compoption $_ -o $compfile"); - - # パディングの出力 - #syswrite( INFO, pack( "x$padLen") ); - - # 圧縮ファイル長を出力(もともとはpadding) - $data = pack( "L", -s $compfile ); - syswrite( INFO, $data, 4 ); - - # ファイルオフセットの出力 - $data = pack( "L", $offset ); - syswrite( INFO, $data, 4 ); - - # ファイル長の出力 - $data = pack( "L", -s $_ ); - syswrite( INFO, $data, 4 ); - - # ファイルのSHA1ハッシュの出力 - { - my $digest; - #system ("openssl dgst -sha1 -binary -out $digestFile $_"); - system ("openssl dgst -sha1 -binary -out $digestFile $compfile"); # 圧縮後のファイルにハッシュをつける - open DIGEST, $digestFile or die; - binmode DIGEST; - sysread( DIGEST, $digest, $sha1Len ); - close DIGEST; - syswrite( INFO, $digest, $sha1Len ); - } - - printf "%s\t0x%08x\t0x%08x\t0x%08x\n", $_, $offset, -s $_, -s $compfile; - - # オフセット加算 - #$offset += -s $_; - $offset += -s $compfile; - if( ( $offset % 32 ) > 0 ) { $offset += 32 - ( $offset % 32 ); } - } - close INFO; - printf "---------------------------------------------------------------\n"; -} - -# ヘッダの出力 -{ - # timestampLen = 0x08; - # elementNumLen = 0x02; - my $padLen = 0x06; - my $sha1Len = 0x14; - - open HEADER, ">$headerFile" or die; - binmode HEADER; - - # タイムスタンプの出力 -# my $timestamp = strftime "%y%m%d%H", localtime; - my $timestamp = $ARGV[ 0 ]; - printf "timestamp = %s\n", $timestamp; - syswrite( HEADER, pack( "N", unpack( "L", pack( "H8", $timestamp ) ) ) ); - - # 要素数の出力 - syswrite( HEADER, pack( "S", $num ) ); - - # パディングの出力 - syswrite( HEADER, pack( "x$padLen") ); - - # 情報テーブルのSHA1ハッシュの出力 - { - my $digest; - system ("openssl dgst -sha1 -binary -out $digestFile $infoFile"); - open DIGEST, $digestFile or die; - binmode DIGEST; - sysread( DIGEST, $digest, $sha1Len ); - close DIGEST; - syswrite( HEADER, $digest, $sha1Len ); - } - close HEADER; -} - -# 環境変数サーチ -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_PRIVATE_ROOT/s) { - $KEYROOT = $ENV{$_}; - } -} -if (!$KEYROOT) { - deleteTemp(); - die "No TWL_IPL_RED_PRIVATE_ROOT is found.\n"; -} - -# ヘッダへの署名付加 -{ - system ( "openssl dgst -sha1 -binary -out $digestFile $headerFile" ); - system ( "openssl rsautl -sign -in $digestFile -inkey $KEYROOT/keys/rsa/private_sharedFont.der -keyform DER -out $signFile" ); - system ( "cat $signFile $headerFile >$tempFile" ); - system ( "cat $tempFile $infoFile >$outFile" ); - deleteTemp(); -} - - -# フォントの出力 -{ - open FONTTABLE, ">>$outFile" or die; - binmode FONTTABLE; - - { - # パディング出力 - my $fileLen = -s $outFile; - my $padNum = ( $fileLen % 32 ) ? ( 32 - ( $fileLen % 32 ) ) : 0; - my $padding = pack( "x$padNum" ); - syswrite( FONTTABLE, $padding, $padNum ); - } - - foreach ( @files ) { - # NULL指定時はスキップ - if( "NULL" eq basename( $_ ) ) { - next; - } - - # フォント出力 - #my $fileLen = -s $_; - #open TEST, $_ or die; - my $compfile = "$_.comp"; # 圧縮ファイルを出力 - $fileLen = -s $compfile; - open TEST, $compfile or die; - binmode TEST; - sysread ( TEST, $buffer, $fileLen ); - close TEST; - syswrite( FONTTABLE, $buffer, $fileLen ); - - # パディング出力 - my $padNum = ( $fileLen % 32 ) ? ( 32 - ( $fileLen % 32 ) ) : 0; - my $padding = pack( "x$padNum" ); - syswrite( FONTTABLE, $padding, $padNum ); - - # 圧縮ファイルを削除 - system ("rm -rf $compfile"); - } - close FONTTABLE; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat b/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat deleted file mode 100644 index 2ec4818b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat +++ /dev/null @@ -1,18 +0,0 @@ -rem -rem ***** SD起動ファイル作成ツール ***** -rem -rem sdmc_launcher_writer.gcd が起動ファイルとして menu.srl しか受け付けないので -rem 引数として与えたファイルを menu.srl としてコピーする -rem - -if "%1" equ "" ( - echo 失敗しました。 - echo ディレクトリごとドラッグアンドドロップしてください。 - echo: - goto end -) - -set progdir=%~dp0 - -del %progdir%\menu.srl -copy %1 %progdir%\menu.srl diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ deleted file mode 100644 index ae91d2ff..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ +++ /dev/null @@ -1 +0,0 @@ -NINTENDO PRIVATE diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile deleted file mode 100644 index cb219807..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -export TWLSDK_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS += gcc - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK deleted file mode 100644 index 5d41f479..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK +++ /dev/null @@ -1,25 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS += gcc - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile deleted file mode 100644 index 981c2ad2..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp - gcc -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -OBJECTS = ntcompress_main.o ntcompress_test.o nitroCompLib.o multipleCompLib.o rangeCoder.o - -WIN32 ?= 1 - -ifneq ($(WIN32),0) -TARGETS = ntrcomp.exe -CC_X86 := gcc -mno-cygwin -else -TARGETS = ntrcomp -CC_X86 := gcc -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) - -#INSTALL_DIR = $(NITRO_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(OBJECTS) - $(CC_X86) $+ -o $@ - -ntcompress_main.o: ../src/ntcompress_main.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -ntcompress_test.o: ../src/ntcompress_test.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -nitroCompLib.o: ../src/nitroCompLib.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -multipleCompLib.o: ../src/multipleCompLib.c ../src/multipleCompLib.h - $(CC_X86) -c $< -o $@ -rangeCoder.o: ../src/rangeCoder.c ../src/rangeCoder.h - $(CC_X86) -c $< -o $@ - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK deleted file mode 100644 index c1cde1a4..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK +++ /dev/null @@ -1,59 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp - gcc -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -OBJECTS = ntcompress_main.o ntcompress_test.o nitroCompLib.o multipleCompLib.o rangeCoder.o - -WIN32 ?= 1 - -ifneq ($(WIN32),0) -TARGETS = ntrcomp.exe -CC_X86 := gcc -mno-cygwin -else -TARGETS = ntrcomp -CC_X86 := gcc -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) - -INSTALL_DIR = $(NITRO_INSTALL_TOOLSDIR)/bin -INSTALL_TARGETS = $(TARGETS) - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(OBJECTS) - $(CC_X86) $+ -o $@ - -ntcompress_main.o: ../src/ntcompress_main.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -ntcompress_test.o: ../src/ntcompress_test.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -nitroCompLib.o: ../src/nitroCompLib.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -multipleCompLib.o: ../src/multipleCompLib.c ../src/multipleCompLib.h - $(CC_X86) -c $< -o $@ -rangeCoder.o: ../src/rangeCoder.c ../src/rangeCoder.h - $(CC_X86) -c $< -o $@ - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c deleted file mode 100644 index fcb44e89..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c +++ /dev/null @@ -1,2494 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: multipleCompLib.c - - Copyright 2007 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 "multipleCompLib.h" - -#undef _DEBUG -#ifdef _DEBUG - -#endif - -#define LH_CODE_HEADER (0x40) -#define LRC_CODE_HEADER (0x50) - -#define BLEND_COMP_FLAG 1 - -#define LH_ENC_OFFSET_WIDTH /* この設定が有効な場合にはoffset値全体ではなくoffsetのbit長を符号化する */ - -#if !defined(LH_ENC_OFFSET_WIDTH) - #define LH_OFFSET_BITS 12 - #define LH_OFFSET_TABLE_BITS LH_OFFSET_BITS -#else // if defined(LH_ENC_OFFSET_WIDTH) - #define LH_OFFSET_BITS 15 - #define LH_OFFSET_TABLE_BITS 5 -#endif - -#define LENGTH_BITS (8 + BLEND_COMP_FLAG) -#define OFFSET_SIZE_MAX (1 << 15) - -#define REVERSE_SEARCH - -typedef struct -{ - u16 WindowPos; // 現在のスライド辞書の先頭位置 - u16 WindowLen; // 現在のスライド辞書のサイズ - - s16 LZOffsetTable[ OFFSET_SIZE_MAX ]; // オフセットデータのテーブル - #ifdef REVERSE_SEARCH - s16 LZRevOffsetTable[ OFFSET_SIZE_MAX ]; // オフセットデータの逆順テーブル - #endif - s16 LZByteTable[ 256 ]; // データの先頭テーブル - s16 LZEndTable [ 256 ]; // データの終端テーブル - u8 OffsetBits; // オフセットを表現する為のビット数 -} LZCompressInfo; - -static LZCompressInfo gLZWork; - -INLINE u32 -RoundUp( u32 value, u32 base ) -{ - return (value + (base - 1)) & ~(base - 1); -} - -/*---------------------------------------------------------------------------* - Name: LZInitTable - Description: - Arguments: work - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZInitTable( LZCompressInfo* info ) -{ - u16 i; - - for ( i = 0; i < 256; i++ ) - { - info->LZByteTable[i] = -1; - info->LZEndTable[i] = -1; - } - info->WindowPos = 0; - info->WindowLen = 0; -} - -/*---------------------------------------------------------------------------* - Name: SlideByte - Description: 辞書を1バイトスライド - Arguments: *srcp - work - Returns: None. - *---------------------------------------------------------------------------*/ -static void -SlideByte( LZCompressInfo* info, const u8 *srcp ) -{ - s16 offset; - u8 in_data = *srcp; - u16 insert_offset; - -#if defined( REVERSE_SEARCH ) // 探索順を逆にする(新しいデータを優先) - s16 *const LZByteTable = info->LZEndTable; - s16 *const LZEndTable = info->LZByteTable; - s16 *const LZOffsetTable = info->LZRevOffsetTable; - s16 *const LZRevOffsetTable = info->LZOffsetTable; -#else - s16 *const LZByteTable = info->LZByteTable; - s16 *const LZEndTable = info->LZEndTable; - s16 *const LZOffsetTable = info->LZOffsetTable; -#endif - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - const u32 OFFSET_SIZE = (1 << info->OffsetBits); - - if ( windowLen == OFFSET_SIZE ) - { - u8 out_data = *(srcp - OFFSET_SIZE); - if ((LZByteTable[out_data] = LZOffsetTable[LZByteTable[out_data]]) == -1) - { - LZEndTable[out_data] = -1; - } - else - { - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[LZByteTable[out_data]] = -1; - #endif - } - insert_offset = windowPos; - } - else - { - insert_offset = windowLen; - } - - offset = LZEndTable[in_data]; - if (offset == -1) - { - LZByteTable[in_data] = insert_offset; - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[insert_offset] = -1; - #endif - } - else - { - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[insert_offset] = offset; - #endif - LZOffsetTable[offset] = insert_offset; - } - LZEndTable[in_data] = insert_offset; - LZOffsetTable[insert_offset] = -1; - - if (windowLen == OFFSET_SIZE) - { - info->WindowPos = (u16)((windowPos + 1) % OFFSET_SIZE); - } - else - { - info->WindowLen++; - } -} - -/*---------------------------------------------------------------------------* - Name: LZSlide - Description: - Arguments: *srcp - n - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZSlide( LZCompressInfo* info, const u8 *srcp, u32 n ) -{ - u32 i; - - for (i = 0; i < n; i++) - { - SlideByte(info, srcp++); - } -} - -//-------------------------------------------------------- -// LZ77圧縮でスライド窓の中から最長一致列を検索します。 -// Arguments: startp データの開始位置を示すポインタ -// nextp 検索を開始するデータのポインタ -// remainSize 残りデータサイズ -// offset 一致したオフセットを格納する領域へのポインタ -// Return : 一致列が見つかった場合は TRUE -// 見つからなかった場合は FALSE -//-------------------------------------------------------- -static u16 -SearchLZ( const LZCompressInfo* info, const u8 *nextp, u32 remainSize, u16 *offset, u16 minOffset, u32 maxLength ) -{ - const u8 *searchp; - const u8 *headp, *searchHeadp; - u16 currOffset; - u16 currLength = 2; - u16 tmpLength; - s32 w_offset; - const s16 * const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (remainSize < 3) - { - return 0; - } - - w_offset = info->LZByteTable[ *nextp ]; - - while (w_offset != -1) - { - if (w_offset < windowPos) - { - searchp = nextp - windowPos + w_offset; - } - else - { - searchp = nextp - windowLen - windowPos + w_offset; - } - - /* 無くても良いが、僅かに高速化する */ - if (*(searchp + 1) != *(nextp + 1) || *(searchp + 2) != *(nextp + 2)) - { - w_offset = LZOffsetTable[ w_offset ]; - continue; - } - - if (nextp - searchp < minOffset) - { - // VRAMは2バイトアクセスなので (VRAMからデータを読み出す場合があるため)、 - // 検索対象データは2バイト前からのデータにしなければならない。 - // - // オフセットは12ビットで格納されるため、4096以下 - #if defined( REVERSE_SEARCH ) - w_offset = LZOffsetTable[ w_offset ]; - continue; - #else - break; - #endif - } - tmpLength = 3; - searchHeadp = searchp + 3; - headp = nextp + 3; - - while (((u32)(headp - nextp) < remainSize) && (*headp == *searchHeadp)) - { - headp++; - searchHeadp++; - tmpLength++; - - // データ長は8ビットで格納されるため、258以下 (3の下駄をはかせる) - if (tmpLength == maxLength) - { - break; - } - } - if (tmpLength > currLength) - { - // 最大長オフセットを更新 - currLength = tmpLength; - currOffset = (u16)((u32)nextp - (u32)searchp); - if (currLength == maxLength) - { - // 一致長が最大なので、検索を終了する。 - break; - } - } - w_offset = LZOffsetTable[w_offset]; - } - - if (currLength < 3) - { - return 0; - } - *offset = currOffset; - return currLength; -} - -/*---------------------------------------------------------------------------* - Name: LZCompWrite - - Description: - - Arguments: *srcp - size - *dstp - lzSearchOffset - - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZCompWrite_( const u8 *srcp, s32 size, u8 *dstp, u8 lzSearchOffset, u8 offsetBits ) -{ - u32 LZDstCount = 0; // 圧縮データのバイト数 - u8 LZCompFlags; // 圧縮の有無を示すフラグ系列 - u8 *LZCompFlagsp; // LZCompFlags を格納するメモリ領域をポイント - u16 lastOffset; // 一致データまでのオフセット (その時点での最長一致データ) - u16 lastLength; // 一致データ長 (その時点での最長一致データ) - u8 i; - const u32 MAX_LENGTH = 0xFF + 3; - - LZInitTable( &gLZWork ); - gLZWork.OffsetBits = offsetBits; - - while ( size > 0 ) - { - LZCompFlags = 0; - LZCompFlagsp = dstp++; // フラグ系列の格納先 - LZDstCount++; - - // フラグ系列が8ビットデータとして格納されるため、8回ループ - for ( i = 0; i < 8; i++ ) - { - LZCompFlags <<= 1; // 初回 (i=0) は特に意味はない - if (size <= 0) - { - // 終端に来た場合はフラグを最後までシフトさせてから終了 - continue; - } - - if ( (lastLength = SearchLZ(&gLZWork, srcp, size, &lastOffset, lzSearchOffset, MAX_LENGTH)) != 0 ) - { - // 圧縮可能な場合はフラグを立てる - LZCompFlags |= 0x1; - - // オフセットは上位4ビットと下位8ビットに分けて格納 - *dstp++ = (u8)(lastLength - 3); - *dstp++ = (u8)((lastOffset - 1) & 0xff); // リトルエンディアン - *dstp++ = (u8)((lastOffset - 1) >> 8); - LZDstCount += 3; - LZSlide( &gLZWork, srcp, lastLength ); - srcp += lastLength; - size -= lastLength; - } - else - { - // 圧縮なし - LZSlide( &gLZWork, srcp, 1 ); - *dstp++ = *srcp++; - size--; - LZDstCount++; - } - } // 8回ループ終了 - *LZCompFlagsp = LZCompFlags; // フラグ系列を格納 - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((LZDstCount + i) & 0x3) - { - *dstp++ = 0; - i++; - } - - return LZDstCount; -} - - -typedef struct -{ - u16 No; // データNo - s16 PaNo; // 親No - u32 Freq; // 出現頻度 - s16 ChNo[2]; // 子No (0: 左側, 1: 右側) - u16 PaDepth; // 親ノードの深さ - u16 LeafDepth; // 葉までの深さ - u32 HuffCode; // ハフマン符号 - u16 Bit; // ノードのビットデータ - u16 HWord; // 各中間節点において、その節点をルートとする部分木を HuffTree 格納に必要なメモリ量 -} -HuffData; - -typedef struct -{ - u8 leftOffsetNeed; // 左の子節点へのオフセットが必要なら1 - u8 rightOffsetNeed; // 右の子節点へのオフセットが必要なら1 - u16 leftNodeNo; // 左の子節点No - u16 rightNodeNo; // 右の子節点No -} -HuffTreeCtrlData; - -// ハフマンワークバッファ構成 -typedef struct -{ - HuffData* huffTable; // huffTable[ 512 ]; 12288B - u16* huffTree; // huffTree[ 256 * 2 ]; 512B - HuffTreeCtrlData* huffTreeCtrl; // huffTreeCtrl[ 256 ]; 1536B - u16 huffTreeTop; // - u8 bitSize; // - u8 padding_[1]; // -} -HuffInfo; // 計 14340B - -static void HuffMakeHuffTree ( HuffInfo* info, u16 rootNo ); -static void HuffMakeSubsetHuffTree ( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static BOOL HuffRemainingNodeCanSetOffset( HuffInfo* info, u16 costHWord ); -static void HuffSetOneNodeOffset ( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static u16 HuffMakeNode ( HuffData* table, u8 bitSize ); - -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ); -static void HuffAddCodeToTable ( HuffData* table, u16 nodeNo, u32 paHuffCode ); -static u16 HuffAddCountHWordToTable ( HuffData *table, u16 nodeNo ); - - -// ビットストリーム -typedef struct -{ - u8* dstp; // 出力先ポインタ - u32 cnt; // 出力サイズ - u32 stream; // カレントストリームデータ - u32 stream_len; // ストリームの長さ -} -BitStream; - -static void -BitStream_Init( BitStream* context, u8* dstp ) -{ - context->dstp = dstp; - context->cnt = 0; - context->stream = 0; - context->stream_len = 0; -} - -static void -BitStream_Write( BitStream* context, u32 data, u32 width ) -{ - u32 i; - u32 stream = context->stream; - u32 cnt = context->cnt; - u32 stream_len = context->stream_len; - u32 mask = (1 << width) - 1; - - if ( width == 0 ) - { - return; - } - - stream = (stream << width) | ( data & mask ); - stream_len += width; - - for ( i = 0; i < stream_len / 8; i++ ) - { - context->dstp[ cnt++ ] = (u8)( stream >> ( stream_len - ( i + 1 ) * 8 ) ); - } - stream_len %= 8; - - context->stream = stream; - context->cnt = cnt; - context->stream_len = stream_len; -} - -static void -BitStream_Terminate( BitStream* context, u32 align ) -{ - u32 stream = context->stream; - u32 cnt = context->cnt; - u32 stream_len = context->stream_len; - - if ( stream_len > 0 ) - { - stream <<= 8 - stream_len; - - if ( context->stream_len != 0 ) - { - context->dstp[ cnt++ ] = (u8)( stream ); - } - } - - while ( cnt % align ) - { - context->dstp[ cnt++ ] = 0; - } - context->cnt = cnt; - context->stream_len = 0; -} - - - - -/*---------------------------------------------------------------------------* - Name: HuffInitTable - Description: - Arguments: info - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void -HuffInitTable( HuffInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->huffTable = (HuffData*)malloc( sizeof(HuffData) * tableSize * 2 ); - info->huffTree = (u16*)malloc( sizeof(u16) * tableSize * 2 ); - info->huffTreeCtrl = (HuffTreeCtrlData*)malloc( sizeof(HuffTreeCtrlData) * tableSize ); - - info->huffTreeTop = 1; - info->bitSize = bitSize; - - // huffTableを初期化 - { - HuffData* table = info->huffTable; - const HuffData HUFF_TABLE_INIT_DATA = { 0, 0, 0, {-1, -1}, 0, 0, 0, 0, 0 }; - for ( i = 0; i < tableSize * 2; i++ ) - { - table[ i ] = HUFF_TABLE_INIT_DATA; - table[ i ].No = (u16)i; - } - } - - // huffTree, huffTreeCtrlを初期化 - { - const HuffTreeCtrlData HUFF_TREE_CTRL_INIT_DATA = { 1, 1, 0, 0 }; - u16* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - - for ( i = 0; i < tableSize; i++ ) - { - huffTree[ i * 2 ] = 0; - huffTree[ i * 2 + 1 ] = 0; - huffTreeCtrl[ i ] = HUFF_TREE_CTRL_INIT_DATA; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: LZCountHuffData - Description: - Arguments: srcp - srcSize - info8 - info16 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZCountHuffData( const u8* srcp, u32 srcSize, HuffInfo* info8, HuffInfo* info16 ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < srcSize ) - { - u8 compFlags = srcp[ srcCnt++ ]; // 圧縮の有無を示すフラグ列 - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // 圧縮されている、length:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // リトルエンディアン - offset |= (srcp[ srcCnt++ ] << 8); - - #if BLEND_COMP_FLAG - info8->huffTable[ length | 0x100 ].Freq++; - #else - info8->huffTable[ length ].Freq++; - #endif - #if !defined(LH_ENC_OFFSET_WIDTH) - info16->huffTable[ offset ].Freq++; - #else - { - u32 offset_bit = 0; - while ( offset != 0 ) - { - ++offset_bit; - offset >>= 1; - } - info16->huffTable[ offset_bit ].Freq++; - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - info8->huffTable[ data ].Freq++; - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } -} - - -/*---------------------------------------------------------------------------* - Name: ConstructHuffTree - Description: - Arguments: info - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConstructHuffTree( HuffInfo* info, u8 bitSize ) -{ - HuffData* table = info->huffTable; - u16 rootNo; - - // 出現頻度からノードを構築 - rootNo = HuffMakeNode( table, bitSize ); - - // ハフマンコード生成 (table[i].HuffCode に) - HuffAddCodeToTable( table, rootNo, 0x00 ); // PaDepthのビット数だけ、HuffCode の下位ビットをマスクしたものがハフマンコード - - // 各中間節点において、その節点をルートとする部分木を huffTree 格納に必要なメモリ量の計算 - HuffAddCountHWordToTable( table, rootNo ); - - HuffMakeHuffTree( info, rootNo ); - info->huffTreeTop--; -} - -//----------------------------------------------------------------------- -// ハフマンコード表作成 -//----------------------------------------------------------------------- -static void -HuffMakeHuffTree( HuffInfo* info, u16 rootNo ) -{ - s16 i; - s16 costHWord, tmpCostHWord; // 部分木のコード表を作成しなかった時のコスト 最大値の節点の部分木コード表を作る - s16 costOffsetNeed, tmpCostOffsetNeed; - s16 costMaxKey; // コスト最小の節点を huffTreeBuf.huffTree から特定するための情報 - BOOL costMaxRightFlag; - u16 offsetNeedNum; - BOOL tmpRightFlag; - const u32 MAX_COST = 1 << (info->bitSize - 2); - - info->huffTreeTop = 1; - costOffsetNeed = 0; - - info->huffTreeCtrl[0].leftOffsetNeed = 0; // 使用しない (テーブルサイズとして使用) - info->huffTreeCtrl[0].rightNodeNo = rootNo; - - while ( 1 ) // return するまで - { - // オフセットを設定する必要のあるノード数の計算 - offsetNeedNum = 0; - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - offsetNeedNum++; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - offsetNeedNum++; - } - } - - // 最大コストの節点を検索 - costHWord = -1; - costMaxKey = -1; - tmpRightFlag = 0; - - for ( i = 0; i < info->huffTreeTop; i++ ) - { - tmpCostOffsetNeed = (u16)( info->huffTreeTop - i ); - - // 左の子節点のコスト評価 - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto leftCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto leftCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - } -leftCostEvaluationEnd:{} - - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].rightNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto rightCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto rightCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - } -rightCostEvaluationEnd:{} - } - - // 部分木をまるまる huffTree に格納 - if ( costMaxKey >= 0 ) - { - HuffMakeSubsetHuffTree( info, (u16)costMaxKey, costMaxRightFlag); - goto nextTreeMaking; - } - else - { - // 必要オフセット最大のノードを検索 - for ( i = 0; i < info->huffTreeTop; i++ ) - { - u16 tmp = 0; - tmpRightFlag = 0; - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmp = info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( info->huffTable[ info->huffTreeCtrl[i].rightNodeNo ].HWord > tmp ) - { - tmpRightFlag = 1; - } - } - if ( (tmp != 0) || (tmpRightFlag) ) - { - HuffSetOneNodeOffset( info, (u16)i, tmpRightFlag ); - goto nextTreeMaking; - } - } - } - return; -nextTreeMaking:{} - } -} - -//----------------------------------------------------------------------- -// 部分木をまるまる huffTree に格納 -//----------------------------------------------------------------------- -static void -HuffMakeSubsetHuffTree( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ) -{ - u16 i; - - i = info->huffTreeTop; - HuffSetOneNodeOffset( info, huffTreeNo, rightNodeFlag ); - - if ( rightNodeFlag ) - { - info->huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - info->huffTreeCtrl[ huffTreeNo ].leftOffsetNeed = 0; - } - - while ( i < info->huffTreeTop ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 0 ); - info->huffTreeCtrl[ i ].leftOffsetNeed = 0; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 1 ); - info->huffTreeCtrl[ i ].rightOffsetNeed = 0; - } - i++; - } -} - -//----------------------------------------------------------------------- -// 与えられたデータ量の部分木を展開しても huffTree 構築に支障がないか調べる -//----------------------------------------------------------------------- -static BOOL -HuffRemainingNodeCanSetOffset( HuffInfo* info, u16 costHWord ) -{ - u16 i; - s16 capacity; - const u32 MAX_COST = 1 << (info->bitSize - 2); - - capacity = (s16)( MAX_COST - costHWord ); - - // オフセット数は i が小さいほど大きいので、ソートせず、i = 0 -> huffTreeTop で計算すればよい - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - } - - return 1; -} - - -/*---------------------------------------------------------------------------* - Name: HuffSetOneNodeOffset - Description: 1節点分、ハフマンコード表を作成 - Arguments: *table ハフマンテーブル - huffTreeNo - rightNodeFlag 右側のノードであるかどうかのフラグ - Returns: None. - *---------------------------------------------------------------------------*/ -static void -HuffSetOneNodeOffset( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag) -{ - u16 nodeNo; - u16 offsetData = 0; - - HuffData* huffTable = info->huffTable; - u16* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - u16 huffTreeTop = info->huffTreeTop; - - if (rightNodeFlag) - { - nodeNo = huffTreeCtrl[ huffTreeNo ].rightNodeNo; - huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - nodeNo = huffTreeCtrl[ huffTreeNo ].leftNodeNo; - huffTreeCtrl [huffTreeNo ].leftOffsetNeed = 0; - } - - // 左の子節点 - if ( huffTable[ huffTable[nodeNo].ChNo[0] ].LeafDepth == 0) - { - offsetData |= 0x8000; - huffTree[ huffTreeTop * 2 + 0 ] = (u16)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftOffsetNeed = 0; // オフセットは必要なくなる - } - else - { - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; // オフセットは必要 - } - - // 右の子節点 - if ( huffTable[ huffTable[ nodeNo ].ChNo[1] ].LeafDepth == 0 ) - { - offsetData |= 0x4000; - huffTree[ huffTreeTop * 2 + 1 ] = (u16)huffTable[nodeNo].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightOffsetNeed = 0; // オフセットは必要なくなる - } - else - { - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; // オフセットは必要 - } - - offsetData |= (u16)( huffTreeTop - huffTreeNo - 1 ); - huffTree[ huffTreeNo * 2 + (rightNodeFlag? 1 : 0) ] = offsetData; - - info->huffTreeTop++; -} - -/*---------------------------------------------------------------------------* - Name: HuffMakeNode - Description: 出現頻度からノードデータを構築 - Arguments: table - Returns: None. - *---------------------------------------------------------------------------*/ -static u16 -HuffMakeNode( HuffData* table, u8 bitSize ) -{ - u16 dataNum = ( 1 << bitSize ); - u16 tableTop = (u16)dataNum; // テーブル作成時の、テーブルトップNo - - u32 i; - s32 leftNo, rightNo; // 2分木作成時のノードNo - u16 rootNo; // 二分木のルートNo - - leftNo = -1; - rightNo = -1; - while ( 1 ) - { - // Freqの小さい部分木頂点を2つ探す 1つは必ず見つかるはず - // 子頂点(左)の探索 - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) ) - { - continue; - } - - if ( leftNo < 0 ) - { - leftNo = i; - } - else if ( table[i].Freq < table[ leftNo ].Freq ) - { - leftNo = i; - } - } - - // 子頂点(右)の探索 - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) || - ( i == leftNo ) ) - { - continue; - } - - if ( rightNo < 0 ) - { - rightNo = i; - } - else if ( table[i].Freq < table[ rightNo ].Freq ) - { - rightNo = i; - } - } - - // 1つしかなかったら、テーブル作成終了 - if ( rightNo < 0 ) - { - // 値が一種類しかない存在しない場合には01どちらも同じ値となるノードを1つ作成する - if ( tableTop == dataNum ) - { - table[ tableTop ].Freq = table[ leftNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)leftNo; - table[ tableTop ].LeafDepth = 1; - table[ leftNo ].PaNo = (s16)tableTop; - table[ leftNo ].Bit = 0; - table[ leftNo ].PaDepth = 1; - } - else - { - tableTop--; - } - rootNo = tableTop; - return rootNo; - } - - // 左部分木と右部分木を統合する頂点作成 - table[ tableTop ].Freq = table[ leftNo ].Freq + table[ rightNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)rightNo; - if ( table[ leftNo ].LeafDepth > table[ rightNo ].LeafDepth ) - { - table[ tableTop ].LeafDepth = (u16)( table[ leftNo ].LeafDepth + 1 ); - } - else - { - table[ tableTop ].LeafDepth = (u16)( table[ rightNo ].LeafDepth + 1 ); - } - - table[ leftNo ].PaNo = table[ rightNo ].PaNo = (s16)( tableTop ); - table[ leftNo ].Bit = 0; - table[ rightNo ].Bit = 1; - - HuffAddParentDepthToTable( table, (u16)leftNo, (u16)rightNo ); - - tableTop++; - leftNo = rightNo = -1; - } -} - - -//----------------------------------------------------------------------- -// 2文木作成時に、部分木を統合したときに、部分木の各構成ノードの深さを+1する -//----------------------------------------------------------------------- -static void -HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ) -{ - table[ leftNo ].PaDepth++; - table[ rightNo ].PaDepth++; - - if ( table[ leftNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ leftNo ].ChNo[0], (u16)table[ leftNo ].ChNo[1] ); - } - if ( table[ rightNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ rightNo ].ChNo[0], (u16)table[ rightNo ].ChNo[1] ); - } -} - -//----------------------------------------------------------------------- -// ハフマンコード生成 -//----------------------------------------------------------------------- -static void -HuffAddCodeToTable( HuffData* table, u16 nodeNo, u32 paHuffCode ) -{ - table[ nodeNo ].HuffCode = (paHuffCode << 1) | table[ nodeNo ].Bit; - - if ( table[ nodeNo ].LeafDepth != 0 ) - { - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[0], table[ nodeNo ].HuffCode ); - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[1], table[ nodeNo ].HuffCode ); - } -} - - -//----------------------------------------------------------------------- -// 中間ノードが huffTree 作成に必要とするデータ量 -//----------------------------------------------------------------------- -static u16 -HuffAddCountHWordToTable( HuffData *table, u16 nodeNo) -{ - u16 leftHWord, rightHWord; - - switch ( table[ nodeNo ].LeafDepth ) - { - case 0: - return 0; - case 1: - leftHWord = rightHWord = 0; - break; - default: - leftHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[0] ); - rightHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[1] ); - break; - } - - table[ nodeNo ].HWord = (u16)( leftHWord + rightHWord + 1 ); - return (u16)( leftHWord + rightHWord + 1 ); -} - - - -/*---------------------------------------------------------------------------* - Name: LZMakeHuffTree - Description: - Arguments: srcp - tree8 - tree16 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZMakeHuffTree( const u8* srcp, u32 srcSize, HuffInfo* info8, HuffInfo* info16 ) -{ - HuffInitTable( info8, LENGTH_BITS ); - HuffInitTable( info16, LH_OFFSET_TABLE_BITS ); - - LZCountHuffData( srcp, srcSize, info8, info16 ); - - ConstructHuffTree( info8, LENGTH_BITS ); - ConstructHuffTree( info16, LH_OFFSET_TABLE_BITS ); -} - - -/*---------------------------------------------------------------------------* - Name: ExportHuffTree - Description: - Arguments: dstp - info - bitSize - Returns: - *---------------------------------------------------------------------------*/ -static u32 -ExportHuffTree( u8* dstp, HuffInfo* info, u8 bitSize ) -{ - BitStream stream; - u32 i; - u8* pSize; - u32 tblSize; - - BitStream_Init( &stream, dstp ); - - pSize = dstp; - BitStream_Write( &stream, 0, RoundUp( bitSize, 8 ) ); - - for ( i = 1; i < (u16)( (info->huffTreeTop + 1) * 2); i++ ) - { - u16 flags = (u16)( info->huffTree[ i ] & 0xC000 ); - u32 data = info->huffTree[ i ] | (flags >> (16 - bitSize)); - BitStream_Write( &stream, data, bitSize ); - } - BitStream_Terminate( &stream, 4 ); - - // テーブルサイズの1/4をサイズ領域へ保存 - tblSize = (stream.cnt / 4) - 1; - if ( RoundUp( bitSize, 8 ) == 8 ) - { - if ( tblSize >= 0x100 ) - { - fprintf(stderr, "table size is over!\n"); - } - *pSize = (u8)( tblSize ); - } - else // RoundUp( bitSize, 8 ) == 16 ) - { - if ( tblSize >= 0x10000 ) - { - fprintf(stderr, "table size is over!\n"); - } - *(u16*)pSize = (u16)( tblSize ); - } - return stream.cnt; -} - - -/*---------------------------------------------------------------------------* - Name: ConvertHuff - Description: - Arguments: info - data - stream - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConvertHuff( HuffInfo* info, u16 data, BitStream* stream ) -{ - u16 width = info->huffTable[ data ].PaDepth; - u32 code = info->huffTable[ data ].HuffCode; - - BitStream_Write( stream, code, width ); -} - - -/*---------------------------------------------------------------------------* - Name: LZConvertHuffData - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZConvertHuffData( const u8* srcp, u32 srcSize, u8* dstp, HuffInfo* info8, HuffInfo* info16 ) -{ - u32 srcCnt = 0; - u32 dstCnt = 0; - - BitStream stream; - - BitStream_Init( &stream, dstp ); - - while ( srcCnt < srcSize ) - { - u32 i; - u8 compFlags = srcp[ srcCnt++ ]; // 圧縮の有無を示すフラグ列 - #if BLEND_COMP_FLAG - #else - BitStream_Write( &stream, compFlags, 8 ); - #endif - - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // 圧縮されている、length:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // リトルエンディアン - offset |= srcp[ srcCnt++ ] << 8; - - #if BLEND_COMP_FLAG - ConvertHuff( info8, length | 0x100, &stream ); - #else - ConvertHuff( info8, length, &stream ); - #endif - #if ! defined(LH_ENC_OFFSET_WIDTH) - ConvertHuff( info16, offset, &stream ); - #else - { - u16 offset_bit = 0; - u16 offset_tmp = offset; - while ( offset_tmp > 0 ) - { - offset_tmp >>= 1; - ++offset_bit; - } - ConvertHuff( info16, offset_bit, &stream ); - // offsetが0であることはないので、最上位のビットは省略する - BitStream_Write( &stream, offset & ~(1 << (offset_bit - 1)), offset_bit - 1 ); - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - - ConvertHuff( info8, data, &stream ); - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - - BitStream_Terminate( &stream, 4 ); - return stream.cnt; -} - -/*---------------------------------------------------------------------------* - Name: LHCompWrite - Description: - Arguments: *srcp - size - *dstp - Returns: - *---------------------------------------------------------------------------*/ -u32 -LHCompWrite( const u8 *srcp, s32 srcSize, u8 *dstp ) -{ - static HuffInfo sTree8; - static HuffInfo sTree16; - - u32 tmpSize; - u32 dstSize; - u8* tmpBuf = (u8*)malloc( srcSize * 3 ); - // まずはsrcpを普通にLZ圧縮 - tmpSize = LZCompWrite_( srcp, srcSize, tmpBuf, 2, LH_OFFSET_BITS ); - - // offsetとlengthの集計 - LZMakeHuffTree( tmpBuf, tmpSize, &sTree8, &sTree16 ); - - dstSize = 0; - - // ヘッダの書き込み - if ( srcSize < 0x1000000 && srcSize > 0 ) - { - *(u32*)dstp = LH_CODE_HEADER | ( srcSize << 8 ); - dstSize = 4; - } - else - { - *(u32*)dstp = LH_CODE_HEADER; - *(u32*)&dstp[4] = srcSize; - dstSize = 8; - } - // ハフマンテーブルを出力 - dstSize += ExportHuffTree( &dstp[ dstSize ], &sTree8, LENGTH_BITS ); - dstSize += ExportHuffTree( &dstp[ dstSize ], &sTree16, LH_OFFSET_TABLE_BITS ); - - // 圧縮結果をハフマン符号化しながら出力 - dstSize += LZConvertHuffData( tmpBuf, tmpSize, &dstp[ dstSize ], &sTree8, &sTree16 ); - - return dstSize; -} - - - -typedef struct -{ - u16 huffTable9 [ (1 << LENGTH_BITS) * 2 ]; - u16 huffTable12[ OFFSET_SIZE_MAX * 2 ]; -} -LHContext; - - -/*---------------------------------------------------------------------------* - Name: HuffImportTree - Description: - Arguments: pTable - srcp - bitSize - srcRemainSize - Returns: - *---------------------------------------------------------------------------*/ -static u32 -HuffImportTree( u16* pTable, const u8* srcp, u8 bitSize, u32 srcRemainSize ) -{ - u32 tableSize; - u32 idx = 1; - u32 data = 0; - u32 bitNum = 0; - u32 bitMask = (1 << bitSize) - 1; - u32 srcCnt = 0; - - if ( bitSize > 8 ) - { - tableSize = *(u16*)srcp; - srcp += 2; - srcCnt += 2; - } - else - { - tableSize = *srcp; - srcp += 1; - srcCnt += 1; - } - tableSize = (tableSize + 1) * 4; - if ( srcRemainSize < tableSize ) - { - return tableSize; - } - - while ( srcCnt < tableSize ) - { - while ( bitNum < bitSize ) - { - data <<= 8; - data |= *srcp++; - ++srcCnt; - bitNum += 8; - } - if ( idx < (u32)((1 << bitSize) * 2) ) - { - pTable[ idx++ ] = (u16)( ( data >> (bitNum - bitSize) ) & bitMask ); - } - bitNum -= bitSize; - } - - pTable[ 0 ] = (u16)idx; - return tableSize; -} - - -/*---------------------------------------------------------------------------* - Name: HuffVerifyTable - - Description: ハフマンテーブルの整合性をチェック - - Arguments: pTable ハフマンテーブルへのポインタ - bit ハフマン符号のビット数 - - Returns: 正常なテーブルの場合には TRUE - 不正なテーブルの場合には FALSE - *---------------------------------------------------------------------------*/ -static BOOL -HuffVerifyTable( const void* pTable, u8 bit ) -{ -#if !defined(LH_ENC_OFFSET_WIDTH) - enum { FLAGS_ARRAY_NUM = 8192 / 8 }; /* 1024Byte */ - static u8 end_flags[ FLAGS_ARRAY_NUM ]; -#else - enum { FLAGS_ARRAY_NUM = 1024 / 8 }; /* 128Byte */ - u8 end_flags[ FLAGS_ARRAY_NUM ]; -#endif - u16* treep = (u16*)pTable; - u16* treeStartp = treep + 1; - u32 treeSize = *treep; - u16* treeEndp = (u16*)pTable + treeSize; - u32 i; - u32 idx; - const u16 ofs_mask = (u16)( (1 << (bit - 2)) - 1 ); - const u16 l_mask = (u16)( 1 << (bit - 1) ); - const u16 r_mask = (u16)( 1 << (bit - 2) ); - - for ( i = 0; i < FLAGS_ARRAY_NUM; i++ ) - { - end_flags[ i ] = 0; - } - - if ( treeSize > (1U << (bit + 1)) ) - { - return FALSE; - } - - idx = 1; - treep = treeStartp; - while ( treep < treeEndp ) - { - if ( (end_flags[ idx / 8 ] & (1 << (idx % 8) )) == 0 ) - { - u32 offset = (u32)( ( (*treep & ofs_mask) + 1 ) << 1 ); - u16* nodep = (u16*)((u32)treep & ~0x3) + offset; - - // 終端のアライメント用データは読み飛ばす - if ( *treep == 0 && idx >= treeSize - 4 ) - { - goto next; - } - if ( nodep >= treeEndp ) - { - return FALSE; - } - if ( *treep & l_mask ) - { - u32 left = (idx & ~0x1) + offset; - end_flags[ left / 8 ] |= (u8)( 1 << (left % 8) ); - } - if ( *treep & r_mask ) - { - u32 right = (idx & ~0x1) + offset + 1; - end_flags[ right / 8 ] |= (u8)( 1 << (right % 8) ); - } - } - next: - ++idx; - ++treep; - } - return TRUE; -} - - -typedef struct -{ - const u8* srcp; - u32 cnt; - u32 srcSize; - u32 stream; - u32 stream_len; -} -BitReader; - -static INLINE void -BitReader_Init( BitReader* context, const u8* srcp, u32 srcSize ) -{ - context->srcp = srcp; - context->cnt = 0; - context->stream = 0; - context->stream_len = 0; - context->srcSize = srcSize; -} - -static INLINE s8 -BitReader_Read( BitReader* context ) -{ - s8 bit; - if ( context->stream_len == 0 ) - { - if ( context->cnt > context->srcSize ) - { - return -1; - } - context->stream = context->srcp[context->cnt++]; - context->stream_len = 8; - } - bit = (s8)( (context->stream >> (context->stream_len - 1)) & 0x1 ); - context->stream_len--; - return bit; -} - -static s32 -BitReader_ReadEx( BitReader* context, u8 width ) -{ - s32 data; - - ASSERT( width <= 24 ); - - if ( width == 0 ) - { - return 0; - } - - while ( context->stream_len < width ) - { - if ( context->cnt > context->srcSize ) - { - return -1; - } - context->stream <<= 8; - context->stream |= context->srcp[context->cnt++]; - context->stream_len += 8; - } - data = (s32)( (context->stream >> (context->stream_len - width)) & ((1 << width) - 1) ); - context->stream_len -= width; - return data; -} - - -/*---------------------------------------------------------------------------* - Name: LHCompRead - Description: - Arguments: srcp - size - *dstp - Returns: - *---------------------------------------------------------------------------*/ -s32 -LHCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - static LHContext sContext; - u32 dstSize; - u32 srcCnt = 0; - u32 dstCnt = 0; - BitReader stream; - - if ( srcSize < 4 ) - { - return -1; - } - - // ヘッダの読み込み - dstSize = *(u32*)srcp >> 8; - srcCnt = 4; - if ( dstSize == 0 ) - { - if ( srcSize < 8 ) - { - return -1; - } - dstSize = *(u32*)(srcp + 4); - srcCnt += 4; - } - - // ハフマンテーブルを読む - srcCnt += HuffImportTree( sContext.huffTable9, &srcp[srcCnt], LENGTH_BITS, srcSize - srcCnt ); - if ( srcCnt >= srcSize || (!HuffVerifyTable( sContext.huffTable9, LENGTH_BITS )) ) - { - return -1; - } - - srcCnt += HuffImportTree( sContext.huffTable12, &srcp[srcCnt], LH_OFFSET_TABLE_BITS, srcSize - srcCnt ); - - if ( srcCnt >= srcSize || (!HuffVerifyTable( sContext.huffTable12, LH_OFFSET_TABLE_BITS )) ) - { - return -1; - } - - BitReader_Init( &stream, &srcp[srcCnt], srcSize - srcCnt ); - - while ( dstCnt < dstSize ) - { - u16* nodep = sContext.huffTable9 + 1; - u16 val; - do - { - s8 bit = BitReader_Read( &stream ); - u32 offset = (((*nodep & 0x7F) + 1) << 1) + bit; - - if ( bit < 0 ) - { - return -1; - } - - if ( *nodep & (0x100 >> bit) ) - { - nodep = (u16*)((u32)nodep & ~0x3); - val = *(nodep + offset); - break; - } - else - { - nodep = (u16*)((u32)nodep & ~0x3); - nodep += offset; - } - } while ( 1 ); - - if ( val < 0x100 ) - // 非圧縮データ - { - dstp[dstCnt++] = (u8)val; - } - else - // 圧縮データ - { - #if !defined(LH_ENC_OFFSET_WIDTH) - #define OFFSET_MASK 0x3FF - #define LEAF_FLAG 0x800 - #else - #define OFFSET_MASK 0x07 - #define LEAF_FLAG 0x10 - u16 offset_bit; - #endif - u16 length = (val & 0xFF) + 3; - u16* nodep = sContext.huffTable12 + 1; - do - { - s8 bit = BitReader_Read( &stream ); - u32 offset = (((*nodep & OFFSET_MASK) + 1) << 1) + bit; - - if ( bit < 0 ) - { - return -1; - } - - if ( *nodep & (LEAF_FLAG >> bit) ) - { - nodep = (u16*)((u32)nodep & ~0x3); - val = *(nodep + offset); - break; - } - else - { - nodep = (u16*)((u32)nodep & ~0x3); - nodep += offset; - } - } while ( 1 ); - - #if defined(LH_ENC_OFFSET_WIDTH) - offset_bit = val; - val = 0; - if ( offset_bit > 0 ) - { - val = 1; - while ( --offset_bit > 0 ) - { - val <<= 1; - val |= BitReader_Read( &stream ); - } - } - #endif - val += 1; - - // バッファオーバーランをチェック - if ( dstCnt + length > dstSize ) - { - return -1; - } - if ( dstCnt < val ) - { - return -1; - } - if ( srcCnt + stream.cnt > srcSize ) - { - return -1; - } - - while ( length-- > 0 ) - { - dstp[dstCnt] = dstp[dstCnt - val]; - ++dstCnt; - } - #undef OFFSET_MASK - #undef LEAF_FLAG - } - } - return dstCnt; - - -} - - -//============================================================================== -// -// LRC圧縮/展開 -// -//============================================================================== - -#define LRC_ADAPTIVE // 適応型レンジコーダを使用するかどうか -#define RC_MAX_RANGE 0x80000000 -#define RC_UNIT_BITS 8 // 1バイト単位で出力 -// #define LRC_ENC_OFFSET_WIDTH // NOTE: このオプションでは正常に動作できない。 - // 正確には、展開時に生のbitデータがレンジコードとして先に - // 読まれてしまうので、復元後には次のデータが取り出せない。 - -#if defined( LRC_ADAPTIVE ) - #define TABLE8_ADAPTIVE TRUE -#else - #define TABLE8_ADAPTIVE FALSE -#endif - -#if defined( LRC_ENC_OFFSET_WIDTH ) - #define TABLE16_ADAPTIVE FALSE // bitLenを使用する場合には、境界テーブルが小さいのでofsは静的RCでOK - #define LRC_OFFSET_BITS 15 - #define LRC_OFFSET_TABLE_BITS 5 -#else - #define TABLE16_ADAPTIVE TRUE // bitLenを使用しない場合には、境界テーブルが大きくなるのでofsは動的RCを使用 - #define LRC_OFFSET_BITS 12 - #define LRC_OFFSET_TABLE_BITS LRC_OFFSET_BITS -#endif - -// レンジコーダ用構造体 -typedef struct -{ - u32 *freq; // 出現頻度テーブル (1 << bitSize) * sizeof(u32) Byte - u32 *low_cnt; // LOW境界値テーブル (1 << bitSize) * sizeof(u32) Byte - u32 total; // トータル 4 Byte - u8 bitSize; // ビットサイズ 1 Byte - u8 padding_[1]; // -} -RCCompressionInfo; - -// レンジコーダ状態構造体 -typedef struct -{ - u32 low; - u32 range; - u32 code; // 展開時のみ使用 - u8 carry; // 圧縮時のみ使用 - u32 carry_cnt; // 圧縮時のみ使用 -} -RCState; - -/*---------------------------------------------------------------------------* - Name: RCInitState_ - - Description: RC状態の初期化をおこないます。 - - Arguments: state - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitState_( RCState* state ) -{ - // 開始Rangeが0x80000000なので、初回いきなり桁上げが発生することはない - state->low = 0; - state->range = RC_MAX_RANGE; - state->code = 0; - state->carry = 0; - state->carry_cnt = 0; -} - - -/*---------------------------------------------------------------------------* - Name: RCInitInfo_ - - Description: 静的レンジコーダのテーブル初期化 - すべての出現頻度を0で初期化します。 - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitInfo_( RCCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->bitSize = bitSize; - info->freq = (u32*)malloc( sizeof(u32) * tableSize ); - info->low_cnt = (u32*)malloc( sizeof(u32) * tableSize ); - - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = 0; - info->low_cnt[ i ] = 0; - } - info->total = 0; -} - -/*---------------------------------------------------------------------------* - Name: RCExportTable_ - - Description: 静的RCテーブルを出力します。 - - Arguments: dstp - info - - Returns: 出力データサイズ - *---------------------------------------------------------------------------*/ -static u32 -RCExportTable_( u8* dstp, RCCompressionInfo* info ) -{ - u32 tableSize = (1 << info->bitSize); - u32 cnt = 0; - u32 i; - - // 頻度テーブルの出力(16bitリトルエンディアン) - for ( i = 0; i < tableSize; i++ ) - { - dstp[ cnt++ ] = (u8)( info->freq[ i ] ); - dstp[ cnt++ ] = (u8)( info->freq[ i ] >> 8 ); - } - return cnt; -} - -/*---------------------------------------------------------------------------* - Name: RCImportTable_ - - Description: - - Arguments: info - srcp - srcRemainSize - - Returns: - *---------------------------------------------------------------------------*/ -static u32 -RCImportTable_( RCCompressionInfo* info, const u8* srcp, u32 srcRemainSize ) -{ - u32 tableSize = (1 << info->bitSize); - u32 cnt = 0; - u32 i; - - if ( srcRemainSize < tableSize * sizeof(u16) ) - { - return srcRemainSize; - } - - // 頻度テーブルのインポート(16bitリトルエンディアン) - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = srcp[ cnt ] | ( srcp[ cnt + 1 ] << 8 ); - cnt += 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - for ( i = 1; i < tableSize; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - return cnt; -} - -/*---------------------------------------------------------------------------* - Name: RCNormalizeTable_ - - Description: RCテーブルの正規化 - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCNormalizeTable_( RCCompressionInfo* info ) -{ - u32 tableSize = (1 << info->bitSize); - u32 i; - - // トータルのカウント - info->total = 0; - for ( i = 0; i < tableSize; i++ ) - { - info->total += info->freq[ i ]; - } - - // 正規化 - // 0x10000へ正規化 - #define NORMAL_FREQ 0x10000 - { - f32 rate = (f32)NORMAL_FREQ / info->total; - u32 max_i = 0; - u32 max_freq = 0; - - info->total = 0; - for ( i = 0; i < tableSize; i++ ) - { - u32 orig = info->freq[ i ]; - info->freq[ i ] = (u32)(rate * info->freq[ i ] + 0.5f); - if ( orig != 0 && info->freq[ i ] == 0 ) - { - info->freq[ i ] = 1; - } - - info->total += info->freq[ i ]; - if ( info->freq[ i ] >= max_freq ) - { - max_i = i; - max_freq = info->freq[ i ]; - } - } - // 最も出現頻度の高い値を誤差調整に利用 - if ( info->total > NORMAL_FREQ ) - { - info->freq[ max_i ] -= (info->total - NORMAL_FREQ); - } - else - { - info->freq[ max_i ] += (NORMAL_FREQ - info->total); - } - info->total = NORMAL_FREQ; - } - #undef NORMAL_FREQ - - // low_cntの計算 - info->low_cnt[ 0 ] = 0; - for ( i = 1; i < tableSize; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCountData_ - - Description: LZ圧縮したデータから静的レンジコーダ用のテーブルを作成します。 - - Arguments: srcp - srcSize - info8 - info16 - - Returns: - *---------------------------------------------------------------------------*/ -static void -RCCountData_( const u8* srcp, u32 srcSize, RCCompressionInfo* info8, RCCompressionInfo* info16 ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < srcSize ) - { - u8 compFlags = srcp[ srcCnt++ ]; // 圧縮の有無を示すフラグ列 - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // 圧縮されている、length:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // リトルエンディアン - offset |= (srcp[ srcCnt++ ] << 8); - - #if BLEND_COMP_FLAG - info8->freq[ length | 0x100 ]++; - #else - info8->freq[ length ]++; - #endif - #if !defined( LRC_ENC_OFFSET_WIDTH ) - info16->freq[ offset ]++; - #else - { - u32 offset_bit = 0; - while ( offset != 0 ) - { - ++offset_bit; - offset >>= 1; - } - info16->freq[ offset_bit ]++; - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - info8->freq[ data ]++; - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - - RCNormalizeTable_( info8 ); - RCNormalizeTable_( info16 ); -} - - - -/*---------------------------------------------------------------------------* - Name: RCAInitInfo_ - - Description: 適応型レンジコーダのテーブル初期化 - すべての出現頻度を1で初期化します。 - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAInitInfo_( RCCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->bitSize = bitSize; - info->freq = (u32*)malloc( sizeof(u32) * tableSize ); - info->low_cnt = (u32*)malloc( sizeof(u32) * tableSize ); - - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = 1; - info->low_cnt[ i ] = i; - } - info->total = tableSize; -} - - -/*---------------------------------------------------------------------------* - Name: RCAAddCount_ - - Description: 適応型レンジコーダの頻度テーブルを更新します。 - - Arguments: info - val - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAAddCount_( RCCompressionInfo* info, u16 val ) -{ - u32 i; - u32 tableSize = (1 << info->bitSize); - - info->freq[ val ]++; - info->total++; - for ( i = val + 1; i < tableSize; i++ ) - { - info->low_cnt[ i ]++; - } - - // トータルが最大値を越えた場合には、再構成する。 - if ( info->total >= 0x00010000 ) - { - if ( info->freq[ 0 ] > 1 ) - { - info->freq[ 0 ] = info->freq[ 0 ] / 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - - for ( i = 1; i < tableSize; i++ ) - { - if ( info->freq[ i ] > 1 ) - { - info->freq[ i ] >>= 1; - } - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: ConvertRC - Description: - Arguments: info - data - stream - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConvertRC( RCCompressionInfo* info, u16 data, BitStream* stream, RCState* state, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - u32 temp = state->range / info->total; - u32 prevLow = state->low; - - state->low += info->low_cnt[ data ] * temp; - state->range = info->freq[ data ] * temp; - - if ( adaptive ) - { - // 出現頻度テーブルを更新 - RCAAddCount_( info, data ); - } - - // 桁上がりが発生する場合の処理 - if ( prevLow > state->low ) - { - // キャリーを1くり上げ - state->carry++; - // キャリーと(キャリーカウンタ - 1)個の0x00を出力します。 - if ( state->carry_cnt > 1 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - state->carry = 0x00; - } - while ( state->carry_cnt > 1 ) - { - BitStream_Write( stream, 0x00, RC_UNIT_BITS ); - state->carry_cnt--; - } - } - - // Rangeの上位1バイトが空になったら桁上げ - while ( state->range < MIN_RANGE ) - { - u8 candidate = (u8)( state->low >> 24 ); - // 次のキャリーが0xFFの場合は更に桁上げがあり得るのでcarryを出力せずにcarry_cntだけ増やす - if ( candidate == 0xFF ) - { - state->carry_cnt++; - } - else - // 次のキャリーが0xFFではない場合はcarryを出力する - { - // carryと(carry_cnt - 1)分の0xFFを出力する - if ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - } - while ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, 0xFF, RC_UNIT_BITS ); - state->carry_cnt--; - } - // 新しいcarryに置き換え - state->carry = candidate; - state->carry_cnt = 1; - } - state->low <<= 8; - state->range <<= 8; - } -#undef MIN_RANGE -} - -/*---------------------------------------------------------------------------* - Name: FinalizeRC_ - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static void -FinalizeRC_( BitStream* stream, RCState* state ) -{ - // carryと(carry_cnt - 1)分の0xFFを出力する - if ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - } - while ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, 0xFF, RC_UNIT_BITS ); - state->carry_cnt--; - } - // lowに残ったデータを書き出す - BitStream_Write( stream, state->low >> 24, RC_UNIT_BITS ); - BitStream_Write( stream, state->low >> 16, RC_UNIT_BITS ); - BitStream_Write( stream, state->low >> 8, RC_UNIT_BITS ); - BitStream_Write( stream, state->low , RC_UNIT_BITS ); -} - - -/*---------------------------------------------------------------------------* - Name: LZConvertDataRC - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZConvertDataRC( const u8* srcp, u32 srcSize, u8* dstp, RCCompressionInfo* info8, RCCompressionInfo* info16 ) -{ - u32 srcCnt = 0; - u32 dstCnt = 0; - - BitStream stream; - RCState rcState; - - RCInitState_( &rcState ); - - BitStream_Init( &stream, dstp ); - - while ( srcCnt < srcSize ) - { - u32 i; - u8 compFlags = srcp[ srcCnt++ ]; // 圧縮の有無を示すフラグ列 - - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // 圧縮されている、length:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // リトルエンディアン - offset |= srcp[ srcCnt++ ] << 8; - - // length | 0x100をレンジコーダに掛ける - ConvertRC( info8, length | 0x100, &stream, &rcState, TABLE8_ADAPTIVE ); - - #if !defined( LRC_ENC_OFFSET_WIDTH ) // テーブルサイズが大きいので強制的に適応型 - ConvertRC( info16, offset, &stream, &rcState, TABLE16_ADAPTIVE ); - #else - { - u16 offset_bit = 0; - u16 offset_tmp = offset; - while ( offset_tmp > 0 ) - { - offset_tmp >>= 1; - ++offset_bit; - } - ConvertRC( info16, offset_bit, &stream, &rcState, TABLE16_ADAPTIVE ); - // offsetが0であることはないので、最上位のビットは省略する - BitStream_Write( &stream, offset & ~(1 << (offset_bit - 1)), offset_bit - 1 ); - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - - ConvertRC( info8, data, &stream, &rcState, TABLE8_ADAPTIVE ); - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - // carryとlowに残ったデータを吐き出す - FinalizeRC_( &stream, &rcState ); - - BitStream_Terminate( &stream, 4 ); - return stream.cnt; -} - - -/*---------------------------------------------------------------------------* - Name: LRCCompWrite - - Description: - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -u32 LRCCompWrite( const u8* srcp, u32 srcSize, u8* dstp ) -{ - RCCompressionInfo sRCInfo8; - RCCompressionInfo sRCInfo16; - - u32 tmpSize; - u32 dstSize; - u8* tmpBuf = (u8*)malloc( srcSize * 3 ); - // まずはsrcpを普通にLZ圧縮 - tmpSize = LZCompWrite_( srcp, srcSize, tmpBuf, 2, LRC_OFFSET_BITS ); - - // テーブル初期化 - RCInitInfo_( &sRCInfo8, LENGTH_BITS ); - RCInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); - - dstSize = 0; - - // ヘッダの書き込み - if ( srcSize < 0x1000000 && srcSize > 0 ) - { - *(u32*)dstp = LRC_CODE_HEADER | ( srcSize << 8 ); - dstSize = 4; - } - else - { - *(u32*)dstp = LRC_CODE_HEADER; - *(u32*)&dstp[4] = srcSize; - dstSize = 8; - } - - // 静的レンジコーダの頻度表を作成だけしておく(使用するかどうかはオプション次第) - RCCountData_( tmpBuf, tmpSize, &sRCInfo8, &sRCInfo16 ); - -#if TABLE8_ADAPTIVE - RCAInitInfo_( &sRCInfo8, LENGTH_BITS ); -#else // if (! TABLE8_ADAPTIVE ) - dstSize += RCExportTable_( &dstp[ dstSize ], &sRCInfo8 ); -#endif - -#if TABLE16_ADAPTIVE - RCAInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); -#else // if (! TABLE16_ADAPTIVE ) - dstSize += RCExportTable_( &dstp[ dstSize ], &sRCInfo16 ); -#endif - - // 圧縮結果をレンジコーダ符号化しながら出力 - dstSize += LZConvertDataRC( tmpBuf, tmpSize, &dstp[ dstSize ], &sRCInfo8, &sRCInfo16 ); - - return dstSize; -} - - - -/*---------------------------------------------------------------------------* - Name: SearchRC_ - - Description: - - Arguments: info - code - range - low - - Returns: - *---------------------------------------------------------------------------*/ -static u16 -SearchRC_( RCCompressionInfo* info, u32 code, u32 range, u32 low ) -{ - u32 tableSize = (1 << info->bitSize); - u32 codeVal = code - low; - u32 i; - u32 temp = range / info->total; - u32 tempVal = codeVal / temp; - -#if 0 - // TODO: とりあえず線形探索、二分探索にするべき - for ( i = 0; i < tableSize - 1; i++ ) - { - if ( info->low_cnt[ i + 1 ] > tempVal ) - { - while ( info->freq[ i ] == 0 ) - { - --i; - } - return (u16)i; - } - } - return (u16)( (1 << info->bitSize) - 1 ); -#else - // 二分探索 - u32 left = 0; - u32 right = tableSize - 1; - - while ( left < right ) - { - i = (left + right) / 2; - - if ( info->low_cnt[ i ] > tempVal ) - { - right = i; - } - else - { - left = i + 1; - } - } - - i = left; - while ( info->low_cnt[ i ] > tempVal ) - { - --i; - } - return (u16)i; - -#endif -} - - - -static u16 -RCGetDate_( BitReader* stream, RCCompressionInfo* info, RCState* state, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - u16 val = SearchRC_( info, state->code, state->range, state->low ); - - { - u32 tmp; - tmp = state->range / info->total; - state->low += info->low_cnt[ val ] * tmp; - state->range = info->freq[ val ] * tmp; - } - - // 出現頻度テーブルを更新 - if ( adaptive ) - { - RCAAddCount_( info, val ); - } - while ( state->range < MIN_RANGE ) - { - state->code <<= 8; - state->code += BitReader_ReadEx( stream, 8 ); - state->range <<= 8; - state->low <<= 8; - } - return val; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: LRCCompRead - - Description: - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 LRCCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - RCCompressionInfo sRCInfo8; - RCCompressionInfo sRCInfo16; - RCState rcState; - - u32 dstSize; - u32 srcCnt = 0; - u32 dstCnt = 0; - BitReader stream; - - if ( srcSize < 4 ) - { - return -1; - } - - // ヘッダの読み込み - dstSize = *(u32*)srcp >> 8; - srcCnt = 4; - if ( dstSize == 0 ) - { - if ( srcSize < 8 ) - { - return -1; - } - dstSize = *(u32*)(srcp + 4); - srcCnt += 4; - } - - // RC頻度テーブルを読む -#if TABLE8_ADAPTIVE - RCAInitInfo_( &sRCInfo8, LENGTH_BITS ); -#else - RCInitInfo_( &sRCInfo8, LENGTH_BITS ); - srcCnt += RCImportTable_( &sRCInfo8, &srcp[ srcCnt ], srcSize - srcCnt ); -#endif -#if TABLE16_ADAPTIVE - RCAInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); -#else - RCInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); - srcCnt += RCImportTable_( &sRCInfo16, &srcp[ srcCnt ], srcSize - srcCnt ); -#endif - - BitReader_Init( &stream, &srcp[ srcCnt ], srcSize - srcCnt ); - - if ( srcSize - srcCnt <= 4 ) - { - // 最低でも初回のコード分の4Byteは必要 - return -1; - } - - RCInitState_( &rcState ); - - rcState.code = (u32)( (BitReader_ReadEx( &stream, 8 ) << 24) | - (BitReader_ReadEx( &stream, 8 ) << 16) | - (BitReader_ReadEx( &stream, 8 ) << 8) | - (BitReader_ReadEx( &stream, 8 ) ) ); - - while ( dstCnt < dstSize ) - { - u16 val = (u16)( RCGetDate_( &stream, &sRCInfo8, &rcState, TABLE8_ADAPTIVE ) ); - - if ( val < 0x100 ) - // 非圧縮データ - { - dstp[ dstCnt++ ] = (u8)val; - } - else - // 圧縮データ - { - u16 length = (val & 0xFF) + 3; - val = (u16)( RCGetDate_( &stream, &sRCInfo16, &rcState, TABLE16_ADAPTIVE ) ); - - #if defined( LRC_ENC_OFFSET_WIDTH ) - { - u16 offset_bit = val; - val = 0; - if ( offset_bit > 0 ) - { - val = 1; - while ( --offset_bit > 0 ) - { - val <<= 1; - val |= BitReader_Read( &stream ); - } - } - } - #endif - val += 1; - - // バッファオーバーランをチェック - if ( dstCnt + length > dstSize ) - { - return -1; - } - if ( dstCnt < val ) - { - return -1; - } - if ( srcCnt + stream.cnt > srcSize ) - { - return -1; - } - - while ( length-- > 0 ) - { - dstp[ dstCnt ] = dstp[ dstCnt - val ]; - ++dstCnt; - } - } - } - - return dstCnt; -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h deleted file mode 100644 index 72dc2e5b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h +++ /dev/null @@ -1,55 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: multipleCompLib.h - - Copyright 2007 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$ - *---------------------------------------------------------------------------*/ - -// nitroCompLib.h : nitroCompLib.DLL のメイン ヘッダー ファイル -// - -#ifndef __MULTIPLE_COMPLIB_H__ -#define __MULTIPLE_COMPLIB_H__ - -//=========================================================================================== -// インクルード -//=========================================================================================== -#include -#include -#include -#include -#include "types.h" - -//=========================================================================================== -// プロトタイプ宣言 -//=========================================================================================== -// C++用 -#ifdef __cplusplus -extern "C" -{ -#endif - -s32 LHCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -u32 LHCompWrite( const u8* srcp, s32 size, u8* dstp ); - -s32 LRCCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -u32 LRCCompWrite( const u8* srcp, u32 size, u8* dstp ); - - -#ifdef __cplusplus -} -#endif - -#endif // __MULTIPLEX_COMPLIB_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c deleted file mode 100644 index 135f7a45..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c +++ /dev/null @@ -1,2282 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: nitroCompLib.c - - Copyright 2007 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 "nitroCompLib.h" - -#undef _DEBUG -#ifdef _DEBUG -#define new DEBUG_NEW -#define DEBUG_PRINT -// #define DEBUG_PRINT_DIFFFILT -#define DEBUG_PRINT_RL -// #define DEBUG_PRINT_HUFF -// #define DEBUG_PRINT_LZ -// #define DEBUG_PRINT_DATAMATCH -#endif - - -#ifdef __cplusplus -#define EXTERN extern "C" -#define STATIC -#else -#define EXTERN -#define STATIC static -#endif - - -#ifdef DEBUG_PRINT -#define dbg_printf fprintf -#else -#define dbg_printf dummy -#endif - -#ifdef DEBUG_PRINT_DIFFFILT -#define dbg_printf_dif fprintf -#else -#define dbg_printf_dif dummy -#endif - -#ifdef DEBUG_PRINT_RL -#define dbg_printf_rl fprintf -#else -#define dbg_printf_rl dummy -#endif - -#ifdef DEBGU_PRINT_HUFF -#define dbg_printf_huff fprintf -#else -#define dbg_printf_huff dummy -#endif - -#ifdef DEBGU_PRINT_LZ -#define dbg_printf_lz fprintf -#else -#define dbg_printf_lz dummy -#endif - -#ifdef DEBUG_PRINT_DATAMATCH -#define dbg_printf_match fprintf -#else -#define dbg_printf_match dummy -#endif - -void dummy(void *fp, ...) -{ -} - - -//================================================================================== -// グローバル変数宣言 -//================================================================================== -static u8 *pCompBuf[2]; // 圧縮処理中に用いるダブルバッファ -static u8 compBufNo = 1; // 有効なダブルバッファを示す - -//================================================================================== -// プロトタイプ宣言 -//================================================================================== -static u32 RawWrite(u8 *srcp, u32 size, u8 *dstp); -static u32 DiffFiltWrite(u8 *srcp, u32 size, u8 *dstp, u8 diffBitSize); -static u32 RLCompWrite(u8 *srcp, u32 size, u8 *dstp); -static u32 LZCompWriteEx(u8 *srcp, u32 size, u8 *dstp, u8 lzSearchOffset, BOOL ex_available); -static u32 HuffCompWrite(u8 *srcp, u32 size, u8 *dstp, u8 huffBitSize); - -static s32 RawRead ( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -static s32 DiffFiltRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 diffBitSize ); -static s32 RLCompRead ( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -static s32 LZCompReadEx( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, BOOL ex_available ); -static s32 HuffCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 huffBitSize ); - -/* -//================================================================================== -// DLL用関数 -//================================================================================== -EXTERN BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved) -{ - return TRUE; -} -*/ - -//---------------------------------------------------------------------------------- -// 圧縮後のデータを置くためのメモリ領域を確保 -// 圧縮前のデータの2倍の領域を確保する -//---------------------------------------------------------------------------------- -EXTERN u8 * STDCALL nitroCompMalloc(u32 size) -{ - return (u8 *)malloc(size * 3 + 512); -} - -//---------------------------------------------------------------------------------- -// 圧縮後のデータを置いていたメモリ領域を解放 -//---------------------------------------------------------------------------------- -EXTERN void STDCALL nitroCompFree(u8 *p) -{ - if (p != NULL) - { - free((void *)p); - p = NULL; - } -} - -//------------------------------------------------------------ -// データの圧縮 -//------------------------------------------------------------ -EXTERN u32 STDCALL nitroCompress( const u8 *srcp, u32 srcSize, u8 *dstp, char *compList, u8 rawHeaderFlag ) -{ - char *pCompList; // compListの現在の参照ポイント - u32 dataSize, nextDataSize; // 圧縮データのサイズ(バイト単位) - u8 *pReadBuf; // 圧縮データの先頭番地を指すポインタ - u8 bitSize; // 差分フィルタ,ハフマン符号化の適用単位 - char str[16]; - u16 i, j; - u8 lzSearchOffset; - -// pCompBuf[0] = (u8 *)malloc(srcSize*2 + 4 + 256*2); // 最悪のハフマンが size*2 + 4 + 256*2 なので、 -// pCompBuf[1] = (u8 *)malloc(srcSize*2 + 4 + 256*2); // その他の圧縮やデータヘッダ追加で、不足する可能性あり - pCompBuf[0] = (u8 *)malloc(srcSize * 3 + 256 * 2); - pCompBuf[1] = (u8 *)malloc(srcSize * 3 + 256 * 2); - pReadBuf = pCompBuf[0]; - compBufNo = 1; // 重要!! これをしないと2回目にnitroCompressを呼び出したときにおかしくなる - - // malloc チェック - if (pCompBuf[0] == NULL || pCompBuf[1] == NULL) - { - fprintf(stderr, "Error: Memory is not enough.\n"); - exit(1); - } - - dataSize = srcSize; - - // NULLヘッダ(圧縮前のデータ用の、擬似ヘッダ) の追加処理 - if (rawHeaderFlag) - { - dataSize += 4; - *(u32 *)pReadBuf = srcSize << 8 | 0; // データ・ヘッダ - memcpy(&pReadBuf[4], srcp, srcSize); - } - else - { - memcpy(pReadBuf, srcp, srcSize); - } - - pCompList = compList; // 圧縮順序を格納した配列をポイント - - // 圧縮順序を格納した配列に要素がある限り、ループ - while (1) - { - switch (*pCompList) - { - case 'd': - { - pCompList++; // 'd' の次には、8 か 16 - str[0] = *pCompList; - if (*pCompList == '1') - { - pCompList++; - str[1] = *pCompList; - str[2] = '\n'; - } - bitSize = atoi(str); // 差分フィルタの適用単位を格納 - str[0] = str[1] = '\n'; - - dbg_printf(stderr, "nitroCompress Diff %d\n", bitSize); - - if ((bitSize == 16) && (dataSize & 0x01)) - { - fprintf(stderr, "16-bit differencial filter must be 2-byte allignment.\n"); - exit(1); - } - nextDataSize = DiffFiltWrite(pReadBuf, dataSize, pCompBuf[compBufNo], bitSize); - } - break; - - case 'r': - { - dbg_printf(stderr, "nitroCompress RL\n"); - - nextDataSize = RLCompWrite(pReadBuf, dataSize, pCompBuf[compBufNo]); - } - break; - - case 'l': - case 'L': - { - BOOL ex_format = (*pCompList == 'L')? TRUE : FALSE; - - pCompList++; - i = 0; - while (isdigit(*pCompList)) - { - str[i] = *pCompList; - pCompList++; - i++; - if (i == 15) - { - break; - } - } - str[i] = '\n'; - pCompList--; - lzSearchOffset = (u8)atoi(str); // 大きな値は切り捨てて丸め - for (j = 0; j < i; j++) - { - str[j] = '\n'; - } - dbg_printf(stderr, "nitroCompress L %d\n", lzSearchOffset); - - nextDataSize = LZCompWriteEx(pReadBuf, dataSize, pCompBuf[compBufNo], lzSearchOffset, ex_format); - } - break; - - case 'h': - { - pCompList++; // 'h' の次には、4 か 8 - str[0] = *pCompList; - str[1] = '\n'; - bitSize = atoi(str); // 4 or 8 - str[0] = '\n'; - - dbg_printf(stderr, "nitroCompress Huff %d\n", bitSize); - - nextDataSize = HuffCompWrite(pReadBuf, dataSize, pCompBuf[compBufNo], bitSize); - } - break; - //----------------------------------------- - // 圧縮終了 (*CompTypeBufp が NULL) - default: - { - dbg_printf(stderr, "nitroCompress raw\n"); - - RawWrite(pReadBuf, dataSize, dstp); - if (pCompBuf[0] != NULL) - { - free((void *)pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dataSize; - } - } - // もう一周 - pReadBuf = pCompBuf[compBufNo]; - compBufNo ^= 0x01; - dataSize = nextDataSize; - pCompList++; - } -} - - -//=========================================================================== -// 圧縮データのコピー -//=========================================================================== -static u32 RawWrite(u8 *srcp, u32 size, u8 *dstp) -{ - u32 i; - - dbg_printf(stderr, "RawWrite\tsize=%d\n\n", size); - - size = (size + 0x3) & ~0x3; - for (i = 0; i < size - 1; i++) - { - *dstp = *srcp; - dstp++; - srcp++; - } - *dstp = *srcp; - - return size; -} - - -//=========================================================================== -// 差分フィルタ -//=========================================================================== -static u32 DiffFiltWrite(u8 *srcp, u32 size, u8 *dstp, u8 diffBitSize) -{ - u32 DiffCount; // 圧縮データのバイト数 - u32 i; - - u16 *src16p = (u16 *)srcp; - u16 *dst16p = (u16 *)dstp; - - dbg_printf_dif(stderr, "DiffFiltWrite\tsize=%d\tdiffBitSize=%d\n", size, diffBitSize); - - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | (DIFF_CODE_HEADER | diffBitSize / 8); // データ・ヘッダ - DiffCount = 4; - } - else - { - *(u32 *)dstp = (DIFF_CODE_HEADER | diffBitSize / 8); // データ・ヘッダ - *(u32 *)(dstp + 4) = size; - DiffCount = 8; - } - - if (diffBitSize == 8) - { -#ifdef DEBUG_PRINT_DIFFFILT - for (i = 0; i < 16; i++) - { - dbg_printf_dif(stderr, "srcp[%d] = %x\n", i, srcp[i]); - } -#endif - dstp[DiffCount] = srcp[0]; // 先頭データのみ差分無し - DiffCount++; - for (i = 1; i < size; i++, DiffCount++) - { - dbg_printf_dif(stderr, "dstp[%x] = srcp[%d]-srcp[%d] = %x - %x = %x\n", - DiffCount, i, i - 1, srcp[i], srcp[i - 1], srcp[i] - srcp[i - 1]); - - dstp[DiffCount] = srcp[i] - srcp[i - 1]; // 差分データ格納 - } - } - else // 16ビットサイズ - { - dst16p[DiffCount / 2] = src16p[0]; - DiffCount += 2; - for (i = 1; i < size / 2; i++, DiffCount += 2) - { - dst16p[DiffCount / 2] = src16p[i] - src16p[i - 1]; - } - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((DiffCount + i) & 0x3) - { - dstp[DiffCount + i] = 0; - i++; - } - - return DiffCount; -} - - -//=========================================================================== -// ランレングス符号化 (バイト単位) -//=========================================================================== -static u32 RLCompWrite(u8 *srcp, u32 size, u8 *dstp) -{ - u32 RLDstCount; // 圧縮データのバイト数 - u32 RLSrcCount; // 圧縮対象データの処理済データ量(バイト単位) - u8 RLCompFlag; // ランレングス符号化を行う場合1 - u8 runLength; // ランレングス - u8 rawDataLength; // ランになっていないデータのレングス - u32 i; - - u8 *startp; // 一回の処理ループにおける、圧縮対象データの先頭をポイント - - dbg_printf_rl(stderr, "RLCompWrite\tsize=%d\n", size); - - // データヘッダ (サイズは展開後のもの) - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | RL_CODE_HEADER; // データ・ヘッダ - RLDstCount = 4; - } - else - // サイズが24bitに収まらない場合には拡張形式のヘッダとなる - { - *(u32 *)dstp = RL_CODE_HEADER; - *(u32 *)(dstp + 4) = size; - RLDstCount = 8; - } - - RLSrcCount = 0; - rawDataLength = 0; - RLCompFlag = 0; - - while (RLSrcCount < size) - { - startp = &srcp[RLSrcCount]; // 圧縮対象データの設定 - - for (i = 0; i < 128; i++) // 7ビットで表現できるデータ量が 0~127 - { - // 圧縮対象データの末尾に到達 - if (RLSrcCount + rawDataLength >= size) - { - rawDataLength = (u8)(size - RLSrcCount); - break; - } - - if (RLSrcCount + rawDataLength + 2 < size) - { - if (startp[i] == startp[i + 1] && startp[i] == startp[i + 2]) - { - RLCompFlag = 1; - break; - } - } - rawDataLength++; - } - - // 符号化しないデータを格納 - // データ長格納バイトの8ビット目が0なら、符号化しないデータ系列 - // データ長は -1 した数になるので、0-127 が 1-128 となる - if (rawDataLength) - { - dstp[RLDstCount++] = rawDataLength - 1; // "データ長-1" 格納(7ビット) - for (i = 0; i < rawDataLength; i++) - { - dstp[RLDstCount++] = srcp[RLSrcCount++]; - } - rawDataLength = 0; - } - - // ランレングス符号化 - if (RLCompFlag) - { - runLength = 3; - for (i = 3; i < 128 + 2; i++) - { - // 圧縮用データの末尾に到達 - if (RLSrcCount + runLength >= size) - { - runLength = (u8)(size - RLSrcCount); - break; - } - - // ランが途切れた場合 - if (srcp[RLSrcCount] != srcp[RLSrcCount + runLength]) - { - break; - } - // ラン継続中 - runLength++; - } - - // データ長格納バイトの8ビット目が1なら、符号化したデータ系列 - dstp[RLDstCount++] = 0x80 | (runLength - 3); // 3の下駄をはかせて、3~130を格納 - dstp[RLDstCount++] = srcp[RLSrcCount]; - RLSrcCount += runLength; - RLCompFlag = 0; - } - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((RLDstCount + i) & 0x3) - { - dstp[RLDstCount + i] = 0; - i++; - } - - return RLDstCount; -} - - -//=========================================================================== -// LZ77圧縮 -//=========================================================================== - -#define LZ_OFFSET_BITS 12 -#define LZ_OFFSET_SIZE (1<LZByteTable[i] = -1; - info->LZEndTable[i] = -1; - } - info->WindowPos = 0; - info->WindowLen = 0; -} - -/*---------------------------------------------------------------------------* - Name: SlideByte - Description: 辞書を1バイトスライド - Arguments: *srcp - work - Returns: None. - *---------------------------------------------------------------------------*/ -static void SlideByte(LZCompressInfo * info, const u8 *srcp) -{ - s16 offset; - u8 in_data = *srcp; - u16 insert_offset; - - s16 *const LZByteTable = info->LZByteTable; - s16 *const LZEndTable = info->LZEndTable; - s16 *const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (windowLen == LZ_OFFSET_SIZE) - { - u8 out_data = *(srcp - LZ_OFFSET_SIZE); - if ((LZByteTable[out_data] = LZOffsetTable[LZByteTable[out_data]]) == -1) - { - LZEndTable[out_data] = -1; - } - insert_offset = windowPos; - } - else - { - insert_offset = windowLen; - } - - offset = LZEndTable[in_data]; - if (offset == -1) - { - LZByteTable[in_data] = insert_offset; - } - else - { - LZOffsetTable[offset] = insert_offset; - } - LZEndTable[in_data] = insert_offset; - LZOffsetTable[insert_offset] = -1; - - if (windowLen == LZ_OFFSET_SIZE) - { - info->WindowPos = (u16)((windowPos + 1) % LZ_OFFSET_SIZE); - } - else - { - info->WindowLen++; - } -} - -static void LZSlide(LZCompressInfo * info, const u8 *srcp, u32 n) -{ - u32 i; - - for (i = 0; i < n; i++) - { - SlideByte(info, srcp++); - } -} - - -/*---------------------------------------------------------------------------* - Name: LZCompWriteEx - - Description: LZ77圧縮を行なう関数(最大lengthの拡張) - - Arguments: srcp 圧縮元データへのポインタ - size 圧縮元データサイズ - dstp 圧縮先データへのポインタ - 圧縮元データよりも大きいサイズのバッファが必要です。 - - Returns: 圧縮後のデータサイズ。 - 圧縮後のデータが圧縮前よりも大きくなる場合には圧縮を中断し0を返します。 - *---------------------------------------------------------------------------*/ -static u32 LZCompWriteEx(u8 *srcp, u32 size, u8 *dstp, u8 lzSearchOffset, BOOL ex_available ) -{ - static LZCompressInfo sLZInfo; - - u32 LZDstCount; // 圧縮データのバイト数 - u8 LZCompFlags; // 圧縮の有無を示すフラグ系列 - u8 *LZCompFlagsp; // LZCompFlags を格納するメモリ領域をポイント - u16 lastOffset; // 一致データまでのオフセット (その時点での最長一致データ) - u32 lastLength; // 一致データ長 (その時点での最長一致データ) - u8 i; - const u32 MAX_LENGTH = (ex_available)? (0xFFFF + 0xFF + 0xF + 3) : (0xF + 3); - - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | LZ_CODE_HEADER | (ex_available? 1 : 0 ); // データ・ヘッダ - dstp += 4; - LZDstCount = 4; - } - else - { - *(u32 *)dstp = LZ_CODE_HEADER | (ex_available? 1 : 0); - *(u32 *)(dstp + 4) = size; - dstp += 8; - LZDstCount = 8; - } - LZInitTable( &sLZInfo ); - - while (size > 0) - { - LZCompFlags = 0; - LZCompFlagsp = dstp++; // フラグ系列の格納先 - LZDstCount++; - - // フラグ系列が8ビットデータとして格納されるため、8回ループ - for (i = 0; i < 8; i++) - { - LZCompFlags <<= 1; // 初回 (i=0) は特に意味はない - if (size <= 0) - { - // 終端に来た場合はフラグを最後までシフトさせてから終了 - continue; - } - - if ( (lastLength = SearchLZ(&sLZInfo, srcp, size, &lastOffset, lzSearchOffset, MAX_LENGTH)) != 0) - { - u32 length; - // 圧縮可能な場合はフラグを立てる - LZCompFlags |= 0x1; - - if ( ex_available ) - { - if ( lastLength >= 0xFF + 0xF + 3 ) - { - length = lastLength - 0xFF - 0xF - 3; - *dstp++ = (u8)( 0x10 | (length >> 12) ); - *dstp++ = (u8)( length >> 4 ); - LZDstCount += 2; - } - else if ( lastLength >= 0xF + 2 ) - { - length = lastLength - 0xF - 2; - *dstp++ = (u8)( length >> 4 ); - LZDstCount += 1; - } - else - { - length = lastLength - 1; - } - } - else - { - length = lastLength - 3; - } - // オフセットは上位4ビットと下位8ビットに分けて格納 - *dstp++ = (u8)( length << 4 | (lastOffset - 1) >> 8 ); - *dstp++ = (u8)( (lastOffset - 1) & 0xFF ); - LZDstCount += 2; - LZSlide( &sLZInfo, srcp, lastLength); - srcp += lastLength; - size -= lastLength; - } - else - { - // 圧縮なし - LZSlide(&sLZInfo, srcp, 1); - *dstp++ = *srcp++; - size--; - LZDstCount++; - } - } // 8回ループ終了 - *LZCompFlagsp = LZCompFlags; // フラグ系列を格納 - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((LZDstCount + i) & 0x3) - { - *dstp++ = 0; - i++; - } - - return LZDstCount; -} - - -//-------------------------------------------------------- -// LZ77圧縮でスライド窓の中から最長一致列を検索します。 -// Arguments: startp データの開始位置を示すポインタ -// nextp 検索を開始するデータのポインタ -// remainSize 残りデータサイズ -// offset 一致したオフセットを格納する領域へのポインタ -// Return : 一致列が見つかった場合は TRUE -// 見つからなかった場合は FALSE -//-------------------------------------------------------- -static u32 SearchLZ( const LZCompressInfo * info, const u8 *nextp, u32 remainSize, u16 *offset, u16 minOffset, u32 maxLength ) -{ - const u8 *searchp; - const u8 *headp, *searchHeadp; - u16 currOffset; - u32 currLength = 2; - u32 tmpLength; - s32 w_offset; - const s16 * const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (remainSize < 3) - { - return 0; - } - - w_offset = info->LZByteTable[*nextp]; - - while (w_offset != -1) - { - if (w_offset < windowPos) - { - searchp = nextp - windowPos + w_offset; - } - else - { - searchp = nextp - windowLen - windowPos + w_offset; - } - - /* 無くても良いが、僅かに高速化する */ - if (*(searchp + 1) != *(nextp + 1) || *(searchp + 2) != *(nextp + 2)) - { - w_offset = LZOffsetTable[w_offset]; - continue; - } - - if (nextp - searchp < minOffset) - { - // VRAMは2バイトアクセスなので (VRAMからデータを読み出す場合があるため)、 - // 検索対象データは2バイト前からのデータにしなければならない。 - // - // オフセットは12ビットで格納されるため、4096以下 - break; - } - tmpLength = 3; - searchHeadp = searchp + 3; - headp = nextp + 3; - - while (((u32)(headp - nextp) < remainSize) && (*headp == *searchHeadp)) - { - headp++; - searchHeadp++; - tmpLength++; - - // 一致長が最大なので、検索を終了する - if (tmpLength == maxLength) - { - break; - } - } - if (tmpLength > currLength) - { - // 最大長オフセットを更新 - currLength = tmpLength; - currOffset = (u16)(nextp - searchp); - if (currLength == maxLength) - { - // 一致長が最大なので、検索を終了する。 - break; - } - } - w_offset = LZOffsetTable[w_offset]; - } - - if (currLength < 3) - { - return 0; - } - *offset = currOffset; - return currLength; -} - - -//=========================================================================== -// ハフマン符号化 -//=========================================================================== -#define HUFF_END_L 0x80 -#define HUFF_END_R 0x40 - -typedef struct -{ - u16 No; // データNo - s16 PaNo; // 親No - u32 Freq; // 出現頻度 - s16 ChNo[2]; // 子No (0: 左側, 1: 右側) - u16 PaDepth; // 親ノードの深さ - u16 LeafDepth; // 葉までの深さ - u32 HuffCode; // ハフマン符号 - u8 Bit; // ノードのビットデータ - u16 HWord; // 各中間節点において、その節点をルートとする部分木を HuffTree 格納に必要なメモリ量 -} -HuffData; - -typedef struct -{ - u8 leftOffsetNeed; // 左の子節点へのオフセットが必要なら1 - u8 rightOffsetNeed; // 右の子節点へのオフセットが必要なら1 - u16 leftNodeNo; // 左の子節点No - u16 rightNodeNo; // 右の子節点No -} -HuffTreeCtrlData; - -// ハフマンワークバッファ構成 -typedef struct -{ - HuffData huffTable[ 512 ]; // huffTable[ 512 ]; 12288B - u8 huffTree [ 256 * 2 ]; // huffTree[ 256 * 2 ]; 512B - HuffTreeCtrlData huffTreeCtrl[ 256 ]; // huffTreeCtrl[ 256 ]; 1536B - u16 huffTreeTop; // - u8 bitSize; // - u8 padding_[1]; // -} -HuffCompressionInfo; // 計 14340B - -static void HuffInitTable( HuffCompressionInfo* info, u8 bitSize ); -static void HuffCountData( HuffData* table, const u8 *srcp, u32 size, u8 bitSize ); -static void HuffConstructTree( HuffCompressionInfo *info, u8 bitSize ); -static u32 HuffExportTree( u8* dstp, HuffCompressionInfo* info ); -static u32 HuffConvertData( const HuffData *table, const u8* srcp, u8* dstp, u32 srcSize, u8 bitSize ); - -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ); -static void HuffAddCodeToTable ( HuffData *table, u16 nodeNo, u32 paHuffCode ); -static u16 HuffAddCountHWordToTable ( HuffData *table, u16 nodeNo ); - -static u16 HuffMakeNode ( HuffData* table, u8 bitSize ); -static void HuffMakeHuffTree ( HuffCompressionInfo* info, u16 rootNo ); -static void HuffMakeSubsetHuffTree ( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static BOOL HuffRemainingNodeCanSetOffset( HuffCompressionInfo* info, u16 costHWord ); -static void HuffSetOneNodeOffset ( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); - -HuffCompressionInfo sHuffCompressionInfo; - -/*---------------------------------------------------------------------------* - Name: HuffCompWrite - Description: ハフマン圧縮 - Arguments: *srcp - size - *dstp - huffBitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static u32 HuffCompWrite(u8 *srcp, u32 size, u8 *dstp, u8 huffBitSize) -{ - u32 huffDstCount; // 圧縮データのバイト数 - u32 offset; - HuffCompressionInfo* info = &sHuffCompressionInfo; - - u16 huffDataNum = 1 << huffBitSize; // 8->256, 4->16 - - // テーブル初期化 - HuffInitTable( info, huffBitSize ); - - // 出現頻度チェック - HuffCountData( info->huffTable, srcp, size, huffBitSize ); - - // ハフマン符号テーブル作成 - HuffConstructTree( info, huffBitSize ); - - // データ・ヘッダ - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | HUFF_CODE_HEADER | huffBitSize; - offset = 4; - } - else - { - *(u32 *)dstp = HUFF_CODE_HEADER | huffBitSize; - *(u32 *)(dstp + 4) = size; - offset = 8; - } - huffDstCount = offset; - - // ハフマンテーブルをバイナリ出力 - huffDstCount += HuffExportTree( &dstp[ huffDstCount ], info ); - - // ハフマンテーブルによるデータ変換 - huffDstCount += HuffConvertData( info->huffTable, srcp, &dstp[ huffDstCount ], size, huffBitSize ); - - return huffDstCount; -} - - - - -/*---------------------------------------------------------------------------* - Name: HuffInitTable - Description: ハフマンテーブルの初期化 - Arguments: table - size - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffInitTable( HuffCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->huffTreeTop = 1; - info->bitSize = bitSize; - - // huffTableを初期化 - { - HuffData* table = info->huffTable; - - const HuffData HUFF_TABLE_INIT_DATA = { 0, 0, 0, {-1, -1}, 0, 0, 0, 0, 0 }; - for ( i = 0; i < tableSize * 2U; i++ ) - { - table[ i ] = HUFF_TABLE_INIT_DATA; - table[ i ].No = (u16)i; - } - } - - // huffTree, huffTreeCtrlを初期化 - { - const HuffTreeCtrlData HUFF_TREE_CTRL_INIT_DATA = { 1, 1, 0, 0 }; - u8* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - - for ( i = 0; i < 256; i++ ) - { - huffTree[ i * 2 ] = 0; - huffTree[ i * 2 + 1 ] = 0; - huffTreeCtrl[ i ] = HUFF_TREE_CTRL_INIT_DATA; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: HuffCountData - Description: 出現頻度のカウント - Arguments: table - *srcp - size - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffCountData( HuffData* table, const u8 *srcp, u32 size, u8 bitSize ) -{ - u32 i; - u8 tmp; - - if ( bitSize == 8 ) - { - for ( i = 0; i < size; i++ ) - { - table[ srcp[ i ] ].Freq++; // 8ビット符号化 - } - } - else - { - for ( i = 0; i < size; i++ ) // 4ビット符号化 - { - tmp = (srcp[ i ] & 0xf0) >> 4; - table[ tmp ].Freq++; // 上位4ビットから先に格納// どっちでもいい - tmp = srcp[ i ] & 0x0f; - table[ tmp ].Freq++; // 問題は符号化のとこ - } - } -} - - -/*---------------------------------------------------------------------------* - Name: HuffConstructTree - Description: ハフマンツリーを構築 - Arguments: *table - dataNum - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffConstructTree( HuffCompressionInfo *info, u8 bitSize ) -{ - HuffData* table = info->huffTable; - u16 rootNo; // 二分木のルートNo - - // 出現頻度からノードを構築 - rootNo = HuffMakeNode( table, bitSize ); - - // ハフマンコード生成 (table[i].HuffCode に) - HuffAddCodeToTable( table, rootNo, 0x00 ); // PaDepthのビット数だけ、HuffCode の下位ビットをマスクしたものがハフマンコード - - // 各中間節点において、その節点をルートとする部分木を huffTree 格納に必要なメモリ量の計算 - HuffAddCountHWordToTable( table, rootNo ); - - // sHuffTreeBuf.huffTree 作成 - HuffMakeHuffTree( info, rootNo ); - - info->huffTree[0] = (u8)( --info->huffTreeTop ); -} - - -/*---------------------------------------------------------------------------* - Name: HuffMakeNode - Description: 出現頻度からノードデータを構築 - Arguments: table - Returns: None. - *---------------------------------------------------------------------------*/ -static u16 -HuffMakeNode( HuffData* table, u8 bitSize ) -{ - u16 dataNum = ( 1 << bitSize ); - u16 tableTop = (u16)dataNum; // テーブル作成時の、テーブルトップNo - - u32 i; - s32 leftNo, rightNo; // 2分木作成時のノードNo - u16 rootNo; // 二分木のルートNo - - leftNo = -1; - rightNo = -1; - while ( 1 ) - { - // Freqの小さい部分木頂点を2つ探す 1つは必ず見つかるはず - // 子頂点(左)の探索 - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) ) - { - continue; - } - - if ( leftNo < 0 ) - { - leftNo = i; - } - else if ( table[i].Freq < table[ leftNo ].Freq ) - { - leftNo = i; - } - } - - // 子頂点(右)の探索 - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) || - ( i == leftNo ) ) - { - continue; - } - - if ( rightNo < 0 ) - { - rightNo = i; - } - else if ( table[i].Freq < table[ rightNo ].Freq ) - { - rightNo = i; - } - } - - // 1つしかなかったら、テーブル作成終了 - if ( rightNo < 0 ) - { - // 値が一種類しかない存在しない場合には01どちらも同じ値となるノードを1つ作成する - if ( tableTop == dataNum ) - { - if ( leftNo < 0 ) - { - leftNo = 0; - } - table[ tableTop ].Freq = table[ leftNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)leftNo; - table[ tableTop ].LeafDepth = 1; - table[ leftNo ].PaNo = (s16)tableTop; - table[ leftNo ].Bit = 0; - table[ leftNo ].PaDepth = 1; - } - else - { - tableTop--; - } - rootNo = tableTop; - return rootNo; - } - - // 左部分木と右部分木を統合する頂点作成 - table[ tableTop ].Freq = table[ leftNo ].Freq + table[ rightNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)rightNo; - if ( table[ leftNo ].LeafDepth > table[ rightNo ].LeafDepth ) - { - table[ tableTop ].LeafDepth = (u16)( table[ leftNo ].LeafDepth + 1 ); - } - else - { - table[ tableTop ].LeafDepth = (u16)( table[ rightNo ].LeafDepth + 1 ); - } - - table[ leftNo ].PaNo = table[ rightNo ].PaNo = (s16)( tableTop ); - table[ leftNo ].Bit = 0; - table[ rightNo ].Bit = 1; - - HuffAddParentDepthToTable( table, (u16)leftNo, (u16)rightNo ); - - tableTop++; - leftNo = rightNo = -1; - } -} - - -//----------------------------------------------------------------------- -// 2文木作成時に、部分木を統合したときに、部分木の各構成ノードの深さを+1する -//----------------------------------------------------------------------- -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ) -{ - table[ leftNo ].PaDepth++; - table[ rightNo ].PaDepth++; - - if ( table[ leftNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ leftNo ].ChNo[0], (u16)table[ leftNo ].ChNo[1] ); - } - if ( table[ rightNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ rightNo ].ChNo[0], (u16)table[ rightNo ].ChNo[1] ); - } -} - -//----------------------------------------------------------------------- -// ハフマンコード生成 -//----------------------------------------------------------------------- -static void HuffAddCodeToTable( HuffData* table, u16 nodeNo, u32 paHuffCode ) -{ - table[ nodeNo ].HuffCode = (paHuffCode << 1) | table[ nodeNo ].Bit; - - if ( table[ nodeNo ].LeafDepth != 0 ) - { - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[0], table[ nodeNo ].HuffCode ); - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[1], table[ nodeNo ].HuffCode ); - } -} - - -//----------------------------------------------------------------------- -// 中間ノードが huffTree 作成に必要とするデータ量 -//----------------------------------------------------------------------- -static u16 HuffAddCountHWordToTable( HuffData *table, u16 nodeNo) -{ - u16 leftHWord, rightHWord; - - switch ( table[ nodeNo ].LeafDepth ) - { - case 0: - return 0; - case 1: - leftHWord = rightHWord = 0; - break; - default: - leftHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[0] ); - rightHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[1] ); - break; - } - - table[ nodeNo ].HWord = (u16)( leftHWord + rightHWord + 1 ); - return (u16)( leftHWord + rightHWord + 1 ); -} - - -//----------------------------------------------------------------------- -// ハフマンコード表作成 -//----------------------------------------------------------------------- -static void HuffMakeHuffTree( HuffCompressionInfo* info, u16 rootNo ) -{ - s16 i; - s16 costHWord, tmpCostHWord; // 部分木のコード表を作成しなかった時のコスト 最大値の節点の部分木コード表を作る - s16 costOffsetNeed, tmpCostOffsetNeed; - s16 costMaxKey; // コスト最小の節点を huffTreeBuf.huffTree から特定するための情報 - BOOL costMaxRightFlag; - u16 offsetNeedNum; - BOOL tmpRightFlag; - const u32 MAX_COST = 64; - - info->huffTreeTop = 1; - costOffsetNeed = 0; - - info->huffTreeCtrl[0].leftOffsetNeed = 0; // 使用しない (テーブルサイズとして使用) - info->huffTreeCtrl[0].rightNodeNo = rootNo; - - - while ( 1 ) // return するまで - { - // オフセットを設定する必要のあるノード数の計算 - offsetNeedNum = 0; - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - offsetNeedNum++; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - offsetNeedNum++; - } - } - - // 最大コストの節点を検索 - costHWord = -1; - costMaxKey = -1; - tmpRightFlag = 0; - - for ( i = 0; i < info->huffTreeTop; i++ ) - { - tmpCostOffsetNeed = (u16)( info->huffTreeTop - i ); - - // 左の子節点のコスト評価 - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto leftCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto leftCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - } -leftCostEvaluationEnd:{} - - if ( info->huffTreeCtrl[i].rightOffsetNeed) - { - tmpCostHWord = (s16)info->huffTable[info->huffTreeCtrl[i].rightNodeNo].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto rightCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto rightCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - } -rightCostEvaluationEnd:{} - } - - // 部分木をまるまる huffTree に格納 - if ( costMaxKey >= 0 ) - { - HuffMakeSubsetHuffTree( info, (u16)costMaxKey, costMaxRightFlag); - goto nextTreeMaking; - } - else - { - // 必要オフセット最大のノードを検索 - for ( i = 0; i < info->huffTreeTop; i++ ) - { - u16 tmp = 0; - tmpRightFlag = 0; - if (info->huffTreeCtrl[i].leftOffsetNeed) - { - tmp = info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - } - if (info->huffTreeCtrl[i].rightOffsetNeed) - { - if ( info->huffTable[info->huffTreeCtrl[i].rightNodeNo ].HWord > tmp ) - { - tmpRightFlag = 1; - } - } - if ( (tmp != 0) || (tmpRightFlag) ) - { - HuffSetOneNodeOffset( info, (u16)i, tmpRightFlag); - goto nextTreeMaking; - } - } - } - return; -nextTreeMaking:{} - } -} - -//----------------------------------------------------------------------- -// 部分木をまるまる huffTree に格納 -//----------------------------------------------------------------------- -static void HuffMakeSubsetHuffTree( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ) -{ - u16 i; - - i = info->huffTreeTop; - HuffSetOneNodeOffset( info, huffTreeNo, rightNodeFlag ); - - if ( rightNodeFlag ) - { - info->huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - info->huffTreeCtrl[ huffTreeNo ].leftOffsetNeed = 0; - } - - while ( i < info->huffTreeTop ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 0); - info->huffTreeCtrl[ i ].leftOffsetNeed = 0; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 1); - info->huffTreeCtrl[ i ].rightOffsetNeed = 0; - } - i++; - } -} - -//----------------------------------------------------------------------- -// 与えられたデータ量の部分木を展開しても huffTree 構築に支障がないか調べる -//----------------------------------------------------------------------- -static BOOL HuffRemainingNodeCanSetOffset( HuffCompressionInfo* info, u16 costHWord ) -{ - u16 i; - s16 capacity; - const u32 MAX_COST = 64; - - capacity = (s16)( MAX_COST - costHWord ); - - // オフセット数は i が小さいほど大きいので、ソートせず、i = 0 -> huffTreeTop で計算すればよい - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - } - - return 1; -} - - -/*---------------------------------------------------------------------------* - Name: HuffSetOneNodeOffset - Description: 1節点分、ハフマンコード表を作成 - Arguments: *table ハフマンテーブル - huffTreeNo - rightNodeFlag 右側のノードであるかどうかのフラグ - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffSetOneNodeOffset( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag) -{ - u16 nodeNo; - u16 offsetData = 0; - - HuffData* huffTable = info->huffTable; - u8* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - u16 huffTreeTop = info->huffTreeTop; - - if (rightNodeFlag) - { - nodeNo = huffTreeCtrl[ huffTreeNo ].rightNodeNo; - huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - nodeNo = huffTreeCtrl[ huffTreeNo ].leftNodeNo; - huffTreeCtrl [huffTreeNo ].leftOffsetNeed = 0; - } - - // 左の子節点 - if ( huffTable[ huffTable[nodeNo].ChNo[0] ].LeafDepth == 0) - { - offsetData |= 0x80; - huffTree[ huffTreeTop * 2 + 0 ] = (u8)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u8)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftOffsetNeed = 0; // オフセットは必要なくなる - } - else - { - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; // オフセットは必要 - } - - // 右の子節点 - if ( huffTable[ huffTable[ nodeNo ].ChNo[1] ].LeafDepth == 0 ) - { - offsetData |= 0x40; - huffTree[ huffTreeTop * 2 + 1 ] = (u8)huffTable[nodeNo].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u8)huffTable[ nodeNo ].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightOffsetNeed = 0; // オフセットは必要なくなる - } - else - { - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; // オフセットは必要 - } - - offsetData |= (u16)( huffTreeTop - huffTreeNo - 1 ); - huffTree[ huffTreeNo * 2 + (rightNodeFlag? 1 : 0) ] = (u8)offsetData; - - info->huffTreeTop++; -} - - -/*---------------------------------------------------------------------------* - Name: HuffExportTree - - Description: ハフマンテーブルをバイナリ出力 - - Arguments: dstp - info - bitSize - - Returns: - *---------------------------------------------------------------------------*/ -static u32 HuffExportTree( u8* dstp, HuffCompressionInfo* info ) -{ - u32 cnt = 0; - s32 i; - - for ( i = 0; i < (info->huffTreeTop + 1) * 2; i++ ) // ツリーテーブル - { - dstp[ cnt++ ] = ((u8*)info->huffTree)[ i ]; - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含める (デコーダのアルゴリズムによる) - while ( cnt & 0x3 ) - { - if ( cnt & 0x1 ) - { - info->huffTreeTop++; - dstp[ 0 ] = dstp[ 0 ] + 1; - } - dstp[ cnt++ ] = 0; - } - return cnt; -} - - -/*---------------------------------------------------------------------------* - Name: HuffConvertData - Description: ハフマンテーブルを元にデータ変換 - Arguments: *table - srcp - dstp - srcSize - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static u32 HuffConvertData( const HuffData *table, const u8* srcp, u8* dstp, u32 srcSize, u8 bitSize ) -{ - u32 i, ii, iii; - u8 srcTmp; - u32 bitStream = 0; - u32 streamLength = 0; - u32 dstSize = 0; - - // ハフマン符号化 - for ( i = 0; i < srcSize; i++ ) - { // データ圧縮 - u8 val = srcp[ i ]; - if ( bitSize == 8 ) - { // 8ビットハフマン - bitStream = (bitStream << table[ val ].PaDepth) | table[ val ].HuffCode; - streamLength += table[ val ].PaDepth; - for ( ii = 0; ii < streamLength / 8; ii++ ) - { - dstp[ dstSize++ ] = (u8)(bitStream >> (streamLength - (ii + 1) * 8)); - } - streamLength %= 8; - } - else // 4ビットハフマン - { - for ( ii = 0; ii < 2; ii++ ) - { - if ( ii ) - { - srcTmp = val >> 4; // 上位4ビットが後 - } - else - { - srcTmp = val & 0x0F; // 下位4ビットが先( デコーダがLittleEndianでアクセスする関係 ) - } - bitStream = (bitStream << table[ srcTmp ].PaDepth) | table[ srcTmp ].HuffCode; - streamLength += table[srcTmp].PaDepth; - for ( iii = 0; iii < streamLength / 8; iii++ ) - { - dstp[ dstSize++ ] = (u8)(bitStream >> (streamLength - (iii + 1) * 8)); - } - streamLength %= 8; - } - } - } - if ( streamLength != 0 ) - { - dstp[ dstSize++ ] = (u8)(bitStream << (8 - streamLength)); - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含め「る」 - // ハフマン符号化だけ特別! リトルエンディアン変換するため、アラインメント境界データより後にデータが格納される - while ( dstSize & 0x3 ) - { - dstp[ dstSize++ ] = 0; - } - - // リトルエンディアン変換 - for ( i = 0; i < dstSize / 4; i++ ) - { - u8 tmp; - tmp = dstp[i * 4 + 0]; - dstp[i * 4 + 0] = dstp[i * 4 + 3]; - dstp[i * 4 + 3] = tmp; // スワップ - tmp = dstp[i * 4 + 1]; - dstp[i * 4 + 1] = dstp[i * 4 + 2]; - dstp[i * 4 + 2] = tmp; // スワップ - } - return dstSize; -} - - - -/*---------------------------------------------------------------------------* - Name: HuffVerifyTable - - Description: ハフマンテーブルの整合性をチェック - - Arguments: ハフマンテーブルへのポインタ - - Returns: 正常なテーブルの場合には TRUE - 不正なテーブルの場合には FALSE - *---------------------------------------------------------------------------*/ -static BOOL -HuffVerifyTable( const void* pTable, u8 bit ) -{ - enum { FLAGS_ARRAY_NUM = 512 / 8 }; /* 64Byte */ - u8* treep = (u8*)pTable; - u8* treeStartp = treep + 1; - u32 treeSize = *treep; - u8* treeEndp = (u8*)pTable + (treeSize + 1) * 2; - u32 i; - u8 end_flags[ FLAGS_ARRAY_NUM ]; - u32 idx; - - for ( i = 0; i < FLAGS_ARRAY_NUM; i++ ) - { - end_flags[ i ] = 0; - } - - if ( bit == 4 ) - { - if ( treeSize >= 0x10 ) - { - return FALSE; - } - } - - idx = 1; - treep = treeStartp; - while ( treep < treeEndp ) - { - if ( (end_flags[ idx / 8 ] & (1 << (idx % 8) )) == 0 ) - { - u32 offset = (u32)( ( (*treep & 0x3F) + 1 ) << 1); - u8* nodep = (u8*)( (((u32)treep >> 1) << 1) + offset ); - - // 終端のアライメント用データは読み飛ばす - if ( *treep == 0 && idx >= (treeSize * 2) ) - { - goto next; - } - if ( nodep >= treeEndp ) - { - return FALSE; - } - if ( *treep & 0x80 ) - { - u32 left = (idx & ~0x1) + offset; - end_flags[ left / 8 ] |= (u8)( 1 << (left % 8) ); - } - if ( *treep & 0x40 ) - { - u32 right = (idx & ~0x1) + offset + 1; - end_flags[ right / 8 ] |= (u8)( 1 << (right % 8) ); - } - } - next: - ++idx; - ++treep; - } - return TRUE; -} - - - - -//############################################################################################## -//############################################################################################## -// 展開関連の関数は以下 -//############################################################################################## -//############################################################################################## - -//================================================================================== -// Rawデータ展開 -//================================================================================== -static s32 RawRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ) -{ -// memcpy(dstp, srcp, size); - u32 i; - - if ( srcSize < dstSize ) - { - return -1; - } - - for (i = 0; i < dstSize; i++) - { - *dstp = *srcp; - dstp++; - srcp++; - } - - return dstSize; -} - -//================================================================================== -// 差分圧縮データ展開 -//================================================================================== -static s32 DiffFiltRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 diffBitSize ) -{ - s32 DiffCount = 0; // 展開データのバイト数 - u32 i; - - u16 *src16p = (u16 *)srcp; - u16 *dst16p = (u16 *)dstp; - - // ソースのバッファオーバーフローチェック - if ( dstSize > srcSize ) - { - return -1; - } - - if (diffBitSize == 8) - { -#ifdef DEBUG_PRINT_DIFFFILT - for (i = 0; i < 16; i++) - { - dbg_printf_dif(stderr, "srcp[%d] = %x\n", i, srcp[i]); - } -#endif - dstp[DiffCount] = srcp[0]; // 先頭データのみ差分無し - DiffCount++; - for (i = 1; i < dstSize; i++, DiffCount++) - { - dbg_printf_dif(stderr, "dstp[%x] = srcp[%d]+dstp[%d] = %x + %x = %x\n", - DiffCount, i, i - 1, srcp[i], dstp[i - 1], srcp[i] - dstp[i - 1]); - dstp[DiffCount] = srcp[i] + dstp[i - 1]; // 差分データ格納 - } - } - else // 16ビットサイズ - { - dst16p[DiffCount / 2] = src16p[0]; - DiffCount += 2; - for (i = 1; i < dstSize / 2; i++, DiffCount += 2) - { - dst16p[DiffCount / 2] = src16p[i] + dst16p[i - 1]; - } - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((DiffCount + i) & 0x3) - { - dstp[DiffCount + i] = 0; - i++; - } - - return DiffCount; -} - -//================================================================================== -// ランレングス圧縮データ展開 -//================================================================================== -static s32 RLCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ) -{ - u32 RLDstCount; // 展開データのバイト数 - u32 RLSrcCount; // 展開対象データの処理済データ量(バイト単位) - u32 i; - - RLSrcCount = 0; - RLDstCount = 0; - while ( RLDstCount < dstSize ) - { - if ( srcp[ RLSrcCount ] & 0x80 ) // 復号処理(ランレングス符号化されている) - { - u8 length = (srcp[ RLSrcCount++ ] & 0x7f) + 3; // データ長を格納(3の下駄を履いているので、実際は+3して考える) - // バッファオーバーランチェック - if ( RLSrcCount >= srcSize ) - { - return -1; - } - if ( RLDstCount + length > dstSize ) - { - return -1; - } - for ( i = 0; i < length; i++ ) - { - dstp[ RLDstCount++ ] = srcp[ RLSrcCount ]; - } - RLSrcCount++; - } - else // 生データをコピー(ランレングス符号化されていない) - { - u8 length = srcp[ RLSrcCount++ ] + 1; // (srcp[RLSrcCount] & 0x7f と同じ) - // バッファオーバーランチェック - if ( RLSrcCount + length > srcSize ) - { - return -1; - } - if ( RLDstCount + length > dstSize ) - { - return -1; - } - - for ( i = 0; i < length; i++ ) - { // データ長は -1 されて格納されているため +1 - dstp[ RLDstCount++ ] = srcp[ RLSrcCount++ ]; - } - } - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ((RLDstCount + i) & 0x3) - { - dstp[RLDstCount + i] = 0; - i++; - } - - return RLDstCount; -} - -//================================================================================== -// LZ77圧縮データ展開 -//================================================================================== -static s32 LZCompReadEx( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, BOOL ex_available) -{ - u32 LZDstCount; // 展開データのバイト数 - u32 LZSrcCount; // 展開対象データの処理済データ量(バイト単位) - u32 i; - - LZSrcCount = 0; - LZDstCount = 0; - - while ( LZDstCount < dstSize ) - { - u8 compFlags = srcp[LZSrcCount++]; // 圧縮の有無を示すフラグ列 - if ( LZSrcCount > srcSize ) - { - return -1; - } - - for ( i = 0; i < 8; i++ ) - { - if (compFlags & 0x80) // 圧縮されている - { - u32 length; // 対象データ長 - u16 offset; // 一致データオフセット - 1 (常に2以上)(下位4ビット,offsetでは11-8ビット目) - - length = srcp[ LZSrcCount ] >> 4; - - if ( ex_available ) - { - if ( length == 1 ) - { - length = (srcp[ LZSrcCount ] & 0x0F) << 12; - LZSrcCount++; - length |= srcp[ LZSrcCount ] << 4; - LZSrcCount++; - length |= srcp[ LZSrcCount ] >> 4; - length += 0xFF + 0xF + 3; - } - else if ( length == 0 ) - { - length = (srcp[ LZSrcCount ] & 0x0F) << 4; - LZSrcCount++; - length |= srcp[ LZSrcCount ] >> 4; - length += 0xF + 2; - } - else - { - length += 1; - } - } - else - { - length += 3; - } - offset = (srcp[LZSrcCount] & 0x0F) << 8; - LZSrcCount++; - offset |= srcp[LZSrcCount]; - offset++; - LZSrcCount++; - - // バッファオーバーランをチェック - if ( LZSrcCount > srcSize ) - { - return -1; - } - if ( LZDstCount + length > dstSize ) - { - return -1; - } - if ( LZDstCount < offset ) - { - return -1; - } - - // 展開処理 - do - { - dstp[ LZDstCount++ ] = dstp[ LZDstCount - offset ]; - } while ( --length > 0 ); - } - else // 圧縮無し - { - dstp[ LZDstCount++ ] = srcp[ LZSrcCount++ ]; - if ( LZSrcCount > srcSize ) - { - return -1; - } - } - // サイズに達したら終了 - if ( LZDstCount >= dstSize ) - { - break; - } - compFlags <<= 1; - } - } - - // 4バイト境界アラインメント - // アラインメント用データ0 はデータサイズに含めない - i = 0; - while ( (LZDstCount + i) & 0x3 ) - { - dstp[ LZDstCount + i ] = 0; - i++; - } - return LZDstCount; -} - - -//================================================================================== -// ハフマン符号化データ展開 -//================================================================================== -static s32 HuffCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 huffBitSize ) -{ - u16 treeSize; // huffTreeのサイズ * 2 - u32 HuffSrcCount; // 展開対象データの処理済データ量(バイト単位) - u32 HuffDstCount; // 展開データ - u32 currentBitStream; - u8 currentBit; - u16 treeAddr; - u8 treeData; - u8 preTreeData; - u8 isUpper4bits = 0; - - treeSize = ((*srcp) + 1) * 2; - HuffSrcCount = treeSize; // データの先頭を取得 - HuffDstCount = 0; - treeAddr = 1; - preTreeData = srcp[ 1 ]; - - dbg_printf_huff(stderr, "HuffSrcCount = %d\n", HuffSrcCount); - - // ハフマンテーブルの整合性チェック - if ( ! HuffVerifyTable( srcp, huffBitSize ) ) - { - return -1; - } - if ( srcSize < treeSize ) - { - return -1; - } - - // 展開処理 - while ( HuffDstCount < dstSize ) // return まで - { - u16 i; - - currentBitStream = srcp[HuffSrcCount++]; - currentBitStream |= srcp[HuffSrcCount++] << 8; - currentBitStream |= srcp[HuffSrcCount++] << 16; - currentBitStream |= srcp[HuffSrcCount++] << 24; - - if ( HuffSrcCount > srcSize ) - { - return -1; - } - - for ( i = 0; i < 32; i++ ) - { - currentBit = (u8)(currentBitStream >> 31); - currentBitStream <<= 1; - - if (((currentBit == 0) && (preTreeData & 0x80)) || - ((currentBit == 1) && (preTreeData & 0x40))) - { - if (huffBitSize == 8) - { - treeData = srcp[(treeAddr * 2) + currentBit]; // 符号データ - dstp[HuffDstCount++] = treeData; - } - else if (isUpper4bits) - { - treeData |= (srcp[(treeAddr * 2) + currentBit]) << 4; - dstp[HuffDstCount++] = treeData; - isUpper4bits = 0; - } - else - { - treeData = srcp[(treeAddr * 2) + currentBit]; - isUpper4bits = 1; - } - - if (HuffDstCount >= dstSize) - { - return HuffDstCount; - } - - treeAddr = 1; - preTreeData = srcp[ 1 ]; - } - else - { - preTreeData = srcp[(treeAddr * 2) + currentBit]; // オフセット・データ - treeAddr += (preTreeData & 0x3f) + 1; - } - } - } - return HuffDstCount; -} - - -//================================================================================== -// 圧縮ファイルの元ファイルサイズ取得 -//================================================================================== -EXTERN u32 STDCALL nitroGetDecompFileSize( const void* srcp ) -{ - const u32* p = (const u32*)srcp; - - u32 size = *p >> 8; - if ( size == 0 ) - { - size = *(p + 1); - } - return size; -} - - -//================================================================================== -// データ展開制御関数 (自動展開のため、最後にrawデータ展開用ヘッダがないと動作しない) -//================================================================================== -EXTERN s32 STDCALL nitroDecompress( const u8 *srcp, u32 srcSize, u8 *dstp, s8 depth ) -{ - // rawData // データ・ヘッダ - // *(u32 *)pReadBuf = size << 8 | 0; - // [i+3] [i+2] [i+1](サイズ) | [0000 0000] - // DiffFilt - // *(u32 *)dstp = size << 8 | 0x80 | diffBitSize/8; - // [i+3] [i+2] [i+1](サイズ) | [1000 00XX] - // RL - // *(u32 *)dstp = size << 8 | 0x30; - // [i+3] [i+2] [i+1](サイズ) | [0011 0000] - // LZ77 - // *(u32 *)dstp = size << 8 | 0x10; - // [i+3] [i+2] [i+1](サイズ) | [0001 0000] - // Huffman - // *(u32 *)dstp = size << 8 | 0x20 | huffBitSize; - // [i+3] [i+2] [i+1](サイズ) | [0010 XX00] - u32 header; - s32 dstSize; - u32 memSize = srcSize * 3 + 256 * 2; - u8 *pReadBuf; // 圧縮データの先頭番地を指すポインタ - u8 offset; - s8 curDepth = 0; - s8 targetDepth; - - pCompBuf[0] = (u8 *)malloc(memSize); - pCompBuf[1] = (u8 *)malloc(memSize); - pReadBuf = pCompBuf[0]; - - // malloc チェック - if (pCompBuf[0] == NULL || pCompBuf[1] == NULL) - { - fprintf(stderr, "Error: Memory is not enough.\n"); - exit(1); - } - - compBufNo = 1; - memcpy(pReadBuf, srcp, srcSize); - - if (depth < 1) - { - targetDepth = -1; - } - else - { - targetDepth = depth; - } - dbg_printf(stderr, "nitroCompress \t(Compressed size is 0x%x)\n", srcSize); - - while (1) - { - // targetDepth指定の際の終了条件 - if (curDepth == targetDepth) - { - dbg_printf(stderr, "nitroDecompress Raw \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = RawRead(pReadBuf, dstSize, dstp, dstSize); - - if (pCompBuf[0] != NULL) - { - free(pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dstSize; - } - - header = *(u32 *)pReadBuf; - dstSize = header >> 8; // ヘッダを含まないサイズ, 展開関数にもヘッダを含めずに渡す - offset = 4; - - if ( dstSize == 0 ) - { - dstSize = *(u32 *)(pReadBuf + 4); - offset = 8; - } - - if ( memSize < (u32)dstSize ) - { - memSize = dstSize * 3 + 256 * 2; - pCompBuf[0] = (u8 *)realloc(pCompBuf[0], memSize); - pCompBuf[1] = (u8 *)realloc(pCompBuf[1], memSize); - pReadBuf = pCompBuf[compBufNo ^ 0x1]; - - } - - switch (header & CODE_HEADER_MASK) - { - case DIFF_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress Diff %d \t(Decompressed size will be 0x%x)\n", - ((u8)header & 0x03) * 8, dstSize ); - dstSize = - DiffFiltRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, - ((u8)header & 0x03) * 8); - } - break; - case HUFF_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress Huff %d \t(Decompressed size will be 0x%x)\n", - ((u8)header & 0x0f), dstSize); - dstSize = - HuffCompRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, (u8)header & 0x0f); - } - break; - case LZ_CODE_HEADER: - { - BOOL ex_format = ((header & 0xF) == 0)? FALSE : TRUE; - - dbg_printf(stderr, "nitroDecompress LZ \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = LZCompReadEx(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, ex_format); - } - break; - case RL_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress RL \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = RLCompRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize); - } - break; - default: - { - dbg_printf(stderr, "nitroDecompress Raw \t(Decompressed size will be 0x%x)\n", - dstSize); - - dstSize = RawRead(&pReadBuf[offset], srcSize - offset, dstp, dstSize); - if (pCompBuf[0] != NULL) - { - free(pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dstSize; - } - } - - if ( dstSize < 0 ) - // 不正なファイルで解凍に失敗 - { - dbg_printf(stderr, "decompress fail\n"); - return -1; - } - - // もう一周 - pReadBuf = pCompBuf[compBufNo]; - compBufNo ^= 0x01; - srcSize = dstSize; - curDepth++; - } -} - -//================================================================================== -// メモリ内容を16進で出力 -//================================================================================== -EXTERN void STDCALL debugMemPrint(FILE * fp, u8 *str, u32 size) -{ - u32 i = 0; - - while (str) - { - fprintf(fp, "%4lx:\t0x%2x\n", i, *str); - str++; - i++; - if (i >= size) - { - break; - } - } -} - -//================================================================================== -// メモリ内容を2進で出力 -//================================================================================== -EXTERN void STDCALL debugMemBitPrint(FILE * fp, u8 *str, u32 size) -{ - u32 i = 0; - u8 j; - - while (str) - { - if (i >= size) - { - break; - } - - fprintf(fp, "%4lx:\t0x%2x\t(binary\t", i, *str); - for (j = 0; j < 8; j++) - { - fprintf(fp, "%d", *str >> (7 - j) & 0x01); - } - fprintf(fp, " )\n"); - str++; - i++; - } -} - -//================================================================================== -// 圧縮前と展開後のデータの比較(正しく展開できていれば、"DATA match"と出力される) -//================================================================================== -EXTERN int STDCALL matchingCheck(u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize) -{ - u32 minSize, i; - u8 dataMatchFlag = 1; - u8 sizeMatchFlag; - - sizeMatchFlag = (srcSize == dstSize); - if (srcSize < dstSize) - { - minSize = srcSize; - } - else - { - minSize = dstSize; - } - - for (i = 0; i < minSize; i++) - { - dbg_printf_match(stderr, "src[%3x], dst[%3x] = %2x , %2x", i, i, srcp[i], dstp[i]); - if (srcp[i] != dstp[i]) - { - dataMatchFlag = 0; - dbg_printf_match(stderr, "\t; mismatch here!"); - } - dbg_printf_match(stderr, "\n"); - } - - if (sizeMatchFlag) - { - fprintf(stderr, "\nSIZE match.\n"); - } - else - { - fprintf(stderr, "\nSIZE mismatch!\n"); - } - - if (dataMatchFlag) - { - fprintf(stderr, "DATA match.\n"); - } - else - { - fprintf(stderr, "DATA mismatch!\n"); - } - - if (dataMatchFlag && sizeMatchFlag) - { - return 1; - } - else - { - return 0; - } -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h deleted file mode 100644 index 7c96d8db..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h +++ /dev/null @@ -1,127 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: nitroCompLib.h - - Copyright 2007 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$ - *---------------------------------------------------------------------------*/ - -// nitroCompLib.h : nitroCompLib.DLL のメイン ヘッダー ファイル -// - -#ifndef __NITROCOMPLIB_H__ -#define __NITROCOMPLIB_H__ - -//=========================================================================================== -// インクルード -//=========================================================================================== -#include -#include -#include -#include -#include "types.h" - -#ifdef WIN32 -#define STDCALL __stdcall -#else -#define STDCALL -#endif - -//=========================================================================================== -// プロトタイプ宣言 -//=========================================================================================== -// C++用 -#ifdef __cplusplus - extern "C" - { -#endif - -//BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved); -u8* STDCALL nitroCompMalloc( u32 size ); -void STDCALL nitroCompFree( u8 *p ); -u32 STDCALL nitroCompress ( const u8 *srcp, u32 srcSize, u8 *dstp, char *compList, u8 rawHeader ); -s32 STDCALL nitroDecompress( const u8 *srcp, u32 srcSize, u8 *dstp, s8 depth ); -void STDCALL debugMemPrint ( FILE * fp, u8 *str, u32 size ); -void STDCALL debugMemBitPrint( FILE * fp, u8 *str, u32 size ); -int STDCALL matchingCheck( u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -u32 STDCALL nitroGetDecompFileSize( const void* srcp ); - -#ifdef __cplusplus - } -#endif - -//=========================================================================================== -// 関数の使用法 -//=========================================================================================== -//---------------------------------------------------------------------------------- -// 圧縮後のデータを置くためのメモリ領域を確保 -// 圧縮前のデータの2倍の領域を確保する -// 引数 -// u32 size 圧縮前のデータサイズ -// u32 は符号無し整数型でたいていは、 -// unsigned int (処理系依存) -// 返り値 -// u8 * 圧縮後のデータ領域を指すポインタ -// (汎用ポインタなので、好きな型にキャスト) -// ではない -//---------------------------------------------------------------------------------- -//u8 *nitroCompMalloc(u32 size); - -//---------------------------------------------------------------------------------- -// 圧縮後のデータを置いていたメモリ領域を解放 -// 引数 -// u8 *p 圧縮後のデータ領域を指すポインタ -//---------------------------------------------------------------------------------- -//void nitroCompFree(u8 *p); - -//---------------------------------------------------------------------------------- -// データを圧縮する -// 圧縮方式、圧縮順序は引数compListを用いて指示する -// 引数 -// u8 *srcp 圧縮対象データを指すポインタ -// u32 size 圧縮対象データのサイズ(単位はバイト) -// u8 *dstp 圧縮後のデータを保持するデータ領域を指すポインタ -// 十分な領域を確保しておく必要あり -// nitroCompMallocの返り値でよい -// char *compList 圧縮方式、圧縮順序を格納したリスト (C言語のヌル文字列) -// d8 : 8ビット差分フィルタ -// d16 : 16ビット差分フィルタ -// r : ランレングス符号化 -// lx : LZ77.xには同一データ検索の開始点を示すオフセット -// : 2以上でなければならない.上限は255. -// h4 : 4ビット・ハフマン圧縮 -// h8 : 8ビット・ハフマン圧縮 -// u8 rawHeaderFlag 圧縮前のデータであることを示すヘッダ情報を付加するかどうかを -// 指示するフラグ.0であれば付加せず、1であれば、展開しきった -// データにもヘッダが付加される. -// 返り値 -// 圧縮後のデータサイズ -//---------------------------------------------------------------------------------- -//u32 nitroCompress(u8 *srcp, u32 size, u8 *dstp, char *compList, u8 rawHeader); - -//---------------------------------------------------------------------------------- -// データを展開する -// 展開方式、展開順序はデータのヘッダを見て判断する -// 引数 -// u8 *srcp 展開対象データを指すポインタ -// u32 size 展開対象データのサイズ(単位はバイト) -// u8 *dstp 展開後のデータを保持するデータ領域を指すポインタ -// 十分な領域を確保しておく必要あり -// nitroCompMallocの返り値でよい -// u8 depth 展開する深さ(回数) -// 0未満の場合は、圧縮前データを示すヘッダ情報が得られるまで展開し続ける -// 返り値 -// 展開後のデータサイズ -//---------------------------------------------------------------------------------- -//u32 nitroDecompress(u8 *srcp, u32 size, u8 *dstp, s8 depth); - -#endif // __NITROCOMPLIB_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c deleted file mode 100644 index ce37efb2..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c +++ /dev/null @@ -1,1164 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_main.c - - Copyright 2007 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 -#include -#include -#include -#include "nitroCompLib.h" -#include "ntcompress_test.h" -#include "multipleCompLib.h" -#include "rangeCoder.h" - -#define FOR_NITRO - -#if defined( FOR_NITRO ) - #define INCLUDE_TARGET "nitro" - #define TARGET_NAME "ntrcomp" - #define NTCOMPRESS_VERSION "1.1.0" -#else // for revolution - #define SUPPORT_LH_LRC - #define INCLUDE_TARGET "revolution" - #define TARGET_NAME "ntcompress" - #define NTCOMPRESS_VERSION "2.0.0" -#endif - - -#define uint unsigned int -#define ushort unsigned short -#define ulong unsigned long -#define uchar unsigned char - - -#define ROUNDUP(x,n) (((x) + ((n) - 1)) & (~((n)-1))) -#define ROUNDUP4(x) ROUNDUP((x),4) - -#define TEXT_BIG_ENDIAN_FLAG 0x10 -#define TEXT_WIDTH_MASK 0x07 - -//--------------------------------------------------------------------------- -// 型定義 -//--------------------------------------------------------------------------- -// 圧縮タイプ -typedef enum -{ - CONV_TYPE_NON, // 変換なし - CONV_TYPE_DIFF, // 差分フィルタ - CONV_TYPE_RUNLENGTH, // ランレングス符号化 - CONV_TYPE_LZ77, // LZ77圧縮 - CONV_TYPE_HUFFMAN, // ハフマン圧縮 - CONV_TYPE_UNCOMPRESS, // 解凍 - CONV_TYPE_LZ77EX, // 拡張LZ77圧縮 - CONV_TYPE_LH, // LZ77-ハフマン複合圧縮 - CONV_TYPE_LRC, // LZ77-RangeCoder複合圧縮 - CONV_TYPE_RANGECODER // レンジコーダ -} -t_conv_type; - -// 圧縮データ情報構造体 -typedef struct -{ - t_conv_type type; // 圧縮タイプ - uint opt; // 圧縮パラメータ - ulong src_size; // 圧縮前データサイズ - ulong dest_size; // 圧縮後データサイズ - uchar *src_buf; // 圧縮前データバッファ - uchar *dest_buf; // 圧縮後データバッファ - uchar textout_width; // テキスト出力するかどうかのフラグ兼サイズ - uchar alignment; // 出力ファイルサイズのアライメント - uchar header_flg :1; // ヘッダ情報を付加するかどうかのフラグ - uchar silent_flg :1; // 標準出力へメッセージを出力するかどうかのフラグ - uchar verify_flg :1; // 圧縮ファイルを展開する際のべりファイをおこなうかどうかのフラグ -} -t_conv_data; - -typedef enum -{ - OPT_NONE, // 無効なオプション - OPT_VERSION, // バージョン表示(-v) - OPT_SILENT, // 標準出力抑止(-s) - OPT_LOWER_TEXT, // 小文字でのテキスト出力(-t) - OPT_UPPER_TEXT, // 大文字でのテキスト出力(-T) - OPT_ALIGN, // アライメント指定(-A4|8|16|32) - OPT_HEADER, // ヘッダ付加(-H) - OPT_OUTPUT, // 出力ファイル指定(-o) - OPT_EXTRACT, // 解凍(-x) - OPT_DIFF_FILTER, // 差分フィルタ(-d) - OPT_RUN_LENGTH, // ランレングス圧縮(-r) - OPT_LZ77, // 旧LZ77圧縮(-l) - OPT_LZ77EX, // LZ77圧縮(-lex) - OPT_LH, // LH圧縮(-lh) - OPT_LRC, // LRC圧縮(-lrc) - OPT_HUFFMAN, // ハフマン圧縮(-h4|8) - - OPT_RANGECODER, // レンジコーダ圧縮(デバッグ版のみ) (-R) - OPT_VERIFY, // ベリファイ (デバッグ版のみ) (-D) - OPT_TEST, // テスト (デバッグ版のみ) (--TEST) -} -t_opt; - - - - -//--------------------------------------------------------------------------- -// プロトタイプ宣言 -//--------------------------------------------------------------------------- -static void usage( const char *cmd_string ); -static void version_info( void ); -static int parse_opt( int argc, char *argv[], t_conv_data * cnv_dat, char **in_fname, - char **out_fname ); -static int load_file ( const char *fname, t_conv_data * cnv_dat ); -static int save_file ( const char *fname, const t_conv_data * cnv_dat ); -static int convert_data( t_conv_data * cnv_dat ); -static int fwrite_text ( const uchar * buf, ulong size, uint width, FILE * fp, const char *name ); -static char* cut_fname ( char *path ); -static char* make_output_fname( const char *input_fname, const t_conv_data * cnv_dat ); -static int verify_data ( t_conv_data * cnv_dat ); - - -//--------------------------------------------------------------------------- -// エンディアン変換 -//--------------------------------------------------------------------------- -static ushort -reverse_endian16( ushort x ) -{ - return (ushort)( ( (x >> 8) & 0x00FF ) | ( (x << 8) & 0xFF00 ) ); -} - -static ulong -reverse_endian32( ulong x ) -{ - return (ulong)( ( (x >> 24) & 0x000000FF ) | - ( (x >> 8) & 0x0000FF00 ) | - ( (x << 8) & 0x00FF0000 ) | - ( (x << 24) & 0xFF000000 ) ); -} - - - -//--------------------------------------------------------------------------- -// メイン関数 -//--------------------------------------------------------------------------- -int main(int argc, char *argv[]) -{ - t_conv_data cnv_dat; - char *in_fname, *out_fname; - -#ifdef _DEBUG - if ( argc >= 2 && strcmp(argv[1], "-TEST") == 0 ) - { - ntcompress_test(); - return 0; - } -#endif - - // データの初期化 - memset(&cnv_dat, 0, sizeof(cnv_dat)); - - // コマンドオプションの解析 - if (parse_opt(argc, argv, &cnv_dat, &in_fname, &out_fname) != 0) - { - exit(1); - } - - // 入力ファイルをバッファへ読み込み - if (load_file(in_fname, &cnv_dat) != 0) - { - exit(1); - } - - // ファイルの圧縮 - if (convert_data(&cnv_dat) != 0) - { - exit(1); - } - - // 圧縮データのベリファイ - if (verify_data( &cnv_dat ) != 0) - { - exit(1); - } - - // バッファから出力ファイルへの書き込み - if (save_file(out_fname, &cnv_dat) != 0) - { - exit(1); - } - - if (!cnv_dat.silent_flg) - { - fprintf(stdout, "convert %s(%ldbyte) to %s(%ldbyte)\n", in_fname, cnv_dat.src_size, - out_fname, cnv_dat.dest_size); - } - - free(cnv_dat.src_buf); - if (cnv_dat.dest_buf != cnv_dat.src_buf) - { - free(cnv_dat.dest_buf); - } - - return 0; -} - -//--------------------------------------------------------------------------- -// USAGE: -//--------------------------------------------------------------------------- -static void usage(const char *cmd_string) -{ - fprintf(stderr, "\n"); -#if defined( SUPPORT_LH_LRC ) - fprintf(stderr, - "Usage: %s <-d(4|8)|r|l|lex|h(8|16)|lh|lrc> [-o outputFile] [-A(4|8|16|32)] [-[width]] [-s] [-H] [-v] \n" - " %s -x [-o outputFile] [-s] \n", - cmd_string, cmd_string); -#else - fprintf(stderr, - "Usage: %s <-d(4|8)|r|l|lex|h(8|16)> [-o outputFile] [-A(4|8|16|32)] [-[width]] [-s] [-H] [-v] \n" - " %s -x [-o outputFile] [-s] \n", - cmd_string, cmd_string); -#endif - fprintf(stderr, "\t-v Show version\n"); - fprintf(stderr, "\t-r Runlength encode.\n"); - fprintf(stderr, "\t-l LZ77 encode(compatible with previous LZ77).\n"); - fprintf(stderr, "\t-lex LZ77 encode.\n"); - fprintf(stderr, "\t-h BitSize(4|8) Huffman encode.\n"); - fprintf(stderr, "\t-d BitSize(8|16) Differential filter.\n"); -#if defined( SUPPORT_LH_LRC ) - fprintf(stderr, "\t-lh LZ and Huffman encode\n"); - fprintf(stderr, "\t-lrc LZ and RangeCoder encode\n"); -#endif - fprintf(stderr, "\n"); - fprintf(stderr, "\t-A(4|8|16|32) Align n byte for compressed filesize\n"); - fprintf(stderr, "\t-o outputFile Specify the output file name.\n"); - fprintf(stderr, "\t-t[TypeWidth(1|2|4)] output C format text(little endian).\n"); - fprintf(stderr, "\t We can specify the type(1=u8,2=u16,4=u32).\n"); - fprintf(stderr, "\t-T[TypeWidth(1|2|4)] output C format text(big endian).\n"); - fprintf(stderr, "\t We can specify the type(1=u8,2=u16,4=u32).\n"); - fprintf(stderr, "\t-s Print no message if you've been successful in the conversion.\n"); - fprintf(stderr, "\t-H Raw data header\n"); - fprintf(stderr, "\t-x Extract compressed file.\n"); -} - - -static void version_info( void ) -{ - fprintf(stderr, "%s version %s\n", TARGET_NAME, NTCOMPRESS_VERSION); -} - -//--------------------------------------------------------------------------- -// パス文字列からファイル名部分のポインタを取得し、拡張子を削る -// @param path パス -// @return ファイル名のポインタ -//--------------------------------------------------------------------------- -static char *cut_fname(char *path) -{ - char *search_tmp; - - if (path == NULL) - { - return NULL; - } - - if ((search_tmp = strrchr(path, '/')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '\\')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '.')) != NULL) - { - *search_tmp = '\0'; - } - return path; -} - -//--------------------------------------------------------------------------- -// 入力ファイル名から出力ファイル名を生成する関数 -// @param input_fname 入力ファイル名 -// @param cnv_dat 変換情報 -// @return 出力ファイル名へのポインタ -//--------------------------------------------------------------------------- -static char *make_output_fname(const char *input_fname, const t_conv_data * cnv_dat) -{ - char *out_fname, *edit_tmp; - - if (input_fname == NULL) - { - return NULL; - } - - // メモリ領域の確保 - if ((out_fname = (char *)malloc(strlen(input_fname) + 0x10)) == NULL) - { - fprintf(stderr, "internal err: malloc fail!\n"); - exit(1); - } - - strcpy(out_fname, input_fname); - edit_tmp = cut_fname(out_fname); - - // 圧縮方式をファイル名に付加 - switch ( cnv_dat->type ) - { - case CONV_TYPE_NON: - strcat(edit_tmp, "_NONE"); - break; - case CONV_TYPE_DIFF: - strcat(edit_tmp, "_DIFF"); - break; - case CONV_TYPE_RUNLENGTH: - strcat(edit_tmp, "_RL"); - break; - case CONV_TYPE_LZ77: - case CONV_TYPE_LZ77EX: - strcat(edit_tmp, "_LZ"); - break; - case CONV_TYPE_HUFFMAN: - strcat(edit_tmp, "_HUFF"); - break; - case CONV_TYPE_LH: - strcat(edit_tmp, "_LH"); - break; - case CONV_TYPE_LRC: - strcat(edit_tmp, "_LRC"); - break; - case CONV_TYPE_RANGECODER: - strcat(edit_tmp, "_RC"); - break; - case CONV_TYPE_UNCOMPRESS: - strcat(edit_tmp, "_DECOMP"); - } - // 拡張子を付加 - if (cnv_dat->textout_width != 0) - { - strcat(edit_tmp, ".c"); - } - else - { - strcat(edit_tmp, ".bin"); - } - return out_fname; -} - - -//--------------------------------------------------------------------------- -// 次のオプションのタイプ判別 -// @param opt 判別したいオプション文字列 -// @return オプションのタイプ -//--------------------------------------------------------------------------- -t_opt -get_opt_type( const char* opt ) -{ - if ( strncmp( opt, "--", 2 ) == 0 ) - { - } - else - { - // オプション解析 - switch ( opt[1] ) - { - case 'v': - return OPT_VERSION; - case 's': - return OPT_SILENT; - case 'D': - return OPT_VERIFY; - case 't': - return OPT_LOWER_TEXT; - case 'T': - return OPT_UPPER_TEXT; - case 'A': - return OPT_ALIGN; - case 'H': - return OPT_HEADER; - case 'o': - return OPT_OUTPUT; - case 'x': - return OPT_EXTRACT; - case 'd': - return OPT_DIFF_FILTER; - case 'r': - return OPT_RUN_LENGTH; - case 'R': - return OPT_RANGECODER; - case 'l': - if ( strcmp(opt, "-lex" ) == 0 ) - { - return OPT_LZ77EX; - } -#if defined( SUPPORT_LH_LRC ) - else if ( strcmp(opt, "-lh") == 0 ) - { - return OPT_LH; - } - else if ( strcmp(opt, "-lrc") == 0 ) - { - return OPT_LRC; - } -#endif - else - { - return OPT_LZ77; - } - case 'h': - return OPT_HUFFMAN; - } - } - return OPT_NONE; -} - - -//--------------------------------------------------------------------------- -// コマンドパラメータ解析 -// @param argc パラメータ数 -// @param argv パラメータ配列 -// @retval cnv_dat 圧縮情報データ -// @retval in_fname 入力ファイル名 -// @retval out_fname 出力ファイル名 -// @return 0 ファイルの書き込み成功 -// -1 ファイルの書き込みエラー -//--------------------------------------------------------------------------- - -static int parse_opt(int argc, char *argv[], t_conv_data * cnv_dat, - char **in_fname, char **out_fname) -{ - int i = 1; - t_conv_type type; - int opt_num; - char *cmd_string; -#define SYNTAX_CHECK(exp) do { if (!(exp)) { usage(cmd_string); return -1; } } while(0) - - // コマンド名取得 - cmd_string = cut_fname(argv[0]); - - // 状態初期化 - cnv_dat->type = CONV_TYPE_NON; - cnv_dat->header_flg = 0; - cnv_dat->textout_width = 0; - cnv_dat->silent_flg = 0; - cnv_dat->alignment = 0; - cnv_dat->verify_flg = 0; - *out_fname = NULL; - *in_fname = NULL; - - // オプション解析 - while (i < argc) - { - t_opt opt; - - if (argv[i][0] != '-') - { - SYNTAX_CHECK(*in_fname == NULL); // 2重読みチェック - - // 入力ファイル名取得 - *in_fname = argv[i]; - i++; - continue; - } - - opt = get_opt_type( argv[i] ); - - // ハイフン付オプション解析 - switch ( opt ) - { - //-------------------- - // バージョン表示オプション'v'(引数0) - case OPT_VERSION: - SYNTAX_CHECK(argv[i][2] == '\0'); // 文字数チェック - - version_info(); - return -1; - - //-------------------- - // 標準出力無しオプション's' (引数0) - case OPT_SILENT: - SYNTAX_CHECK(argv[i][2] == '\0'); // 文字数チェック - SYNTAX_CHECK(!cnv_dat->silent_flg); // 2重読みチェック - - cnv_dat->silent_flg = 1; - break; - -#ifdef _DEBUG - //-------------------- - // ベリファイオプション'D' (引数0) - case OPT_VERIFY: - SYNTAX_CHECK(argv[i][2] == '\0'); // 文字数チェック - SYNTAX_CHECK(!cnv_dat->verify_flg); // 2重読みチェック - cnv_dat->verify_flg = 1; - break; -#endif - - //-------------------- - // C言語テキスト出力オプション't' (引数0-1) (リトルエンディアン) - case OPT_LOWER_TEXT: - SYNTAX_CHECK(cnv_dat->textout_width == 0); // 2重読みチェック - - if (strlen(argv[i]) == 2) // パラメータが無い場合はバイト単位で書き込む - { - cnv_dat->textout_width = 1; - } - else - { - cnv_dat->textout_width = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->textout_width == 1 || cnv_dat->textout_width == 2 - || cnv_dat->textout_width == 4); - } - break; - - //-------------------- - // C言語テキスト出力オプション'T' (引数0-1) (ビッグエンディアン) - case OPT_UPPER_TEXT: - SYNTAX_CHECK(cnv_dat->textout_width == 0); // 2重読みチェック - - if (strlen(argv[i]) == 2) // パラメータが無い場合はバイト単位で書き込む - { - cnv_dat->textout_width = 1; - } - else - { - cnv_dat->textout_width = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->textout_width == 1 || cnv_dat->textout_width == 2 - || cnv_dat->textout_width == 4); - } - cnv_dat->textout_width |= TEXT_BIG_ENDIAN_FLAG; - break; - - //-------------------- - // 出力ファイルサイズアライン指定'A4|8|16|32' (引数0) - case OPT_ALIGN: - SYNTAX_CHECK(strlen(argv[i]) <= 4 ); // 文字数チェック - SYNTAX_CHECK( cnv_dat->alignment == 0 ); // 2重読みチェック - - cnv_dat->alignment = atoi(&argv[i][2]); - SYNTAX_CHECK( cnv_dat->alignment == 4 || cnv_dat->alignment == 8 || cnv_dat->alignment == 16 || cnv_dat->alignment == 32 ); - - break; - - //-------------------- - // 展開後データの先頭にデータサイズを付加するオプション'H' (引数0) - case OPT_HEADER: - SYNTAX_CHECK(strlen(argv[i]) == 2); // 文字数チェック - SYNTAX_CHECK(!cnv_dat->header_flg); // 2重読みチェック - - cnv_dat->header_flg = 1; - break; - - //-------------------- - // 出力ファイル指定オプション 'o' (引数1) - case OPT_OUTPUT: - SYNTAX_CHECK(strlen(argv[i]) == 2); // 文字数チェック - SYNTAX_CHECK(*out_fname == NULL); // 2重読みチェック - SYNTAX_CHECK(i + 1 < argc); // パラメータチェック - - *out_fname = argv[++i]; - break; - - //-------------------- - // 解凍指定 'x'(引数0) - case OPT_EXTRACT: - SYNTAX_CHECK(strlen(argv[i]) == 2); // 文字数チェック - - type = CONV_TYPE_UNCOMPRESS; - opt_num = 0; - goto common; - - //-------------------- - // 差分フィルタ指定 'd'(引数1) - case OPT_DIFF_FILTER: - type = CONV_TYPE_DIFF; - goto common_opt1; - - //-------------------- - // ランレングス圧縮指定'r'(引数0) - case OPT_RUN_LENGTH: - SYNTAX_CHECK(strlen(argv[i]) == 2); // 文字数チェック - - type = CONV_TYPE_RUNLENGTH; - opt_num = 0; - goto common; - -#ifdef _DEBUG - //-------------------- - // レンジコーダ圧縮指定'R'(引数0) - case OPT_RANGECODER: - SYNTAX_CHECK(strlen(argv[i]) == 2); // 文字数チェック - - type = CONV_TYPE_RANGECODER; - opt_num = 0; - goto common; -#endif - //-------------------- - // 旧LZ77圧縮"-l"(引数0) - case OPT_LZ77: - SYNTAX_CHECK( (argv[i][2] == '\0') || isdigit(argv[i][2]) ); - type = CONV_TYPE_LZ77; - opt_num = 0; - cnv_dat->opt = 2; - - #if defined( FOR_NITRO ) - // 次にパラメータがあり、入力ファイル名でなければ読み飛ばす - if ( i + 2 < argc && argv[i + 1][0] != '-' && - argv[i + 1][1] == '\0' && atoi(&argv[i + 1][0]) != 0 ) - { - i++; - } - #endif - goto common; - - //-------------------- - // LZ77圧縮"-lex"(引数0) - case OPT_LZ77EX: - type = CONV_TYPE_LZ77EX; - opt_num = 0; - cnv_dat->opt = 2; // 検索開始位置はオプションで指定できない事にする - goto common; - - //-------------------- - // LH圧縮"-lh"(引数0) - case OPT_LH: - type = CONV_TYPE_LH; - opt_num = 0; - goto common; - - //-------------------- - // LRC圧縮"-lrc"(引数0) - case OPT_LRC: - type = CONV_TYPE_LRC; - opt_num = 0; - goto common; - - //-------------------- - // ハフマン圧縮指定'h'(引数1) - case OPT_HUFFMAN: - type = CONV_TYPE_HUFFMAN; - goto common_opt1; - - //-------------------- - // 圧縮方式指定部分の共通処理 - common_opt1: - if (strlen(argv[i]) == 2) - // 文字列が終了していれば次の引数がパラメータとなる - { - opt_num = 1; - } - else - // 文字列が続いていればその値がパラメータとなる - { - cnv_dat->opt = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->opt != 0); // パラメータが1以上の数字であるかのチェック - opt_num = 0; - } - // don't break; - common: - SYNTAX_CHECK(cnv_dat->type == CONV_TYPE_NON); // 2重読みチェック - - cnv_dat->type = type; - - if (opt_num == 0) - { - break; - } - - // 引数がある場合 - SYNTAX_CHECK(i + 1 < argc); // パラメータチェック - i++; - SYNTAX_CHECK(argv[i][0] != '-'); // パラメータにハイフンで始まらないかのチェック - - cnv_dat->opt = atoi(argv[i]); - - SYNTAX_CHECK(cnv_dat->opt != 0); // パラメータが1以上の数字であるかのチェック - - break; - - //-------------------- - default: - usage(cmd_string); - return -1; - } - i++; - } - - SYNTAX_CHECK(*in_fname != NULL); // 入力ファイルが指定されたかどうかのチェック - - // 出力ファイル名の自動生成 - if (*out_fname == NULL) - { - *out_fname = make_output_fname(*in_fname, cnv_dat); - } - - if (strcmp(*in_fname, *out_fname) == 0) - { - fprintf(stderr, "ERR: output file %s is same as input file\n", *out_fname); - return -1; - } - - if ( cnv_dat->type == CONV_TYPE_UNCOMPRESS ) - // 解凍オプションが指定された場合のオプションチェック - { - SYNTAX_CHECK(cnv_dat->alignment == 0); // アライメントの指定は不能です - SYNTAX_CHECK(cnv_dat->header_flg == 0); // ヘッダの追加オプションは不能です - } - - return 0; -#undef SYNTAX_CHECK -} - - - -//--------------------------------------------------------------------------- -// 入力ファイルの読み込み関数 -// -// @param fname 入力ファイル名 -// @retval 圧縮情報構造体へのポインタ -// @return 0 ファイルの読み込み成功 -// -1 ファイルの読み込みエラー -//--------------------------------------------------------------------------- - -static int load_file(const char *fname, t_conv_data * cnv_dat) -{ - FILE *in_file; - - // ファイルのオープン - if ((in_file = fopen(fname, "rb")) == NULL) - { - fprintf(stderr, "ERR: could not open file: %s\n", fname); - return -1; - } - - // ファイルのサイズ取得 - fseek(in_file, 0, SEEK_END); - if ((cnv_dat->src_size = ftell(in_file)) < 0) - { - fprintf(stderr, "ERR: file error\n"); - return -1; - } - - // 入力ファイルをバッファへ読み込み - if ((cnv_dat->src_buf = (uchar *) malloc(ROUNDUP4(cnv_dat->src_size))) == NULL) - { - fprintf(stderr, "ERR: memory exhausted\n"); - return -1; - } - - fseek(in_file, 0, SEEK_SET); - if (fread(cnv_dat->src_buf, 1, cnv_dat->src_size, in_file) != cnv_dat->src_size) - { - fprintf(stderr, "ERR: read error\n"); - return -1; - } - - fclose(in_file); - - // 4バイトアラインまでを0で埋める - { - ulong i; - for (i = 0; (cnv_dat->src_size + i) & 3; i++) - { - cnv_dat->src_buf[cnv_dat->src_size + i] = 0; - } - } - - return 0; -} - - -//--------------------------------------------------------------------------- -// 出力ファイルへの書き込み関数 -// -// @param fname 出力ファイル名 -// @retval 圧縮情報構造体へのポインタ -// @return 0 ファイルの書き込み成功 -// -1 ファイルの書き込みエラー -//--------------------------------------------------------------------------- - -static int save_file(const char *fname, const t_conv_data * cnv_dat) -{ - FILE *out_file; - - // 書き込みデータのチェック - if (cnv_dat->dest_buf == NULL || cnv_dat->dest_size < 0) - { - fprintf(stderr, "ERR: convert error\n"); - return -1; - } - - // ファイルのオープン - if ((out_file = fopen(fname, "wb")) == NULL) - { - fprintf(stderr, "ERR: could not open file: %s\n", fname); - return -1; - } - - // バッファを出力ファイルへ書き込み - if (cnv_dat->textout_width != 0) - { - // テキスト出力 - if ( fwrite_text(cnv_dat->dest_buf, cnv_dat->dest_size, cnv_dat->textout_width, out_file, fname) - != cnv_dat->dest_size ) - { - fprintf(stderr, "ERR: write error\n"); - return -1; - } - } - else - { - // バイナリ出力 - if ( fwrite(cnv_dat->dest_buf, 1, cnv_dat->dest_size, out_file) != cnv_dat->dest_size ) - { - fprintf(stderr, "ERR: write error\n"); - return -1; - } - } - - fclose(out_file); - - return 0; -} - -//--------------------------------------------------------------------------- -// C言語フォーマットでのテキスト出力 -// @param buf データバッファ -// @param size データサイズ -// @param fp 出力ファイルポインタ -// @param name 定数ラベル名 -// @return 0 ファイルの書き込み成功 -// -1 ファイルの書き込みエラー -//--------------------------------------------------------------------------- - -static int fwrite_text(const uchar * buf, ulong size, uint width, FILE * fp, const char *name) -{ - char *const_name_buf; - char *const_name_ptr; - ulong i; - ulong line_num; - uint big_endian = width & TEXT_BIG_ENDIAN_FLAG; - - width &= TEXT_WIDTH_MASK; - - if (fp == NULL) - { - return -1; - } - if (buf == NULL) - { - return -1; - } - if (name == NULL) - { - return -1; - } - - // 定数名の決定 - if ((const_name_buf = (char *)malloc( strlen(name) + 1 )) == NULL) - { - fprintf(stderr, "internal err: malloc fail!\n"); - return -1; - } - - strcpy(const_name_buf, name); - const_name_ptr = cut_fname(const_name_buf); - size = (size + width - 1) / width; - - // データの書き込み - if ( fprintf(fp, "#include <%s/types.h>\n\n", INCLUDE_TARGET) < 0 ) - { - return -1; - } - - if ( fprintf(fp, "const u%d %s[0x%lX] = {", width * 8, const_name_ptr, size) < 0 ) - { - return -1; - } - - line_num = (width >= 2) ? 2 : 1; - - for ( i = 0; i < size; i++ ) - { - if ((i * line_num) % 0x10 == 0) - { - if (fprintf(fp, "\n") < 0) - { - return -1; - } - } - switch ( width ) - { - case 1: - { - if ( fprintf(fp, "0x%02X,", *buf) < 0 ) - { - return -1; - } - buf++; - } - break; - case 2: - { - ushort val = *(ushort*)buf; - if ( big_endian ) - { - val = reverse_endian16( val ); - } - - if ( fprintf(fp, "0x%04X,", val) < 0 ) - { - return -1; - } - buf += 2; - } - break; - case 4: - { - ulong val = *(ulong*)buf; - if ( big_endian ) - { - val = reverse_endian32( val ); - } - - if ( fprintf(fp, "0x%08lX,", val) < 0 ) - { - return -1; - } - buf += 4; - } - break; - default: - return -1; - } - } - - if (fprintf(fp, "\n};\n") < 0) - { - return -1; - } - - free(const_name_buf); - - return i * width; -} - - -//--------------------------------------------------------------------------- -// データの変換 -// @retval cnv_dat 変換情報データ -// @return 0 変換成功 -// -1 変換失敗 -//--------------------------------------------------------------------------- - -static int convert_data(t_conv_data * cnv_dat) -{ - char cmd_str[16]; - - // コマンドストリングの生成 - switch (cnv_dat->type) - { - //--------------------- - // 差分フィルタ - case CONV_TYPE_DIFF: - if (cnv_dat->opt != 8 && cnv_dat->opt != 16) - { - fprintf(stderr, "ERR: invalid DIFF parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "d%d", cnv_dat->opt); - break; - - //--------------------- - // ランレングス圧縮 - case CONV_TYPE_RUNLENGTH: - // ランレングス符号化 - strcpy(cmd_str, "r"); - break; - - //--------------------- - // LZ77圧縮 - case CONV_TYPE_LZ77: - if (cnv_dat->opt < 2 || cnv_dat->opt > 255) - { - fprintf(stderr, "ERR: invalid LZ77 parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "l%d", cnv_dat->opt); - break; - - //--------------------- - // LZ77拡張圧縮 - case CONV_TYPE_LZ77EX: - if (cnv_dat->opt < 2 || cnv_dat->opt > 255) - { - fprintf(stderr, "ERR: invalid LZ77 parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "L%d", cnv_dat->opt); - break; - - //--------------------- - // ハフマン圧縮 - case CONV_TYPE_HUFFMAN: - if (cnv_dat->opt != 4 && cnv_dat->opt != 8) - { - fprintf(stderr, "ERR: invalid HUFFMAN parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "h%d", cnv_dat->opt); - break; - - //--------------------- - // レンジコーダ圧縮 - case CONV_TYPE_RANGECODER: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = RCACompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // LZ-ハフマン複合圧縮 - case CONV_TYPE_LH: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = LHCompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // LZ-RangeCoder複合圧縮 - case CONV_TYPE_LRC: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = LRCCompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // 無圧縮 - case CONV_TYPE_NON: - { - cnv_dat->dest_size = cnv_dat->src_size; - cnv_dat->dest_buf = cnv_dat->src_buf; - - // 4バイトアラインチェック - if (cnv_dat->alignment) - { - cnv_dat->dest_size = ROUNDUP(cnv_dat->src_size, cnv_dat->alignment); - } - else if (cnv_dat->textout_width >= 2) - { - cnv_dat->dest_size = ROUNDUP( cnv_dat->src_size, cnv_dat->textout_width & TEXT_WIDTH_MASK ); - } - } - return 0; - - //--------------------- - // 解凍 - case CONV_TYPE_UNCOMPRESS: - { - s32 ret; - if ( cnv_dat->src_size == 4 ) - { - cnv_dat->dest_size = 0; - cnv_dat->dest_buf = NULL; - goto finish; - } - cnv_dat->dest_size = nitroGetDecompFileSize( cnv_dat->src_buf ); - cnv_dat->dest_buf = (void*)malloc( cnv_dat->dest_size + 0x20 ); // アライメント分余分に確保 - memset(cnv_dat->dest_buf, 0, cnv_dat->dest_size + 0x20); - - switch ( *cnv_dat->src_buf & 0xF0 ) - { - case LH_CODE_HEADER: - ret = LHCompRead( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - break; - case LRC_CODE_HEADER: - ret = LRCCompRead( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - break; - case DIFF_CODE_HEADER: - case LZ_CODE_HEADER: - case HUFF_CODE_HEADER: - case RL_CODE_HEADER: - ret = nitroDecompress( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf, 1 ); - break; - default: - ret = -1; - } - if ( ret < 0 ) - { - fprintf(stderr, "ERR: Can't extract this file.\n"); - return -1; - } - } - goto finish; - - default: - fprintf(stderr, "ERR: invalid convert type\n"); - return -1; - } - - // 圧縮後ファイルのバッファ領域確保 - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - - // データ圧縮 - cnv_dat->dest_size = nitroCompress(cnv_dat->src_buf, - cnv_dat->src_size, - cnv_dat->dest_buf, cmd_str, cnv_dat->header_flg); - // 4バイトアラインチェック - if (cnv_dat->alignment) - { - cnv_dat->dest_size = ROUNDUP(cnv_dat->dest_size, cnv_dat->alignment); - } - -finish: - // テキスト形式出力の型によるアラインチェック - if (cnv_dat->textout_width >= 2) - { - cnv_dat->dest_size = ROUNDUP( cnv_dat->dest_size, cnv_dat->textout_width & TEXT_WIDTH_MASK ); - } - - return 0; -} - - -/*---------------------------------------------------------------------------* - Name: verify_data - - Description: 圧縮データの展開をおこない、元データと一致するかどうか - 確認する。 - - Arguments: cnv_dat 変換情報データ - - Returns: 0 ベリファイOK - -1 ベリファイNG - *---------------------------------------------------------------------------*/ -static int verify_data( t_conv_data * cnv_dat ) -{ - // 圧縮データの展開チェック - char *decomp_buf; - ulong decomp_size; - - if ( ! cnv_dat->verify_flg ) - { - return 0; - } - - decomp_buf = nitroCompMalloc( cnv_dat->src_size ); - decomp_size = nitroDecompress( cnv_dat->dest_buf, cnv_dat->dest_size, decomp_buf, 1 ); - - if ( matchingCheck(cnv_dat->src_buf, cnv_dat->src_size, decomp_buf, decomp_size) == 0 ) - { - fprintf(stderr, "ERR: data convert error\n"); - return -1; - } - return 0; -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c deleted file mode 100644 index 588590d9..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c +++ /dev/null @@ -1,661 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_test.c - - Copyright 2007 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$ - *---------------------------------------------------------------------------*/ - -#if defined( _DEBUG ) - -#include -#include -#include -#include -#include -#include "nitroCompLib.h" -#include "multipleCompLib.h" - -#define MAX_DATA_SIZE_EX 0x02000000 // 32MB -#define MAX_DATA_SIZE 0x00100000 // 1MB -//#define MAX_DATA_SIZE 0x100 // 256B - -#define LOOP_CNT 100 -#define LOOP_CNT_EX 4 - -#if 0 -#define TestReport(...) (void)0 -#else -#define TestReport printf -#endif - -#define ASSERT assert - -static u8* s_original; - -static int TestInit( void ); -static void TestLZ8( void ); -static void TestRL8( void ); -static void TestHuffman( void ); - -static struct -{ - u64 x; // 乱数値 - u64 mul; // 乗数 - u64 add; // 加算する数 -} -sRandContext; - -static void InitRand32_(u64 seed) -{ - sRandContext.x = seed; - sRandContext.mul = (1566083941LL << 32) + 1812433253LL; - sRandContext.add = 2531011; -} - -static u32 Rand32_(u32 max) -{ - sRandContext.x = sRandContext.mul * sRandContext.x + sRandContext.add; - - // 引数maxが定数ならばコンパイラにより最適化される。 - if (max == 0) - { - return (u32)(sRandContext.x >> 32); - } - else - { - return (u32)((((sRandContext.x >> 32) * (max >> 1)) >> 32) + (max >> 1)); - } -} - - - -static int compare( const u8 a[], const u8 b[], int size ) -{ - int i; - int equivalent_flag = 1; - for ( i = 0; i < size; ++i ) - { - if ( a[i] != b[i] ) - { - equivalent_flag = 0; - break; - } - } - return equivalent_flag; -} - - -//-------------------------------------------------- -// 元データ生成用関数 -//-------------------------------------------------- - -// LZ,Huffmanで圧縮されやすい元データを作成する。 -static u32 makeOriginalDataForLZHuff( u32 seed ) -{ - u32 fsize; - u32 i; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)(Rand32_(0x100) & 0xF0); - } - return fsize; -} - - -// RL圧縮されやすい元データを作成する。 -static u32 makeOriginalDataForRL( u32 seed ) -{ - u8 val; - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - if ( (i % 4) == 0 ) - { - val = (u8)Rand32_(0x100); - } - s_original[ i ] = val; - } - return fsize; -} - -// 圧縮されにくい元データを作成する。 -static u32 makeOriginalDataRand( u32 seed ) -{ - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)Rand32_(0x100); - } - return fsize; -} - - -// すべてが単一値の元データを作成する。 -static u32 makeOriginalDataMonoValue( u32 seed ) -{ - u32 i; - u32 fsize; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val = (u8)Rand32_(0x100); - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = val; - } - return fsize; -} - -// LZ,Huffmanで圧縮されやすい元データを作成する。 -static u32 makeOriginalDataForLZHuffEx( u32 seed ) -{ - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)(Rand32_(0x100) & 0xF0); - } - return fsize; -} - - -// RL圧縮されやすい元データを作成する。 -static u32 makeOriginalDataForRLEx( u32 seed ) -{ - u32 i; - u32 fsize; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val; - for ( i = 0; i < fsize; ++i ) - { - if ( (i % 4) == 0 ) - { - val = (u8)Rand32_(0x100); - } - s_original[ i ] = val; - } - return fsize; -} - -// 圧縮されにくい元データを作成する。 -static u32 makeOriginalDataRandEx( u32 seed ) -{ - u32 fsize; - u32 i; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)Rand32_(0x100); - } - return fsize; -} - - -// すべてが単一値の元データを作成する。 -static u32 makeOriginalDataMonoValueEx( u32 seed ) -{ - u32 fsize; - u32 i; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val = (u8)Rand32_(0x100); - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = val; - } - return fsize; -} - - - -typedef u32 (*MakeDataFunc)( u32 seed ); -#define WATER_MARK 0xDeadBeaf - - -static void TestLZ8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - if ( ! exFmt ) - { - sz = nitroCompress( s_original, fsize, s_compressed, "l2", 0 ); - } - else - { - sz = nitroCompress( s_original, fsize, s_compressed, "L2", 0 ); - } - - if ( sz == 0 ) - { - TestReport( "compress LZ fail size %d\n", fsize ); - } - else - { - TestReport("compress LZ %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare( s_original, s_uncompressed, (int)fsize ) ); - // 展開時のオーバーアクセスをチェック - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - -static void TestRL8_template( MakeDataFunc makeDataFunc, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = nitroCompress( s_original, fsize, s_compressed, "r", 0 ); - - if ( sz == 0 ) - { - TestReport( "compress RL fail size %d\n", fsize ); - } - else - { - TestReport("compress RL %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // 展開時のオーバーアクセスをチェック - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - -static void TestHuffman_template( MakeDataFunc makeDataFunc, u8 encBit, u32 loop_cnt ) -{ - u32 i; - for (i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( ((fsize + 0x3) & ~0x3) + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = nitroCompress( s_original, fsize, s_compressed, (encBit == 4 )? "h4" : "h8", 0 ); - - if ( sz == 0 ) - { - TestReport( "compress Huff fail size %d\n", fsize ); - } - else - { - TestReport("compress Huff %d -> %d\n", fsize, sz ); - // ハフマン展開では末尾の4バイトアラインまではオーバーアクセスされ得る - // コードになっている - *(u32*)(&s_uncompressed[ (fsize + 0x3) & ~0x3 ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // 展開時のオーバーアクセスをチェック - ASSERT( *(u32*)(&s_uncompressed[ (fsize + 0x3) & ~0x3 ]) == WATER_MARK ); - } - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -static void TestLH8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = LHCompWrite( s_original, fsize, s_compressed ); - - if ( sz == 0 ) - { - TestReport( "compress LH fail size %d\n", fsize ); - } - else - { - TestReport("compress LH %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - LHCompRead( s_compressed, sz, s_uncompressed ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // 展開時のオーバーアクセスをチェック - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -static void TestLRC8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = LRCCompWrite( s_original, fsize, s_compressed ); - - if ( sz == 0 ) - { - TestReport( "compress LRC fail size %d\n", fsize ); - } - else - { - TestReport("compress LRC %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - LRCCompRead( s_compressed, sz, s_uncompressed ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // 展開時のオーバーアクセスをチェック - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -//-------------------------------------------------- -// テストメイン -//-------------------------------------------------- - -static int TestInit( void ) -{ - time_t t; - s_original = (u8*)malloc( MAX_DATA_SIZE_EX + 4 ); - makeOriginalDataRand( (u32)time( &t ) ); - - return 0; -} - - -static void TestLZ8_normal( void ) -{ - TestLZ8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} -static void TestLZ8_random( void ) -{ - TestLZ8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} -static void TestLZ8_mono( void ) -{ - TestLZ8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -static void TestLZ8EX_normal( void ) -{ - TestLZ8_template( makeOriginalDataForLZHuff, 1, LOOP_CNT ); -} -static void TestLZ8EX_random( void ) -{ - TestLZ8_template( makeOriginalDataRand, 1, LOOP_CNT ); -} -static void TestLZ8EX_mono( void ) -{ - TestLZ8_template( makeOriginalDataMonoValue, 1, LOOP_CNT ); -} - - -static void TestRL8_normal( void ) -{ - TestRL8_template( makeOriginalDataForRL, LOOP_CNT ); -} -static void TestRL8_random( void ) -{ - TestRL8_template( makeOriginalDataRand, LOOP_CNT ); -} -static void TestRL8_mono( void ) -{ - TestRL8_template( makeOriginalDataMonoValue, LOOP_CNT ); -} - -static void TestHuffman8_normal( void ) -{ - TestHuffman_template( makeOriginalDataForLZHuff, 8, LOOP_CNT ); -} -static void TestHuffman8_random( void ) -{ - TestHuffman_template( makeOriginalDataRand, 8, LOOP_CNT ); -} -static void TestHuffman8_mono( void ) -{ - TestHuffman_template( makeOriginalDataMonoValue, 8, LOOP_CNT ); -} - -static void TestHuffman4_normal( void ) -{ - TestHuffman_template( makeOriginalDataForLZHuff, 4, LOOP_CNT ); -} -static void TestHuffman4_random( void ) -{ - TestHuffman_template( makeOriginalDataRand, 4, LOOP_CNT ); -} -static void TestHuffman4_mono( void ) -{ - TestHuffman_template( makeOriginalDataMonoValue, 4, LOOP_CNT ); -} - -static void TestLZ_ex(void) -{ - TestLZ8_template( makeOriginalDataForLZHuffEx, 0, LOOP_CNT_EX ); -} - -static void TestLZEX_ex(void) -{ - TestLZ8_template( makeOriginalDataForLZHuffEx, 1, LOOP_CNT_EX ); -} - -static void TestRL_ex(void) -{ - TestRL8_template( makeOriginalDataForRLEx, LOOP_CNT_EX ); -} - -static void TestHuffman8_ex(void) -{ - TestHuffman_template( makeOriginalDataForLZHuffEx, 8, LOOP_CNT_EX ); -} - -static void TestHuffman4_ex(void) -{ - TestHuffman_template( makeOriginalDataForLZHuffEx, 4, LOOP_CNT_EX ); -} - -static void TestLH_normal(void) -{ - TestLH8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} - -static void TestLH_random(void) -{ - TestLH8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} - -static void TestLH_mono(void) -{ - TestLH8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -static void TestLRC_normal(void) -{ - TestLRC8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} - -static void TestLRC_random(void) -{ - TestLRC8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} - -static void TestLRC_mono(void) -{ - TestLRC8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -#endif /* defined( _DEBUG ) */ - - - - - -/*---------------------------------------------------------------------------* - Name: ntcompress_test - - Description: テストメイン - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ntcompress_test( void ) -{ -#if defined( _DEBUG ) - TestInit(); - - TestLH_normal(); - TestLH_random(); - TestLH_mono (); - TestLRC_normal(); - TestLRC_random(); - TestLRC_mono (); - - TestLZ8EX_normal(); - TestLZ8EX_random(); - TestLZ8EX_mono (); - TestLZ8_normal(); - TestLZ8_random(); - TestLZ8_mono (); - TestRL8_normal(); - TestRL8_random(); - TestRL8_mono (); - TestHuffman8_normal(); - TestHuffman8_random(); - TestHuffman8_mono (); - TestHuffman4_normal(); - TestHuffman4_random(); - TestHuffman4_mono (); - TestLZ_ex(); - TestLZEX_ex(); - TestRL_ex(); - TestHuffman8_ex(); - TestHuffman4_ex(); - -#endif -} - - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h deleted file mode 100644 index 1167a58d..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h +++ /dev/null @@ -1,23 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_test.h - - Copyright 2007 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 NTCOMPRESS_TEST_H__ -#define NTCOMPRESS_TEST_H__ - -void ntcompress_test( void ); - -#endif // NTCOMPRESS_TEST_H__ - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c deleted file mode 100644 index 193baa9c..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c +++ /dev/null @@ -1,539 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: rangeCoder.c - - Copyright 2007 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 "rangeCoder.h" - -typedef struct -{ - u32 freq[ 0x100 ]; - u32 low_cnt[ 0x100 ]; - u32 total; -} -RCCompressionInfo; - -// レンジコーダ状態構造体 -typedef struct -{ - u32 low; - u32 range; - u32 code; // 展開時のみ使用 - u8 carry; // 圧縮時のみ使用 - u32 carry_cnt; // 圧縮時のみ使用 -} -RCState; - - -#define MAX_RANGE 0x80000000 - -/*---------------------------------------------------------------------------* - Name: RCInitInfo_ - Description: - Arguments: info - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitInfo_( RCCompressionInfo* info, BOOL adaptive ) -{ - u32 i; - - if ( adaptive ) - // 適応型レンジコーダ - { - for ( i = 0; i < 0x100; i++ ) - { - info->freq[ i ] = 1; - info->low_cnt[ i ] = i; - } - info->total = 0x100; - } - else - // 静的レンジコーダ - { - for ( i = 0; i < 0x100; i++ ) - { - info->freq[ i ] = 0; - info->low_cnt[ i ] = 0; - } - info->total = 0; - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCount_ - Description: - Arguments: info - srcp - size - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCCount_( RCCompressionInfo* info, const u8* srcp, u32 size ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < size ) - { - info->freq[ srcp[ srcCnt ] ]++; - info->total++; - srcCnt++; - } - - // 0x10000へ正規化 - #define NORMAL_FREQ 0x10000 - { - f32 rate = (f32)NORMAL_FREQ / info->total; - u32 max_i = 0; - u32 max_freq = 0; - - info->total = 0; - for ( i = 0; i < 0x100; i++ ) - { - u32 orig = info->freq[ i ]; - info->freq[ i ] = (u32)(rate * info->freq[ i ] + 0.5f); - if ( orig != 0 && info->freq[ i ] == 0 ) - { - info->freq[ i ] = 1; - } - - info->total += info->freq[ i ]; - if ( info->freq[ i ] >= max_freq ) - { - max_i = i; - max_freq = info->freq[ i ]; - } - } - if ( info->total > NORMAL_FREQ ) - { - info->freq[ max_i ] -= (info->total - NORMAL_FREQ); - } - else - { - info->freq[ max_i ] += (NORMAL_FREQ - info->total); - } - info->total = NORMAL_FREQ; - } - #undef NORMAL_FREQ - - info->low_cnt[ 0 ] = 0; - - for ( i = 1; i < 0x100; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - } -} - - - -/*---------------------------------------------------------------------------* - Name: RCAAddCount_ - - Description: 適応型レンジコーダの頻度テーブルを更新します。 - - Arguments: info - val - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAAddCount_( RCCompressionInfo* info, u8 val ) -{ - u32 i; - - info->freq[ val ]++; - info->total++; - for ( i = val + 1; i < 0x100; i++ ) - { - info->low_cnt[ i ]++; - } - - // トータルが最大値を越えた場合には、再構成する。 - if ( info->total >= 0x00010000 ) - { - if ( info->freq[ 0 ] > 1 ) - { - info->freq[ 0 ] = info->freq[ 0 ] / 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - - for ( i = 1; i < 0x100; i++ ) - { - if ( info->freq[ i ] > 1 ) - { - info->freq[ i ] >>= 1; - } - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCompWrite - - Description: レンジコーダの圧縮(テーブル型) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite_( const u8* srcp, u32 size, u8* dstp, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - static RCCompressionInfo sInfo; - u32 srcCnt = 0; - u32 dstCnt = 0; - u32 low, range; - u8 carry; - u32 carry_cnt; - u32 i; - - // ワークの初期化 - RCInitInfo_( &sInfo, adaptive ); - - if ( ! adaptive ) - { - // 出現頻度を計算 - RCCount_( &sInfo, srcp, size ); - } - - // 開始Rangeが0x80000000なので、初回いきなり桁上げが発生することはない - low = 0; - range = MAX_RANGE; - carry = 0; - carry_cnt = 0; - - // ヘッダ出力 - dstp[ dstCnt++ ] = LRC_CODE_HEADER; - if ( size > 0x1000000 ) - { - dstp[ dstCnt++ ] = 0; - dstp[ dstCnt++ ] = 0; - dstp[ dstCnt++ ] = 0; - } - dstp[ dstCnt++ ] = (u8)( size ); - dstp[ dstCnt++ ] = (u8)( size >> 8 ); - dstp[ dstCnt++ ] = (u8)( size >> 16 ); - if ( size > 0x1000000 ) - { - dstp[ dstCnt++ ] = (u8)( size >> 24 ); - } - - if ( ! adaptive ) - { - // 頻度テーブルの出力(16bitリトルエンディアン) - for ( i = 0; i < 0x100; i++ ) - { - dstp[ dstCnt++ ] = (u8)( sInfo.freq[ i ] ); - dstp[ dstCnt++ ] = (u8)( sInfo.freq[ i ] >> 8 ); - } - } - - // コードの出力 - while ( srcCnt < size ) - { - u8 val = srcp[ srcCnt++ ]; - u32 temp = range / sInfo.total; - u32 prevLow = low; - low = low + sInfo.low_cnt[ val ] * temp; - range = sInfo.freq[ val ] * temp; - - if ( adaptive ) - { - // 出現頻度テーブルを更新 - RCAAddCount_( &sInfo, val ); - } - - // 桁上がりが発生する場合の処理 - if ( prevLow > low ) - { - // キャリーを1繰上げ - ++carry; - // キャリーと(キャリーカウンタ - 1)分の0x00を出力します。 - if ( carry_cnt > 1 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - carry = 0x00; - } - while ( carry_cnt > 1 ) - { - dstp[ dstCnt++ ] = 0x00; - --carry_cnt; - } - } - - // Rangeの上位1バイトが空になったら桁上げ - while ( range < MIN_RANGE ) - { - u8 candidate = (u8)( low >> 24 ); - - // 次のキャリーが0xFFの場合は更に桁上げがあり得るのでcarryを出力せずにcarry_cntだけ増やす - if ( candidate == 0xFF ) - { - ++carry_cnt; - } - else - // 次のキャリーが0xFFではない場合はcarryを出力する - { - // carryと(carry_cnt - 1)分の0xFFを出力する - if ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - } - while ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = 0xFF; - --carry_cnt; - } - // 新しいcarryに置き換え - carry = candidate; - carry_cnt = 1; - } - low <<= 8; - range <<= 8; - } - } - - if ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - } - while ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = 0xFF; - --carry_cnt; - } - dstp[ dstCnt++ ] = (u8)( (low >> 24) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 16) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 8 ) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 0 ) & 0xFF ); - - return dstCnt; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: RCACompWrite - - Description: レンジコーダの圧縮(適応型) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite( const u8* srcp, u32 size, u8* dstp ) -{ - return RCCompWrite_( srcp, size, dstp, FALSE ); -} - -s32 -RCACompWrite( const u8* srcp, u32 size, u8* dstp ) -{ - return RCCompWrite_( srcp, size, dstp, TRUE ); -} - -static u8 -SearchRC_( RCCompressionInfo* info, u32 code, u32 range, u32 low ) -{ -#define TABLE_SIZE 0x100 - u32 codeVal = code - low; - u32 i; - u32 temp = range / info->total; - u32 tempVal = codeVal / temp; - -#if 0 - // TODO: とりあえず線形探索、二分探索にするべき - for ( i = 0; i < TABLE_SIZE - 1; i++ ) - { - if ( info->low_cnt[ i + 1 ] > tempVal ) - { - while ( info->freq[ i ] == 0 ) - { - --i; - } - return (u8)i; - } - } - return TABLE_SIZE - 1; -#else - // 二分探索 - u32 left = 0; - u32 right = TABLE_SIZE - 1; - - while ( left < right ) - { - i = (left + right) / 2; - - if ( info->low_cnt[ i ] > tempVal ) - { - right = i; - } - else - { - left = i + 1; - } - } - - i = left; - while ( info->low_cnt[ i ] > tempVal ) - { - --i; - } - return (u8)i; -#endif -} - -/*---------------------------------------------------------------------------* - Name: RCCompRead - - Description: レンジコーダ展開(テーブル型) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompRead_( const u8* srcp, u32 srcSize, u8* dstp, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - static RCCompressionInfo sInfo; - - u32 dstSize = *(u32*)srcp >> 8; - u32 dstCnt = 0; - u32 srcCnt = 0; - u32 i; - u32 code, range, low; - - if ( srcSize < 4 ) - { - return -1; - } - - srcCnt = 4; - if ( dstSize == 0 ) - { - dstSize = *(u32*)&srcp[ srcCnt ]; - srcCnt += 4; - if ( srcSize < 8 ) - { - return -1; - } - } - - if ( srcSize < sizeof(u16) * 0x100 + srcCnt ) - { - return -1; - } - - // ワークの初期化 - if ( adaptive ) - { - RCInitInfo_( &sInfo, TRUE ); - } - else - { - sInfo.total = 0; - for ( i = 0; i < 0x100; i++ ) - { - sInfo.freq[ i ] = *(u16*)&srcp[ srcCnt ]; - srcCnt += 2; - sInfo.total += sInfo.freq[ i ]; - } - sInfo.low_cnt[ 0 ] = 0; - for ( i = 1; i < 0x100; i++ ) - { - sInfo.low_cnt[ i ] = sInfo.low_cnt[ i - 1 ] + sInfo.freq[ i - 1 ]; - } - } - - code = (u32)((srcp[ srcCnt ] << 24) | (srcp[ srcCnt + 1 ] << 16) | - (srcp[ srcCnt + 2 ] << 8) | (srcp[ srcCnt + 3 ])); - range = MAX_RANGE; - low = 0; - srcCnt += 4; - - while ( dstCnt < dstSize ) - { - u8 val = SearchRC_( &sInfo, code, range, low ); - - dstp[ dstCnt++ ] = val; - - { - u32 tmp; - tmp = range / sInfo.total; - low = low + sInfo.low_cnt[ val ] * tmp; - range = sInfo.freq[ val ] * tmp; - } - - if ( adaptive ) - { - // 出現頻度テーブルを更新 - RCAAddCount_( &sInfo, val ); - } - - while ( range < MIN_RANGE ) - { - code <<= 8; - code += srcp[ srcCnt++ ]; - range <<= 8; - low <<= 8; - } - } - - return dstSize; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: RCACompRead - - Description: レンジコーダ展開(適応型) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - return RCCompRead_( srcp, srcSize, dstp, FALSE ); -} - -s32 -RCACompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - return RCCompRead_( srcp, srcSize, dstp, TRUE ); -} - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h deleted file mode 100644 index 53808e5a..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: rangeCoder.h - - Copyright 2007 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 "types.h" - -#ifndef __NTCOMPRESS_RANGE_CODER_H__ -#define __NTCOMPRESS_RANGE_CODER_H__ - -/*---------------------------------------------------------------------------* - Name: RCCompWrite - - Description: レンジコーダの圧縮 - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite( const u8* srcp, u32 size, u8* dstp ); - -s32 -RCCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -s32 -RCACompWrite( const u8* srcp, u32 size, u8* dstp ); - -s32 -RCACompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -#endif // __NTCOMPRESS_RANGE_CODER_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h deleted file mode 100644 index 7d76786b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h +++ /dev/null @@ -1,57 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: types.h - - Copyright 2007 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 __NTCOMPRESS_TYPES_H__ -#define __NTCOMPRESS_TYPES_H__ - -//=========================================================================================== -// 型定義 -//=========================================================================================== -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; -typedef signed char s8; -typedef signed short s16; -typedef signed long s32; -typedef float f32; -typedef unsigned long BOOL; -#define FALSE 0 -#define TRUE 1 - -#define DIFF_CODE_HEADER (0x80) -#define LZ_CODE_HEADER (0x10) -#define HUFF_CODE_HEADER (0x20) -#define RL_CODE_HEADER (0x30) -#define LH_CODE_HEADER (0x40) -#define LRC_CODE_HEADER (0x50) -#define CODE_HEADER_MASK (0xF0) - - -#if defined( __GNUC__ ) - typedef unsigned long long int u64; - typedef signed long long int s64; - #define INLINE inline - #define ASSERT(x) (void)0 -#else - #include - #define INLINE __inline - #define ASSERT assert - typedef unsigned __int64 u64; - typedef signed __int64 s64; -#endif - -#endif // __NTCOMPRESS_TYPES_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln deleted file mode 100644 index 541afd75..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ntcompress", "ntcompress.vcproj", "{FA042C1E-4CB1-4B8A-87A6-B46B4222605E}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Debug.ActiveCfg = Debug|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Debug.Build.0 = Debug|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Release.ActiveCfg = Release|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj deleted file mode 100644 index 050e7b60..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile b/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile deleted file mode 100644 index 4f394d4f..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - FS - overlay -# File: Makefile -# -# Copyright 2007 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$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - - -ifeq ($(TEST_TWLSDK_REBUILD),TRUE) -export TWLSDK_SYSMENU_PRIVATE = TRUE -SUBDIRS = copy_to_sdk \ - $(ROOT) -endif # ifeq ($(TEST_TWLSDK_REBUILD),TRUE) - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c loadSharedFont.c - -LLIBRARIES += libsharedfont$(TWL_LIBSUFFIX).a - -ROM_SPEC = ROM-TS_nand.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#---------------------------------------------------------------------------- - -do-build: oslib $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -oslib: - touch $(ROOT)/build/libraries/os/ARM9.TWL/src/os_sharedFont.c - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf b/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf deleted file mode 100644 index 8cb68fb1..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf +++ /dev/null @@ -1,277 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # -################################################################ - - WramMapping MAP_TS_SCR - -################################################################ - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile deleted file mode 100644 index a859f4e3..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile - -# -# Copyright 2007 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: -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ORG_H = sharedFont.h -ORG_C = os_sharedFont.c - -CP_H_DIR = $(TWLSDK_ROOT)/include/twl/os/common -CP_C_DIR = $(TWLSDK_ROOT)/build/libraries/os/ARM9.TWL/src/ - -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -do-build: - cp $(ORG_H) $(CP_H_DIR) - cp $(ORG_C) $(CP_C_DIR) - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c deleted file mode 100644 index d6f94dd1..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c +++ /dev/null @@ -1,352 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - File: os_sharedFont.c - - Copyright 2007 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 -#include - -#ifdef USE_FONT_WRAM_LOAD -#include "fs_wram.h" -#endif // USE_FONT_WRAM_LOAD - -// compile switch-------------------------------------------------------------- -//#define DISABLE_HASH_CHECK - -// extern data----------------------------------------------------------------- -// define data----------------------------------------------------------------- -#ifdef USE_FONT_WRAM_LOAD -#define THREAD_PRIO_FS_FRAM 3 -#define WRAM_TOP_SLOT_FOR_FS 4 -#define WRAM_SIZE_FOR_FS MI_WRAM_SIZE_96KB -#endif // USE_FONT_WRAM_LOAD - -#define OS_SHARED_FONT_TABLE_PATH "nand:/" -#define OS_SHARED_FONT_FILE_NAME_LENGTH 0x20 -#define OS_SHARED_FONT_SIGN_SIZE 0x80 - -// 共有フォントテーブルヘッダ -typedef struct OSSharedFontHeader { - u32 timestamp; - u16 fontNum; - u8 pad[ 6 ]; - u8 digest[ SVC_SHA1_DIGEST_SIZE ]; -}OSSharedFontHeader; - -// 共有フォントテーブル -typedef struct OSSharedFontEntry { - u8 fileName[ OS_SHARED_FONT_FILE_NAME_LENGTH ]; -// u8 pad[ 4 ]; - u32 compLength; // 圧縮後サイズ - u32 offset; - u32 origLength; // 元のサイズ - u8 digest[ SVC_SHA1_DIGEST_SIZE ]; -}OSSharedFontEntry; - -// 共有フォントライブラリワーク -typedef struct OSSharedFontWork { - OSSharedFontHeader header; - OSSharedFontEntry *pInfoTable; -}OSSharedFontWork; - -#ifdef USE_FONT_WRAM_LOAD -// SHA1コールバック引数 -typedef struct CalcSHA1CallbackArg -{ - SVCSHA1Context ctx; - u32 hash_length; -} CalcSHA1CallbackArg; -#endif // USE_FONT_WRAM_LOAD - -// function's prototype------------------------------------------------------- -#ifdef USE_FONT_WRAM_LOAD -static void CalcSHA1Callback(const void* addr, const void* orig_addr, u32 len, MIWramPos wram, s32 slot, void* arg); -#endif // USE_FONT_WRAM_LOAD - -// global variable------------------------------------------------------------- -// static variable------------------------------------------------------------- -static OSSharedFontWork s_work; -static BOOL s_isInitialized = FALSE; - -// const data------------------------------------------------------------------ -// 共有フォント署名確認用公開鍵 -static const u8 s_sharedFontPubKey[] = { - 0x9f, 0x80, 0xbc, 0x5f, 0xb6, 0xb6, 0x1d, 0x2a, 0x46, 0x02, 0x52, 0x64, 0xb2, 0xa3, 0x86, 0xce, - 0xe6, 0x54, 0xd3, 0xa9, 0x70, 0x5b, 0xe3, 0xc2, 0x10, 0xa9, 0xb5, 0x2f, 0x38, 0xc5, 0x51, 0xfb, - 0xb5, 0xd1, 0x80, 0xfd, 0xff, 0x20, 0x65, 0xc1, 0x28, 0x4d, 0x56, 0xbe, 0xfb, 0xbd, 0x3f, 0xe4, - 0xba, 0xf7, 0x9c, 0x3a, 0x33, 0x74, 0x74, 0x9d, 0xdb, 0xdd, 0x9e, 0x86, 0x05, 0x2c, 0xad, 0xfc, - 0x93, 0xfa, 0xfb, 0x08, 0xea, 0x71, 0x18, 0x36, 0xc5, 0xdc, 0x4c, 0x06, 0x34, 0x57, 0xa7, 0x8f, - 0x4e, 0x82, 0xf7, 0xb3, 0xe2, 0x9c, 0xe4, 0x72, 0xe3, 0xdc, 0x60, 0xaf, 0xcc, 0x18, 0xe2, 0xd4, - 0xef, 0xd2, 0x76, 0x47, 0x31, 0xe6, 0x14, 0x0e, 0x1d, 0x26, 0xb5, 0x85, 0x97, 0xbc, 0xc6, 0xb6, - 0xd8, 0xe7, 0x69, 0x2d, 0x2c, 0x26, 0xfb, 0x5f, 0x70, 0x9e, 0x19, 0x9c, 0x6b, 0x02, 0x6d, 0x97 -}; - -// 共有フォント初期化 -BOOL OS_InitSharedFont( void ) -{ - FSFile file[1]; - u8 signature[ OS_SHARED_FONT_SIGN_SIZE ]; - - if( s_isInitialized ) { - return TRUE; - } - - MI_CpuClear32( &s_work, sizeof(s_work) ); - - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - - // 署名リード - if( FS_ReadFile( file, signature, OS_SHARED_FONT_SIGN_SIZE ) != OS_SHARED_FONT_SIGN_SIZE ){ - goto ERROR; - } - - // ヘッダリード - if( FS_ReadFile( file, &s_work.header, sizeof(OSSharedFontHeader) ) != sizeof(OSSharedFontHeader) ){ - goto ERROR; - } - - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // ヘッダ署名チェック - { - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - u8 sign_digest[ SVC_SHA1_DIGEST_SIZE ]; - static u32 heap[ 4096 / sizeof(u32) ]; - - SVCSignHeapContext acmemoryPool; - SVC_CalcSHA1( calc_digest, &s_work.header, sizeof(OSSharedFontHeader) ); - SVC_InitSignHeap( &acmemoryPool, heap, 4096 ); - if( !SVC_DecryptSign( &acmemoryPool, sign_digest, signature, s_sharedFontPubKey ) ) { - return FALSE; - } - if( !SVC_CompareSHA1( calc_digest, sign_digest ) ) { - return FALSE; - } - } -#endif - -#ifdef USE_FONT_WRAM_LOAD - // WRAM利用Read関数の準備、WRAMCの後半だけ解放しておく - FS_InitWramTransfer( THREAD_PRIO_FS_FRAM ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM7 ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9 ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_DSP ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM7 ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9 ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_DSP ); -#endif // USE_FONT_WRAM_LOAD - - s_isInitialized = TRUE; - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -// 共有フォント テーブルサイズ取得 -int OS_GetSharedFontTableSize( void ) -{ - if( s_isInitialized ) { - return (int)( s_work.header.fontNum * sizeof(OSSharedFontEntry) ); - }else { - return -1; - } -} - - -// 共有フォント テーブルロード -BOOL OS_LoadSharedFontTable( void *pBuffer ) -{ - FSFile file[1]; - u32 tableLen = sizeof(OSSharedFontEntry) * s_work.header.fontNum; - - if( ( !s_isInitialized ) || - ( s_work.header.fontNum == 0 ) || - ( pBuffer == NULL ) || - ( s_work.pInfoTable ) ) { - return FALSE; - } - - // フォントテーブルリード - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - if( !FS_SeekFile( file, OS_SHARED_FONT_SIGN_SIZE + sizeof(OSSharedFontHeader), FS_SEEK_SET ) ){ - goto ERROR; - } - if( FS_ReadFile( file, pBuffer, (int)tableLen ) != tableLen ){ - goto ERROR; - } - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // フォントテーブル ハッシュチェック - { - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - SVC_CalcSHA1( calc_digest, pBuffer, tableLen ); - if( !SVC_CompareSHA1( calc_digest, s_work.header.digest ) ) { - return FALSE; - } - } -#endif - - s_work.pInfoTable = pBuffer; - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -// 共有フォント フォントサイズ取得 -int OS_GetSharedFontSize( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return -1; - } - - return (int)s_work.pInfoTable[ index ].origLength; -} - - -// 共有フォント 圧縮後フォントサイズ取得 -int OS_GetSharedFontCompressedSize( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return -1; - } - - return (int)s_work.pInfoTable[ index ].compLength; -} - - -// 共有フォント フォントネーム取得 -const u8 *OS_GetSharedFontName( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return NULL; - } - - return s_work.pInfoTable[ index ].fileName; -} - - -// 共有フォント タイムスタンプ取得 -u32 OS_GetSharedFontTimestamp( void ) -{ - if( ( s_isInitialized == NULL ) ) { - return 0; - } - return s_work.header.timestamp; -} - - -// 共有フォント フォントロード -BOOL OS_LoadSharedFont( OSSharedFontIndex index, void *pBuffer ) -{ - FSFile file[1]; - OSSharedFontEntry *pInfo = &s_work.pInfoTable[ index ]; - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return FALSE; - } - - // フォント リード - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - if( !FS_SeekFile( file, (int)pInfo->offset, FS_SEEK_SET ) ){ - goto ERROR; - } -#ifdef USE_FONT_WRAM_LOAD - { - CalcSHA1CallbackArg arg; - SVC_SHA1Init( &arg.ctx ); - arg.hash_length = pInfo->compLength; - if( !FS_ReadFileViaWram( file, pBuffer, (s32)MATH_ROUNDUP( pInfo->compLength, 0x20 ), MI_WRAM_C, - WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, -#ifndef DISABLE_HASH_CHECK - CalcSHA1Callback, -#else - NULL, -#endif // DISABLE_HASH_CHECK - &arg ) ) { - goto ERROR; - } - SVC_SHA1GetHash( &arg.ctx, &calc_digest ); - } -#else - if( FS_ReadFile( file, pBuffer, (int)pInfo->compLength ) != pInfo->compLength ){ - goto ERROR; - } -#ifndef DISABLE_HASH_CHECK - SVC_CalcSHA1( calc_digest, pBuffer, pInfo->compLength ); -#endif // DISABLE_HASH_CHECK -#endif // USE_FONT_WRAM_LOAD - - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // フォント ハッシュチェック - if( !SVC_CompareSHA1( calc_digest, pInfo->digest ) ) { - return FALSE; - } -#endif // DISABLE_HASH_CHECK - - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -#ifdef USE_FONT_WRAM_LOAD -// FS-WRAM転送時のSHA1計算コールバック -static void CalcSHA1Callback(const void* addr, const void* orig_addr, u32 len, MIWramPos wram, s32 slot, void* arg) -{ -#pragma unused(orig_addr) -#pragma unused(wram) -#pragma unused(slot) - CalcSHA1CallbackArg *cba = (CalcSHA1CallbackArg *)arg; - u32 calc_len = ( cba->hash_length < len ? cba->hash_length : len ); - if( calc_len == 0 ) return; - cba->hash_length -= calc_len; - SVC_SHA1Update( &cba->ctx, addr, calc_len ); -} -#endif // USE_FONT_WRAM_LOAD diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h deleted file mode 100644 index 98447dda..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h +++ /dev/null @@ -1,69 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - include - File: sharedFont.h - - Copyright 2007 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 TWL_OS_SHARED_FONT_H_ -#define TWL_OS_SHARED_FONT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -// 共有フォントインデックス -typedef enum OSSharedFontIndex { - OS_SHARED_FONT_WW_L = 0, - OS_SHARED_FONT_WW_M = 1, - OS_SHARED_FONT_WW_S = 2, - OS_SHARED_FONT_MAX = 3 -}OSSharedFontIndex; - - -// 共有フォント初期化 -BOOL OS_InitSharedFont( void ); - -// 共有フォント テーブルサイズ取得 -int OS_GetSharedFontTableSize( void ); - -// 共有フォント テーブルロード -BOOL OS_LoadSharedFontTable( void *pBuffer ); - -// 共有フォント フォントサイズ取得 -int OS_GetSharedFontSize( OSSharedFontIndex index ); - -// 共有フォント 圧縮後サイズ取得 -int OS_GetSharedFontCompressedSize( OSSharedFontIndex index ); - -// 共有フォント フォントネーム取得 -const u8 *OS_GetSharedFontName( OSSharedFontIndex index ); - -// 共有フォント タイムスタンプ取得 -u32 OS_GetSharedFontTimestamp( void ); - -// 共有フォント フォントロード -BOOL OS_LoadSharedFont( OSSharedFontIndex index, void *pBuffer ); - -#endif // SDK_ARM9 - -#ifdef __cplusplus -} -#endif - -#endif // TWL_OS_SHARED_FONT_H_ diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c b/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c deleted file mode 100644 index 4fbb98a5..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c +++ /dev/null @@ -1,198 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.c - - Copyright 2007 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 -#include "loadSharedFont.h" - -// 圧縮フォントを解凍するときは1にする -#define UNCOMPRESS_FONTS 1 - -// 前方圧縮のときには1にする -#define FORWARD_COMPRESS 0 - -// extern data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -BOOL g_isSucceededLoad[ OS_SHARED_FONT_MAX ]; - -// static variable------------------------------------------------------------- -static u8 *s_pFontBuffer[ OS_SHARED_FONT_MAX ]; // 読み込みはテストなのでロード先はstatic変数にしている。 -static BOOL s_isStarted = FALSE; -static u8 *s_pCompressedBuffer[ OS_SHARED_FONT_MAX ]; // 圧縮用TempBuffer - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// 共有フォントロード -// ============================================================================ -void LoadSharedFont( STicks *pTicks ) -{ - u8 *pBuffer; - int size; - OSSharedFontIndex i; - OSTick starttick; - - pTicks->all = 0; - pTicks->comp = 0; - - if( s_isStarted ) return; - - starttick = OS_GetTick(); - - // フォントロード準備 - if( !OS_InitSharedFont() ) { - OS_TPrintf( "OS_InitSharedFont failed.\n" ); - return; - } - size = OS_GetSharedFontTableSize(); - if( size < 0 ) { - OS_TPrintf( "OS_GetSharedTableSize failed.\n" ); - return; - } - - pBuffer = OS_Alloc( (u32)size ); - if( pBuffer == NULL ) { - OS_TPrintf( "malloc failed.\n" ); - return; - } - if( !OS_LoadSharedFontTable( pBuffer ) ) { - OS_TPrintf( "OS_LoadSharedTable failed.\n" ); - return; - } - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_MAX; i++ ) - { - int origsize; -#if (UNCOMPRESS_FONTS==1) - int compsize; - int comperr; - OSTick comptick; -#endif - - OS_TPrintf( "%s read.\n", OS_GetSharedFontName( i ) ); - - // フォントの元の(解凍後の)サイズ - origsize = OS_GetSharedFontSize( i ); - if( origsize < 0 ) - { - OS_TPrintf( " get font size failed.\n" ); - } - origsize = MATH_ROUNDUP( origsize, 32 ); // FSのキャッシュが怪しそうなので、とりあえずアラインメントをとっておく。 - OS_TPrintf( " original size = %d\n", origsize ); - -#if (UNCOMPRESS_FONTS==1) - compsize = OS_GetSharedFontCompressedSize( i ); - if( compsize < 0 ) - { - OS_TPrintf( " get compressed font size failed.\n" ); - } - OS_TPrintf( " compressed size = %d\n", compsize ); -#endif - - s_pFontBuffer[ i ] = OS_Alloc( (u32)origsize ); // 元のフォントサイズでバッファ確保 - if( s_pFontBuffer[ i ] == NULL ) - { - OS_TPrintf( " malloc failed.\n" ); - } - - // 圧縮後のフォントをロード -#if (FORWARD_COMPRESS==1) - s_pCompressedBuffer[i] = OS_Alloc( (u32)MATH_ROUNDUP( compsize, 32 ) ); - if( OS_LoadSharedFont( i, s_pCompressedBuffer[ i ] ) ) -#else - if( OS_LoadSharedFont( i, s_pFontBuffer[ i ] ) ) -#endif - { - OS_TPrintf( " load succeeded.\n" ); - g_isSucceededLoad[ i ] = TRUE; - } - else - { - OS_TPrintf( " load failed.\n" ); - g_isSucceededLoad[ i ] = FALSE; - } - - // 解凍 -#if (UNCOMPRESS_FONTS==1) - comptick = OS_GetTick(); - OS_TPrintf( " uncompress font\n" ); -#if (FORWARD_COMPRESS==1) - //comperr = MI_SecureUncompressLZ( s_pCompressedBuffer[i], (u32)compsize, s_pFontBuffer[i], (u32)origsize ); - //comperr = MI_SecureUncompressHuffman( s_pCompressedBuffer[i], (u32)compsize, s_pFontBuffer[i], (u32)origsize ); - MI_UncompressHuffman( s_pCompressedBuffer[i], s_pFontBuffer[i] ); - comperr = MI_ERR_SUCCESS; -#else - comperr = MI_SecureUncompressBLZ( s_pFontBuffer[i], (u32)compsize, (u32)origsize ); -#endif - if( MI_ERR_SUCCESS == comperr ) - { - OS_TPrintf( " uncompression succeeded\n" ); - } - else - { - OS_TPrintf( " uncompression failed %d\n", comperr ); - } - pTicks->comp += (OS_GetTick() - comptick); // 解凍にかかった時間 -#endif - } - - // 全部の処理にかかった時間 - pTicks->all = OS_GetTick() - starttick; - - s_isStarted = TRUE; -} - -void WriteFontIntoSD( void ) -{ - u8 *pFont = NULL; - int size; - OSSharedFontIndex i; - char str[100]; - FSFile fp[1]; - - FS_InitFile( fp ); - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_MAX; i++ ) - { - pFont = s_pFontBuffer[i]; - size = OS_GetSharedFontSize(i); - if( pFont != NULL) - { - STD_TSPrintf( str, "sdmc:/%s.uncomp", OS_GetSharedFontName(i) ); - FS_DeleteFile( str ); - if( !FS_CreateFile( str, FS_PERMIT_R|FS_PERMIT_W ) ) - { - OS_TPrintf( "sd create failed %d\n", FS_GetArchiveResultCode(str) ); - } - if( FS_OpenFileEx( fp, str, FS_FILEMODE_W ) ) - { - FS_WriteFile( fp, pFont, size ); - FS_CloseFile( fp ); - OS_TPrintf( "%s is written\n", str ); - } - else - { - OS_TPrintf( "sd write failed %d\n", FS_GetArchiveResultCode(str) ); - } - } - } -} - - - - diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h b/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h deleted file mode 100644 index 4095ee9c..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.h - - Copyright 2007 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_SHARED_FONT_H__ -#define __LOAD_SHARED_FONT_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// define data------------------------------------------------------- -typedef struct _STicks -{ - OSTick all; // 全部の時間 - OSTick comp; // 解凍の時間 -} STicks; - -// global variables-------------------------------------------------- -extern BOOL g_isSucceededLoad[ OS_SHARED_FONT_MAX ]; - -// function---------------------------------------------------------- -void LoadSharedFont( STicks *pTicks ); -void WriteFontIntoSD( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_SHARED_FONT_H__ diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c b/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c deleted file mode 100644 index ce1781e3..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - FS - overlay - File: main.c - - Copyright 2007 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 -#include - -#include "DEMO.h" -#include "loadSharedFont.h" - -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: アプリケーションメインエントリ - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - STicks ticks; - - OS_Init(); - OS_InitTick(); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - { - OSHeapHandle hh; - void *tmp; - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_TPanic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); - } - - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); - - FS_Init(FS_DMA_NOT_USE); - - OS_TPrintf("--------------------------------\n" - "Shared Font sample.\n"); - - LoadSharedFont( &ticks ); - - // 結果表示 - { - int i; - int ox = 10; - int oy = 60; - - DEMOFillRect(0, 0, GX_LCD_SIZE_X, GX_LCD_SIZE_Y, DEMO_RGB_CLEAR); - DEMOSetBitmapTextColor(GX_RGBA(0, 31, 0, 1)); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawFrame(ox, oy, 240, 10 + OS_SHARED_FONT_MAX * 10 + 20, GX_RGBA( 0, 31, 0, 1)); - for (i = 0; i < OS_SHARED_FONT_MAX; ++i) - { - DEMODrawText(ox + 10, oy + 5 + i * 10, "%s load %s", - OS_GetSharedFontName( (OSSharedFontIndex)i ), g_isSucceededLoad[ i ] ? "suceeded" : "failed"); - } - DEMODrawText(ox + 10, oy + 5 + OS_SHARED_FONT_MAX * 10, "all time %d msec", OS_TicksToMilliSeconds(ticks.all) ); - DEMODrawText(ox + 10, oy + 5 + OS_SHARED_FONT_MAX * 10 + 10, "comp time %d msec", OS_TicksToMilliSeconds(ticks.comp) ); - } - DEMO_DrawFlip(); - - WriteFontIntoSD(); - OS_TPrintf( "end\n" ); - OS_WaitVBlankIntr(); - - OS_Terminate(); -} - - diff --git a/build/tests/yuv2rgb/Makefile b/build/tests/yuv2rgb/Makefile deleted file mode 100644 index 3bf6d022..00000000 --- a/build/tests/yuv2rgb/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - YUV2RGB -# File: Makefile -# -# 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:$ -#--------------------------------------------------------------------------- - -ifdef TWL_IPL_RED_ROOT -#コンポーネントを切り替えます。 -#コメントアウトするとracoonを、有効化するとjackalを使います。 -#下の行を変更したらmake cleanしてください。 -TWL_IPL_USE_RED_IPL := TRUE -endif - -ifdef TWL_IPL_USE_RED_IPL -TARGET_FIRM = SYSTEMMENU -REBOOT_LIB = libreboot$(TWL_LIBSUFFIX).a -LDEPENDS_NEF += $(REBOOT_LIB) -ADDRESS_DTCM = 0x0e000000 -DEFAULT_COMP_ARM7 = jackal -MAKEROM_FLAGS += -F -LCFILE_SPEC = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher/ARM9/ARM9-TS.lsf -LCFILE_TEMPLATE = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher/ARM9/ARM9-TS.lcf.template -MACRO_FLAGS += -DTWL_IPL_USE_RED_IPL -MAKELCF_FLAGS += -DREBOOT_LIB='$(REBOOT_LIB)' -endif - - -TARGET_PLATFORM := TWL -TWL_PROC := ARM9 -TWL_ARCHGEN := LIMITED - -TARGET_BIN = main.srl -ROM_SPEC_TEMPLATE = yuv2rgb.rsf.template -ROM_SPEC = yuv2rgb.autogen.rsf -SRCS = snd_data.c mainy.cpp new.cpp cpu_yuv2rgb.c menuIrqHandler.c menuCameraManager.cpp #dsp_yuv2rgb.c -DATA_DIR = ./data -EXT_OBJS += $(patsubst $(DATA_DIR)/%.dat,$(OBJDIR)/%.o,$(wildcard $(DATA_DIR)/*.dat)) - -# DSPファームウェアを定数として静的リンクする。 -#DSP_FIRMWARE_DIR = $(ROOT)/build/dspcomponents/build/tests/yuv2rgb/bin -#DATA_DIR = . -#EXT_OBJS += $(patsubst $(DSP_FIRMWARE_DIR)/%.a,$(OBJDIR)/%.o,$(wildcard $(DSP_FIRMWARE_DIR)/*.a)) - -MACRO_FLAGS += -DTWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - -#---------------------------------------------------------------------------- - -ifdef TWL_IPL_USE_RED_IPL -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot -MAKEROM := $(TWL_IPL_RED_ROOT)/tools/bin/makerom.TWL.launcher.exe -else -include $(TWLSDK_ROOT)/build/buildtools/commondefs -endif -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - - -LLIBRARIES += libcpu_jpegEncoder$(TWL_LIBSUFFIX).a - - -#---------------------------------------------------------------------------- - -#do-build: $(ROM_SPEC) prepare $(TARGETS) -do-build: $(ROM_SPEC) $(TARGETS) - -#SUBDIRS = ../../../dspcomponents/build/tests/yuv2rgb - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -# UIGランチャーのソースをそのままコピーします。 -.PHONY: prepare -prepare: - cp -p $(TWL_IPL_ROOT)/menu/scene/src/menuCameraManager.cpp src - cp -p $(TWL_IPL_ROOT)/menu/scene/include/menuCameraManager.h include - -ifdef TWL_IPL_USE_RED_IPL -# for $(SYSMENU_LIBS) -include redipl_defs_autogen_by_uig -LLIBRARIES += $(SYSMENU_LIBS) - -$(ROM_SPEC): $(ROM_SPEC_TEMPLATE) Makefile - grep -v MAKEROM_WRAM_MAPPING $(ROM_SPEC_TEMPLATE) | grep -v NTRJ | grep -v User > $(ROM_SPEC) - -else -$(ROM_SPEC): $(ROM_SPEC_TEMPLATE) Makefile - grep -v WramMappingDirect $(ROM_SPEC_TEMPLATE) | grep -v HNAJ | grep -v Secure | grep -v System | grep -v HwAESSlot > $(ROM_SPEC) - -endif - -LDIRT_CLEAN += $(ROM_SPEC) - -#---------------------------------------------------------------------------- - -$(OBJDIR)/%.o : $(DATA_DIR)/%.dat - $(BIN2OBJ) --compatible $< $@ >/dev/null - -$(DATA_DIR)/%.dat : $(call eupath,$(DSP_FIRMWARE_DIR)/%.a) - cp -T $< $@ - - -ZIPDIR=$(notdir $(shell pwd)) -ZIPFILE=$(HOME)/$(ZIPDIR)-$(shell date +%y%m%d_%H%M).zip -.PHONY: zip -zip: - @cd .. && find $(ZIPDIR) ! -type d | grep -v -e \~ -e .tmp -e .svn -e .obj -e /bin/ -e /depend/ -e /obj/ | zip $(ZIPFILE) -@ - @ls -l $(ZIPFILE) - - -#===== End of Makefile ===== diff --git a/build/tests/yuv2rgb/data/camera_shutter.dat b/build/tests/yuv2rgb/data/camera_shutter.dat deleted file mode 100644 index 14b56eb5..00000000 Binary files a/build/tests/yuv2rgb/data/camera_shutter.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/data/camera_shutter_MONO.dat b/build/tests/yuv2rgb/data/camera_shutter_MONO.dat deleted file mode 100644 index 4d8cf1c7..00000000 Binary files a/build/tests/yuv2rgb/data/camera_shutter_MONO.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/data/wheel.dat b/build/tests/yuv2rgb/data/wheel.dat deleted file mode 100644 index 81a737dc..00000000 Binary files a/build/tests/yuv2rgb/data/wheel.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/include/const.h b/build/tests/yuv2rgb/include/const.h deleted file mode 100644 index e3db50e6..00000000 --- a/build/tests/yuv2rgb/include/const.h +++ /dev/null @@ -1,36 +0,0 @@ -#define cScreenWidth 256 -#define cScreenHeight 192 -#define cPhotoWidth 640 -#define cPhotoHeight 480 -// #define cThreadPriority_LauncherCameraHi (OS_THREAD_LAUNCHER_PRIORITY - 1) -// #define cThreadPriority_LauncherCameraLo (OS_THREAD_LAUNCHER_PRIORITY + 1) -// #define cThreadPriority_LauncherCameraShot (OS_THREAD_LAUNCHER_PRIORITY + 2) -#define IPL_ASSERT(exp) if ( !( exp ) ) IPL_HALT( #exp ) -#define IPL_PRINT OS_TPrintf -#define IPL_HALT OS_TPanic - -namespace menu { namespace sys { -class Object -{ -public: -// // スレッド優先順位。 -// enum -// { -// cThreadPriority_LauncherCameraHi = OS_THREAD_LAUNCHER_PRIORITY - 1, -// cThreadPriority_LauncherCameraLo = OS_THREAD_LAUNCHER_PRIORITY + 1, -// cThreadPriority_LauncherCameraShot = OS_THREAD_LAUNCHER_PRIORITY + 2, -// cThreadPriority_UpPicture = OS_THREAD_LAUNCHER_PRIORITY + 3 -// }; - - // 作り直し版 スレッド優先度。 - enum - { - // 優先度は検討が必要。 - cThreadPriority_CameraI2c = OS_THREAD_LAUNCHER_PRIORITY - 2, - cThreadPriority_CameraLowerHi = OS_THREAD_LAUNCHER_PRIORITY - 1, - - cThreadPriority_CameraLowerLo = OS_THREAD_LAUNCHER_PRIORITY + 10 - }; - -}; -}} diff --git a/build/tests/yuv2rgb/include/menuCameraManager.h b/build/tests/yuv2rgb/include/menuCameraManager.h deleted file mode 100644 index 2c67d505..00000000 --- a/build/tests/yuv2rgb/include/menuCameraManager.h +++ /dev/null @@ -1,381 +0,0 @@ -// 落ち着いたらcmnCameraManager.hへ持っていく。 - -#ifndef MENU_CAMERA_MANAGER_H_ -#define MENU_CAMERA_MANAGER_H_ - -//#define TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -// まだDSP版JPEGライブラリを使う。 -//#define TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#include "const.h" -#endif - -namespace cmn { namespace sys { namespace cmr2 -{ - - // eMode_Texのみ対応。 -// カメラモード -enum -{ - eMode_BG = 0 , - eMode_Tex , - eMode_BGSingle , - eMode_Max -}; - -// 定数 -enum -{ - cDefaultShowWidth = cScreenWidth , - cDefaultShowHeight = cScreenHeight , - cDefaultShotWidth = cPhotoWidth , - cDefaultShotHeight = cPhotoHeight , - - cEncodeResultSizeMax = cPhotoWidth * cPhotoHeight, - cEncodeQuality = 90, - cEncodeSampling = 2, - - cBufferCount = 2 , - - cCaptureRetryMax = 20, - - cDefaultDmaNo = 1 -}; - -enum -{ - cMsgI2c_Destroy = 0, - cMsgI2c_AfterInit, - cMsgI2c_Activate, - -// cMsgI2c_ChangeSizeToShot, -// cMsgI2c_ChangeSizeToShow, - - cMsgI2c_ChangeLedToOn, - cMsgI2c_ChangeLedToBlink, - - cMsgI2c_Max -}; - - - -enum -{ - // CAMERASelectはビットマスクなので注意。 - cCameraIndex_In = 0, - cCameraIndex_Out, - cCameraMax -}; - -enum -{ - // 通常時でも、起動直後に3回出る。 -// CAMERA_RESULT_BUSY type 0 retry 0 -// CAMERA_RESULT_BUSY type 0 retry 1 -// CAMERA_RESULT_BUSY type 0 retry 2 - - - cI2cRetryMax = 30, - cI2cRetryIntervalMsec = 100 -}; - -enum -{ - cI2cCommon_Activate = 0, - cI2cCommon_FrameRate, - cI2cCommon_ContextSwitch, - cI2cCommon_LedOn, - cI2cCommon_LedBlink, - - cI2cCommon_Max -}; - - -struct dtcmWork { - u32 mShrinkBuf[208*3]; // max(256*2,208*3) * sizeof(u32) - u64 mYuvBuf[12]; -}; - -typedef struct { - CAMERAContext mContext; - CAMERAFrameRate mFrameRate; -} cameraState; - -class Manager -{ -public: - // サイズはinit()で指定する。 - Manager(); - ~Manager(); - - void preInit( u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ); - void preInit() { - preInit( mShowWdt, mShowHgt, mShotWdt, mShotHgt ); - } - - void init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) , - u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ); - - void init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) ) { - init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - p_heap , -#endif - mode, sel_cmr, vram1, vram2, - pDtcmWork, gx_user_proc, - mShowWdt, mShowHgt, mShotWdt, mShotHgt ); - } - - BOOL tryDestroy(); - - void activate(); - - void changeCamera( CAMERASelect sel_cmr ) { mNextCmr = sel_cmr; } - void changeCamera() - { - changeCamera( mNextCmr == CAMERA_SELECT_IN ? CAMERA_SELECT_OUT : CAMERA_SELECT_IN ); - } - - // 「内(外)カメラに切り替えました」旨のメッセージを表示する場合、 - // 厳密に今の瞬間のカメラではなく、 - // 最終的にどちらのカメラが有効になるかを返せば良いと思うので - // mNextCmrを返す。 - CAMERASelect getCurrentCamera() const { return mNextCmr; } - // でも、切り替えにタイムラグがあるので、切り替え中かどうかを - // 知る方法も用意する。 - // mCaptureSkipCountは、他の要因(例えばカメラ解像度切り替え中)でも - // 0でなくなる。その場合にこの関数が一瞬0でなくなるが、 - // IN/OUT切り替え中の判定のために呼び出す限りは問題ないはず。 - BOOL isCameraChanging() { return ((mSelCmr != mNextCmr) || mCaptureSkipCount); } - - void startCapture(CAMERASelect sel_cmr); - void startCapture() { - startCapture(mNextCmr); - } - void stopCapture() { mNextCaptureFlag = FALSE; } - BOOL isCaptureBusy() { return (mCaptureFlag || mNextCaptureFlag); } - BOOL isSaveBusy() { return mEncodeBusyFlag; } - BOOL shoot(BOOL keepCapture = FALSE); - BOOL tryPrepareToSleep(); - -// void setShutterSnd( const u8* p_wav , u32 size , BOOL stereo ); -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// void startShutterSnd(); -// void finishShutterSnd(); -// BOOL isFinishedShutterSnd() const; -// #endif - - virtual void procVBlankIntr(); - virtual void procCameraIntr(); - virtual u16* procPreCapture(); - virtual void procPostCapture(); - virtual void procPostConvert(BOOL shot); - virtual void procPostShot(); - virtual u16* allocCapBuf(); - virtual void freeCapBufByPtr(const u16* pBuf); - BOOL isShotDone() { return mShotDone; } - void clearShotDone() { mShotDone = FALSE; } - void setTexSwap() { mTexSwap = TRUE; } -// int getTexBank() { return mTexBank; } - void setOneShotFlag(BOOL flag) { mOneShotFlag = (u8)flag; } - BOOL getOneShotFlag() { return mOneShotFlag; } - virtual BOOL convert(BOOL shot); - - void setCaptureRgbFlag(BOOL useRgb); - BOOL isFirstPictureReady() { return mFirstPictureReady; } - -#ifndef TWL_IPL_FINAL -public: - vu32 mDebugPort; -#endif - -private: - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* mpHeap; -#endif - - u8 mLedKeepFlag; - u8 mOneShotFlag; - u8 mCaptureRgbFlag; - - vu8 mEncodeBusyFlag; - - vu8 mPreInitFlag; - vu8 mInitFlag; - vu8 mPreInitBusyFlag; - vu8 mInitBusyFlag; - - u32 mEncodeOption; - - static vu8 mCaptureFlag; - static vu8 mNextCaptureFlag; - static vu8 mShotFlag; - static vu8 mNextShotFlag; - - vu8 mShotDone; - vu8 mTexSwap; - vu8 mI2cBusy; -#if SDK_VERSION_DATE < 20080630 - vu8 mIntrPositiveEdge; -#else - // intr edgeはCAMERAライブラリがハンドリングする。 -#endif - vu8 mFirstPictureReady; - - vu32 mShotErr; - - u32 mCaptureSkipCount; - u32 mCaptureRetryCount; - - u8 mIsCapBufUsed[2]; - u16* mpCapBuf[2]; - vu16* mpCaptureBuf; - vu16* mpConvBuf; - vu16* mpNextConvBuf; - vu16* mpShotBuf; - dtcmWork* mpDtcmWork; - - volatile int mTexBank; - volatile int mNextTexBank; - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - struct encodeWork { - u16 y[cPhotoWidth * cPhotoHeight]; - u16 cbcr[(cPhotoWidth * cPhotoHeight / 4) * 2]; - } *mpEncodeWork; -#else - u8* mpEncodeWork; -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - u8* mpEncodeResult; -#endif - - int mTarget; - - u32 mShowWdt; - u32 mShowHgt; - u32 mShotWdt; - u32 mShotHgt; - int mShowTransferLines; - int mShotTransferLines; - - int mMode; - - u32 mGxDma; - - int mVramType[ 2 ]; - u8* mVramAddr[ 2 ]; - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - const u8* mpShutterSnd; - u32 mShutterSndSize; - BOOL mShutterStereo; -#endif - - MINDmaConfig mDmaConfig; - - // 手元の実験ではmpTaskが使えないので… - OSThread mLowerThread; - OSThread mI2cThread; - u64 mLowerThreadStack[2048]; // JPEGを使うので、念のため16KBで。 - u64 mI2cThreadStack[1024]; - OSMessage mI2cMsgBuf[1]; - OSMessageQueue mI2cMsgQueue; - enum { - cEventMaskLower_Destroy = 1 << 0, - cEventMaskLower_EnableIntrAndPrepareBuffer = 1 << 1, - cEventMaskLower_DisableIntrAndDestroyBuffer = 1 << 2, - cEventMaskLower_Convert = 1 << 3, - cEventMaskLower_Shot = 1 << 4, - cEventMaskLower_NextConvertAndShot = 1 << 5, - cEventMaskLower_Activate = 1 << 6, - - cEventMaskLower_All = 0xffffffff - }; - OSEvent mLowerEvent; - void procLower(); - void procI2c(); - static void procLower_(void* p_arg) { - reinterpret_cast(p_arg)->procLower(); - } - static void procI2c_(void* p_arg) { - reinterpret_cast(p_arg)->procI2c(); - } - - static OSMessage mI2cAsyncMsgBuf[1]; - static OSMessageQueue mI2cAsyncMsgQueue; - CAMERAResult i2cCommon(u32 type, CAMERASelect sel_cmr); - CAMERAResult i2cSetupOthers(); - CAMERAResult i2cActivate(CAMERASelect sel_cmr); - CAMERAResult i2cFrameRate(CAMERASelect sel_cmr); - CAMERAResult i2cContextSwitch(CAMERASelect sel_cmr); - CAMERAResult i2cLed(BOOL isBlink); - static void i2cCommonAsyncCallback(CAMERAResult result, void *arg); - static void i2cActivateCallback(CAMERAResult result, void *arg); - static void i2cFrameRateCallback(CAMERAResult result, void *arg); - static void i2cContextSwitchCallback(CAMERAResult result, void *arg); - static void i2cLedCallback(CAMERAResult result, void *arg); - - CAMERASelect indexToCameraSelect(u32 i) { return (CAMERASelect)(CAMERA_SELECT_IN << i); } - static BOOL isOutCamera(CAMERASelect sel_cmr) { return (sel_cmr == CAMERA_SELECT_OUT); } - - static vu8 mCurLedBlink; - static volatile CAMERASelect mSelCmr; - static volatile CAMERASelect mNextCmr; - - static volatile cameraState mCmrCurState[cCameraMax]; - static volatile cameraState mCmrNextState[cCameraMax]; - - void prepareBuffer(); - void destroyBuffer(); - void useNextConvBuf(); - void encodeAndSave(); - void setInterrupt(BOOL enable); - - void (*mpGxUserProc)(u8* vramAddr, BOOL shot); - BOOL writeJpegToSD(const u8* src, u32 size); -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - BOOL writeJpegToNand(const u8* src, u32 size); -#endif - - // if non-static, CW claims: - // Error: 'pDtcm' could not be assigned to a register - // Error: internal compiler error (report to ...) - // while executing in file 'PCodeAssembly.c' line: 468 - static void Shrink640Yuv422To208Rgb555( const void* src, void* dst, u32 height, void* pDtcm ); - static void Shrink640Yuv422To256Rgb555( const void* src, void* dst, u32 height, void* pDtcm ); - static void Convert8bitYuv422To16bitYuv420( const u32* src, u16* pYCbCrBuf, u32 width, u32 height, void* pDtcm_ ); - -}; - -}}} - -#endif diff --git a/build/tests/yuv2rgb/include/new.h b/build/tests/yuv2rgb/include/new.h deleted file mode 100644 index 822167fc..00000000 --- a/build/tests/yuv2rgb/include/new.h +++ /dev/null @@ -1,45 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroSDK - OS - demos - cplusplus-1 - File: new.h - - Copyright 2003-2007 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. - - $Log: new.h,v $ - Revision 1.6 2007/02/20 00:28:10 kitase_hirotake - indent source - - Revision 1.5 2006/01/18 02:11:30 kitase_hirotake - do-indent - - Revision 1.4 2005/02/28 05:26:27 yosizaki - do-indent. - - Revision 1.3 2004/03/08 08:55:47 yada - fix top comment - - Revision 1.2 2004/02/20 00:04:05 yasu - add comments - - Revision 1.1 2004/02/18 04:19:30 yada - C++デモ - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ - -#ifndef MY_NEW_H_ -#define MY_NEW_H_ - -void *operator new(std::size_t blocksize); -void *operator new[] (std::size_t blocksize); -void operator delete(void *block) throw(); -void operator delete[] (void *block)throw(); - -/* MY_NEW_H_ */ -#endif diff --git a/build/tests/yuv2rgb/include/snd_data.h b/build/tests/yuv2rgb/include/snd_data.h deleted file mode 100644 index 89a4e28b..00000000 --- a/build/tests/yuv2rgb/include/snd_data.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: snd_data.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 SND_DATA_H_ -#define SND_DATA_H_ -#ifdef __cplusplus -extern "C" { -#endif -/*---------------------------------------------------------------------------*/ - -#include - -extern const u8 sound_seq_data[]; -extern const u8 sound_bank_data[]; -extern const u8 sound_wave_data[]; - -/*---------------------------------------------------------------------------*/ -#ifdef __cplusplus -} // extern "C" -#endif -#endif // SND_DATA_H_ diff --git a/build/tests/yuv2rgb/include/yuv2rgb.h b/build/tests/yuv2rgb/include/yuv2rgb.h deleted file mode 100644 index 7f06cbab..00000000 --- a/build/tests/yuv2rgb/include/yuv2rgb.h +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: cpu_yuv2rgb.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 YUV2RGB_H_ -#define YUV2RGB_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define DSP_DMA_NOT_USE 0xFFFFFFFFUL - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -typedef struct YUYV -{ - u8 y1; - u8 u; - u8 y2; - u8 v; -} YUYV; - -typedef struct RGBX16 -{ - u16 r:5; - u16 g:5; - u16 b:5; - u16 x:1; -} RGBX16; - -typedef void (*YUV2RGBCallback)(void); - -typedef enum _MessageYuv2Rgb -{ - MESSAGE_YUV2RGB_CONVERT = 1 -} MessageYuv2Rgb; - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbInit - - Description: 初期化関数 - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbInit(u32 dmaNo); - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbConvertAsync - - Description: YUV->RGB変換を行います。(非同期版) - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbConvertAsync(void* src, void* dest, u32 size, YUV2RGBCallback callback); - -// CPU版 -u32 CpuYuv2Rgb( const void* src, void* dest, u32 pixels ); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* YUV2RGB_H_ */ -#endif diff --git a/build/tests/yuv2rgb/readme.txt b/build/tests/yuv2rgb/readme.txt deleted file mode 100644 index 26873f1d..00000000 --- a/build/tests/yuv2rgb/readme.txt +++ /dev/null @@ -1,227 +0,0 @@ -このパッケージについて -====================== - -ARM7コンポーネントを、racoonからjackalにすると、カメラ動作時の -ARM9の処理落ちが多くなることを調べるためのサンプルです。 - -コンポーネントの切り替えは、Makefileの - -ifdef TWL_IPL_RED_ROOT -#コンポーネントを切り替えます。 -#コメントアウトするとracoonを、有効化するとjackalを使います。 -#下の行を変更したらmake cleanしてください。 -TWL_IPL_USE_RED_IPL := TRUE -endif - -上記の行をコメントアウトするか有効化するかで行ってください。 -変更したらmake cleanしてください。 - -処理落ちが発生すると、デバッグ出力に - -mConvBusy! 0, nextp empty -mConvBusy! 1, nextp empty - : - -と表示されます。数字は回数です。この頻度が、racoonとjackalで異な -ります。 - -画面上部の '*' の動きのスムーズさや、カメラに向かって手を振ったり -すると、カクカクすることでも処理落ちにお気づき頂けると思います。 - -以上です。 - - - -以下は、このパッケージに含まれる関数をSDKのDSP JPEGライブラリに追 -加して頂くために提供したときに作成したドキュメントです。 - -↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ -====================================================================== - -このパッケージについて -====================== - -UIGランチャーのカメラ撮影部分(カメラマネージャ)の実装のため、いろ -いろ実験するためのパッケージです。直接カメラやJPEGには関係しない -ファイルが含まれていますがご了承ください。 - -src/menuCameraManager.cppは、基本的に現状のUIGランチャーと同じも -のです。ここでの実験の成果をUIGランチャーへ反映しています。 - -YUV422->YUV420変換関数以外は、未完成の部分もあり、雑に作っている -部分もありますので、公開なさらないようにお願いします。 - -SDカードアクセス部は、UIGランチャー正式仕様ではありません。ただし -現状のUIGランチャーにもこのまま使われています。シャッター音もまだ -鳴りません。 - -実行方法は、普通にmakeしてmain.tlfをロードして頂くと、上画面にア -ウトカメラの画像が出ます。Aボタンでシャッターを切ります。SDカード -が入っていれば/menu/menu####.jpgを連番で生成します。(SDKのデモを -そのまま頂いています) - - -YUV422->YUV420変換関数の使用方法 -================================ - -menuCameraManager.cppのConvert8bitYuv422To16bitYuv420()で、 -YUV422->YUV420変換を行います。この関数を呼び出している同ファイル -の1074行目から1102行目あたり - - frame_y = mpTestEncodeWork->y; - frame_cb = mpTestEncodeWork->cbcr; - frame_cr = frame_cb + (mShotWdt * mShotHgt / 4); - tick = OS_GetTick(); - Convert8bitYuv422To16bitYuv420(reinterpret_cast(pBuf), - frame_y, - mShotWdt, - mShotHgt, - mpDtcmWork->mYuvBuf); - // store YUV420 and invalidate encode result - // DC_StoreAll(), DC_FlushAll() is NG? - DC_FlushAll(); - - IPL_PRINT("procShot: yuv422to420 time %d usec\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - tick = OS_GetTick(); - - // 出力サイズはいかほど必要? - DSP_SetJpegEncoderBuffer(mpTestEncodeWork->result, sizeof(mpTestEncodeWork->result)); - // explicit initialization - DSP_SetJpegEncoderThumbnailBuffer(NULL, NULL, NULL); - DSP_SetJpegEncoderAllocator( dspAlloc_, dspFree_ ); - u32 size = DSP_StartJpegEncoder( static_cast< s16 > ( mShotWdt ) , - static_cast< s16 > ( mShotHgt ) , - DSP_JPEG_THUMBNAIL , - 4 ); - - // need here too ? sometimes picture breaks... - // DC_StoreAll(), DC_FlushAll() is NG? - DC_InvalidateRange(mpTestEncodeWork->result, size); - -について説明します。 - -- 1078行目の変換関数の引数pBufは、カメラがVGA、YUV422でキャプチャ -した結果を指しています。このバッファは、直前にprocConvert()を通っ -てきており、917行目の - DC_FlushAll(); -で、データキャッシュのInvalidateが済んでいます。 -変換元データはワード(4バイト)リードされるため、 -reinterpret_castしています。 - -- 引数frame_yは、SDKのJPEGエンコーダのグローバル変数です。今は11 -行目から直接 -extern "C" { -// build/libraries/dsp/ARM9.TWL/src/dsp_jpeg_enc.c -extern u16 *frame_y; -extern u16 *frame_cb; -extern u16 *frame_cr; -} /* extern "C" */ -で参照していますが、SDKのグローバル変数名としては適切ではないため、 -変数名を整えてSet関数を追加して頂いた方が良いと思います。 - -- SDKのJPEGエンコーダには、frame_cbとframe_crも与える必要がありま -す。frame_cbとframe_crを与えているのは1074行目からの - frame_y = mpTestEncodeWork->y; - frame_cb = mpTestEncodeWork->cbcr; - frame_cr = frame_cb + (mShotWdt * mShotHgt / 4); -になります。 - -変換関数は、frame_yに隙間無く続けてframe_cb、frame_crを出力します -ので、変換関数の引数はframe_yだけです。 - -- mShotWdtは640、mShotHgtは480です。 - -- mpDtcmWork->mYuvBufで、処理高速化用のDTCMワークを与えています。 -menuCameraManager.hの43行目にある、12ダブルワード(96バイト) - u64 mYuvBuf[12]; -の領域が必要です。strd命令を使用しているので8バイトアラインメント -してください。(その上のmShrinkBufは、縮小用なので変換関数には関係 -ありません) - -DTCMを使うことについては、SDKとして公開する場合に検討が必要だと思 -います。メインメモリやVRAMを割り当てても動作するはずですが、試し -ていません。staticなDTCMワークでなくても、メインスレッドのスタッ -クフレームなら通常はDTCMになるはずですが、そういうことを意識させ -ると敷居が高くなります。 - -- 変換後の1085行目 - DC_FlushAll(); -は、JPEGエンコード時に画像が崩れる症状に悩まされ、念のためデータ -キャッシュの内容を実メモリへ吐き出しました。画像が崩れなくなれば、 -不要かもしれません。 - -- 1094行目の - DSP_SetJpegEncoderAllocator( dspAlloc_, dspFree_ ); -で指定しているアロケータですが、実体はmainy.cppの1667行目にありま -す。 - -dspAlloc_()は、実は何もしていません。何もしていないどころか、呼ば -れたらアサートで停止させます。 - -dspFree_()は、SDKから呼ばれてしまうので、停止はしませんがダミー関 -数にしてあります。 - -このアロケータの使われ方(SDKのdsp_jpeg_enc.c)については、いろいろ -思うところはあるのですが、簡単に言うと - -a. 最大で何バイト必要になるのか、できればコンパイル時に知りたいが -その方法が提供されていない - -b. pTmp2を最初に確保しているため、pYbuf、pCBbuf、pCRbufを確保した -後に - DSPFree(pTmp2); -するのはフラグメントを生じる可能性がある - -c. extra_bytesに関する処理や - Yuv_image_size=(u32)(image_width+32)*(image_height+32); -の+32が意図不明 - -というところで不安になったのが、私が変換関数を自作したもう一つの -理由です。 - -- JPEGエンコード後の1102行目 - DC_InvalidateRange(mpTestEncodeWork->result, size); -も、JPEGエンコード時の画像崩れ対策テストです。 -もしかして、SDへ書き込むFSライブラリに問題があるかもと思い、FSラ -イブラリ用にデータキャッシュをInvalidateしたものです。崩れなくな -れば、これも不要になるでしょう。 - - -YUV422->YUV420変換関数の補足説明 -================================ - -- 793行目から821行目まで、 -#if 0 - // even line U - : -#else - // even column ave. uv (V0 U0) - : -#endif - -ですが、これはYUV422->YUV420に伴って失われるU、V成分を2ラインの -平均値とするか、Wikipediaを鵜呑みした - -| YUV420 : 2×2ピクセルのうち、青の色差信号を最初のラインから取り、 -| 赤の色差信号を次のラインからとる方式。輝度信号は1ピクセルごとにと -| る。 - -の方式にするかを試したものです。平均値にした方がノイズが低減され -ているように感じたため、今の#if 0としてあります。#if 1にするとシ -ャープな感じになります。 - -しかし、そもそもY成分はそのままでU、Vだけ平均化したらおかしい絵に -ならないのか、とはいえ上のラインのVを下のラインから持ってくるのも -おかしな話では?という思いはあります。 - -JPEGエンコーダの入力データ仕様を詳しく調べていないので、どちらが -良いのか分かっていません。 - -- 変換関数の引数の制限について、714行目からのコメントを補足します。 - -// pYCbCrBufも最低4バイトアラインメントですが、各デバイスとの連携に -// 備えて32バイトアラインメントしてください。 - -↑これは、変換結果がDSPの入力データになるので、32バイトアラインメ -ントしておけばキャッシュまわりの心配が減るからです。 - diff --git a/build/tests/yuv2rgb/redipl_defs_autogen_by_uig b/build/tests/yuv2rgb/redipl_defs_autogen_by_uig deleted file mode 100644 index 7c5d15da..00000000 --- a/build/tests/yuv2rgb/redipl_defs_autogen_by_uig +++ /dev/null @@ -1,14 +0,0 @@ -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - diff --git a/build/tests/yuv2rgb/src/cpu_yuv2rgb.c b/build/tests/yuv2rgb/src/cpu_yuv2rgb.c deleted file mode 100644 index bdb09f57..00000000 --- a/build/tests/yuv2rgb/src/cpu_yuv2rgb.c +++ /dev/null @@ -1,103 +0,0 @@ - // 中身をいじってある。 -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: cpu_yuv2rgb.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 -#include "yuv2rgb.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - 関数宣言 - *---------------------------------------------------------------------------*/ - -u32 yuv2rgb16( const void* src, void* dest, u32 pixels ); - -/*---------------------------------------------------------------------------* - 内部関数定義 - *---------------------------------------------------------------------------*/ - -static inline int r_diff( u8 v ) -{ -// return (1402 * ( v - 128 )) / 1000; - return (11760828/*.416*/ * ( v - 128)) >> 23; -} - -static inline int g_diff( u8 u, u8 v ) -{ -// return (-344 * ( u - 128 ) -714 * ( v - 128 )) / 1000; - return (-2885681/*.152*/ * ( u - 128 ) -5989466/*.112*/ * ( v - 128 )) >> 23; -} -static inline int b_diff( u8 u ) -{ -// return (1772 * ( u - 128 )) / 1000; - return (14864613/*.376*/ * ( u - 128 )) >> 23; -} - -static inline int trim( int e ) -{ - return e < 0 ? 0 : ( e > 255 ? 255 : e); -} - -/*---------------------------------------------------------------------------* - Name: CpuYuv2Rgb - - Description: YUV->RGB変換を行います(CPUバージョン) - - Arguments: src : input data adress (YUV) - dest : output data adress (RGB) - pixels : num of pixel - - Returns: None - *---------------------------------------------------------------------------*/ -u32 CpuYuv2Rgb( const void* src, void* dest, u32 pixels ) -{ - OSTick begin; - u8* yuyv = (u8*)src; - u32* rgb = (u32*)dest; - - u32 limit = pixels >> 1; - u32 i; - -begin = OS_GetTick(); - - for (i = 0; i < limit; i++) - { - u8 y1 = *yuyv++; - u8 u = *yuyv++; - u8 y2 = *yuyv++; - u8 v = *yuyv++; - *rgb++ = (u32)( - 0xffffffff - //0x83e083e0 // G only - & ( - 0x80008000 | - ( ( trim( y2 + b_diff( u ) ) & 0xF8 ) << 23) | - ( ( trim( y2 + g_diff( u, v ) ) & 0xF8 ) << 18) | - ( ( trim( y2 + r_diff( v ) ) & 0xF8 ) << 13) | - ( ( trim( y1 + b_diff( u ) ) & 0xF8 ) << 7) | - ( ( trim( y1 + g_diff( u, v ) ) & 0xF8 ) << 2) | - ( ( trim( y1 + r_diff( v ) ) ) >> 3) )); - } - -OS_Printf("total(555) = %d us\n", OS_TicksToMicroSeconds(OS_GetTick() - begin)); - - return pixels * sizeof(RGBX16); -} - diff --git a/build/tests/yuv2rgb/src/dsp_yuv2rgb.c b/build/tests/yuv2rgb/src/dsp_yuv2rgb.c deleted file mode 100644 index ee1ada37..00000000 --- a/build/tests/yuv2rgb/src/dsp_yuv2rgb.c +++ /dev/null @@ -1,308 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: dsp_yuv2rgb.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 -#include -#include -#include "yuv2rgb.h" - -/*---------------------------------------------------------------------------* - 型定義 - *---------------------------------------------------------------------------*/ - -#define THREAD_YUV2RGB_PRIO 10 // メインスレッドより優先 -#define STACK_SIZE 1024 -#define DSP_BUFFER_SIZE 0x6000 // 24KB - -/*---------------------------------------------------------------------------* - 変数定義 - *---------------------------------------------------------------------------*/ - -OSThread threadYUV2RGB; // YUV2RGBスレッド -u64 stack[STACK_SIZE / sizeof(u64)]; // YUV2RGBスレッド用スタック - -// メッセージ関連 -OSMessage mesgBuffer[10]; -OSMessageQueue mesgQueue; - -static YUV2RGBCallback sCallback; -static u8* sSrc; -static u8* sDst; -static u32 sSize; -static u32 sDmaNo; -static u8 sBusy; - -DSPPipe binout[1]; -DSPPipe binin[1]; - -/*---------------------------------------------------------------------------* - 関数宣言 - *---------------------------------------------------------------------------*/ -BOOL YUV2RGB_Init(void); -static void DSPi_Yuv2RgbThread(void *arg); -static void DSPi_Yuv2RgbLoadProgram(); -static void DSPi_Yuv2RgbConvertCore(void); - -/*---------------------------------------------------------------------------* - 関数定義 - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbInit - - Description: 初期化関数 - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbInit(u32 dmaNo) -{ - // DSPファームをロード - DSPi_Yuv2RgbLoadProgram(); - - // DSPパイプ情報をロード(DSP->ARM) - (void)DSP_LoadPipe( - binout, // パイプ情報の格納先 (DSP側ではNULLでよい) - DSP_PIPE_BINARY, // パイプのポート番号(1) - DSP_PIPE_OUTPUT); // DSP_PIPE_INPUT または DSP_PIPE_OUTPUT - - (void)DSP_LoadPipe( - binin, // パイプ情報の格納先 (DSP側ではNULLでよい) - DSP_PIPE_BINARY, // パイプのポート番号(1) - DSP_PIPE_INPUT); // DSP_PIPE_INPUT または DSP_PIPE_OUTPUT - - // メッセージキューの初期化 - OS_InitMessageQueue(&mesgQueue, &mesgBuffer[0], 10); - - // YUV2RGB変換スレッド生成・起動 - OS_CreateThread(&threadYUV2RGB, DSPi_Yuv2RgbThread, (void *)0, stack + STACK_SIZE / sizeof(u64), STACK_SIZE, THREAD_YUV2RGB_PRIO); - OS_WakeupThreadDirect(&threadYUV2RGB); - - // WRAM-C Slot1 の割り当てを DSP->ARM へ変更 - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_DSP, MI_WRAM_ARM9 ) != 1 ) - { - OS_TPanic("can't allocate WRAM Slot"); - } - - // 使用するDMA番号を保存 - sDmaNo = dmaNo; - - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbLoadProgram - - Description: DSPテストプログラムをロード。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void DSPi_Yuv2RgbLoadProgram(void) -{ - MI_FreeWram_B(MI_WRAM_ARM9); - MI_CancelWram_B(MI_WRAM_ARM9); - MI_FreeWram_C(MI_WRAM_ARM9); - MI_CancelWram_C(MI_WRAM_ARM9); - { - extern const u8 _binary_simple_dat[]; - extern const u8 _binary_simple_dat_end[]; - if (!DSP_LoadFileAuto(_binary_simple_dat)) - { - OS_TPanic("can't allocate WRAM Slot"); - } - // 必ずこのタイミングでONしないといけないのかどうかは未確認。 - { - static BOOL once = FALSE; - if (!once) - { - DSP_PowerOn(); - once = TRUE; - } - } -// DSP_ResetInterface(); - DSP_ResetOff(); - OS_TPrintf("dsp app run...\n"); - DSP_EnableRecvDataInterrupt(0); - DSP_EnableRecvDataInterrupt(1); - DSP_EnableRecvDataInterrupt(2); - } -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbThread - - Description: YUV2RGB専用スレッド - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ - -static void DSPi_Yuv2RgbThread(void *arg) -{ -#pragma unused( arg ) - OSMessage message; - - while (1) - { - (void)OS_ReceiveMessage(&mesgQueue, &message, OS_MESSAGE_BLOCK); - - switch ((MessageYuv2Rgb)message) - { - case MESSAGE_YUV2RGB_CONVERT: - DSPi_Yuv2RgbConvertCore(); - break; - } - } -} - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbConvertAsync - - Description: YUV->RGB変換を行います(非同期版) - - Arguments: *** - - Returns: 依頼成功ならTRUE - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbConvertAsync(void* src, void* dest, u32 size, YUV2RGBCallback callback) -{ - OSMessage message; - - message = (OSMessage)MESSAGE_YUV2RGB_CONVERT; - - if (!sBusy) - { - sCallback = callback; // コンバート完了後に呼び出すコールバックを保存 - sSrc = src; - sDst = dest; - sSize = size; - return OS_SendMessage(&mesgQueue, message, OS_MESSAGE_NOBLOCK); - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbConvertCore - - Description: YUV->RGB変換のためにDSPとのやり取りや - データコピーなどを行います - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -static void DSPi_Yuv2RgbConvertCore(void) -{ - u16 command; - u16 reply; - u32 adress = MI_GetWramMapStart_C() + MI_WRAM_C_SLOT_SIZE; // 暫定的にスロット1固定 - OSTick begin, current, tick_copy1, tick_convert, tick_copy2; - u32 offset =0; - - // ビジーフラグON - sBusy = TRUE; - - tick_copy1=tick_convert=tick_copy2=0; - - // 現状DSP側にバッファを24KBしか確保できていないため256x192(96Kb)などの - // 大きいサイズの変換は4回に分けて行っている。 - - while (sSize > 0) - { - u16 size; - - if (sSize > DSP_BUFFER_SIZE) { size = DSP_BUFFER_SIZE; } - else { size = (u16)sSize; } - - sSize -= size; - -begin = OS_GetTick(); - - // src -> WRAM-C に書き込む - if (sDmaNo == DSP_DMA_NOT_USE) - { - MI_CpuCopy16(sSrc + offset, (void*)adress, size); - DC_FlushRange((void*)adress, size); - } - else - { - MI_NDmaCopy( 3, sSrc + offset, (void*)adress, size ); - } - - // WRAM-C Slot1 の割り当てを ARM->DSP へ変更 - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_ARM9, MI_WRAM_DSP ) != 1 ) - { - OS_Printf("====== WRAM Allocation Fail ! =======\n"); - } - -current = OS_GetTick(); -tick_copy1 += (current - begin); -begin = current; - - // DSPへコマンド送信 - command = (u16)(size>>1); // ピクセル数として渡す - DSP_WritePipe(binout, &command, sizeof(u16)); - - // DSPからコマンド受信(ここでスリープに入り、DSP_HookPipeNotificationで起床) - DSP_ReadPipe(binin, &reply, sizeof(u16)); - -current = OS_GetTick(); -tick_convert += (current - begin); -begin = current; - - // WRAM-C Slot1 の割り当てを DSP->ARM へ変更 - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_DSP, MI_WRAM_ARM9 ) != 1 ) - { - OS_Printf("====== WRAM Allocation Fail ! =======\n"); - } - - // WRAM-C -> dst に書き込む - if (sDmaNo == DSP_DMA_NOT_USE) - { - DC_InvalidateRange((void*)adress, size); - MI_CpuCopy16((void*)adress, sDst + offset, size); - } - else - { - MI_NDmaCopy( 3, (void*)adress, sDst + offset, size); - } - -current = OS_GetTick(); -tick_copy2 += (current - begin); - - // オフセット更新 - offset += size; - } - - OS_Printf("copy to wram = %d us, ", OS_TicksToMicroSeconds(tick_copy1)); - OS_Printf("convert = %d us, ", OS_TicksToMicroSeconds(tick_convert)); - OS_Printf("from wram = %d us, ", OS_TicksToMicroSeconds(tick_copy2)); - OS_Printf("total = %d us\n", OS_TicksToMicroSeconds(tick_copy1+tick_convert+tick_copy2)); - - // ビジーフラグOFF - sBusy = FALSE; - - if (sCallback) - { - sCallback(); - } -} - diff --git a/build/tests/yuv2rgb/src/mainy.cpp b/build/tests/yuv2rgb/src/mainy.cpp deleted file mode 100644 index 181a117b..00000000 --- a/build/tests/yuv2rgb/src/mainy.cpp +++ /dev/null @@ -1,1813 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - 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 -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include - -#ifdef TWL_IPL_USE_RED_IPL -#include -#include -#endif - -// #include -// #include -#include "DEMOBitmap.h" -#include "yuv2rgb.h" -#include "menuIrqHandler.h" -#include "menuCameraManager.h" - -#include "snd_data.h" - -// テストグローバルアクセサ -cmn::sys::cmr2::Manager* mpCmrMgr2; - -//extern u16 b_data[]; - -extern const u8 _binary_camera_shutter_dat[], _binary_camera_shutter_dat_end[]; -extern const u8 _binary_camera_shutter_MONO_dat[], _binary_camera_shutter_MONO_dat_end[]; -extern const u8 _binary_wheel_dat[], _binary_wheel_dat_end[]; - - -#include -// 実験に必要なu32個数はmax(208*3, 256*2) -// とりあえず256*4で。 -static cmn::sys::cmr2::dtcmWork sDtcmWork; -#include - -/*---------------------------------------------------------------------------* - 定数定義 - *---------------------------------------------------------------------------*/ - -#define CAMERA_NEW_DMA_NO 1 // CAMERAで使用するNew DMA番号 -#define WIDTH 640 -#define HEIGHT 480 - -#define LINES_SPLIT 1 -#define LINES_AT_ONCE (CAMERA_GET_MAX_LINES(WIDTH)/LINES_SPLIT) // 一回の転送ライン数 -#define BYTES_PER_LINE CAMERA_GET_LINE_BYTES(WIDTH) // 一ラインの転送バイト数 - - enum - { - eStt_Deactive = 0 , - eStt_Capture , - eStt_WaitShooting , - eStt_Shoot , - eStt_FinishShooting , - eStt_Stop , - eStt_Max - } mState, mLastState; - -BOOL mError; - - enum - { -#if 1 - cPictureOffsetX = 0, - cPictureOffsetY = 0, -#else - cPictureOffsetX = 24, - cPictureOffsetY = 24, -#endif - cPictureWidth = cScreenWidth - (cPictureOffsetX * 2), - cPictureHeight = cScreenHeight - (cPictureOffsetY * 2), - cShootWidth = 640, - cShootHeight = 480 - }; - -/*---------------------------------------------------------------------------* - 関数宣言 - *---------------------------------------------------------------------------*/ - -static void VBlankIntr(void); -static void CameraIntr(void); -//static void CameraIntr2(void); -//static void CameraIntr3(void); -static void NDmaIntr(void); -static void NDmaDummyIntr(void); -static void PutString( char *format, ... ); -static void DrawFPS(void); - -/*---------------------------------------------------------------------------* - 変数定義 - *---------------------------------------------------------------------------*/ - -static BOOL startRequest = FALSE; - -// [0],[1]はcameraからのinput。[2]は捨てられるcamera input用? -static u16 buffer[3][WIDTH*HEIGHT] ATTRIBUTE_ALIGN(32); -//static vu8 we; -//static vu8 re; -//static vu8 reading; -//static vu8 tp; -//static vu8 wp; // カメラからデータを取り込み中のバッファ -//static vu8 rp; // 最後のVRAMにコピーしたバッファ -//static BOOL wp_pending; // 取り込みを中断した (再び同じバッファに取り込む) -static CAMERASelect current = CAMERA_SELECT_IN; -static MenuIrqHandlerLogBuffer logBuf[0x10000]; - -static u16 text_buffer[ 32 ] ATTRIBUTE_ALIGN(32); - -static vu8 sNowConvert = FALSE; // YUV->RGB変換中フラグ - -static vu8 sLongDmaFlag; - -static u32 gWords[0x2000]; -static u32 gSum; - -#define GRAD_WIDTH 256 -static u16 grad0[GRAD_WIDTH] ATTRIBUTE_ALIGN(32); -static u16 grad1[GRAD_WIDTH] ATTRIBUTE_ALIGN(32); -static void MakeGrad(void) -{ - static u16 table[] = { - 0, 8, 0, 1, 0, 2, 0, 3, - 0, 4, 0, 5, 0, 6, 0, 7, - 1, 8, 1, 9, 2,10, 3,11, - 4,12, 5,13, 6,14, 7,15, - 8,16, 9,17,10,18,11,19, - 12,20,13,21,14,22,15,23, - 16,24,17,25,18,26,19,27, - 20,28,21,29,22,30,23,31, - }; - u32 i; - u32 color; - u32 shift = GX_RGBA_G_SHIFT; - - for (i = 0; i < GRAD_WIDTH; i++) { - color = i >> 2; // 0-63 - grad0[i] = (u16)((table[color] << shift) | GX_RGBA_A_MASK); - grad1[i] = (u16)(((color >> 1) << shift) | GX_RGBA_A_MASK); - } - - DC_StoreAll(); -} - -static inline int r_diff( u8 v ) -{ -// return (1402 * ( v - 128 )) / 1000; - return (11760828/*.416*/ * ( v - 128)) >> 23; -} - -static inline int g_diff( u8 u, u8 v ) -{ -// return (-344 * ( u - 128 ) -714 * ( v - 128 )) / 1000; - return (-2885681/*.152*/ * ( u - 128 ) -5989466/*.112*/ * ( v - 128 )) >> 23; -} -static inline int b_diff( u8 u ) -{ -// return (1772 * ( u - 128 )) / 1000; - return (14864613/*.376*/ * ( u - 128 )) >> 23; -} - -static inline int trim( int e ) -{ - return e < 0 ? 0 : ( e > 255 ? 255 : e); -} -#if 0 -static u32 CpuYuv2Rgb666( const void* src, void* dest, u32 pixels ) -{ - return CpuYuv2Rgb(src, dest, pixels); -} -#elif 0 -static u32 CpuYuv2Rgb666( const void* src, void* dest, u32 pixels ) -{ - MakeGrad(); - return 0; -} -#elif 0 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - // x * 6/7 - ldr r0, =0x000003fd - ldr r1, =(6*0x10000)/7 - smulwb r0, r1, r0 -// mov r0, #0x16c << 16 - bx lr -} -#elif 0 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - // カメラ起動中、AHBはどれくらいストールする? - - -// 0009 0000 0000 0000 0000 0000 0000 0000 ret=00000001 -// 0002 0000 0000 0000 0000 0000 0000 0000 ret=00000001 -// 0003 0000 0000 0000 0000 0000 0000 0000 ret=00000001 - // 9とか酷いな。sysclk/64なので...cpuclkにすると4倍、 - // タイマーがカウントアップ直前だったとしても - // つまり8*64*4=2048 cpu cyclesの間、ストールしているってこと? - // これは何が原因? - // カメラのラインバッファって16MHzで動いてるの? - // もしそうだとすると、256ドット=64 Words、このDMAには - // sysclkにして8倍、64*8=512 cpu cycles...そんなに早くない? - // - // あーっと!!CAMERA_GetBytesAtOnce(WIDTH)=2048だ! - // つまり 512 Wordsなので512*8 = 4096 cycles...そんな計算にはならんな。 - // カメラのラインバッファがsysclk動作ならcpuclkにすると4倍、 - // 512*4=2048 cpu cycles...つじつま合う? - // バイト数と同じcpu cyclesになるとすると、2048はアカンやろ(笑) - // 割り込みルーチンの中でもそんなにストールするリスクがある。 - // サウンドDMAだってあるのに。 - // まあでも、他の要因によってストールする可能性があるから - // カメラのラインバッファを4ライン分としているのかな。 - // こまったなあ。うーん、カメラのラインバッファからメインメモリ - // へ転送時の、DMA終了割り込みを使わなければ、DMAが追いつかなくて - // 破綻するとかは、あまり心配しなくて良さそう。 - // - // 000e 0000 0000 0000 0000 0000 0000 0000 ret=00000001 - // なんじゃこりゃ!?割り込み入った? - // - // mi_ndma.cに - // #define CAMERA_DMA_BLOCK_SIZE MI_NDMA_BWORD_16 - // #define CAMERA_DMA_INTERVAL 2 - // #define CAMERA_DMA_PRESCALER MI_NDMA_INTERVAL_PS_1 - // とあるので、16ワード単位の分割転送になっているのかな。 - // うん、なってる。プリスケーラ=1倍(sysclk)、インターバル=2 - // 特に悪い設定とは思えないが、ラインバッファがオーバーフローするのかな… - // しかもストールが長いのは、カメラNDMAのせいでもなさそうだし。 - - - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr - -#define t0 r6 -#define t1 r7 -#define tm0l_addr r11 -#define vcount_addr lr - -#define tm0 r4 -#define vcount r5 - -#define COUNT_MAX 8 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr tm0l_addr, =REG_TM0CNT_L_ADDR - ldr vcount_addr, =REG_VCOUNT_ADDR - mov pixels, #COUNT_MAX // 最高計測個数 - -// VCOUNT値は0xc4とか0x60とかなので、繰り上がりは非対応。 - ldrh vcount, [vcount_addr] - add vcount, vcount, #0x30 - mov vcount, #192 -@10: - ldrsh tm0, [tm0l_addr] -@20: - ldrsh t0, [tm0l_addr] - sub t1, t0, tm0 - movs t0, t1, lsr #1 - beq @50 - - strh t1, [dst], #2 - subs pixels, pixels, #1 - beq @150 - -@50: - ldrh t0, [vcount_addr] - cmp t0, vcount - blt @10 - b @100 - -@100: - mov t1, pixels - mov t0, #0 -@110: - strh t0, [dst], #2 - subs t1, t1, #1 - bne @110 - -@150: - rsb r0, pixels, #COUNT_MAX - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef tm0l_addr -#undef vcount_addr -#undef tm0 -#undef vcount -#undef COUNT_MAX -} -#elif 1 -// dstダミーフェッチ無し -// dstはMAINではない(VRAM)と想定しているので、DTCM非使用。 -// 666じゃなくて単なる555。 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr -#define t0 r3 -#define t1 r12 -#define y0 r9 -#define y1 r10 -#define uv r11 -#define rgba lr - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_0xff00ff00 r5 -#define const_0x7f800000 r6 -#define const_H1_402_L1_772 r7 -#define const_Hm0_344_Lm0_714 r8 - - // omit odd and zero - eor t0, pixels, #1 - movs t0, t0, lsr #1 - bxls lr // LS: C clear or Z set - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr t0, [src], #4 -@10: - and uv, t0, const_0xff00ff00 - eor uv, uv, const_0x80008000 - and y0, const_0x7f800000, t0, lsl #23 // 0x000000ff -> 0x7f800000 - and y1, const_0x7f800000, t0, lsl #23-16 // 0x00ff0000 -> 0x7f800000 - - // Green - // -0.344*(U-128) - smultb t0, const_Hm0_344_Lm0_714, uv - // -0.714*(V-128) - smulbt t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // 1.402*(V-128) - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // 1.772*(U-128) - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - subs pixels, pixels, #2 - ldrne t0, [src], #4 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants: - dcd 0x80008000 - dcd 0xff00ff00 - dcd 0x7f800000 - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef y0 -#undef y1 -#undef uv -#undef rgba -#undef CONST_REGS -#undef const_0x80008000 -#undef const_0xff00ff00 -#undef const_0x7f800000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -#elif 0 -// dstダミーフェッチあり…めちゃ遅くなる。残念。 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr -#define t0 r3 -#define t1 r12 -#define y0 r9 -#define y1 r10 -#define uv r11 -#define rgba lr - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_0xff00ff00 r5 -#define const_0x7f800000 r6 -#define const_H1_402_L1_772 r7 -#define const_Hm0_344_Lm0_714 r8 - - // omit odd and zero - eor t0, pixels, #1 - movs t0, t0, lsr #1 - bxls lr // LS: C clear or Z set - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr t0, [src], #4 -@10: - and uv, t0, const_0xff00ff00 - eor uv, uv, const_0x80008000 - and y0, const_0x7f800000, t0, lsl #23 // 0x000000ff -> 0x7f800000 - and y1, const_0x7f800000, t0, lsl #23-16 // 0x00ff0000 -> 0x7f800000 - - // dst dummy-fetch - ldr rgba, [dst] - - // Green - // -0.344*(U-128) - smultb t0, const_Hm0_344_Lm0_714, uv - // -0.714*(V-128) - smulbt t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // 1.402*(V-128) - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // 1.772*(U-128) - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - subs pixels, pixels, #2 - ldrne t0, [src], #4 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants: - dcd 0x80008000 - dcd 0xff00ff00 - dcd 0x7f800000 - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef y0 -#undef y1 -#undef uv -#undef rgba -#undef CONST_REGS -#undef const_0x80008000 -#undef const_0xff00ff00 -#undef const_0x7f800000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -#elif 0 -// little endian only -// 最小値、最大値を調べる。 -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ -#define SAVE_REGS0 src,dst,pixels -#define SAVE_REGS1 r4-r11,lr -#define t0 r3 -#define minVal r4 -#define maxVal r5 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS0, SAVE_REGS1} - - mvn minVal, #0x80000000 - mov maxVal, #0x80000000 - -@10: - ldrb t0, [src], #4 - ldrb t0, [src, #1-4] - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 - -#if 0 - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 - ldrb t0, [src, #2-4] - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 -#endif - - subs pixels, pixels, #2 - bne @10 - - mov minVal, minVal, lsl #16 - mov maxVal, maxVal, lsl #16 - orr t0, maxVal, minVal, lsr #16 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS0, SAVE_REGS1} - mov r0, t0 - bx lr - -#undef SAVE_REGS0 -#undef SAVE_REGS1 -#undef t0 -#undef minVal -#undef maxVal -} - -#else -// little endian only -// ベタに作ったらこうなる。Cと変わらん。 -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS0 src,dst,pixels -#define SAVE_REGS1 r4-r11,lr -#define t0 r3 -#define rgba r12 -#define u src -#define v dst -#define y0 r11 -#define y1 lr - -#define tablep r9 -#define data0 r10 -#define data1 pixels - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_minus_0_344 r5 -#define const_minus_0_714 r6 -#define const_1_402 r7 -#define const_1_772 r8 - - cmp pixels, #2 - bxlt lr - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS0, SAVE_REGS1} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr tablep, =@table - -@10: - ldrb y0, [src], #4 - ldrb t0, [src, #1-4] - ldrb y1, [src, #2-4] - ldrb rgba, [src, #3-4] - // do not update sp here! keep 8-Bytes aligned - stmia sp, {SAVE_REGS0} - sub u, t0, #0x80 - sub v, rgba, #0x80 - - // Green - // -0.344*(U-128) - mul t0, const_minus_0_344, u - // -0.714*(V-128) - mul rgba, const_minus_0_714, v - mov t0, t0, asr #23 - add t0, t0, rgba, asr #23 - // +Y - adds rgba, t0, y0 - movmi rgba, #0 - cmp rgba, #0xff - movgt rgba, #0xff - ldrb data1, [tablep, rgba, lsr #2] - and rgba, rgba, #0xf8 - mov rgba, rgba, lsl #2 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - ldrb data0, [tablep, t0, lsr #2] - and t0, t0, #0xf8 - orr rgba, rgba, t0, lsl #16+2 - mov data1, data1, lsl #5 - orr data0, data1, data0, lsl #16+5 - - // Red - // 1.402*(V-128) - mul t0, const_1_402, v - mov t0, t0, asr #23 - // +Y - // now v is free - adds v, t0, y0 - movmi v, #0 - cmp v, #0xff - movgt v, #0xff - ldrb data1, [tablep, v, lsr #2] - orr rgba, rgba, v, lsr #3 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - ldrb v, [tablep, t0, lsr #2] - and t0, t0, #0xf8 - orr rgba, rgba, t0, lsl #16-3 - orr data0, data0, data1 - orr data0, data0, v, lsl #16 - - // Blue - // 1.772*(U-128) - mul t0, const_1_772, u - mov t0, t0, asr #23 - // +Y - // now u,v is free - adds v, t0, y0 - movmi v, #0 - cmp v, #0xff - movgt v, #0xff - ldrb data1, [tablep, v, lsr #2] - and v, v, #0xf8 - orr rgba, rgba, v, lsl #7 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - and t0, t0, #0xf8 - ldrb v, [tablep, t0, lsr #2] - orr rgba, rgba, t0, lsl #16+7 - orr data0, data0, data1, lsl #10 - orr data0, data0, v, lsl #16+10 - - // do not update sp here! keep 8-Bytes aligned - ldmia sp, {SAVE_REGS0} - orr data0, data0, const_0x80008000 - str data0, [dst, const_0x80008000, lsl #1] - orr rgba, rgba, const_0x80008000 - str rgba, [dst], #4 - subs pixels, pixels, #2 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS0, SAVE_REGS1} - bx lr - -@table: - dcd 0x01000800 - dcd 0x03000200 - dcd 0x05000400 - dcd 0x07000600 - dcd 0x09010801 - dcd 0x0b030a02 - dcd 0x0d050c04 - dcd 0x0f070e06 - dcd 0x11091008 - dcd 0x130b120a - dcd 0x150d140c - dcd 0x170f160e - dcd 0x19111810 - dcd 0x1b131a12 - dcd 0x1d151c14 - dcd 0x1f171e16 - -@constants: -/* const_0x80008000 r4 */ dcd 0x80008000 -/* const_minus_0_344 r5 */ dcd (-2885681) -/* const_minus_0_714 r6 */ dcd (-5989466) -/* const_1_402 r7 */ dcd 11760828 -/* const_1_772 r8 */ dcd 14864613 - - -// OSTick begin; -// u8* yuyv = (u8*)src; -// u32* rgb = (u32*)dest; -// -// u32 limit = pixels >> 1; -// u32 i; -// -// begin = OS_GetTick(); -// -// for (i = 0; i < limit; i++) -// { -// u8 y1 = *yuyv++; -// u8 u = *yuyv++; -// u8 y2 = *yuyv++; -// u8 v = *yuyv++; -// *rgb++ = (u32)( 0x80008000 | -// ( ( trim( y2 + b_diff( u ) ) & 0xF8 ) << 23) | -// ( ( trim( y2 + g_diff( u, v ) ) & 0xF8 ) << 18) | -// ( ( trim( y2 + r_diff( v ) ) & 0xF8 ) << 13) | -// ( ( trim( y1 + b_diff( u ) ) & 0xF8 ) << 7) | -// ( ( trim( y1 + g_diff( u, v ) ) & 0xF8 ) << 2) | -// ( ( trim( y1 + r_diff( v ) ) ) >> 3) ); -// } -// -// OS_Printf("total(666) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// -// return pixels * sizeof(RGBX16); - -#undef SAVE_REGS0 -#undef SAVE_REGS1 -#undef t0 -#undef rgba -#undef u -#undef v -#undef y0 -#undef y1 - -#undef tablep -#undef data0 -#undef data1 - -#undef CONST_REGS -#undef const_0x80008000 -#undef const_minus_0_344 -#undef const_minus_0_714 -#undef const_1_402 -#undef const_1_772 -} -#endif - - -static void drawTexture(u8* vramAddr, BOOL shot) -{ -#pragma unused(vramAddr) -#pragma unused(shot) - s32 x0, y0; - s32 x1, y1; - s32 s0, s1; - s32 t0, t1; - - x0 = cPictureOffsetX; - x1 = cPictureOffsetX + cPictureWidth; - y0 = cPictureOffsetY; - y1 = cPictureOffsetY + cPictureHeight; - - s0 = 0; - s1 = cPictureWidth; - t0 = 0; - t1 = cPictureHeight; - - G3X_Reset(); - - // Ortho matrix - { - G3_Ortho(0, - -GX_LCD_SIZE_Y, - 0, - GX_LCD_SIZE_X, - 0 * FX32_ONE, - 2 * FX32_ONE, - NULL); - G3_StoreMtx(0); - } - - { - G3_MtxMode(GX_MTXMODE_TEXTURE); - G3_Identity(); - // Use an identity matrix for the texture matrix for simplicity - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - } - - //--------------------------------------------------------------------------- - // Set up a camera matrix - //--------------------------------------------------------------------------- - { - VecFx32 Eye = { 0, 0, FX32_ONE }; // Eye position - VecFx32 at = { 0, 0, 0 }; // Viewpoint - VecFx32 vUp = { 0, FX32_ONE, 0 }; // Up - - G3_LookAt(&Eye, &vUp, &at, NULL); - } - -#if 0 - GX_BeginLoadTex(); // map the texture image slots onto LCDC address space - { - GX_LoadTex((void *)&grad0[0], - myTexGrad0Addr, - 256 * sizeof(u16) - ); - GX_LoadTex((void *)&grad1[0], - myTexGrad1Addr, - 256 * sizeof(u16) - ); - - } - GX_EndLoadTex(); // restore the texture image slots -#endif - - G3_PolygonAttr(GX_LIGHTMASK_NONE, // Light #0 is on - GX_POLYGONMODE_DECAL, // modulation mode - GX_CULL_BACK, // cull none - 1, // polygon ID(0 - 63) - 30, // alpha(0 - 31) - GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE // OR of GXPolygonAttrMisc's value - ); - G3_TexImageParam(GX_TEXFMT_DIRECT, - GX_TEXGEN_TEXCOORD, // use texcoord - GX_TEXSIZE_S256, - GX_TEXSIZE_T256, - GX_TEXREPEAT_NONE, // no repeat - GX_TEXFLIP_NONE, // no flip - GX_TEXPLTTCOLOR0_USE, // use color 0 of the palette - 0x00000 // the offset of the texture image - ); - G3_Begin(GX_BEGIN_QUADS); - { - G3_TexCoord(s1 << FX32_SHIFT, t1 << FX32_SHIFT); - G3_Vtx((s16)x1, (s16)(-y1), 0); - G3_TexCoord(s1 << FX32_SHIFT, t0 << FX32_SHIFT); - G3_Vtx((s16)x1, (s16)(-y0), 0); - G3_TexCoord(s0 << FX32_SHIFT, t0 << FX32_SHIFT); - G3_Vtx((s16)x0, (s16)(-y0), 0); - G3_TexCoord(s0 << FX32_SHIFT, t1 << FX32_SHIFT); - G3_Vtx((s16)x0, (s16)(-y1), 0); - } - G3_End(); - -// G3_PolygonAttr(GX_LIGHTMASK_NONE, // Light #0 is on -// GX_POLYGONMODE_DECAL, // modulation mode -// GX_CULL_BACK, // cull none -// 2, // polygon ID(0 - 63) -// 1, // alpha(0 - 31) -// GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL // OR of GXPolygonAttrMisc's value -// ); -// G3_TexImageParam(GX_TEXFMT_DIRECT, -// GX_TEXGEN_TEXCOORD, // use texcoord -// GX_TEXSIZE_S256, -// GX_TEXSIZE_T256, -// GX_TEXREPEAT_NONE, // no repeat -// GX_TEXFLIP_NONE, // no flip -// GX_TEXPLTTCOLOR0_USE, // use color 0 of the palette -// 0x10000 // the offset of the texture image -// ); -// G3_Begin(GX_BEGIN_QUADS); -// { -// G3_TexCoord(256 * FX32_ONE, (HEIGHT/2) * FX32_ONE); -// G3_Vtx((s16)x1, (s16)y1, 0); -// G3_TexCoord(256 * FX32_ONE, 0 * FX32_ONE); -// G3_Vtx((s16)x1, (s16)y0, 0); -// G3_TexCoord(0 * FX32_ONE, 0 * FX32_ONE); -// G3_Vtx((s16)x0, (s16)y0, 0); -// G3_TexCoord(0 * FX32_ONE, (HEIGHT/2) * FX32_ONE); -// G3_Vtx((s16)x0, (s16)y1, 0); -// } -// G3_End(); - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - // swapping the polygon list RAM, the vertex RAM, etc. - G3_SwapBuffers(GX_SORTMODE_MANUAL, GX_BUFFERMODE_Z); - mpCmrMgr2->setTexSwap(); - - OS_RestoreInterrupts(enabled); - } - - DrawFPS(); -} - -static void dumpWramBanks(u32 line) -{ - u32 i; - - OS_TPrintf("line %d: WramB=", line); - for (i = 0; i < 8; i++) { - OS_TPrintf(" %d", MI_GetWramBankEnable_B((s32)i)); - } - OS_TPrintf(", WramC="); - for (i = 0; i < 8; i++) { - OS_TPrintf(" %d", MI_GetWramBankEnable_C((s32)i)); - } - OS_TPrintf("\n"); -} - -#if SDK_VERSION_DATE < 20080624 -static void proc_camera_intr_() { -#else -static void cameraVsyncCallback(CAMERAResult result) { -#pragma unused( result ) -#endif -#if 1 - // 自家製のみ呼ぶ。 - mpCmrMgr2->procCameraIntr(); -#else - MenuSys()->procCameraIntr(); -#endif - - OS_SetIrqCheckFlag( OS_IE_CAMERA ); -} - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain() -{ -// CAMERAResult result; - -#ifdef TWL_IPL_USE_RED_IPL - HOTSW_Init(); -#endif - - // 初期化 - // in new.cpp: TwlStartUp() - - MenuIrqHandlerStart(logBuf, sizeof(logBuf)); - - // DEMOInitCommon(), DEMOInitVRAM(), DEMOInitDisplay3D()を呼ばない - FX_Init(); - G3X_Init(); // initialize the 3D graphics states - G3X_InitMtxStack(); // initialize the matrix stack - - // GXでDMAを使わない (旧DMAはカメラDMAの邪魔になる) - GX_SetDefaultDMA(GX_DMA_NOT_USE); - - // VRAMクリア - GX_SetBankForLCDC(GX_VRAM_LCDC_A); - GX_SetBankForLCDC(GX_VRAM_LCDC_B); - MI_CpuClearFast((void*)HW_LCDC_VRAM_A, 128 * 1024); - MI_CpuClearFast((void*)HW_LCDC_VRAM_B, 128 * 1024); - - GX_SetBankForLCDC(GX_VRAM_LCDC_C); - GX_SetBankForLCDC(GX_VRAM_LCDC_D); - MI_CpuClearFast((void*)HW_LCDC_VRAM_C, HW_VRAM_C_SIZE); - MI_CpuClearFast((void*)HW_LCDC_VRAM_D, HW_VRAM_D_SIZE); -// GX_SetBankForTex(GX_VRAM_TEX_0_C); - - - // ダイレクトビットマップ表示モード&文字表示 - GX_SetBankForBG(GX_VRAM_BG_256_AB); // VRAM-A,BバンクをBGに割り当る - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_4, GX_BG0_AS_3D); - - G2_SetBG0Priority(2); - G3X_AntiAlias(TRUE); // enable antialias(without additional computing costs) - G3X_AlphaBlend(TRUE); // enable alpha blending - //--------------------------------------------------------------------------- - // After you start the geometry engine and the rendering one - // (by GX_SetPower etc.), G3_SwapBuffers must be called once before use - //--------------------------------------------------------------------------- - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z); - G3X_SetClearColor(GX_RGB(0, 0, 0), // clear color - 0, // clear alpha - 0x7fff, // clear depth - 63, // clear polygon ID - FALSE); // fog - G3_ViewPort(0, 0, 255, 191); // Viewport - - GX_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3); - - G2_SetBG1Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, GX_BG_EXTPLTT_01); - G2_SetBG1Priority(1); - G2_BG1Mosaic(FALSE); - - G2_SetBG3ControlDCBmp(GX_BG_SCRSIZE_DCBMP_256x256, GX_BG_AREAOVER_XLU, GX_BG_BMPSCRBASE_0x20000); - G2_SetBG3Priority(3); - G2_BG3Mosaic(FALSE); - - // 文字の読み込み - { - static const GXRgb pal[16] = { GX_RGB(0, 0, 0), GX_RGB(31, 31, 31), }; - GX_LoadBG1Char(DEMOAsciiChr, 0x00000, sizeof(DEMOAsciiChr)); - GX_LoadBGPltt(pal, 0x0000, sizeof(pal)); - } -// we = TRUE; -// re = FALSE; -// wp = 0; -// rp = 1; -// tp = 0; -// wp_pending = TRUE; - -// MakeGrad(); - - // VBlank割り込みを許可するより前にカメラマネージャを生成しておく。 -// #if 0 -// pDtcm = OS_AllocFromArenaLo(OS_ARENA_DTCM, 256*4*sizeof(u32), HW_CACHE_LINE_SIZE); -// #else -// pDtcm = (u32 *)myArena; -// #endif - OS_TPrintf("sDtcmWork=0x%x\n", &sDtcmWork); - OS_DumpArenaInfo(OS_ARENA_DTCM, TRUE); - -#if SDK_VERSION_DATE < 20080624 - OS_SetIrqFunction( OS_IE_CAMERA , proc_camera_intr_ ); -#else - // CAMERAライブラリからのコールバックに変更されました。 -// OS_SetIrqFunction(OS_IE_CAMERA, proc_camera_intr_); - CAMERA_SetVsyncCallback(cameraVsyncCallback); -#endif - - // new()って使えないよね…new.cpp追加で使えた! - mpCmrMgr2 = new cmn::sys::cmr2::Manager(); - -#if 0 - // old - - // 割り込みを許可しておかないとダメ? - mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, - /*GX_VRAM_A, GX_VRAM_B,*/GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); - mpCmrMgr2->activate(); - - mpCmrMgr2->setShutterSnd(_binary_camera_shutter_dat, - (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat), - TRUE); -#endif - - mpCmrMgr2->preInit(); -// mpCmrMgr2->setCaptureRgbFlag(TRUE); - -// // stereo -// mpCmrMgr2->setShutterSnd(_binary_camera_shutter_dat, -// (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat), -// TRUE); - -// // mono -// mpCmrMgr2->setShutterSnd(_binary_camera_shutter_MONO_dat, -// (u32)(_binary_camera_shutter_MONO_dat_end - _binary_camera_shutter_MONO_dat), -// FALSE); - - if (1) { -// mpCmrMgr2->setOneShotFlag(TRUE); - } - - - - - // Vブランク割り込み設定 - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableInterrupts(); - - // SD初期化 - FS_Init( FS_DMA_NOT_USE ); - -#if 1 - // demos.TWL/snd/extraFunc - /* サウンド初期化 */ - SND_Init(); - SND_AssignWaveArc((SNDBankData*)sound_bank_data, 0, (SNDWaveArc*)sound_wave_data); - SND_StartSeq(0, sound_seq_data, 0, (SNDBankData*)sound_bank_data); -#endif - - /* サウンド拡張機能初期化 */ - SNDEX_Init(); - - OS_WaitIrq(TRUE, OS_IE_V_BLANK); - GX_DispOn(); - -// OS_TPrintf("sizeof testEncodeWork=%d\n", sizeof(cmn::sys::cmr2::Manager::testEncodeWork)); -// OS_TPrintf("ticks/1000usec = %lld\n", (u64)OS_MicroSecondsToTicks(1000)); -// -// { -// OSTick tick; -// BOOL flag = FALSE; -// -// tick = OS_GetTick(); -// mpCmrMgr2->preInit(); -// -// // 1秒あればpreInitは終わるとして -// OS_Sleep(1000); -// -// tick = OS_GetTick(); -// // 本initにかかる時間は? -// mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); -// -// while (1) { -// OS_Sleep(5000); -// if (!flag) { -// flag = TRUE; -// OS_TPrintf("main loop ok, tick before init=%lld\n", (u64)tick); -// } -// } -// } - - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - MI_FreeWram_B ( MI_WRAM_ARM9 ); - MI_CancelWram_B( MI_WRAM_ARM9 ); - MI_FreeWram_C ( MI_WRAM_ARM9 ); - MI_CancelWram_C( MI_WRAM_ARM9 ); - - // for DSP_PlaySound() ? - // DSP_InitPipe(); - /* プログラムを起動する */ -#if 1 - // JPEG DECと併用できない! - FSFile file[1]; - DSP_OpenStaticComponentJpegEncoder(file); - if(!DSP_LoadJpegEncoder(file, 0xff, 0xff)) - { - // WramB= 1 1 1 0 0 0 0 0, WramC= 1 1 1 1 0 0 0 0 - OS_TPanic("failed to load JpegEncoder DSP-component! (lack of WRAM-B/C)"); - } -#endif - dumpWramBanks(__LINE__); -#if 0 - // JPEG ENCと併用できない! - if(!DSP_LoadJpegDecoder()) - { - // WramB= 1 1 0 0 0 0 0 0, WramC= 1 1 1 1 0 0 0 0 - OS_TPanic("failed to load JpegDecoder DSP-component! (lack of WRAM-B/C)"); - } - dumpWramBanks(__LINE__); -#endif -#if 0 - // JPEGと併用できない! - if (!DSP_LoadShutter()) { - // WramB= 1 0 0 0 0 0 0 0, WramC= 1 0 1 1 0 0 0 0 - OS_TPanic("failed to load Shutter DSP-component! (lack of WRAM-B/C)"); - } -#endif -#else - dumpWramBanks(__LINE__); -#endif - - - - OS_WaitVBlankIntr(); - - while (1) - { - u16 pad; - u16 trg; - static u16 old = 0xffff; - static BOOL refresh = FALSE; - -// static const u32 myTexGrad0Addr = 0x2000; -// static const u32 myTexGrad1Addr = 0x3000; - - - /* サウンドメイン処理 */ - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) - { - } - (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); - -#if 1 -// // more than 1 frame -// OS_WaitIrq(TRUE, OS_IE_V_BLANK); - OS_WaitVBlankIntr(); -#else - // keep AHB busy - OS_ClearIrqCheckFlag(OS_IE_V_BLANK); - while (!(OS_GetIrqCheckFlag() & OS_IE_V_BLANK)) { - u32 wordIdx; - wordIdx = (wordIdx + 0x11) & 0x1fff; - gWords[wordIdx]++; - } -#endif - GX_LoadBG1Scr(text_buffer, 0, sizeof(text_buffer)); - - - pad = PAD_Read(); - trg = (u16)(pad & ~old); - old = pad; - - { - static BOOL initialized; - static BOOL destroying; - - if (!initialized && (trg || 1)) { - initialized = TRUE; - mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); - - mpCmrMgr2->startCapture(current); - } - - if (!destroying) { - if (trg & PAD_BUTTON_START) { - destroying = TRUE; - } - } else { - if (!mpCmrMgr2->tryDestroy()) { - IPL_PRINT("waiting for destroy...\n"); - } else { - IPL_PRINT("destroy done!\n"); - destroying = FALSE; - initialized = FALSE; - } - } - if (!initialized || destroying) { - // この後のボタンチェック(撮影やカメラ切り替え等)を行わない。 - continue; - } - } - - - - if (PAD_DetectFold()) { - // キャプチャを停止して、停止を確認してから - // スリープモードへ移行するようにしないと、 - // cameraIntr: status error - // cameraIntr: status error - // と、2回エラーになるようだ。 - - if (mpCmrMgr2->tryPrepareToSleep()) { - PM_GoSleepMode(PM_TRIGGER_COVER_OPEN, PM_PAD_LOGIC_AND, 0); - } else { - IPL_PRINT("waiting for ready to sleep...\n"); - } - } - -// if (trg & PAD_BUTTON_B) { -// // test -// OS_TPrintf("force stop dma\n"); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// } -// if (trg & PAD_BUTTON_Y) { -// // test -// OS_TPrintf("force long dma\n"); -// sLongDmaFlag = TRUE; -// } - - if (!mpCmrMgr2->isCameraChanging()) { - if (trg & PAD_BUTTON_X) { - mpCmrMgr2->changeCamera(); - } else if (pad & PAD_BUTTON_SELECT) { - static u8 r; - - r += 1; - if (!(r & 3)) { - mpCmrMgr2->changeCamera(); - } - } - } - - - if (trg & (PAD_BUTTON_A | PAD_BUTTON_B)) { -#ifndef TWL_IPL_FINAL - mpCmrMgr2->mDebugPort = __LINE__; -#endif -// SNDEX_SetDSPMixRate( 0 ); -// SNDEX_ForceOut( TRUE ); -// -// if (trg & PAD_BUTTON_A) { -// DSP_PlaySound(const_cast(_binary_camera_shutter_dat), -// (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat) / 2, -// TRUE); -// } else { -// DSP_PlaySound(const_cast(_binary_wheel_dat), -// (u32)(_binary_wheel_dat_end - _binary_wheel_dat) / 2, -// TRUE); -// } - -// #if 0 -// // test -// CAMERA_SetLED(TRUE); -// #endif - - - IPL_PRINT("shoot()=%d\n", mpCmrMgr2->shoot()); - } - - -// if (re) { -// OSTick begin = OS_GetTick(); -// // 今はy方向の間引きが出来ないので、480 linesじゃなくて156*3 linesとしている。 -// // ちょっとこのへん適当。 -// rp = (u8)(wp ^ 1); -// Shrink640to208(buffer[rp ? 0 : 1], 156*3/*480*/, pDtcm, (u16*)(rp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C) /*buffer[2]*/); -// we = TRUE; -// // CpuYuv2Rgb666(buffer[2], (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 1); -// OS_Printf("total(exp) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// DrawFPS(); -// } - -// -// if (refresh) { -// // GX_LoadBG3Scr( buffer[rp], 0, BYTES_PER_LINE * HEIGHT); -// GX_DisableBankForTex(); -// GX_SetBankForTex(rp ? GX_VRAM_TEX_0_D : GX_VRAM_TEX_0_C); -// GX_SetBankForLCDC(rp ? GX_VRAM_LCDC_C : GX_VRAM_LCDC_D); -// refresh = FALSE; -// } -// -// if (!we && !sNowConvert) -// { -// // 変なことになりそうだがとりあえず動かす。 -// // CPUによるYUV->RGB変換実行 -// // DC_InvalidateRange( buffer[wp], BYTES_PER_LINE * HEIGHT); -// DC_FlushAll(); -// -// // RGB666実験は一旦封印。 -// // if (mode || 1) { -// // OSTick begin = OS_GetTick(); -// // u32 ret; -// // // テクスチャイメージスロットの半分、つまり画面の上半分しか書けない。 -// // GX_SetBankForLCDC((wp) ? GX_VRAM_LCDC_D : GX_VRAM_LCDC_C); -// // #if 1 -// // ret = CpuYuv2Rgb666(buffer[wp], (void *)((wp) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// // // OS_Printf("total(666) = %d us, ret=0x%08x\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin), ret); -// // #else -// // ret = CpuYuv2Rgb666(buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// // OS_Printf("%04x %04x %04x %04x %04x %04x %04x %04x ret=%08x\n", -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 0], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 1], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 2], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 3], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 4], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 5], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 6], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 7], -// // ret); -// // #endif -// // } -// /*else*/ -// { -// -// #if 1 -// #if 0 -// // 条件を合わせて下半分だけに。 -// CpuYuv2Rgb( buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// MI_CpuFillFast((void *)buffer[wp], 0, sizeof(u16) * (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// #else -// OSTick begin = OS_GetTick(); -// // CpuYuv2Rgb666(buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// -// // 固定データ実験 -// Shrink640to208(buffer[wp]/* b_dat*/, (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C) /*buffer[wp]*/, 96 * 3, pDtcm); -// // Shrink640to208(buffer[wp]/* b_dat*/, buffer[2], 96 * 3, pDtcm); -// // CpuYuv2Rgb666(buffer[2], (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// -// OS_Printf("total(exp) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// #endif -// #endif -// } -// -// // DC_FlushRange( buffer[wp], BYTES_PER_LINE * HEIGHT); -// // DC_FlushRange((void *)((wp) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), BYTES_PER_LINE * HEIGHT); -// // DC_StoreAll(); -// -// rp = wp; -// refresh = TRUE; -// we = TRUE; -// } -// - - - - if (mpCmrMgr2->isShotDone()) { -// #if 1 -// // test -// CAMERA_SetLED(FALSE); -// #endif - OS_TPrintf("SHOT DONE!\n"); - // check error mShotErr - - // anything to process ? - mpCmrMgr2->clearShotDone(); - - if (!mpCmrMgr2->getOneShotFlag()) { - mpCmrMgr2->startCapture(current); - } - -// SNDEX_SetDSPMixRate( 8 ); -// SNDEX_ForceOut( FALSE ); - - } else { - // ここで(trg)にするとカメラ切り替えとかできなくなる。 - if (mpCmrMgr2->getOneShotFlag() && (trg & PAD_BUTTON_Y)) { - mpCmrMgr2->startCapture(current); - } - } - -// { -// -// if (re) { -// re = FALSE; -// tp = rp; -// } -// -// } - - } -} - -/*---------------------------------------------------------------------------* - Name: Vブランク割り込み処理 - - Description: - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - mpCmrMgr2->procVBlankIntr(); - - -// if (tp == rp) { -// GX_DisableBankForTex(); -// GX_SetBankForTex( tp ? GX_VRAM_TEX_0_D : GX_VRAM_TEX_0_C); -// GX_SetBankForLCDC(tp ? GX_VRAM_LCDC_C : GX_VRAM_LCDC_D); -// } - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -// static void CameraIntr2(void) -// { -// u32 nwp = wp; -// -// // ちゃんとエラー処理してないけど… -// if (CAMERA_GetErrorStatus()) { -// OS_TPrintf("Error!\n"); -// CAMERA_StopCapture(); -// CAMERA_ClearBuffer(); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// CAMERA_StartCapture(); -// } else { -// if (MI_IsNDmaBusy(CAMERA_NEW_DMA_NO)) { -// static u32 count; -// OS_TPrintf("DMA was not done until VBlank.%d\n", count++); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// } else { -// if (reading) { -// re = TRUE; -// if (we) { -// we = FALSE; -// wp ^= 1; -// } -// } -// } -// } -// -// if (sLongDmaFlag) { -// sLongDmaFlag = FALSE; -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT + 1), /*(MINDmaCallback)NDmaDummyIntr*/NULL, NULL); -// } else { -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), /*(MINDmaCallback)NDmaDummyIntr*/NULL, NULL); -// } -// reading = TRUE; -// -// -// // OS_SetIrqCheckFlag(OS_IE_CAMERA); // checking camera interrupt -// // -// // if (mError) { -// // CAMERA_ClearBuffer(); -// // mError = FALSE; -// // } else { -// // if (CAMERA_GetErrorStatus() -// // /*|| -// // (OS_GetIrqMask() & (OS_IE_NDMA0 << CAMERA_NEW_DMA_NO))*/) { -// // // error -// // OS_TPrintf("line %d %x\n", __LINE__, (OS_GetIrqMask() & (OS_IE_NDMA0 << CAMERA_NEW_DMA_NO))); -// // -// // CAMERA_StopCapture(); -// // MI_StopNDma(CAMERA_NEW_DMA_NO); -// // // OS_DisableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // mError = TRUE; -// // return; -// // } -// // -// // if (mLastState == eStt_Capture) { -// // // OS_EnableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // return; -// // } -// // } -// // -// // switch (mState) { -// // case eStt_Capture: -// // CAMERA_StartCapture(); -// // // reg_OS_IF = OS_IE_NDMA0 << CAMERA_NEW_DMA_NO; -// // // callbackを指定しないと、mi_ndma.cで -// // // //---- set interrupt enable -// // // if ( callback ) -// // // { -// // // contData |= MI_NDMA_IF_ENABLE; -// // // } -// // // となっているので割り込みがかからない。 -// // -// // // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaDummyIntr, NULL); -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaIntr, NULL); -// // break; -// // -// // default: -// // break; -// // } -// // -// // mLastState = mState; -// -// // DrawFPS(); -// } -// -// // static void NDmaIntr(void) -// // { -// // OS_SetIrqCheckFlag(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // -// // if (mError) { -// // // captured data is broken -// // } else { -// // // 変換スレッドにメッセージを送る。 -// // -// // mLastState = mState; -// // switch (mState) { -// // case eStt_Capture: -// // // 表示用キャプチャを継続。 -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaIntr, NULL); -// // break; -// // -// // default: -// // // とりあえずそれ以外はキャプチャ停止。 -// // CAMERA_StopCapture(); -// // break; -// // } -// // OS_TPrintf("Send message!\n"); -// // -// // } -// // -// // // OS_DisableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // } - -static void NDmaDummyIntr(void) -{ -// // camera-2/main.c: CameraDmaIntr()で、これが行われている。 -// // これを抜いたのがうまく動かない原因ではなさそう。 -// // OS_SetIrqCheckFlag(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// -// // camera-2/main.c: CameraDmaIntr()で、これが行われている。 -// // …おい!ここでセットする関数は、引数無しだぞ?どうなっとるん? -// // あ、CAMERA_DmaRecv*()のcallbackではないから、別物なのか!? -// // callbackは毎line来るんだよね? -// OS_SetIrqFunction(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO, NDmaDummyIntr); // for next interrupt - -} - - -// /*---------------------------------------------------------------------------* -// Name: カメラ割り込み処理 (エラー時とVsync時の両方で発生) -// -// Description: -// -// Arguments: None -// -// Returns: None -// *---------------------------------------------------------------------------*/ -// void CameraIntr(void) -// { -// int nwp = 2; -// OS_SetIrqCheckFlag(OS_IE_CAMERA); // checking camera interrupt -// -// if (CAMERA_GetErrorStatus()) -// { -// OS_TPrintf("Error was occurred.\n"); -// // 停止処理 -// CAMERA_StopCapture(); // カメラ停止 -// CAMERA_ClearBuffer(); // クリア -// MI_StopNDma(CAMERA_NEW_DMA_NO); // DMA停止 -// wp_pending = TRUE; // 次回も同じフレームを使用する -// startRequest = TRUE; // カメラ再開要求 -// return; // waiting next frame (skip current frame) -// } -// -// // 以降はVsync時の処理 -// -// if (startRequest) -// { -// CAMERA_ClearBuffer(); -// CAMERA_StartCapture(); -// startRequest = FALSE; -// } -// -// if (CAMERA_IsBusy() == FALSE) // done to execute stop command? -// { -// //OS_TPrintf("while stopping the capture or just finished\n"); -// } -// else -// { -// if (MI_IsNDmaBusy(CAMERA_NEW_DMA_NO)) // NOT done to capture last frame? -// { -// OS_TPrintf("DMA was not done until VBlank.\n"); -// MI_StopNDma(CAMERA_NEW_DMA_NO); // DMA停止 -// // return; // waiting next frame (skip current frame) -// } -// // start to capture for next frame -// if (wp_pending) -// { -// wp_pending = FALSE; -// } -// else -// { -// // 更新バッファ変更 -// if (we) { -// nwp = wp; -// wp ^= 1; -// we = FALSE; -// } -// -// // #ifdef CONVERT_WITH_DSP -// // // DSPによるYUV->RGB変換実行 -// // sNowConvert = TRUE; -// // DSP_Yuv2RgbConvertAsync(buffer[rp ^ 1], buffer[rp ^ 1], (WIDTH*HEIGHT*2), Yuv2rgbCallback); -// // #else -// // // CPUによるYUV->RGB変換実行 -// // DC_InvalidateRange( buffer[rp ^ 1], BYTES_PER_LINE * HEIGHT); -// // GX_SetBankForLCDC((rp ^ 1) ? GX_VRAM_LCDC_D : GX_VRAM_LCDC_C); -// // CpuYuv2Rgb666(buffer[rp ^ 1], (void *)((rp ^ 1) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(WIDTH*HEIGHT) ); -// // CpuYuv2Rgb( buffer[rp ^ 1], buffer[rp ^ 1], (u32)(WIDTH*HEIGHT) ); -// // #endif -// } -// -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// // なんで -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH)/LINES_SPLIT, CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// // じゃないの? -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)CameraIntr, NULL); -// } -// -// // frame rate print -// // 割り込みでは遠慮しよう。 -// // DrawFPS(); -// } - -/*---------------------------------------------------------------------------* - Name: PutString - - Description: - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -static void PutString( char *format, ... ) -{ - u16 *dest = text_buffer; - char temp[32+1]; - int i; - va_list va; - - va_start(va, format); - (void)OS_VSNPrintf(temp, sizeof(temp), format, va); - va_end(va); - - MI_CpuClearFast(text_buffer, sizeof(text_buffer)); - for (i = 0; i < 32 && temp[i]; i++) - { - dest[i] = (u16)((u8)temp[i] | (0 << 12)); - } - DC_StoreRange(text_buffer, sizeof(text_buffer)); -} - -/*---------------------------------------------------------------------------* - Name: DrawFPS - - Description: FPSを表示します。 - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -static void DrawFPS(void) -{ -#define FPS_SAMPLES 4 - static OSTick begin = 0; - static int uspf[FPS_SAMPLES] = { 0 }; - static int count = 0; - // 0123456789abcdef - static u8 star[16 + 1] = " "; - static u8 starIdx; - int i; - int sum = 0; - OSTick end = OS_GetTick(); - if (begin) // 初回を除く - { - uspf[count] = (int)OS_TicksToMicroSeconds(end - begin); - count = (count + 1) % FPS_SAMPLES; - } - begin = end; - // 平均値の算定 - for (i = 0; i < FPS_SAMPLES; i++) - { - if (uspf[i] == 0) break; - sum += uspf[i]; - } - star[starIdx] = ' '; - star[starIdx ^ 8] = ' '; - starIdx = (u8)((starIdx + 1) & 0xf); - star[starIdx] = '*'; - star[starIdx ^ 8] = '*'; - star[16] = '\0'; - if (1 || sum) - { - int mfps = (int)(1000000000LL * i / sum); - PutString("%2d.%03d fps %s", mfps / 1000, mfps % 1000, star); - } -} - -// /*---------------------------------------------------------------------------* -// Name: Yuv2rgbCallback -// -// Description: YUV->RGB変換完了後に呼び出されるコールバック -// -// Arguments: None -// -// Returns: None -// *---------------------------------------------------------------------------*/ -// static void Yuv2rgbCallback(void) -// { -// sNowConvert = FALSE; -// } -// -// - -// namespace cmn { namespace sys { namespace cmr2 -// { -// void* Manager::dspAlloc_( u32 size ) { -// #pragma unused(size) -// // this function must not be called by SDK -// OS_TPanic("dspAlloc_\n"); -// return NULL; -// } -// -// void Manager::dspFree_( void* p_ptr ) { -// #pragma unused(p_ptr) -// // this function is always called by SDK -// return; -// } -// -// }}} diff --git a/build/tests/yuv2rgb/src/menuCameraManager.cpp b/build/tests/yuv2rgb/src/menuCameraManager.cpp deleted file mode 100644 index 8db5e723..00000000 --- a/build/tests/yuv2rgb/src/menuCameraManager.cpp +++ /dev/null @@ -1,2453 +0,0 @@ -// TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECTについて -// ランチャーでは常に未定義です。 -// 私の手元で行っているカメラ部分に特化した実験開発プロジェクトと -// ソースを共用するため、そちらへ組み込まれる時のみ定義されます。 - -// 落ち着いたらcmnCameraManager.cppへ持っていく。 - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#include "menu.h" -//#include "cmnJpegManager.h" -#include "cmnFile.h" -//#include "cmnImageSampling.h" -#include "menuImageSampling.h" -#endif - - -#include -#include -#include "menuCameraManager.h" -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#include -#include -#else -#include -#include -#endif - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// #else -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// #include "menuDspManager.h" -// #endif -// #endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -extern "C" { -// build/libraries/dsp/ARM9.TWL/src/dsp_jpeg_enc.c -extern u16 *DSPFrame_y; -extern u16 *DSPFrame_cb; -extern u16 *DSPFrame_cr; -} /* extern "C" */ -#endif - -#if SDK_VERSION_DATE < 20080630 -#else -/*! - カメラVsyncコールバック - */ -static void proc_camera_vsync_callback( CAMERAResult result ) -{ -#pragma unused( result ) -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - { - extern cmn::sys::cmr2::Manager* mpCmrMgr2; - mpCmrMgr2->procCameraIntr(); - } -#else - MenuSys()->getCmrMgr2()->procCameraIntr(); -#endif -} -#endif - -namespace cmn { namespace sys { namespace cmr2 -{ - vu8 Manager::mCaptureFlag; - vu8 Manager::mNextCaptureFlag; - vu8 Manager::mShotFlag; - vu8 Manager::mNextShotFlag; - vu8 Manager::mCurLedBlink; - volatile CAMERASelect Manager::mSelCmr; - volatile CAMERASelect Manager::mNextCmr; - volatile cameraState Manager::mCmrCurState[cCameraMax]; - volatile cameraState Manager::mCmrNextState[cCameraMax]; - OSMessage Manager::mI2cAsyncMsgBuf[1]; - OSMessageQueue Manager::mI2cAsyncMsgQueue; - -/*! - コンストラクタ - */ -Manager::Manager() : -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - mpHeap( NULL ), -#endif - mShowWdt( cDefaultShowWidth ), - mShowHgt( cDefaultShowHeight ), - mShotWdt( cDefaultShotWidth ), - mShotHgt( cDefaultShotHeight ), - mLedKeepFlag( FALSE ), - mOneShotFlag( FALSE ), - mEncodeBusyFlag( FALSE ), - mPreInitFlag( FALSE ), - mInitFlag( FALSE ), - mpCaptureBuf( NULL ), - mpConvBuf( NULL ), - mpNextConvBuf( NULL ), - mpShotBuf( NULL ), - mI2cBusy( FALSE ), - mTexSwap( FALSE ), - mTexBank( GX_VRAM_TEX_NONE ), - mNextTexBank( GX_VRAM_TEX_NONE ), - mpEncodeWork(NULL) -{ - u32 i; - - // manager default value - for (i = 0; i < cCameraMax; i++) { - mCmrNextState[i].mContext = CAMERA_CONTEXT_B; - // フレームレートも、カメラ毎に保持している。 - mCmrNextState[i].mFrameRate = CAMERA_FRAME_RATE_20; - } - - for (i = 0; i < cBufferCount; i++) { - mIsCapBufUsed[i] = FALSE; - mpCapBuf[i] = NULL; - } - - mSelCmr = mNextCmr = CAMERA_SELECT_NONE; - mCaptureFlag = mNextCaptureFlag = mShotFlag = mNextShotFlag = FALSE; - mCurLedBlink = FALSE; - - // 初期化はこのタイミングで確実に行っておく。 - OS_InitEvent(&mLowerEvent); - - setCaptureRgbFlag( FALSE ); - -// TwlSDK/build/libraries/mi/common.TWL/src/mi_ndma.c: -// #define CAMERA_DMA_BLOCK_SIZE MI_NDMA_BWORD_16 -// #define CAMERA_DMA_INTERVAL 2 -// #define CAMERA_DMA_PRESCALER MI_NDMA_INTERVAL_PS_1 - MI_GetNDmaConfig(cDefaultDmaNo, &mDmaConfig); - mDmaConfig.intervalTimer = 2; // CAMERA_DMA_INTERVAL - mDmaConfig.prescaler = MI_NDMA_INTERVAL_PS_1; // CAMERA_DMA_PRESCALER; - // blockWordが16だとjackal (hyena)使用時の処理落ちが酷いが、 - // yuv2rgb実験において、32なら64との差は感じられなかった。 - // ランチャーへ組み込んでみると、32より64の方が処理落ちが少なかった。 - // 64にする。 - mDmaConfig.blockWord = MI_NDMA_BWORD_16; // MI_NDMA_BWORD_64; // CAMERA_DMA_BLOCK_SIZE; - -} - - -/*! - デストラクタ - */ -Manager::~Manager() -{ - while (!tryDestroy()) { - OS_Sleep(1); - } -} - - -/*! - カメラ先行初期化。 - 体感的なカメラ起動時間を短縮するため、本初期化の手前 - (ヒープを必要としない部分)まで行う。 - カメラはスタンバイに。 - 呼ばなくても良い。 - */ -void Manager::preInit( u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ) -{ - // preInit()は複数箇所から呼ばれても良いようにしておく。 - { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (mPreInitFlag) { - OS_RestoreInterrupts(enabled); - return; - } - mPreInitBusyFlag = TRUE; - mPreInitFlag = TRUE; - OS_RestoreInterrupts(enabled); - } - - mShowWdt = show_w; - mShowHgt = show_h; - mShotWdt = shot_w; - mShotHgt = shot_h; - -// setShutterSnd(NULL, 0, FALSE); - - // 直前の終了要求が残っているかもしれない。 - // 初期化要求以外、イベントはクリアしておく。 - OS_ClearEvent(&mLowerEvent, (u32)(cEventMaskLower_All & ~cEventMaskLower_EnableIntrAndPrepareBuffer)); - - OS_InitMessageQueue(&mI2cMsgQueue, mI2cMsgBuf, sizeof(mI2cMsgBuf) / sizeof(*mI2cMsgBuf)); - OS_InitMessageQueue(&mI2cAsyncMsgQueue, mI2cAsyncMsgBuf, sizeof(mI2cAsyncMsgBuf) / sizeof(*mI2cAsyncMsgBuf)); - OS_CreateThread(&mLowerThread, procLower_, this, - mLowerThreadStack + (sizeof(mLowerThreadStack) / sizeof(*mLowerThreadStack)), - sizeof(mLowerThreadStack), - menu::sys::Object::cThreadPriority_CameraLowerLo); - OS_CreateThread(&mI2cThread, procI2c_, this, - mI2cThreadStack + (sizeof(mI2cThreadStack) / sizeof(*mI2cThreadStack)), - sizeof(mI2cThreadStack), - menu::sys::Object::cThreadPriority_CameraI2c); - OS_WakeupThreadDirect(&mLowerThread); - OS_WakeupThreadDirect(&mI2cThread); -} - - -/*! - カメラライブラリの初期化 - @param p_heap ヒープ - @param mode 表示モード - @param sel_cmr 選択されたカメラ - @param vram1 ダブルバッファのVRAM1 - @param vram2 ダブルバッファのVRAM2 - @param show_w 表示横幅 (とりあえず208のみ) - @param show_h 表示高さ (とりあえず156のみ) - @param shot_w 撮影横幅 (とりあえず640のみ) - @param shot_h 撮影高さ (とりあえず480のみ) - */ -void Manager::init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) , - u32 show_w , u32 show_h , u32 shot_w , u32 shot_h ) -{ - if (mInitFlag) { - return; - } - mInitBusyFlag = TRUE; - mInitFlag = TRUE; - - preInit(show_w, show_h, shot_w, shot_h); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - mpHeap = p_heap; -#endif - - mpDtcmWork = pDtcmWork; - mTarget = 0; - mpCaptureBuf = NULL; - mpConvBuf = NULL; - mpNextConvBuf = NULL; - mpShotBuf = NULL; - // 最初に準備したいのはvram1で、すでに準備済みのものがvram2 - // とする。 - mTexBank = GXVRamTex(vram2); - mNextTexBank = 0; - mCaptureFlag = FALSE; - mShotFlag = FALSE; - mNextCaptureFlag = FALSE; - mNextShotFlag = FALSE; - mShotDone = FALSE; - mShotErr = 0; - mpGxUserProc = gx_user_proc; -#ifndef TWL_IPL_FINAL - mDebugPort = 0; -#endif - - mTexSwap = FALSE; - mFirstPictureReady = FALSE; - - mCaptureSkipCount = 0; - mCaptureRetryCount = 0; - - mVramType[ 0 ] = vram1; - mVramType[ 1 ] = vram2; - - // vram2 == 0 ならシングルバッファにすればいいのでは? - for ( int i = 0 ; i < 2; ++ i ) - { - switch ( mVramType[ i ] ) - { - case GX_VRAM_A: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_A ); break; - case GX_VRAM_B: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_B ); break; - case GX_VRAM_C: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_C ); break; - case GX_VRAM_D: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_D ); break; - case GX_VRAM_E: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_E ); break; - case GX_VRAM_F: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_F ); break; - case GX_VRAM_G: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_G ); break; - case GX_VRAM_H: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_H ); break; - case GX_VRAM_I: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_I ); break; - default: IPL_ASSERT( 0 ); break; - } - } - - mMode = mode; - mNextCmr = sel_cmr; - - mGxDma = GX_GetDefaultDMA(); - // GXでDMAを使わない (旧DMAはカメラDMAの邪魔になる) - // で、いつ戻すの? - GX_SetDefaultDMA(GX_DMA_NOT_USE); - - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_EnableIntrAndPrepareBuffer); -} - - -void Manager::procLower() -{ - u32 event; - BOOL initDone = FALSE; - CAMERAResult camResult; - u32 i; - BOOL shot; - - while (TRUE) { - if (!initDone) { -#if SDK_VERSION_DATE < 20080630 - // CAMERAライブラリを初期化していないという前提なので、 - // setInterrupt()は使わない。 - OS_DisableIrqMask(OS_IE_CAMERA); -#else - // OS_IE_CAMERAはCAMERAライブラリがハンドリングする。 -#endif - // 重いので低優先度で。 - camResult = CAMERA_Init(); - if (camResult != CAMERA_RESULT_SUCCESS) { - // とりあえず - IPL_HALT("CAMERA_Init() error %d\n", camResult); - OS_TPanic(""); - // NEVER REACH HERE - } - initDone = TRUE; - - // SDK default value - mSelCmr = CAMERA_SELECT_NONE; - for (i = 0; i < cCameraMax; i++) { - mCmrCurState[i].mContext = CAMERA_CONTEXT_A; - mCmrCurState[i].mFrameRate = CAMERA_FRAME_RATE_15; - } - mCurLedBlink = FALSE; - // I2C各種設定リクエスト送信。 - // 高優先度スレッドでAsync処理。 - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_AfterInit, OS_MESSAGE_BLOCK); - } - - event = OS_WaitEventEx_Or(&mLowerEvent, cEventMaskLower_All, cEventMaskLower_All); -// IPL_PRINT("event=0x%02x\n", event); - - if (event & cEventMaskLower_Destroy) { - break; - } - if (event & cEventMaskLower_EnableIntrAndPrepareBuffer) { - // カメラ割り込みを有効にする。 - setInterrupt(TRUE); - prepareBuffer(); - // 初期化は終わった。 - mInitBusyFlag = FALSE; - } - if (event & cEventMaskLower_Activate) { - if (mSelCmr == CAMERA_SELECT_NONE && mNextCmr != CAMERA_SELECT_NONE) { - // CAMERA_SELECT_NONEを設定時は、CAM_VSYNCは発生しないので - // kickする。 - // カメラ起動直後一定フレーム数の間は画像が安定しないのでキャプチャ停止。 - mCaptureSkipCount = 1; - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_Activate, OS_MESSAGE_BLOCK); - } - } - shot = FALSE; - if ((event & cEventMaskLower_Convert) || mpNextConvBuf) { - shot = convert((BOOL)(event & cEventMaskLower_Shot)); - } - if (shot) { - // 変換しないで撮影のみとか、 - // 撮影中にキャプチャを継続することには、まだ対応していない。 - mEncodeBusyFlag = TRUE; - encodeAndSave(); - mEncodeBusyFlag = FALSE; - } - if (event & cEventMaskLower_DisableIntrAndDestroyBuffer) { - // このイベントは連続発生する可能性がある。 - if (mInitFlag) { - // カメラ割り込みを無効にする。 - setInterrupt(FALSE); - destroyBuffer(); - MI_StopNDma(cDefaultDmaNo); - // 再初期化が必要。 - mInitFlag = FALSE; - } - } - } - - // I2Cスレッドを終了 (BLOCK) - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_Destroy, OS_MESSAGE_BLOCK); - OS_JoinThread(&mI2cThread); - - CAMERA_End(); - - GX_SetDefaultDMA(mGxDma); -} - - -void Manager::procI2c() -{ - OSMessage msg; - CAMERAResult camResult; - - while (TRUE) { - OS_ReceiveMessage(&mI2cMsgQueue, &msg, OS_MESSAGE_BLOCK); -// IPL_PRINT("I2c msg=%d\n", msg); - if (!msg) { - break; - } - - mI2cBusy = TRUE; - - switch ((u32)msg) { - case cMsgI2c_AfterInit: - CAMERA_SetOutputFormat(mCaptureRgbFlag ? CAMERA_OUTPUT_RGB : CAMERA_OUTPUT_YUV); - CAMERA_SetTrimming(FALSE); - // TrimmingがFALSEなのでTrimmingParamsは無視。 - mShowTransferLines = (int)CAMERA_GET_MAX_LINES(mShowWdt); - mShotTransferLines = (int)CAMERA_GET_MAX_LINES(mShotWdt); - // 今は解像度切り替えができないので、mShowWdtじゃなくてmShotWdtで。 - CAMERA_SetTransferLines(mShotTransferLines); - - camResult = i2cSetupOthers(); - // 結果はともかく、先行初期化は終わった。 - mPreInitBusyFlag = FALSE; - if (camResult != CAMERA_RESULT_SUCCESS) { - // まだ。 - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINALではスルーするー - OS_TPanic(""); - } - - break; - - case cMsgI2c_Activate: - camResult = i2cActivate(mNextCmr); - if (camResult != CAMERA_RESULT_SUCCESS) { - // まだ。 - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINALではスルーするー - OS_TPanic(""); - } - - break; - - case cMsgI2c_ChangeLedToOn: - case cMsgI2c_ChangeLedToBlink: - camResult = i2cLed( ((u32)msg == cMsgI2c_ChangeLedToBlink) ); - if (camResult != CAMERA_RESULT_SUCCESS) { - // まだ。 - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINALではスルーするー - OS_TPanic(""); - } - - break; - - default: - IPL_HALT("unknown msg %d\n", msg); - // TWL_IPL_FINALではスルーするー - break; - } - - mI2cBusy = FALSE; - } -} - - -// 高優先度スレッドからのみ呼ばれることを想定しているので排他制御しない。 -CAMERAResult Manager::i2cCommon(u32 type, CAMERASelect sel_cmr) -{ - union { - CAMERAResult result; - OSMessage msg; - } u = { - (CAMERAResult)(-1) // CAMERAResultは非負なので、この値が返ったら実装ミス。 - }; - const volatile cameraState* pNextState = &mCmrNextState[isOutCamera(sel_cmr)]; - u32 retryCount = 0; - - // cI2cCommon_Activateのみ、CAMERA_SELECT_NONEを受け付ける。 - // どんなときも、CAMERA_SELECT_BOTHは受け付けない。 - if (sel_cmr == CAMERA_SELECT_NONE && - type != cI2cCommon_Activate) { - IPL_HALT("error: CAMERA_SELECT_NONE for type %d\n", type); - return (CAMERAResult)(-2); - } - - while (TRUE) { - switch (type) { - case cI2cCommon_Activate: - u.result = CAMERA_I2CActivateAsync(sel_cmr, i2cActivateCallback, (void*)sel_cmr); - break; - - case cI2cCommon_FrameRate: - u.result = CAMERA_I2CFrameRateAsync(sel_cmr, pNextState->mFrameRate, i2cFrameRateCallback, (void*)sel_cmr); - break; - - case cI2cCommon_ContextSwitch: - u.result = CAMERA_I2CContextSwitchAsync(sel_cmr, pNextState->mContext, i2cContextSwitchCallback, (void*)sel_cmr); - break; - - // I2Cじゃないけど - case cI2cCommon_LedOn: - case cI2cCommon_LedBlink: - u.result = CAMERA_SetLEDAsync( (type == cI2cCommon_LedBlink), i2cLedCallback, (void*)(type == cI2cCommon_LedBlink)); - break; - - default: - IPL_HALT("unknown type(1) %d sel_cmr %d\n", type, sel_cmr); - // TWL_IPL_FINALではスルーするー - break; - } - - if (u.result == CAMERA_RESULT_BUSY) { - IPL_PRINT("CAMERA_RESULT_BUSY type %d retry %d\n", type, retryCount); - retryCount++; - if (retryCount < cI2cRetryMax) { - OS_Sleep(cI2cRetryIntervalMsec); - continue; - } - } - break; - } - - if (u.result == CAMERA_RESULT_SUCCESS) { - OS_ReceiveMessage(&mI2cAsyncMsgQueue, &u.msg, OS_MESSAGE_BLOCK); - if (u.result != CAMERA_RESULT_SUCCESS) { - IPL_HALT("I2cAsyncCommon error: result %d for type %d sel_cmr %d\n", u.result, type, sel_cmr); - // TWL_IPL_FINALではスルーするー - } - } else { - IPL_HALT("I2cAsyncCommon error: result %d for type %d sel_cmr %d\n", u.result, type, sel_cmr); - // TWL_IPL_FINALではスルーするー - } - - return u.result; -} - - -// 両方のカメラについて、コンテキスト切り替え、および -// コンテキストで保持されない設定を行う。 -// (mNextCmr == CAMERA_SELECT_NONE)の場合にのみスタンバイにする。 -// それ以外ではカメラの明示的な起動はしない。 -CAMERAResult Manager::i2cSetupOthers() -{ - CAMERAResult result = CAMERA_RESULT_SUCCESS; - CAMERASelect sel_cmr; - u32 i; - - if (mNextCmr == CAMERA_SELECT_NONE) { - // 先にスタンバイにする。 - result = i2cActivate(mNextCmr); - // スタンバイにしても、他の設定を続ける。 - } - - for (i = 0; i < cCameraMax; i++) { - sel_cmr = indexToCameraSelect(i); - - if (result == CAMERA_RESULT_SUCCESS) { - // どちらのコンテキストへ切り替える? - if (mCmrNextState[i].mContext == CAMERA_CONTEXT_A) { - // フレームレートは後から変更(上がるかもしれない) - result = i2cContextSwitch(sel_cmr); - if (result == CAMERA_RESULT_SUCCESS) { - result = i2cFrameRate(sel_cmr); - } - } else { - // フレームレートは先に変更(下がるかもしれない) - result = i2cFrameRate(sel_cmr); - if (result == CAMERA_RESULT_SUCCESS) { - result = i2cContextSwitch(sel_cmr); - } - } - } - } - - return result; -} - - -#if SDK_VERSION_DATE < 20080630 -void Manager::setInterrupt(BOOL enable) -{ - OS_DisableIrqMask(OS_IE_CAMERA); - - CAMERA_SetMasterInterrupt(enable); - if (enable) { - // ここでカメラ割り込みは禁止になっているので - // mIntrPositiveEdgeの操作を割り込み禁止にはしない。 - mIntrPositiveEdge = FALSE; - // almost begin of vblank - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_NEGATIVE_EDGE); - CAMERA_SetBufferErrorInterrupt(FALSE); - CAMERA_ClearBuffer(); - OS_ResetRequestIrqMask(OS_IE_CAMERA); - OS_EnableIrqMask(OS_IE_CAMERA); - } -} -#else -// OS_IE_CAMERAはCAMERAライブラリがハンドリングする。 -void Manager::setInterrupt(BOOL enable) -{ - CAMERA_SetVsyncCallback( NULL ); - if (enable) { - CAMERA_ClearBuffer(); - CAMERA_SetVsyncCallback( proc_camera_vsync_callback ); - } -} -#endif - - -CAMERAResult Manager::i2cActivate(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_Activate, sel_cmr); -} - -CAMERAResult Manager::i2cFrameRate(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_FrameRate, sel_cmr); -} - -CAMERAResult Manager::i2cContextSwitch(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_ContextSwitch, sel_cmr); -} - -CAMERAResult Manager::i2cLed(BOOL isBlink) -{ - return i2cCommon(isBlink ? cI2cCommon_LedBlink : cI2cCommon_LedOn, CAMERA_SELECT_OUT); -} - -void Manager::i2cCommonAsyncCallback(CAMERAResult result, void *arg) -{ -#ifdef TWL_IPL_FINAL -#pragma unused(arg) -#endif - // このコールバックが呼ばれる前にメッセージバッファは空に - // なっているはず。 - if (!OS_SendMessage(&mI2cAsyncMsgQueue, (OSMessage)result, OS_MESSAGE_NOBLOCK)) { - IPL_HALT("mI2cAsyncMsgQueue full! arg %d\n", arg); - // TWL_IPL_FINALではスルーするー - } -} - -void Manager::i2cActivateCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mSelCmr = (CAMERASelect)arg; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cFrameRateCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mCmrCurState[isOutCamera((CAMERASelect)arg)].mFrameRate = - mCmrNextState[isOutCamera((CAMERASelect)arg)].mFrameRate; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cContextSwitchCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mCmrCurState[isOutCamera((CAMERASelect)arg)].mContext = - mCmrNextState[isOutCamera((CAMERASelect)arg)].mContext; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cLedCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - // 単純に(u8)argとすると、 - // Warning: integral type is not large enough to hold pointer - // と言われる。 - mCurLedBlink = (u8)((BOOL)arg); - } - i2cCommonAsyncCallback(result, arg); -} - - -void Manager::prepareBuffer() -{ -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->UseScratchHeaps(TRUE); -#endif -#endif - - for (u32 i = 0; i < cBufferCount; i++) { - mpCapBuf[i] = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - new u16 [ cPhotoWidth * cPhotoHeight ]; -#else -#ifdef TWL_IPL_USE_RED_IPL - (u16*)MenuSys()->getRedIplMgr()->allocCameraCaptureScratchBuffer(cPhotoWidth * cPhotoHeight * sizeof(u16)); -#else - new( mpHeap ) u16 [ cPhotoWidth * cPhotoHeight ]; -#endif -#endif - IPL_ASSERT( mpCapBuf[i] ); - IPL_PRINT("mpCapBuf[%d]=%x\n", i, mpCapBuf[i]); - } - - mpEncodeWork = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - new encodeWork; -#else - new u8 [ SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption) ]; -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_USE_RED_IPL - (encodeWork*)MenuSys()->getRedIplMgr()->allocJpegEncodeScratchBuffer(sizeof(encodeWork)); -#else - new ( mpHeap ) encodeWork; -#endif -#else -#ifdef TWL_IPL_USE_RED_IPL - (u8*)MenuSys()->getRedIplMgr()->allocJpegEncodeScratchBuffer(SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption)); -#else - new ( mpHeap ) u8 [ SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption) ]; -#endif -#endif -#endif - IPL_ASSERT( mpEncodeWork ); - - IPL_PRINT("mpEncodeWork=%x\n", mpEncodeWork); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult = new u8 [ cEncodeResultSizeMax ]; IPL_ASSERT( mpEncodeResult ); -#endif - - // invalidate capture buffers - DC_FlushAll(); -} - -void Manager::destroyBuffer() -{ - // 使用中でも強引に破棄する。 - IPL_ASSERT( !mpCaptureBuf ); - IPL_ASSERT( !mpConvBuf ); - IPL_ASSERT( !mpNextConvBuf ); - IPL_ASSERT( !mpShotBuf ); - - mpCaptureBuf = NULL; - mpConvBuf = NULL; - mpNextConvBuf = NULL; - mpShotBuf = NULL; - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - for (u32 i = 0; i < cBufferCount; i++) { - IPL_ASSERT( !mIsCapBufUsed[i] ); - mIsCapBufUsed[i] = FALSE; - if (mpCapBuf[i]) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - delete [] mpCapBuf[i]; -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeCameraCaptureScratchBuffer(mpCapBuf[i]); -#else - delete [] mpCapBuf[i]; -#endif -#endif - mpCapBuf[i] = NULL; - } - } - - if (mpEncodeWork) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - delete mpEncodeWork; -#else - delete [] mpEncodeWork; -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeJpegEncodeScratchBuffer(mpEncodeWork); -#else - delete mpEncodeWork; -#endif -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeJpegEncodeScratchBuffer(mpEncodeWork); -#else - delete [] mpEncodeWork; -#endif -#endif -#endif - mpEncodeWork = NULL; - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - if (mpEncodeResult) { - delete [] mpEncodeResult; - mpEncodeResult = NULL; - } -#endif - - OS_RestoreInterrupts(enabled); - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->UseScratchHeaps(FALSE); -#endif -#endif - -} - -// (mpNextConvBuf != NULL) の場合にのみ呼ばれる。 -void Manager::useNextConvBuf() -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (mpConvBuf) { - freeCapBufByPtr((u16*)mpConvBuf); - } - mpConvBuf = mpNextConvBuf; - mpNextConvBuf = NULL; - OS_RestoreInterrupts(enabled); - - // invalidate capture buffers - DC_FlushAll(); - - IPL_PRINT("using NextConvBuf\n"); -} - -BOOL Manager::convert(BOOL shot) -{ - // 変換しないで撮影のみとか、 - // 撮影中にキャプチャを継続することには、まだ対応していない。 - if (!mpConvBuf && !mpNextConvBuf) { - IPL_HALT("(!mpConvBuf && !mpNextConvBuf)\n"); - // TWL_IPL_FINALではスルーするー - - return FALSE; - } - - while (mTexSwap || - mTexBank == mVramType[mTarget]) { - // 変換結果出力先のVRAMをLCDCへ割り当てられないので、 - // 少しsleep。 - // まだスレッドENDリクエストのチェックをしていないので、 - // 終了時にはまらないよう注意。 - OS_Sleep(1); - } - mNextTexBank = mVramType[mTarget]; - GX_SetBankForLCDC( mNextTexBank ); - - if (mpNextConvBuf) { - // 撮影データが存在。 - // mpConvBufは破棄する。 - useNextConvBuf(); - shot = TRUE; - } - - // キャプチャ済みデータのinvalidateは済んでいる。 -retry: - Shrink640Yuv422To256Rgb555(const_cast(mpConvBuf), mVramAddr[mTarget], mShotHgt, mpDtcmWork->mShrinkBuf); - - // ここでもmpNextConvBufをチェックする。 - if (mpNextConvBuf) { - // 撮影データが存在。 - // mpConvBufは破棄する。 - useNextConvBuf(); - shot = TRUE; - goto retry; - } - - // スレッド優先度を通常より高くする。 - OS_SetThreadPriority(OS_GetCurrentThread(), menu::sys::Object::cThreadPriority_CameraLowerHi); - { - OSIntrMode enabled = OS_DisableInterrupts(); - - procPostConvert(shot); - - OS_RestoreInterrupts(enabled); - } - - if (mMode == eMode_BG) { - mTexSwap = TRUE; - } else { - // eMode_Tex - if (mpGxUserProc) { - mpGxUserProc(mVramAddr[mTarget], shot); - } - } - - mTarget ^= 1; - - OS_SetThreadPriority(OS_GetCurrentThread(), menu::sys::Object::cThreadPriority_CameraLowerLo); - - if (!shot) { - // invalidate capture buffer for next capture - DC_FlushAll(); - } - - return shot; -} - -/*! - カメラマネージャを完全終了する - */ -BOOL Manager::tryDestroy() -{ - // スリープ可能な条件まで待つ。 - if (!tryPrepareToSleep()) { - return FALSE; - } - - if (mInitFlag) { - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_DisableIntrAndDestroyBuffer); - return FALSE; - } else { - if (mPreInitFlag) { - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_Destroy); - - if (OS_IsThreadTerminated(&mLowerThread)) { - // 再先行初期化が必要。 - mPreInitFlag = FALSE; - return TRUE; - } - return FALSE; - } - } - return TRUE; -} - - -void Manager::activate() -{ - startCapture(mNextCmr); -} - - -void Manager::startCapture(CAMERASelect sel_cmr) -{ - mNextCmr = sel_cmr; - mNextCaptureFlag = TRUE; - // CAMERA_Init()の処理が完了していないかもしれないので - // いきなりI2C処理要求の送信はできない。 - OS_SignalEvent(&mLowerEvent, cEventMaskLower_Activate); -} - - -// TRUEが返れば、撮影要求が成功した。 -// FALSEなら、失敗。(撮影処理途中で次の撮影をさせない) -BOOL Manager::shoot(BOOL keepCapture) -{ - OSIntrMode enabled; - - // とりあえず連射は無し。 - // 撮影処理には時間がかかるので、撮影中や保存中(!mCaptureFlag)なら撮影させない。 - if (mNextShotFlag || mShotFlag || !mCaptureFlag) { - return FALSE; - } - - // 外カメラのLED制御(点灯→点滅)は、なるべく早くLEDを消す - // (残光が映り込むのを防ぐ)ため、ここで行いたい。 - // しかし外カメラに切り替え要求が出ている途中は、まだ内カメラなのでできない。 - // CAMERA_RESULT_ILLEGAL_STATUS (6) が返る。 - // どっちみち、カメラを切り替えた直後はピンボケするので1フレーム待つ - // ことになるし、ここではLED制御を行わない。 - - enabled = OS_DisableInterrupts(); - - if (!keepCapture) { - mNextCaptureFlag = FALSE; - } - mNextShotFlag = TRUE; - - OS_RestoreInterrupts(enabled); - - return TRUE; -} - -BOOL Manager::tryPrepareToSleep() -{ - stopCapture(); - - if (// 先行初期化中ならダメ。 - (mPreInitFlag && mPreInitBusyFlag) || - // 初期化中ならダメ。 - (mInitFlag && mInitBusyFlag) || - // キャプチャ中ならダメ。 - mCaptureFlag || - mNextCaptureFlag || - mpCaptureBuf || - // 変換中ならダメ。 - mpConvBuf || - mpNextConvBuf || - // 撮影中ならダメ。 - mShotFlag || - mNextShotFlag || - mpShotBuf || - // シャッター音再生中ならダメ。 -// (!isFinishedShutterSnd()) || - // 保存中ならダメ。 - mEncodeBusyFlag || - // I2C処理中ならダメ。 - mI2cBusy) { - return FALSE; - } - - if (mSelCmr != CAMERA_SELECT_NONE || - mNextCmr != CAMERA_SELECT_NONE) { - // カメラ起動中ならダメ。 - mNextCmr = CAMERA_SELECT_NONE; - return FALSE; - } - - return TRUE; -} - -#include - -// pDtcmにはu32[256*2] (2048 Bytes)の作業領域が必要です。 -// 作業領域にDTCM以外のメモリを割り当てた場合には -// パフォーマンスが大きく低下する可能性があります。 -// little endian only -asm void Manager::Shrink640Yuv422To256Rgb555( register const void* src, register void* dst, register u32 height, register void* pDtcm ) -{ -#define ORIGINAL_WIDTH 640 -#define SHRINK_WIDTH 256 // must be even -#define SHRINK_TMP_BYTES_PER_PIXEL 4 -#define SHRINK_TMP_HEIGHT 2 -// loopCounters bits: -// d31-d25: (64 x 2) loop counter -// (d31-d24: dst loop counter) -// d23-d22: (2 or 3) loop counter -// d09-d00: height loop counter (0-511) << 1 -#define LOOP_COUNTERS_INNER_SHIFT 25 -#define LOOP_COUNTERS_DST_SHIFT 24 -#define LOOP_COUNTERS_ODD_LINE_SHIFT 22 -#define LOOP_COUNTERS_ODD_LINE_MASK_SHIFT 23 -#define LOOP_COUNTERS_HEIGHT_BIT_WIDTH 10 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr -#define loopCounters height - -// keep order for ldm/stm -#define t0 r12 -#define t1 lr -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define uv r8 - -#define CONST_REGS0 r9 -#define const_0x01fe01fe r9 - -// yuv2rgb -#define y0 yuyv0 -#define y1 yuyv1 -#define rgba yuyv2 -#define const_0x80008000 const_0x01fe01fe -#define CONST_REGS1 const_H1_402_L1_772,const_Hm0_344_Lm0_714 -#define const_H1_402_L1_772 r10 -#define const_Hm0_344_Lm0_714 r11 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants1 - ldr const_0x01fe01fe, =0x01fe01fe - ldmia t0, {CONST_REGS1} - - // height << 1 and adjust loop counter - mov loopCounters, height, lsl #1 - sub loopCounters, loopCounters, #1 - -@480: - // (480/2.5) = 192 loops - -@640: - // (64 x 2) loops - -@64: - ldmia src!, {yuyv0, yuyv1, yuyv2, yuyv3, uv} - - and t0, const_0x01fe01fe, yuyv0, lsr #7 - and t1, const_0x01fe01fe, yuyv1, lsr #7 - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv0, yuyv0, yuyv0, lsl #16 - mov yuyv0, yuyv0, lsr #16 - add yuyv1, yuyv1, yuyv1, lsr #16 - orr yuyv0, yuyv0, yuyv1, lsl #16 // ave. y << 1 - add yuyv1, t0, t1 // ave. uv << 1 - - and t0, const_0x01fe01fe, yuyv2, lsr #7 - and t1, const_0x01fe01fe, yuyv3, lsr #7 - add t1, t1, t0, lsr #1 - and t0, const_0x01fe01fe, uv, lsr #7 - - and yuyv2, const_0x01fe01fe, yuyv2, lsr #16-1 - and yuyv3, const_0x01fe01fe, yuyv3, lsl #1 - add yuyv2, yuyv2, yuyv3 - and uv, const_0x01fe01fe, uv, lsl #16+1 - add yuyv2, yuyv2, uv // ave. y << 1 - - add yuyv3, t1, t0, lsr #1 // ave. uv << 1 - - stmia pDtcm!, {yuyv0, yuyv1, yuyv2, yuyv3} - - adds loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - bcc @64 - - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH * SHRINK_TMP_HEIGHT - ldr const_0x80008000, =0x80008000 -@yuv2rgb_loop: - ldmia pDtcm!, {y1, uv} - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y1, y1, t0 - add uv, uv, t1 - - // original formula: - // R = Y + 1.402*(V-128) - // G = Y - 0.344*(U-128) - 0.714*(V-128) - // B = Y + 1.772*(U-128) - // - // y1: (sum y0y1 of 4 pixels) << 1 - // uv: (sum uv of 4 pixels) << 1 - // - // then, - // R = (sumY/2 + (1.402/2)*(sumV-128*2*4)) / 4 - // G = (sumY/2 - (0.344/2)*(sumU-128*2*4) - (0.714/2)*(sumV-128*2*4)) / 4 - // B = (sumY/2 + (1.772/2)*(sumU-128*2*4)) / 4 - // - // or - // R = sumY/8 + (1.402/8)*(sumV-128*2*4) - // G = sumY/8 - (0.344/8)*(sumU-128*2*4) - (0.714/8)*(sumV-128*2*4) - // B = sumY/8 + (1.772/8)*(sumU-128*2*4) - // - // sumY max is 0xff*2*4 = 0x07f8 - // sumU, sumV max is 0xff*2*4 = 0x07f8 - // 0x07f8 << 20 =0x7f800000 - - // sumY /= 8; and normalize to 0x7f800000 - mov y0, y1, lsl #20 - mov y1, y1, lsr #16 - mov y1, y1, lsl #20 - - // normalize sumU, sumV and -= 128*2*4 - mov uv, uv, lsl #5 - eor uv, uv, const_0x80008000 - - // Green - // -(0.714/8)*sumV - smulbt t0, const_Hm0_344_Lm0_714, uv - // -(0.344/8)*sumU - smultb t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // (1.402/8)*sumV - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // (1.772/8)*sumU - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - adds loopCounters, loopCounters, #2 << LOOP_COUNTERS_DST_SHIFT // 2 pixels at once - bcc @yuv2rgb_loop - - add loopCounters, loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_SHIFT - tst loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_MASK_SHIFT - // skip 1 line - addne src, src, #ORIGINAL_WIDTH * sizeof(u16) - bicne loopCounters, loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_MASK_SHIFT - - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH - ldr const_0x01fe01fe, =0x01fe01fe - -@yuv2rgb_done: - // (-2.5) << 1 - subs loopCounters, loopCounters, #5 - bcs @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants1: - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef ORIGINAL_WIDTH -#undef SHRINK_WIDTH -#undef SHRINK_TMP_BYTES_PER_PIXEL -#undef SHRINK_TMP_HEIGHT -#undef LOOP_COUNTERS_INNER_SHIFT -#undef LOOP_COUNTERS_DST_SHIFT -#undef LOOP_COUNTERS_ODD_LINE_SHIFT -#undef LOOP_COUNTERS_ODD_LINE_MASK_SHIFT -#undef LOOP_COUNTERS_HEIGHT_BIT_WIDTH - -#undef SAVE_REGS -#undef loopCounters -#undef t0 -#undef t1 - -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef uv - -#undef CONST_REGS0 -#undef const_0x01fe01fe - -#undef y0 -#undef y1 -#undef rgba -#undef const_0x80008000 -#undef CONST_REGS1 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - - -// まだ480 linesではなく、156*3 linesでしか処理していない。 -// 小数切り捨てで問題ないのか、切り上げるのか? -// pDtcmにはu32[208*3] (2496 Bytes)の作業領域が必要です。 -// 作業領域にDTCM以外のメモリを割り当てた場合には -// パフォーマンスが大きく低下する可能性があります。 -// little endian only -asm void Manager::Shrink640Yuv422To208Rgb555( register const void* src, register void* dst, register u32 height, register void* pDtcm ) -{ -#define ORIGINAL_WIDTH 640 -#define SHRINK_WIDTH 208 // must be even -#define SHRINK_TMP_BYTES_PER_PIXEL 4 -#define SHRINK_TMP_HEIGHT 3 -// loopCounters bits: -// d31-d28: (6 + 7) loop counter -// d27-d24: (6 + 7) x 8 loop counter -// (d31-d24: dst loop counter) -// d23-d22: dtcm line loop counter -// d21-d09: unused -// d08-d00: height loop counter (0-511) -#define LOOP_COUNTERS_INNER_SHIFT 28 -#define LOOP_COUNTERS_LINE_SHIFT 24 -#define LOOP_COUNTERS_DST_SHIFT 24 -#define LOOP_COUNTERS_DTCM_LINE_SHIFT 22 -#define LOOP_COUNTERS_DTCM_LINE_MASK 0x3 -#define LOOP_COUNTERS_HEIGHT_BIT_WIDTH 9 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr -#define loopCounters height - -// keep order for ldm/stm -#define t0 r12 -#define t1 lr -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define uv r8 - -#define CONST_REGS0 r9,r10,r11 -#define const_0x01fe01fe r9 -#define const_0x00001c73 r10 -#define const_0x00000e39 r11 - -// register pair (be careful about order) -#define YYUV_REGS0 yuyv1,uv -#define YYUV_REGS1 yuyv1,t1 - -// yuv2rgb -#define y0 yuyv0 -#define y1 yuyv1 -#define rgba yuyv2 -#define CONST_REGS1 const_0x000717c2,const_0x80008000,const_H1_402_L1_772,const_Hm0_344_Lm0_714 -#define const_0x000717c2 yuyv3 -#define const_0x80008000 const_0x01fe01fe -#define const_H1_402_L1_772 const_0x00001c73 -#define const_Hm0_344_Lm0_714 const_0x00000e39 - - ldr t0, =@constants0 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldmia t0, {CONST_REGS0} - - // dtcm line loop - // loopCounters and height may differ - add loopCounters, height, #SHRINK_TMP_HEIGHT << LOOP_COUNTERS_DTCM_LINE_SHIFT - -@480: - // (6 + 7) x 8 loops = 8,9,a,b,c,d,e,f - // adjust (6 + 7) loop counter, from minus - add loopCounters, loopCounters, #(8 << LOOP_COUNTERS_LINE_SHIFT) - (1 << LOOP_COUNTERS_INNER_SHIFT) - -@640: - // 6 loops - add loopCounters, loopCounters, #6 << LOOP_COUNTERS_INNER_SHIFT -@6: - ldmia src!, {yuyv0, yuyv1, yuyv2} - - and t0, const_0x01fe01fe, yuyv0, lsr #7 - and t1, const_0x01fe01fe, yuyv1, lsr #7 - add t0, t0, t1 - and t1, const_0x01fe01fe, yuyv2, lsr #7 - add uv, t0, t1 // sum uv << 1 - - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv0, yuyv0, yuyv0, lsl #16 - add yuyv1, yuyv1, yuyv0, lsr #16 // sum y0 << 1 - - and yuyv2, const_0x01fe01fe, yuyv2, lsl #1 - add yuyv2, yuyv2, yuyv2, lsr #16 - add yuyv1, yuyv1, yuyv2, lsl #16 // sum y1 << 1 - stmia pDtcm!, {YYUV_REGS0} - - subs loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - bpl @6 - - // 7 loops - add loopCounters, loopCounters, #7 << LOOP_COUNTERS_INNER_SHIFT - ldmia src!, {yuyv0, yuyv1, yuyv2, yuyv3} - and uv, const_0x01fe01fe, yuyv0, lsr #7 - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 -@7: - and t0, const_0x01fe01fe, yuyv1, lsr #7 - add t0, t0, uv, lsr #1 - and t1, const_0x01fe01fe, yuyv2, lsr #7 - add t0, t0, t1 - and uv, const_0x01fe01fe, yuyv3, lsr #7 - add t1, t0, uv, lsr #1 // sum uv << 1 - - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv1, yuyv1, yuyv0, lsr #16 - add yuyv1, yuyv1, yuyv1, lsl #16 - mov yuyv1, yuyv1, lsr #16 // sum y0 << 1 - - and yuyv2, const_0x01fe01fe, yuyv2, lsl #1 - and yuyv0, const_0x01fe01fe, yuyv3, lsl #1 - add yuyv2, yuyv2, yuyv0, lsl #16 - add yuyv2, yuyv2, yuyv2, lsr #16 - orr yuyv1, yuyv1, yuyv2, lsl #16 // sum y1 << 1 - - stmia pDtcm!, {YYUV_REGS1} - subs loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - ldmplia src!, {yuyv1, yuyv2, yuyv3} - bpl @7 - - adds loopCounters, loopCounters, #1 << LOOP_COUNTERS_LINE_SHIFT - bmi @640 - - sub loopCounters, loopCounters, #1 << LOOP_COUNTERS_DTCM_LINE_SHIFT - tst loopCounters, #LOOP_COUNTERS_DTCM_LINE_MASK << LOOP_COUNTERS_DTCM_LINE_SHIFT - bne @yuv2rgb_done - - ldr t0, =@constants1 - add loopCounters, loopCounters, #SHRINK_TMP_HEIGHT << LOOP_COUNTERS_DTCM_LINE_SHIFT - ldmia t0, {CONST_REGS1} - - add loopCounters, loopCounters, #(0x100 - SHRINK_WIDTH) << LOOP_COUNTERS_DST_SHIFT - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH * SHRINK_TMP_HEIGHT -@yuv2rgb_loop: - ldmia pDtcm!, {y0, uv} - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y0, y0, t0 - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 2 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - add uv, uv, t1 - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 2 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y0, y0, t0 - add uv, uv, t1 - - // original formula: - // R = Y + 1.402*(V-128) - // G = Y - 0.344*(U-128) - 0.714*(V-128) - // B = Y + 1.772*(U-128) - // - // y0: (sum y0y1 of 9 pixels) << 1 - // uv: (sum uv of 9 pixels) << 1 - // - // then, - // R = (sumY/2 + (1.402/2)*(sumV-128*2*9)) / 9 - // G = (sumY/2 - (0.344/2)*(sumU-128*2*9) - (0.714/2)*(sumV-128*2*9)) / 9 - // B = (sumY/2 + (1.772/2)*(sumU-128*2*9)) / 9 - // - // or - // R = sumY/18 + (1.402/18)*(sumV-128*2*9) - // G = sumY/18 - (0.344/18)*(sumU-128*2*9) - (0.714/18)*(sumV-128*2*9) - // B = sumY/18 + (1.772/18)*(sumU-128*2*9) - // - // sumY max is 0xff*2*9 = 0x11ee - // sumU, sumV max is 0xff*2*9 = 0x11ee - // 0x11ee*0x717c2=0x7f8003fc - - // sumY /= 2*9; and normalize to 0x7f800000 - mov t0, y0, lsr #16 - mul y1, const_0x000717c2, t0 - eor t0, y0, t0, lsl #16 - mul y0, const_0x000717c2, t0 - - // sumV -= 128*2*9 - sub uv, uv, #0x900 << 16 - - // Red - // (1.402/18)*sumV - smultt t1, const_H1_402_L1_772, uv - mov rgba, const_0x80008000 - // normalize - mov t1, t1, lsl #8 - - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - - // Green - // -(0.714/18)*sumV - smulbt t0, const_Hm0_344_Lm0_714, uv - // sumU -= 128*2*9 - sub uv, uv, #0x900 - // -(0.344/18)*sumU - smultb t1, const_Hm0_344_Lm0_714, uv - // normalize - mov t0, t0, lsl #8 - add t1, t0, t1, lsl #8 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Blue - // (1.772/18)*sumU - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // normalize - mov t1, t1, lsl #8 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 -> 0x7c000000 - - str rgba, [dst], #4 - adds loopCounters, loopCounters, #2 << LOOP_COUNTERS_DST_SHIFT // 2 pixels at once - bcc @yuv2rgb_loop - - ldr t0, =@constants0 - add dst, dst, #(HW_LCD_WIDTH - SHRINK_WIDTH) * sizeof(u16) - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH - ldmia t0, {CONST_REGS0} - -@yuv2rgb_done: - sub loopCounters, loopCounters, #1 - movs t0, loopCounters, lsl #32 - LOOP_COUNTERS_HEIGHT_BIT_WIDTH - bne @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants0: - dcd 0x01fe01fe - dcd 0x00001c73 - dcd 0x00000e39 - -@constants1: - dcd 0x000717c2 - dcd 0x80008000 - dcd 0x04fc064c // (((1.402/18) * 0x4000) << 16) | (((1.772/18) * 0x4000) & 0xffff) - dcd 0xfec7fd77 // (((-0.344/18) * 0x4000) << 16) | (((-0.714/18) * 0x4000) & 0xffff) - - -#undef ORIGINAL_WIDTH -#undef SHRINK_WIDTH -#undef SHRINK_TMP_BYTES_PER_PIXEL -#undef SHRINK_TMP_HEIGHT -#undef LOOP_COUNTERS_INNER_SHIFT -#undef LOOP_COUNTERS_LINE_SHIFT -#undef LOOP_COUNTERS_DST_SHIFT -#undef LOOP_COUNTERS_DTCM_LINE_MASK -#undef LOOP_COUNTERS_DTCM_LINE_SHIFT -#undef LOOP_COUNTERS_HEIGHT_BIT_WIDTH - -#undef SAVE_REGS -#undef loopCounters -#undef t0 -#undef t1 - -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef uv - -#undef CONST_REGS0 -#undef const_0x01fe01fe -#undef const_0x00001c73 -#undef const_0x00000e39 - -#undef YYUV_REGS0 -#undef YYUV_REGS1 - -#undef y0 -#undef y1 -#undef rgba -#undef CONST_REGS1 -#undef const_0x000717c2 -#undef const_0x80008000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -// widthは16の倍数(16..640)、heightは2の倍数(2..480)である必要があります。 -// srcは最低4バイトアラインメントです。 -// pYCbCrBufも最低4バイトアラインメントですが、各デバイスとの連携に -// 備えて32バイトアラインメントしてください。 -// pYCbCrBufは、Y成分、Cb成分、Cr成分一括で確保してください。サイズは -// Y成分: width*height*sizeof(u16) Bytes -// Cb成分: ((width*height)/4)*sizeof(u16)) Bytes -// Cr成分: ((width*height)/4)*sizeof(u16)) Bytes -// 以上の合計 (width*height*3/2)*sizeof(u16) Bytesです。 -// (つまり元画像データサイズの1.5倍) -// pDtcm_にはu32[16+4+4] (96 Bytes)の作業領域が必要です。 -// 作業領域にDTCM以外のメモリを割り当てた場合には -// パフォーマンスが大きく低下する可能性があります。 -// 入力srcはCAMERAデバイスがYUVでキャプチャした形式 -// (Y 8bit,U 8bit,Y 8bit,V 8bit)です。 -// 出力pYCbCrBufはDSP JPEGエンコーダへの入力形式 -// (Y,Y,Y,Y,..., U,..., V,..., 各16bit)です。 -// 内部でデータキャッシュの制御は行っていないため、結果を -// DSP等へ渡す前にFlushあるいはStoreする必要があります。 -asm void Manager::Convert8bitYuv422To16bitYuv420( register const u32* src, register u16* pYCbCrBuf, register u32 width, register u32 height, void* pDtcm_ ) -{ -#define BLOCK_WIDTH 16 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr // 10 registers = 40 Bytes -#define STACK_OFFSET_PYCBCRBUF 0 // initial value is r3 -#define STACK_OFFSET_PDTCM 40 -#define pCbBuf pYCbCrBuf -#define widthHeight width -#define pDtcm height -#define pDstY pDtcm -#define pDstCr pDtcm - -// keep order for ldm/stm/ldrd/strd -#define FLUSH_REGS r4-r11 -#define FLUSH_REGS_CB r4,r6,r8,r10 -#define FLUSH_REGS_CR r5,r7,r9,r11 -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define t0 r8 -#define t1 r9 -#define const_0x00ff00ff r11 - -#define loopHeightWidth r12 -#define pDtcmStop lr - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - // pDstY initial value is pYCbCrBuf - str pYCbCrBuf, [sp, #STACK_OFFSET_PYCBCRBUF] - - mul t0, width, height - // setup widthHeight before breaking pDtcm - orr widthHeight, height, width, lsl #16 - add pCbBuf, pYCbCrBuf, t0, lsl #1 - - ldr pDtcm, [sp, #STACK_OFFSET_PDTCM] - add pDtcmStop, pDtcm, #BLOCK_WIDTH * sizeof(u16) - - mov loopHeightWidth, widthHeight, lsl #16 - -@480: - add loopHeightWidth, loopHeightWidth, widthHeight, lsr #16 - -@640: - ldr const_0x00ff00ff, =0x00ff00ff - -@blockLoop: - add t0, src, widthHeight, lsr #16-1 // +1(odd) line - ldmia t0, {yuyv2, yuyv3} - ldmia src!, {yuyv0, yuyv1} - - // even line Y - and t0, yuyv0, const_0x00ff00ff - and t1, yuyv1, const_0x00ff00ff - strd t0, [pDtcm, #BLOCK_WIDTH * sizeof(u16)] - -#if 0 - // even line U - and yuyv0, const_0x00ff00ff, yuyv0, lsl #8 - and t0, const_0x00ff00ff, yuyv1, lsl #8 - orr yuyv0, t0, yuyv0, lsr #16 - - // odd line V - and yuyv1, const_0x00ff00ff, yuyv2, lsr #24 - and t0, const_0x00ff00ff, yuyv3, lsr #24 - orr yuyv1, yuyv1, t0, lsl #16 -#else - // even column ave. uv (V0 U0) - and yuyv0, const_0x00ff00ff, yuyv0, lsr #8 - and t0, const_0x00ff00ff, yuyv2, lsr #8 - add yuyv0, yuyv0, t0 - and yuyv0, const_0x00ff00ff, yuyv0, lsr #1 - - // odd column ave. uv (V1 U1) - and yuyv1, const_0x00ff00ff, yuyv1, lsr #8 - and t0, const_0x00ff00ff, yuyv3, lsr #8 - add yuyv1, yuyv1, t0 - and yuyv1, const_0x00ff00ff, yuyv1, lsr #1 - - // V0 U0 => U1 U0 - // V1 U1 V1 V0 - eor t0, yuyv0, yuyv1, ror #16 // V0^U1 U0^V1 - eor yuyv1, yuyv1, t0, lsr #16 // V1 V0 - eor yuyv0, t0, yuyv1, ror #16 // U1 U0 -#endif - - strd yuyv0, [pDtcm, #BLOCK_WIDTH * 2 * sizeof(u16)] - - // odd line Y - and yuyv2, yuyv2, const_0x00ff00ff - and yuyv3, yuyv3, const_0x00ff00ff - - stmia pDtcm!, {yuyv2, yuyv3} - cmp pDtcm, pDtcmStop - bne @blockLoop - -// もう少し改良できるかも - ldr pDstY, [sp, #STACK_OFFSET_PYCBCRBUF] - ldmdb pDtcmStop, {FLUSH_REGS} - add pDstY, pDstY, widthHeight, lsr #16-1 // +1(odd) line - stmia pDstY, {FLUSH_REGS} - sub pDstY, pDstY, widthHeight, lsr #16-1 // -1(even) line - - ldmia pDtcmStop!, {FLUSH_REGS} - stmia pDstY!, {FLUSH_REGS} - smultb t0, widthHeight, widthHeight - str pDstY, [sp, #STACK_OFFSET_PYCBCRBUF] - - add pDstCr, pCbBuf, t0, lsr #1 - ldmia pDtcmStop, {FLUSH_REGS} - stmia pDstCr, {FLUSH_REGS_CR} - stmia pCbBuf!, {FLUSH_REGS_CB} - - sub pDtcmStop, pDtcmStop, #8 * sizeof(u32) - sub pDtcm, pDtcmStop, #BLOCK_WIDTH * sizeof(u16) - - sub loopHeightWidth, loopHeightWidth, #BLOCK_WIDTH - movs t0, loopHeightWidth, lsl #16 - bne @640 - - ldr t0, [sp, #STACK_OFFSET_PYCBCRBUF] - subs loopHeightWidth, loopHeightWidth, #2 << 16 // 2 lines/loop - addne t0, t0, widthHeight, lsr #16-1 // 2 lines/loop - strne t0, [sp, #STACK_OFFSET_PYCBCRBUF] - addne src, src, widthHeight, lsr #16-1 // 2 lines/loop - bne @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -#undef BLOCK_WIDTH -#undef SAVE_REGS -#undef STACK_OFFSET_PYCBCRBUF -#undef STACK_OFFSET_PDTCM -#undef pCbBuf -#undef widthHeight -#undef pDtcm -#undef pDstY -#undef pDstCr - -#undef FLUSH_REGS -#undef FLUSH_REGS_CB -#undef FLUSH_REGS_CR -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef t0 -#undef t1 -#undef const_0x00ff00ff - -#undef loopHeightWidth -#undef pDtcmStop -} - -#include - - -void Manager::procVBlankIntr() -{ - if (mMode == eMode_BG) { - - } else { - // eMode_Tex - if (mTexSwap) { - GX_DisableBankForTex(); - GX_SetBankForTex( GXVRamTex( mNextTexBank ) ); - mTexBank = mNextTexBank; - mTexSwap = FALSE; - mFirstPictureReady = TRUE; - } else { - // cmnで上書きされる可能性があるので毎フレーム再設定。 - // GX_DisableBankForTex(); - GX_SetBankForTex( GXVRamTex( mTexBank ) ); - } - } -} - - -void Manager::procCameraIntr() -{ - u32 err = 0; - u32 msg = cMsgI2c_Destroy; // このままの値が送信されたらプログラムミス。 - -#if SDK_VERSION_DATE < 20080630 - if (mIntrPositiveEdge) { - CAMERA_StopCapture(); - mIntrPositiveEdge = FALSE; - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_NEGATIVE_EDGE); - } -#else - // intr edgeはCAMERAライブラリがハンドリングする。 -#endif - - if (CAMERA_GetErrorStatus()) { - // error - CAMERA_StopCapture(); - CAMERA_ClearBuffer(); - MI_StopNDma(cDefaultDmaNo); - err = 1; - IPL_PRINT("cameraIntr: status error\n"); - } else { - if (MI_IsNDmaBusy(cDefaultDmaNo)) { - // error - // とは言い切れない?最後のNDMA転送中かもしれない? - MI_StopNDma(cDefaultDmaNo); - err = 2; - IPL_PRINT("cameraIntr: NDMA busy\n"); - } - } - - if (err) { - // キャプチャが失敗したので、リトライする。 - if (mpCaptureBuf) { - freeCapBufByPtr((u16*)mpCaptureBuf); - mpCaptureBuf = NULL; - } - mCaptureRetryCount++; - if (mCaptureRetryCount < cCaptureRetryMax) { - // retry - } else { - // fatal error - IPL_HALT("capture error too much!\n"); - // TWL_IPL_FINALではスルーするー - } - } else { - mCaptureRetryCount = 0; - procPostCapture(); - } - - // I2C処理中は何もしない。 - if (mI2cBusy) { - return; - } - - // キャプチャ<=>撮影で解像度を変更した直後にも必要? - if (mCaptureSkipCount) { - mCaptureSkipCount--; - return; - } - - if (mSelCmr != mNextCmr) { - // カメラを切り替えるためI2C処理要求を出す。 - // 外カメラのLED制御よりも先に行う。 - msg = cMsgI2c_Activate; - // カメラ切り替え直後一定フレーム数の間は画像が安定しないのでキャプチャ停止。 - // mSelCmrがNONEの場合にはここへ来ない。(カメラ割り込みが発生しないため) - mCaptureSkipCount = 1; - goto sendI2cRequest; - } - - // キャプチャ時と撮影時で解像度やフォーマットが異なる場合、 - // ここでI2C処理要求を出す。 - // まだ。 - - // 外カメラのLED制御。 - if (!mLedKeepFlag && (mSelCmr == CAMERA_SELECT_OUT)) { - if (mNextShotFlag) { - if (!mCurLedBlink) { - // 撮影なので点灯→点滅にする。 - // シャッタースピードを速くするため割り込み論理切り替え。 - // →NDMA busyエラーになってしまうので、割り込み論理は切り替えない。 - // 残念ながらLEDが映り込むことがある?(マイコンが古いせい?) - - // VBlank Time Intr Line Lines Ticks - // 272 4.5640 CAMERA 13 0 26 // negative edge - // 273 4.5754 V 192 0 17 - // 274 4.5921 V 192 0 6 - // 275 4.6089 V 192 1 33 - // 275 4.6140 CAMERA 10 1 20 // negative edge (+50.0ms from negative edge) - // 275 4.6144 PXI_NE 16 1 19 // SetLED関係 ( +0.4ms from negative edge) - // 275 4.6178 CAMERA 70 1 20 // positive edge ( +3.8ms from negative edge) - // 276 4.6256 V 192 0 11 - // 277 4.6423 V 192 0 20 - // 277 4.6474 TM0 9 0 9 - // 278 4.6590 V 192 0 5 - // 278 4.6640 CAMERA 8 9 282 // negative edge (+50.0ms from negative edge) - // *Warning: taking over 100 ticks (over 3 lines) - msg = cMsgI2c_ChangeLedToBlink; - goto sendI2cRequest; -// goto toPositiveEdgeAndSendI2cRequest; - } - } else if (!mShotFlag /* mCaptureFlag */ ) { - // 撮影ではないので点滅→点灯にする。 - // ここを「キャプチャなので(mCaptureFlag)」にすると、 - // エンコード、セーブ中にはmCaptureFlagが立たないので、 - // 点滅時間が長くなる。 - if (mCurLedBlink) { - // 画面更新スピードを速くするため割り込み論理切り替え。 - // VBlank Time Intr Line Lines Ticks - // 281 4.7140 CAMERA 6 0 10 // negative edge - // 282 4.7259 V 192 0 7 - // 283 4.7426 V 192 0 15 - // 284 4.7593 V 192 0 5 - // 284 4.7641 CAMERA 4 0 18 // negative edge (+50.1ms from negative edge) - // 284 4.7645 PXI_NE 11 0 19 // SetLED関係 ( +0.4ms from negative edge) - // 284 4.7678 CAMERA 63 1 7 // positive edge ( +3.7ms from negative edge) - // 284 4.7725 TM0 137 0 8 - // 285 4.7760 V 192 0 12 - // 286 4.7927 V 192 0 15 - // 287 4.8094 V 192 0 10 - // 287 4.8140 CAMERA 1 1 14 // negative edge (+49.9ms from negative edge) - msg = cMsgI2c_ChangeLedToOn; - goto sendI2cRequest; -// goto toPositiveEdgeAndSendI2cRequest; - } - } - } - - if (!err) { - mCaptureFlag = mNextCaptureFlag; - mShotFlag = mNextShotFlag; - // とりあえず単発保存のみ。 - mNextShotFlag = FALSE; - } - - // リトライ回数上限に達した場合の強制stopは必要? - // まだ。 - - if (mSelCmr != CAMERA_SELECT_NONE && - (mCaptureFlag || mShotFlag)) { - IPL_ASSERT( !mpCaptureBuf ); - mpCaptureBuf = procPreCapture(); - if (mpCaptureBuf) { - // ここだけリアルタイムにmShot{Wdt,Hgt}<=>mShow{Wdt,Hgt}の変換してもおかしくなるよね? - // transferlinesも再設定しないと。 - // CAMERA_GetBytesAtOnce()は、reg_CAM_CNTを直接読んでいる。 - // CAM_CNTは、カメライネーブル時の書き込みは無視されるから、 - // 期待した値が確実に得られる保証はないと思われる。 - // 一応ここはCAMERA Vブランク割り込みハンドラだから、期待した値が - // 入っていなければ動作そのものもおかしくなるが、その場合でも - // DMAで範囲外のメモリを破壊しないよう、計算で求めた数値 - // CAMERA_GET_LINE_BYTES(mShotWdt) * mTransferLines を指定。 -#if 0 -// : -// static inline void CAMERA_DmaRecvAsync(u32 dmaNo, void *dest, u32 unit, u32 length, MINDmaCallback callback, void* arg) -// { -// MI_Camera_NDmaRecvAsync( dmaNo, dest, unit/4, length, FALSE, callback, arg ); -// } - - // SDK default NDMA parameter - CAMERA_DmaRecvAsync(cDefaultDmaNo, (u16*)mpCaptureBuf, - CAMERA_GET_LINE_BYTES(mShotWdt) * mShotTransferLines, - CAMERA_GET_FRAME_BYTES(mShotWdt, mShotHgt), - NULL, NULL); -#else -// : -// void MI_Camera_NDmaRecvAsync(u32 ndmaNo, void *dest, u32 unit, u32 size, BOOL contSw, MINDmaCallback callback, void* arg ); -// void MI_Camera_NDmaRecvAsyncEx(u32 ndmaNo, void *dest, u32 size, BOOL contSw, MINDmaCallback callback, void* arg, const MINDmaConfig *config ); - - mDmaConfig.wordCount = (CAMERA_GET_LINE_BYTES(mShotWdt) * mShotTransferLines) / sizeof(u32); - MI_Camera_NDmaRecvAsyncEx(cDefaultDmaNo, (u16*)mpCaptureBuf, - CAMERA_GET_FRAME_BYTES(mShotWdt, mShotHgt), - FALSE, - NULL, NULL, - &mDmaConfig); -#endif - - CAMERA_StartCapture(); - } else { - IPL_PRINT("no memory for mpCaptureBuf\n"); - CAMERA_StopCapture(); - - // エラーリトライカウントを増やす? - // 単にprepareBuffer()できていないだけかもしれない。 - } - } else { - CAMERA_StopCapture(); - if (mOneShotFlag) { - // カメラを停止させる。 - // I2C処理要求を出す。 - // mNextCmrは上書きされる。 - mNextCmr = CAMERA_SELECT_NONE; - msg = cMsgI2c_Activate; - goto sendI2cRequest; - } - } - - return; - -#if SDK_VERSION_DATE < 20080630 -toPositiveEdgeAndSendI2cRequest: - CAMERA_StopCapture(); - mIntrPositiveEdge = TRUE; - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_POSITIVE_EDGE); -#else - // intr edgeはCAMERAライブラリがハンドリングする。 -#endif -// thru -sendI2cRequest: - CAMERA_StopCapture(); - if (!OS_SendMessage(&mI2cMsgQueue, (OSMessage)msg, OS_MESSAGE_NOBLOCK)) { - // リトライが必要。 - } else { - // 念のため、すぐにI2C処理中フラグも立てておく。 - mI2cBusy = TRUE; - - // エラーリトライカウンタを増やす必要がありそう。 - } -} - - -u16* Manager::procPreCapture() -{ - return allocCapBuf(); -} - - -void Manager::procPostCapture() -{ - if (mpCaptureBuf) { - if (mpConvBuf) { - // 前回のYUV2RGB変換が完了していない。 -#ifndef TWL_IPL_FINAL - static u32 count; - IPL_PRINT("mConvBusy! %d, nextp %s\n", count++, mpNextConvBuf ? "exist" : "empty"); -#endif - // 撮影データで、かつ次回変換予約のバッファが存在しなければ - // 次回変換予約とする。 - if (mShotFlag && !mpNextConvBuf) { - mpNextConvBuf = mpCaptureBuf; - // LowerスレッドがOS_WaitEvent()でブロックしないよう、次回変換&撮影要求もセットしておく。 - OS_SignalEvent(&mLowerEvent, cEventMaskLower_NextConvertAndShot); - } else { - // 今回のキャプチャ済みデータは破棄。 - freeCapBufByPtr((u16*)mpCaptureBuf); - } - } else { - // YUV2RGB変換要求セット。 - mpConvBuf = mpCaptureBuf; - OS_SignalEvent(&mLowerEvent, - (u32)(cEventMaskLower_Convert | (mShotFlag ? cEventMaskLower_Shot : 0))); - } - mpCaptureBuf = NULL; - } -} - - -void Manager::procPostConvert(BOOL shot) -{ - if (shot) { - // キャプチャ済みデータは撮影用に使う。 - mpShotBuf = mpConvBuf; - } else { - // キャプチャ済みデータは不要なので捨てる。 - freeCapBufByPtr((u16*)mpConvBuf); - } - mpConvBuf = NULL; -} - - -// (mpShotBuf != NULL) のときのみ呼ばれる。 -void Manager::procPostShot() -{ -// #ifndef TWL_IPL_FINAL -// mDebugPort = __LINE__; -// #endif - // "check only urgent errors here" ってマジ?割り込み禁止で呼ばれてるから。 - - freeCapBufByPtr((u16*)mpShotBuf); -} - - -// 割り込みルーチンからのみ呼ばれるので割り込み禁止にしていない。 -// キャプチャ時、撮影時でサイズが変わる場合であっても、大きい方の -// サイズを想定してバッファを確保する。 -u16* Manager::allocCapBuf() -{ - for (u32 i = 0; i < cBufferCount; i++) { - if (!mIsCapBufUsed[i] && mpCapBuf[i]) { - mIsCapBufUsed[i] = TRUE; -// OS_TPrintf("allocCapBuf[%d]=%x\n", i, mpCapBuf[i]); - return mpCapBuf[i]; - } - } - IPL_PRINT("allocCapBuf: no memory! %d %d\n", mCaptureFlag, mShotFlag); - - return NULL; -} - - -void Manager::freeCapBufByPtr(const u16* pBuf) -{ - if (pBuf) { - for (u32 i = 0; i < cBufferCount; i++) { - if (mpCapBuf[i] == const_cast(pBuf)) { - mIsCapBufUsed[i] = FALSE; - return; - } - } - } -} - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -BOOL Manager::writeJpegToNand(const u8* src, u32 size) -{ - BOOL ret = FALSE; - -// const u8* path; -// -// path = MenuSys()->getUpPicMgr()->getSavePath(); -// if (path) { -// cmn::sys::File file( (const char*)path ); -// ret = file.write(src, size); -// IPL_PRINT("writeJpegToNand(%s)=%d\n", path, ret); -// if (ret) { -// MenuSys()->getUpPicMgr()->calcNextSavePath(); -// } -// } - - ret = MenuSys()->getUpPicMgr()->writeTclPictureFile(src, size); - - return ret; -} -#endif - - -// ファイル名は中の人にしか分からない。 -BOOL Manager::writeJpegToSD(const u8* src, u32 size) -{ - FSFile file; - FSFile* pFile = &file; - u32 i; - - // DC_StoreAll(), DC_FlushAll() is NG? - DC_StoreAll(); - -/* - SDカード/menu/MENU####.jpg というファイル名を生成する -*/ -#define JPEG_DIRNAME "sdmc:/menu" -#define JPEG_FILENAME "menu%04d.jpg" - - if ( !pFile ) - { - return FALSE; - } - - /* - ディレクトリの存在を確実とする - 本当は、まずSDカードが存在するかを確認し、その後ディレクトリがすでに - 存在するかを見て無ければ作るという処理で良いのだが、現状では、いちいち - オープンしなければならない! - */ - { - FSFile dir; - if ( !FS_OpenDirectory( &dir, JPEG_DIRNAME, FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - if ( !FS_CreateDirectory( JPEG_DIRNAME, FS_PERMIT_R | FS_PERMIT_W ) ) - { - IPL_PRINT("Cannot create directory %s.\n", JPEG_DIRNAME); - return FALSE; - } - } - else - { - FS_CloseDirectory( &dir ); - } - } - - FS_InitFile( pFile ); - - for (i = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - 0 -#else - 1000 -#endif - ; i < 10000; i++) - { - char buffer[32]; - STD_TSPrintf(buffer, JPEG_DIRNAME "/" JPEG_FILENAME, i); - if ( FS_CreateFile( buffer, FS_PERMIT_W ) ) // すでにある場合失敗する - { - if ( FS_OpenFileEx( pFile, buffer, FS_FILEMODE_W ) ) // 作成したてのファイルをオープンする - { - // OK - break; -// if (filename) // 引数にメモリが指定されていればそこにファイル名を格納する -// { -// STD_CopyLString( filename, buffer, 256 ); -// } -// return TRUE; - } else { - IPL_PRINT("Create %s, but cannot open it.\n", buffer); // 致命的なエラー - return FALSE; - } - } - } - if (i == 10000) { - IPL_PRINT("Too many files in %s.\n", JPEG_DIRNAME); - return FALSE; - } - - if ( FS_WriteFile( pFile, src, static_cast(size) ) != size ) - { - FS_CloseFile( pFile ); - return FALSE; - } - FS_CloseFile( pFile ); - return TRUE; -} - - -// /*! -// シャッターサウンドファイルをセットする 廃棄予定 -// @param p_wav WAVのヘッダのない生音ファイル -// @param size サイズ -// */ -// void Manager::setShutterSnd( const u8* p_wav , u32 size , BOOL stereo ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// OSIntrMode enabled = OS_DisableInterrupts(); -// -// mpShutterSnd = p_wav; -// mShutterSndSize = size; -// mShutterStereo = stereo; -// -// OS_RestoreInterrupts(enabled); -// #endif -// } - - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// /*! -// シャッターサウンドを開始する -// */ -// void Manager::startShutterSnd() -// { -// if ( mpShutterSnd ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// SNDEX_SetDSPMixRate( 0 ); -// SNDEX_ForceOut( TRUE ); -// DSP_PlaySound( (void*)mpShutterSnd, (u32)(mShutterSndSize / 2), mShutterStereo ); -// #else -// MenuSys()->getDspMgr()->playSound(mpShutterSnd, (u32)(mShutterSndSize / sizeof(u16)), mShutterStereo); -// #endif -// } -// } -// -// /*! -// シャッターサウンドを終了する -// */ -// void Manager::finishShutterSnd() -// { -// if ( mpShutterSnd ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// SNDEX_SetDSPMixRate( 8 ); -// SNDEX_ForceOut( FALSE ); -// #else -// MenuSys()->getDspMgr()->stopSound(); -// #endif -// } -// } -// -// /*! -// シャッターサウンドが終了してるか -// @retval TRUE 終了してる -// @retval FALSE してない -// */ -// BOOL Manager::isFinishedShutterSnd() const -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// return TRUE; -// #else -// return !(MenuSys()->getDspMgr()->isSoundPlaying()); -// #endif -// } -// #endif - -void Manager::setCaptureRgbFlag(BOOL useRgb) -{ - mCaptureRgbFlag = (u8)useRgb; - mEncodeOption = (u32)(SSP_JPEG_THUMBNAIL | (useRgb ? SSP_JPEG_RGB555 : SSP_JPEG_YUV422)); -} - -void Manager::encodeAndSave() -{ - u32 err = 0; - OSTick tick; - - if (!mpShotBuf) { - IPL_HALT("!mpShotBuf\n"); - // TWL_IPL_FINALではスルーするー - return; - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // モジュールロード時に、シャッター音が止まる? - // シャッター音を再生する前にJPEGエンコーダモジュールを - // ロードしておく必要があるようだ。 - // シャッター音が鳴り終わるまでDSPを占有する。 - MenuSys()->getDspMgr()->lock(); - MenuSys()->getDspMgr()->loadJpegEncoder(); -#endif - -// // DSPを使う場合のみ、シャッター音の再生指示を出す。 -// startShutterSnd(); - - DSPFrame_y = mpEncodeWork->y; - DSPFrame_cb = mpEncodeWork->cbcr; - DSPFrame_cr = DSPFrame_cb + (mShotWdt * mShotHgt / 4); -#endif - - tick = OS_GetTick(); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - Convert8bitYuv422To16bitYuv420((const u32*)mpShotBuf, - DSPFrame_y, - mShotWdt, - mShotHgt, - mpDtcmWork->mYuvBuf); - // store YUV420 and invalidate encode result - DC_FlushAll(); -#endif - - IPL_PRINT("procShot: yuv422to420 time %d usec\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - tick = OS_GetTick(); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // SDカードアクセス中のチラつき対策 - // Vブランク割り込みが遅延するので、アフィンパラメタをレジスタへ書き込まない。 - // writeJpegToSD()を呼ぶ直前の設定では間に合わないようだ。 -// MenuSys()->getUpPicMgr()->setSkipAffineFlag(TRUE); -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // 出力サイズはいかほど必要? - DSP_SetJpegEncoderBuffer(mpEncodeResult, cEncodeResultSizeMax); - // explicit initialization - DSP_SetJpegEncoderThumbnailBuffer(NULL, NULL, NULL); - u32 size = DSP_StartJpegEncoder( static_cast< s16 > ( mShotWdt ) , - static_cast< s16 > ( mShotHgt ) , - DSP_JPEG_THUMBNAIL , - 4 ); -#else - // 出力サイズはいかほど必要? - // unlockはupPicMgrの if (event & cEventMask_WipeReplace) で行われる。 - MenuSys()->getUpPicMgr()->lockTcl(); - MenuSys()->getUpPicMgr()->lockJpegBuf(); - u32 size = MenuSys()->getDspMgr()->encodeJpegFrom16bitYuv420(DSPFrame_y, - mShotWdt, - mShotHgt, - MenuSys()->getUpPicMgr()->getJpegBufPtr(), - MenuSys()->getUpPicMgr()->getJpegBufSize(), - NULL, - 0, - DSP_JPEG_THUMBNAIL); -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // unlockはupPicMgrの if (event & cEventMask_WipeReplace) で行われる。 - MenuSys()->getUpPicMgr()->lockTcl(); - MenuSys()->getUpPicMgr()->lockJpegBuf(); - - SSP_SetJpegEncoderMakerNote(MenuSys()->getUpPicMgr()->getMakerNote(), - MenuSys()->getUpPicMgr()->getMakerNoteSize()); -#endif - - if (!SSP_SetJpegEncoderDateTimeNow()) { - // 時刻の埋め込みに失敗したのでゼロで埋める。 - // 文字列は「YYYY:MM:DD HH:MM:DD」+0x00 の 20 文字としてください。 - static const u8 zeroes[20] = {}; - IPL_PRINT("SSP_SetJpegEncoderDateTimeNow() failed!\n"); - SSP_SetJpegEncoderDateTime((u8*)zeroes); - } - SSP_SetJpegEncoderSignMode(TRUE); - u32 size = SSP_StartJpegEncoder((const void*)mpShotBuf, -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult, - cEncodeResultSizeMax, -#else - MenuSys()->getUpPicMgr()->getJpegBufPtr(), - MenuSys()->getUpPicMgr()->getJpegBufSize(), -#endif - mpEncodeWork, - mShotWdt, mShotHgt, - cEncodeQuality, cEncodeSampling, mEncodeOption); -#endif - - IPL_PRINT("procShot: encode size %d, time %d usec\n", size, (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - - tick = OS_GetTick(); - - // save to SD or NAND - if (size) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - if (!writeJpegToNand(MenuSys()->getUpPicMgr()->getJpegBufPtr(), - size)) { - err = 3; - } -#endif - - - if (!writeJpegToSD( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult, -#else - MenuSys()->getUpPicMgr()->getJpegBufPtr(), -#endif - size)) { - // SDカードへの保存はテストなので、エラーにはしない。 - // do nothing - } - } else { - err = 4; - } - - IPL_PRINT("procShot: save err %d, time %d usec\n", err, (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// while (!isFinishedShutterSnd()) { -// IPL_PRINT("procShot: waiting ShutterSnd finish\n"); -// OS_Sleep(1); -// } -// finishShutterSnd(); -// #endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - // シャッター音が鳴り終わったらDSPの占有を解除できる。 - MenuSys()->getDspMgr()->unlock(); -#endif - - MenuSys()->getUpPicMgr()->setJpegDataSize(size); - - if (MenuSys()->getUpPicMgr()->isEffectTypeNormal()) { - // ここでJPEGデコードを行う。 - // つまり、カメラシーン終了のためのフェードアウト開始が遅れる。 - MenuSys()->getUpPicMgr()->decodeJpeg(); - } else { - // 先に古い写真のワイプアウトを開始する。 - // カメラシーン終了のためのフェードアウト開始が早くなるが - // ランチャーメイン画面へ戻ってもしばらく上画面が何もない。 - // その状態でランチャーメイン画面の操作はできるが、重い。 - MenuSys()->getUpPicMgr()->wipeOut(); - } - -// MenuSys()->getUpPicMgr()->setSkipAffineFlag(FALSE); -#endif - - if (!mShotErr) { - mShotErr = err; - } - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - procPostShot(); - mpShotBuf = NULL; - mShotDone = TRUE; - - OS_RestoreInterrupts(enabled); - } - - // invalidate capture buffer for next capture - DC_FlushAll(); - - IPL_PRINT("encodeAndSave done err=%d\n", mShotErr); -} - - - -}}} diff --git a/build/tests/yuv2rgb/src/menuIrqHandler.c b/build/tests/yuv2rgb/src/menuIrqHandler.c deleted file mode 100644 index 13c8e04e..00000000 --- a/build/tests/yuv2rgb/src/menuIrqHandler.c +++ /dev/null @@ -1,169 +0,0 @@ -// This IRQ Handler is for ARM9 only. -#include "menuIrqHandler.h" -// not supplied -#include - -typedef struct MenuIrqHandlerLogControl { - // keep order! {End, Cur, VBlankCount, Top} for ldmia/stmia - MenuIrqHandlerLogBuffer* mpBufferEnd; - MenuIrqHandlerLogBuffer* mpBufferCur; - u32 mVBlankCount; - MenuIrqHandlerLogBuffer* mpBufferTop; -} MenuIrqHandlerLogControl; - -extern void MenuIrqHandler( void ); - -#include -#ifndef TWL_IPL_FINAL -static MenuIrqHandlerLogControl MenuIrqHandlerLogCtrl; -#endif -#include - -#include -#include -#include - -#ifndef TWL_IPL_FINAL -// derived from OS_IrqHandler -/*---------------------------------------------------------------------------* - Name: MenuIrqHandler - - Description: IRQ handler. call handler according to OS_InterruptTable - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -asm void MenuIrqHandler( void ) -{ - stmfd sp!, { lr } // save LR - - // get IE address - mov r12, #HW_REG_BASE - add r12, r12, #(REG_IE_OFFSET - 4) // r12: REG_IE address - 4 - - // get IME - ldrh r0, [ r12, #REG_IME_ADDR - (REG_IE_ADDR - 4) ] // r0: IME - - // get IE&IF - ldmib r12!, { r1-r2 } // r1: IE, r2: IF - - tst r0, #0x01 - andnes r1, r1, r2 // r1: IE & IF - - // if (IME==0) || (IE&IF==0) then return (without changing IF) - ldmeqfd sp!, { pc } - - //-------------------------------------------------- - // IRQ HANDLING CODE for ARCHITECTURE VERSION 5 - //-------------------------------------------------- - - ldr lr, =MenuIrqHandlerLogCtrl - - // get lowest 1 bit - rsb r3, r1, #0 - and r3, r1, r3 - - // clear IF - str r3, [ r12 ], #-REG_IF_OFFSET - - ldmia lr!, {r0, r1, r2} // mpBufferEnd, mpBufferCur, mVBlankCount - cmp r1, r0 - bcs @logSkip // log full or no buffer - -@logWrap: - ldrh r0, [r12, #REG_VCOUNT_ADDR - HW_REG_BASE] - add r1, r1, #sizeof(MenuIrqHandlerLogBuffer) - tst r3, #OS_IE_V_BLANK - addne r2, r2, #1 - bic r2, r2, #1 << 18 // lower 18bits only - stmdb lr, {r1, r2} // update mpBufferCur, mVBlankCount - - orr r2, r2, r0, lsl #23 // mInVLineCount | mInVBlankCount - // get jump vector - ldr r0, =OS_IRQTable + ((OS_IRQ_TABLE_MAX - 1) << 2) - clz r3, r3 - ldr r0, [r0, -r3, lsl #2] - orr r2, r2, r3, lsl #18 // mIntr - ldr r3, [r12, #REG_TM0CNT_L_ADDR - HW_REG_BASE] - stmfd sp!, {r1, r2, r3} // mpBufferCur, word0, tick - - blx r0 - - mov r12, #HW_REG_BASE - ldr lr, [r12, #REG_TM0CNT_L_ADDR - HW_REG_BASE] - ldrh r0, [r12, #REG_VCOUNT_ADDR - HW_REG_BASE] - ldmfd sp!, {r1, r2, r3} - subs r12, r0, r2, lsr #23 // mVLineCounts - addmi r12, r12, #HW_LCD_HEIGHT - addmi r12, r12, #HW_LCD_VBLANK - sub r3, lr, r3 // mTicks - orr r3, r12, r3, lsl #16 - stmdb r1, {r2, r3} // word0, word1 - b OS_IrqHandler_ThreadSwitch - -@logSkip: - cmp r1, #0 - ldrne r1, [lr] // mpBufferTop - bne @logWrap - - // get jump vector - ldr r0, =OS_IRQTable + ((OS_IRQ_TABLE_MAX - 1) << 2) - clz r3, r3 - ldr r0, [r0, -r3, lsl #2] - ldr lr, =OS_IrqHandler_ThreadSwitch - bx r0 // set return address for thread rescheduling -} -#endif - -#include -#include - - -void MenuIrqHandlerStart( MenuIrqHandlerLogBuffer* pBuffer, u32 size ) -{ -#ifndef TWL_IPL_FINAL - u32 count = size / sizeof(MenuIrqHandlerLogBuffer); - MenuIrqHandlerLogControl* pCtrl = &MenuIrqHandlerLogCtrl; - BOOL enabled = OS_DisableIrq(); - - *(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - = (u32)MenuIrqHandler; - - if ( pBuffer && count ) { - pCtrl->mpBufferTop = - pCtrl->mpBufferCur = pBuffer; - pCtrl->mpBufferEnd = pBuffer + count; - } else { - pCtrl->mpBufferTop = - pCtrl->mpBufferCur = - pCtrl->mpBufferEnd = NULL; - } - pCtrl->mVBlankCount = 0; - - OS_RestoreIrq(enabled); -#else -#pragma unused(pBuffer) -#pragma unused(size) -#endif -} - -void MenuIrqHandlerEnd( void ) -{ -#ifndef TWL_IPL_FINAL - *(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - = (u32)OS_IrqHandler; - // keep buffer -#endif -} - -BOOL MenuIrqHandlerIsUsed( void ) -{ -#ifndef TWL_IPL_FINAL - return (*(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - == (u32)MenuIrqHandler); -#else - return FALSE; -#endif -} - diff --git a/build/tests/yuv2rgb/src/menuIrqHandler.h b/build/tests/yuv2rgb/src/menuIrqHandler.h deleted file mode 100644 index 1e9d4e0c..00000000 --- a/build/tests/yuv2rgb/src/menuIrqHandler.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef MENU_IRQ_HANDLER_H_ -#define MENU_IRQ_HANDLER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct MenuIrqHandlerLogBuffer { - union { - u32 word0; - struct { - u32 mInVLineCount : 9; // d31-d23 - u32 mIntr : 5; // d22-d18 - u32 mInVBlankCount : 18; // d17-d0 - }; - }; - union { - u32 word1; - struct { - u32 mTicks : 16; // d31-d16 - u32 mVLineCounts : 16; // d15-d0 - }; - }; -} MenuIrqHandlerLogBuffer; - -extern void MenuIrqHandlerStart( MenuIrqHandlerLogBuffer* pBuffer, u32 size ); -extern void MenuIrqHandlerEnd( void ); -extern BOOL MenuIrqHandlerIsUsed( void ); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif diff --git a/build/tests/yuv2rgb/src/new.cpp b/build/tests/yuv2rgb/src/new.cpp deleted file mode 100644 index 6ebd0e1a..00000000 --- a/build/tests/yuv2rgb/src/new.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroSDK - OS - demos - cplusplus-1 - File: new.cpp - - Copyright 2003,2004 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. - - $Log: new.cpp,v $ - Revision 1.4 2004/04/06 11:35:38 yada - fix header comment - - Revision 1.3 2004/02/20 03:32:18 yasu - add comments - - Revision 1.2 2004/02/20 00:04:05 yasu - add comments - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include -#ifdef TWL_IPL_USE_RED_IPL -#include -#endif - -#define HEAP_ID ((OSHeapHandle)0) -#define ARENA_ID ((OSArenaId)OS_ARENA_MAIN) -#define ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -//---------------------------------------------------------------- -// -void* operator new ( std::size_t blocksize ) -{ - void* p = OS_AllocFromHeap( ARENA_ID, HEAP_ID, blocksize ); - if (p) { -// MI_CpuClearFast(p, blocksize); - } - return p; -} - -//---------------------------------------------------------------- -// -void* operator new[] ( std::size_t blocksize ) -{ - void* p = OS_AllocFromHeap( ARENA_ID, HEAP_ID, blocksize ); - if (p) { -// MI_CpuClearFast(p, blocksize); - } - return p; -} - -//---------------------------------------------------------------- -// -void operator delete ( void* block ) throw() -{ - OS_FreeToHeap( ARENA_ID, HEAP_ID, block ); -} - -//---------------------------------------------------------------- -// -void operator delete[] ( void* block ) throw() -{ - OS_FreeToHeap( ARENA_ID, HEAP_ID, block ); -} - -/*---------------------------------------------------------------------------* - Name: NitroStartUp - - Description: startup before NitroMain() - - Initialize memory control system for new() - - FYI: - - Startup fuctions called in following order - 1) NitroStartUp(); - 2) Global/Static Constructors - 3) NitroMain(); - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlStartUp(void) -{ - void* arenaLo; - void* arenaHi; - -#ifdef TWL_IPL_USE_RED_IPL - SYSM_Init(NULL, NULL); -#endif - OS_Init(); - OS_InitThread(); - GX_Init(); - OS_InitTick(); - OS_InitAlarm(); - TP_Init(); - FX_Init(); - GX_Init(); - RTC_Init(); - SNDEX_Init(); - OS_EnableIrq(); - OS_EnableInterrupts(); - FS_Init( FS_DMA_NOT_USE ); - MI_InitNDmaConfig(); - -#ifdef TWL_IPL_USE_RED_IPL - SYSM_SetArena(); // OS_Initの後でコールする必要あり。 - SYSM_InitPXI(); // 割り込み許可後にコールする必要あり。 -#endif - - arenaLo = OS_GetArenaLo( ARENA_ID ); - arenaHi = OS_GetArenaHi( ARENA_ID ); - - // Create a heap - arenaLo = OS_InitAlloc( ARENA_ID, arenaLo, arenaHi, 1 ); - OS_SetArenaLo( ARENA_ID, arenaLo ); - - // Ensure boundaries are 32B aligned - arenaLo = (void*)ROUND( arenaLo, 32 ); - arenaHi = (void*)ROUND( arenaHi, 32 ); - - // The boundaries given to OSCreateHeap should be 32B aligned - (void)OS_SetCurrentHeap( ARENA_ID, OS_CreateHeap( ARENA_ID, arenaLo, arenaHi ) ); - - // From here on out, OS_Alloc and OS_Free behave like malloc and free respectively - OS_SetArenaLo( ARENA_ID, arenaLo = arenaHi ); -} diff --git a/build/tests/yuv2rgb/src/snd_data.c b/build/tests/yuv2rgb/src/snd_data.c deleted file mode 100644 index 65b46440..00000000 --- a/build/tests/yuv2rgb/src/snd_data.c +++ /dev/null @@ -1,10771 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: snd_data.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 -#include - - -const u8 sound_seq_data[] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE) = -{ - 0xfe, 0xff, 0x0e, 0x93, 0x01, 0x02, 0x05, 0x00, 0x93, 0x02, 0xba, 0x05, 0x00, 0x93, 0x03, 0x72, - 0x06, 0x00, 0x93, 0x04, 0x04, 0x09, 0x00, 0x93, 0x05, 0x79, 0x0b, 0x00, 0x93, 0x06, 0xb9, 0x0b, - 0x00, 0x93, 0x07, 0x0e, 0x0d, 0x00, 0x93, 0x09, 0x44, 0x0d, 0x00, 0x93, 0x0a, 0xe9, 0x10, 0x00, - 0x93, 0x0b, 0xac, 0x18, 0x00, 0xc7, 0x00, 0xe1, 0x8c, 0x00, 0x81, 0x00, 0xc1, 0x7f, 0xc0, 0x40, - 0xc5, 0x02, 0xc4, 0x00, 0xcb, 0x10, 0xca, 0x00, 0x24, 0x7f, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x30, - 0x5a, 0x82, 0x1f, 0x80, 0x82, 0x20, 0x24, 0x76, 0x04, 0x80, 0x0c, 0x24, 0x52, 0x02, 0x80, 0x0c, - 0x48, 0x6f, 0x0d, 0x80, 0x18, 0x24, 0x6e, 0x01, 0x80, 0x0c, 0x48, 0x71, 0x0b, 0x80, 0x0c, 0x24, - 0x4c, 0x01, 0x80, 0x0c, 0x24, 0x6f, 0x01, 0x80, 0x0b, 0x24, 0x7d, 0x85, 0x49, 0x80, 0x83, 0x01, - 0xca, 0x1e, 0x80, 0x82, 0x50, 0xca, 0x00, 0x24, 0x7f, 0x01, 0x80, 0x30, 0x24, 0x7f, 0x2f, 0x80, - 0x30, 0x2b, 0x6f, 0x1a, 0x80, 0x27, 0x2b, 0x3c, 0x06, 0x80, 0x09, 0x30, 0x62, 0x0a, 0x80, 0x18, - 0xc4, 0x80, 0x32, 0x67, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x2b, 0x62, 0x08, 0x80, 0x0c, - 0x24, 0x52, 0x01, 0x80, 0x0c, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x2b, 0x67, 0x19, 0x80, 0x24, 0x2b, - 0x65, 0x0b, 0x80, 0x0c, 0x30, 0x53, 0x05, 0x80, 0x18, 0x30, 0x72, 0x17, 0x80, 0x18, 0x2b, 0x78, - 0x03, 0x80, 0x0c, 0x43, 0x74, 0x02, 0x80, 0x0c, 0x2b, 0x74, 0x0b, 0x80, 0x0c, 0x2b, 0x5e, 0x01, - 0x80, 0x0c, 0x95, 0xd8, 0x04, 0x00, 0x26, 0x74, 0x30, 0x80, 0x30, 0x2d, 0x68, 0x18, 0x80, 0x24, - 0x2d, 0x59, 0x0b, 0x80, 0x0c, 0x32, 0x59, 0x05, 0x80, 0x0c, 0x43, 0x4a, 0x02, 0x80, 0x0c, 0x32, - 0x6f, 0x23, 0x80, 0x24, 0x2c, 0x7f, 0x21, 0x80, 0x24, 0x2b, 0x7f, 0x2e, 0x80, 0x2f, 0x32, 0x62, - 0x18, 0x80, 0x24, 0x32, 0x4e, 0x0c, 0x80, 0x0d, 0x37, 0x59, 0x05, 0x80, 0x18, 0xc4, 0xac, 0x37, - 0x67, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x6b, 0x0c, 0x80, 0x18, 0x2b, 0x6a, 0x2e, - 0x80, 0x30, 0x32, 0x62, 0x18, 0x80, 0x24, 0x32, 0x56, 0x0b, 0x80, 0x0c, 0x37, 0x59, 0x07, 0x80, - 0x18, 0xc4, 0xbd, 0x37, 0x6a, 0x2e, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x59, 0x06, 0x80, - 0x18, 0x24, 0x7c, 0x2f, 0x80, 0x30, 0x2b, 0x65, 0x1b, 0x80, 0x24, 0x2b, 0x62, 0x0b, 0x80, 0x0c, - 0x30, 0x5c, 0x08, 0x80, 0x18, 0xc4, 0xa4, 0x30, 0x65, 0x2e, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, - 0x2b, 0x65, 0x09, 0x80, 0x18, 0x24, 0x71, 0x2f, 0x80, 0x30, 0x2b, 0x6a, 0x17, 0x80, 0x18, 0x2b, - 0x62, 0x0c, 0x80, 0x0c, 0x24, 0x62, 0x0a, 0x80, 0x0c, 0x30, 0x73, 0x08, 0x80, 0x0c, 0x48, 0x5d, - 0x03, 0x80, 0x0c, 0x4a, 0x77, 0x23, 0x2e, 0x79, 0x23, 0x80, 0x24, 0x4b, 0x79, 0x23, 0x2f, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x2b, 0x6f, 0x1a, 0x80, 0x27, 0x2b, 0x3c, 0x06, - 0x80, 0x09, 0x30, 0x62, 0x0a, 0x80, 0x18, 0xc4, 0x80, 0x32, 0x67, 0x17, 0x80, 0x03, 0xc4, 0x00, - 0x80, 0x15, 0x32, 0x67, 0x05, 0x80, 0x06, 0x32, 0x67, 0x05, 0x80, 0x06, 0x43, 0x57, 0x03, 0x80, - 0x0c, 0x2b, 0x6a, 0x08, 0x80, 0x0c, 0x2b, 0x64, 0x01, 0x80, 0x0c, 0x24, 0x7f, 0x2f, 0x80, 0x30, - 0x2b, 0x67, 0x19, 0x80, 0x24, 0x2b, 0x65, 0x0b, 0x80, 0x0c, 0x30, 0x53, 0x05, 0x80, 0x0c, 0x30, - 0x53, 0x01, 0x80, 0x0c, 0x24, 0x7a, 0x17, 0x80, 0x18, 0x2b, 0x78, 0x03, 0x80, 0x0c, 0x43, 0x74, - 0x02, 0x80, 0x0c, 0x2b, 0x74, 0x0b, 0x80, 0x0c, 0x48, 0x5e, 0x01, 0x80, 0x0c, 0x95, 0xd8, 0x04, - 0x00, 0x26, 0x74, 0x30, 0x80, 0x30, 0x2d, 0x68, 0x18, 0x80, 0x24, 0x2d, 0x59, 0x0b, 0x80, 0x0c, - 0x32, 0x59, 0x05, 0x80, 0x0c, 0x43, 0x4a, 0x02, 0x80, 0x0c, 0x26, 0x6f, 0x23, 0x80, 0x24, 0xc4, - 0xb0, 0x2c, 0x7f, 0x21, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x21, 0x2b, 0x7f, 0x2f, 0x80, 0x30, 0x32, - 0x62, 0x18, 0x80, 0x24, 0x32, 0x51, 0x0b, 0x80, 0x0c, 0x37, 0x65, 0x07, 0x80, 0x18, 0xc4, 0x98, - 0x39, 0x62, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x53, 0x05, 0x80, 0x18, 0x2b, 0x71, - 0x2f, 0x80, 0x30, 0x32, 0x62, 0x17, 0x80, 0x24, 0x32, 0x49, 0x0b, 0x80, 0x0c, 0x37, 0x5c, 0x09, - 0x80, 0x0c, 0x37, 0x5c, 0x02, 0x80, 0x0c, 0xc4, 0xb4, 0x35, 0x65, 0x2f, 0x80, 0x03, 0xc4, 0x00, - 0x80, 0x2d, 0x32, 0x56, 0x06, 0x80, 0x18, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x46, 0x5b, 0x0b, 0x80, - 0x18, 0x2e, 0x7f, 0x45, 0x80, 0x48, 0x2c, 0x7f, 0x53, 0x80, 0x54, 0x44, 0x7a, 0x0b, 0x80, 0x0c, - 0x2c, 0x7d, 0x0a, 0x80, 0x0c, 0x3c, 0x33, 0x05, 0x80, 0x0c, 0x42, 0x73, 0x14, 0x80, 0x0c, 0xc4, - 0x15, 0x80, 0x0c, 0xc4, 0x00, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, 0x7a, 0x09, 0x80, 0x0c, 0x2c, - 0x68, 0x09, 0x80, 0x0c, 0x3c, 0x54, 0x05, 0x80, 0x0c, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, 0x38, - 0x06, 0x80, 0x0c, 0x2c, 0x73, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x7c, 0x09, - 0x80, 0x0c, 0x44, 0x6d, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x09, 0x80, - 0x0c, 0x3f, 0x5c, 0x06, 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x44, 0x35, 0x05, 0x80, 0x0c, - 0x2c, 0x7e, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x7c, 0x0a, 0x80, 0x0c, 0x44, - 0x7c, 0x09, 0x80, 0x0c, 0x2c, 0x7e, 0x0b, 0x80, 0x0c, 0x3c, 0x3c, 0x08, 0x80, 0x0c, 0x42, 0x70, - 0x11, 0x80, 0x0c, 0xc4, 0x15, 0x80, 0x0c, 0xc4, 0x00, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x44, 0x7a, - 0x09, 0x80, 0x0c, 0x2c, 0x78, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x3e, 0x44, 0x06, - 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, - 0x0c, 0x44, 0x7a, 0x0a, 0x80, 0x0c, 0x2a, 0x78, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x16, 0x80, 0x18, - 0x44, 0x62, 0x05, 0x80, 0x0c, 0x2c, 0x62, 0x05, 0x80, 0x0c, 0x2c, 0x7c, 0x17, 0x80, 0x18, 0x2c, - 0x7a, 0x08, 0x80, 0x0c, 0x44, 0x7a, 0x07, 0x80, 0x0c, 0x2c, 0x7d, 0x17, 0x80, 0x18, 0x2c, 0x7c, - 0x07, 0x80, 0x0c, 0x44, 0x7c, 0x07, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x44, 0x76, 0x05, - 0x80, 0x0c, 0x29, 0x78, 0x17, 0x80, 0x18, 0x2a, 0x71, 0x16, 0x80, 0x18, 0x2b, 0x79, 0x17, 0x80, - 0x18, 0x2c, 0x7f, 0x17, 0x80, 0x24, 0x44, 0x7a, 0x0b, 0x80, 0x0c, 0x2c, 0x7d, 0x0a, 0x80, 0x0c, - 0x3c, 0x33, 0x05, 0x80, 0x0c, 0x42, 0x61, 0x14, 0x80, 0x18, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, - 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x68, 0x09, 0x80, 0x0c, 0x3c, 0x54, 0x05, 0x80, 0x0c, 0x2c, 0x7c, - 0x09, 0x80, 0x0c, 0x44, 0x38, 0x06, 0x80, 0x0c, 0x2c, 0x73, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, - 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x3e, 0x44, 0x06, 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, - 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, 0x0c, - 0x3e, 0x44, 0x06, 0x80, 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7a, 0x07, 0x80, 0x0c, 0x44, - 0x5d, 0x04, 0x80, 0x0c, 0x27, 0x7d, 0x59, 0x80, 0x60, 0x3f, 0x72, 0x05, 0x80, 0x0c, 0x27, 0x62, - 0x05, 0x80, 0x0c, 0x27, 0x72, 0x05, 0x80, 0x18, 0x3f, 0x70, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, - 0x80, 0x0c, 0x27, 0x72, 0x05, 0x80, 0x0c, 0x3f, 0x62, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, - 0x18, 0x3f, 0x76, 0x11, 0x80, 0x18, 0x27, 0x67, 0x05, 0x80, 0x0c, 0x27, 0x65, 0x05, 0x80, 0x81, - 0x4c, 0x27, 0x7d, 0x16, 0x80, 0x18, 0x3f, 0x72, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x0c, - 0x27, 0x72, 0x05, 0x80, 0x18, 0x3f, 0x70, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x0c, 0x27, - 0x72, 0x05, 0x80, 0x0c, 0x3f, 0x62, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x18, 0x3f, 0x76, - 0x11, 0x80, 0x18, 0x27, 0x67, 0x05, 0x80, 0x0c, 0x27, 0x65, 0x05, 0x80, 0x81, 0x4b, 0x27, 0x60, - 0x34, 0x80, 0x01, 0xc4, 0x00, 0x80, 0x03, 0xc4, 0xff, 0x80, 0x04, 0xc4, 0xfc, 0x80, 0x03, 0xc4, - 0xf9, 0x80, 0x04, 0xc4, 0xf3, 0x80, 0x03, 0xc4, 0xec, 0x80, 0x04, 0xc4, 0xe3, 0x80, 0x03, 0xc4, - 0xda, 0x80, 0x04, 0xc4, 0xce, 0x80, 0x03, 0xc4, 0xc1, 0x80, 0x04, 0xc4, 0xb2, 0x80, 0x04, 0xc4, - 0xa2, 0x80, 0x03, 0xc4, 0x90, 0x80, 0x04, 0xc4, 0x80, 0x80, 0x02, 0xc4, 0x00, 0x80, 0x84, 0x10, - 0x94, 0x3a, 0x00, 0x00, 0x80, 0x81, 0x40, 0xff, 0x26, 0x7f, 0x2f, 0x80, 0x30, 0x2d, 0x73, 0x17, - 0x80, 0x24, 0x2d, 0x42, 0x0b, 0x80, 0x0c, 0x32, 0x5e, 0x05, 0x80, 0x18, 0xc4, 0x80, 0x34, 0x6f, - 0x30, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x2d, 0x66, 0x0b, 0x80, 0x0c, 0x26, 0x50, 0x01, 0x80, - 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x01, 0xc1, 0x4a, 0xc0, 0x7f, 0xc4, 0x00, 0xca, 0x00, 0x4a, 0x53, - 0x82, 0x7f, 0x47, 0x4a, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x4c, 0x49, 0x82, 0x74, 0x48, 0x40, 0x82, - 0x73, 0x80, 0x83, 0x00, 0x48, 0x43, 0x82, 0x7d, 0x4c, 0x48, 0x82, 0x7c, 0x80, 0x83, 0x00, 0x47, - 0x35, 0x82, 0x68, 0x4a, 0x43, 0x82, 0x68, 0x80, 0x83, 0x00, 0x47, 0x67, 0x82, 0x79, 0x4a, 0x70, - 0x82, 0x79, 0x80, 0x83, 0x00, 0x48, 0x5a, 0x82, 0x68, 0x4c, 0x63, 0x82, 0x68, 0x80, 0x83, 0x00, - 0x4c, 0x63, 0x82, 0x79, 0x48, 0x66, 0x82, 0x79, 0x80, 0x83, 0x00, 0x4a, 0x6b, 0x82, 0x2d, 0x47, - 0x55, 0x82, 0x2d, 0x80, 0x82, 0x38, 0x48, 0x73, 0x22, 0x45, 0x66, 0x22, 0x80, 0x24, 0x49, 0x6b, - 0x23, 0x46, 0x66, 0x23, 0x80, 0x24, 0x4a, 0x6e, 0x82, 0x79, 0x47, 0x69, 0x82, 0x79, 0x80, 0x83, - 0x00, 0x4c, 0x60, 0x82, 0x6d, 0x48, 0x5d, 0x82, 0x6d, 0x80, 0x83, 0x00, 0x4c, 0x66, 0x82, 0x7a, - 0x48, 0x63, 0x82, 0x79, 0x80, 0x83, 0x00, 0x4a, 0x60, 0x45, 0x47, 0x4f, 0x45, 0x80, 0x48, 0x4b, - 0x66, 0x47, 0x48, 0x55, 0x47, 0x80, 0x48, 0x49, 0x4f, 0x83, 0x2f, 0x4d, 0x69, 0x83, 0x2f, 0x80, - 0x93, 0x70, 0x94, 0x04, 0x05, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x02, 0xc1, 0x4a, - 0xc0, 0x00, 0xc4, 0x00, 0xca, 0x00, 0x40, 0x47, 0x82, 0x7f, 0x43, 0x58, 0x82, 0x7f, 0x80, 0x83, - 0x00, 0x42, 0x40, 0x82, 0x79, 0x45, 0x57, 0x82, 0x79, 0x80, 0x83, 0x00, 0x45, 0x56, 0x82, 0x7f, - 0x41, 0x49, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x40, 0x5c, 0x82, 0x67, 0x43, 0x57, 0x82, 0x67, 0x80, - 0x83, 0x00, 0x43, 0x66, 0x82, 0x7a, 0x40, 0x6c, 0x82, 0x7a, 0x80, 0x83, 0x00, 0x45, 0x66, 0x82, - 0x6e, 0x42, 0x6c, 0x82, 0x6e, 0x80, 0x83, 0x00, 0x45, 0x69, 0x82, 0x79, 0x41, 0x5b, 0x82, 0x7a, - 0x80, 0x83, 0x00, 0x40, 0x6f, 0x82, 0x2d, 0x43, 0x61, 0x82, 0x2d, 0x80, 0x82, 0x38, 0x3e, 0x67, - 0x22, 0x41, 0x60, 0x22, 0x80, 0x24, 0x3f, 0x6a, 0x23, 0x42, 0x62, 0x23, 0x80, 0x24, 0x40, 0x73, - 0x82, 0x7a, 0x43, 0x61, 0x82, 0x7a, 0x80, 0x83, 0x00, 0x45, 0x61, 0x82, 0x6d, 0x42, 0x60, 0x82, - 0x6d, 0x80, 0x83, 0x00, 0x41, 0x67, 0x82, 0x7a, 0x45, 0x5e, 0x82, 0x79, 0x80, 0x83, 0x00, 0x40, - 0x6c, 0x45, 0x43, 0x5b, 0x45, 0x80, 0x48, 0x44, 0x5e, 0x47, 0x41, 0x69, 0x47, 0x80, 0x48, 0x42, - 0x6c, 0x83, 0x2f, 0x46, 0x61, 0x83, 0x2f, 0x80, 0x93, 0x70, 0x94, 0xbc, 0x05, 0x00, 0x80, 0x81, - 0x40, 0xff, 0xc7, 0x00, 0x81, 0x03, 0xc1, 0x5a, 0xc0, 0x7f, 0xc4, 0x00, 0xcb, 0x17, 0xca, 0x00, - 0x3b, 0x3a, 0x82, 0x79, 0x3e, 0x43, 0x82, 0x79, 0x80, 0x60, 0x4f, 0x5c, 0x06, 0x80, 0x18, 0x4f, - 0x26, 0x06, 0x80, 0x0c, 0x43, 0x5c, 0x06, 0x80, 0x0c, 0x4f, 0x14, 0x06, 0x80, 0x0c, 0x43, 0x26, - 0x06, 0x80, 0x18, 0x43, 0x14, 0x06, 0x80, 0x6c, 0x4f, 0x5c, 0x06, 0x80, 0x18, 0x4f, 0x26, 0x06, - 0x80, 0x0c, 0x43, 0x5c, 0x06, 0x80, 0x0c, 0x4f, 0x14, 0x06, 0x80, 0x0c, 0x43, 0x26, 0x06, 0x80, - 0x18, 0x43, 0x14, 0x06, 0x80, 0x0c, 0x40, 0x4f, 0x82, 0x79, 0x3c, 0x46, 0x82, 0x79, 0x80, 0x60, - 0x4f, 0x5c, 0x05, 0x80, 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, 0x43, 0x5c, 0x05, 0x80, 0x0c, 0x4f, - 0x14, 0x05, 0x80, 0x0c, 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, 0x80, 0x6c, 0x4f, 0x5c, - 0x04, 0x80, 0x18, 0x4f, 0x26, 0x04, 0x80, 0x0c, 0x43, 0x5c, 0x04, 0x80, 0x0c, 0x4f, 0x14, 0x04, - 0x80, 0x0c, 0x43, 0x26, 0x04, 0x80, 0x18, 0x43, 0x14, 0x04, 0x80, 0x0c, 0x3c, 0x3f, 0x82, 0x77, - 0x40, 0x44, 0x82, 0x76, 0x80, 0x60, 0x4f, 0x5c, 0x05, 0x80, 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, - 0x43, 0x5c, 0x04, 0x80, 0x0c, 0x4f, 0x14, 0x05, 0x80, 0x0c, 0x43, 0x26, 0x04, 0x80, 0x18, 0x43, - 0x14, 0x04, 0x80, 0x6c, 0x4f, 0x5c, 0x07, 0x80, 0x18, 0x4f, 0x26, 0x07, 0x80, 0x0c, 0x43, 0x5c, - 0x05, 0x80, 0x0c, 0x4f, 0x14, 0x07, 0x80, 0x0c, 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, - 0x80, 0x0c, 0x3e, 0x3a, 0x82, 0x7a, 0x3b, 0x2c, 0x82, 0x7b, 0x80, 0x60, 0x4f, 0x5c, 0x05, 0x80, - 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, 0x43, 0x5c, 0x05, 0x80, 0x0c, 0x4f, 0x14, 0x05, 0x80, 0x0c, - 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, 0x80, 0x81, 0x48, 0x4e, 0x4c, 0x0d, 0x80, 0x05, - 0xc0, 0x4f, 0x4f, 0x59, 0x82, 0x0e, 0x80, 0x81, 0x10, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, - 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x6d, 0xca, 0x00, 0x80, 0x05, 0x4f, 0x35, 0x05, - 0x80, 0x06, 0x51, 0x5b, 0x4a, 0x80, 0x48, 0x4f, 0x46, 0x07, 0x80, 0x17, 0x4e, 0x50, 0x42, 0x80, - 0x48, 0x56, 0x61, 0x81, 0x6e, 0x80, 0x62, 0xca, 0x02, 0x80, 0x08, 0xca, 0x07, 0x80, 0x08, 0xca, - 0x0b, 0x80, 0x07, 0xca, 0x12, 0x80, 0x79, 0xca, 0x00, 0x51, 0x5c, 0x44, 0x80, 0x40, 0x53, 0x55, - 0x09, 0x80, 0x08, 0x54, 0x55, 0x78, 0x80, 0x54, 0xca, 0x01, 0x80, 0x09, 0xca, 0x0a, 0x80, 0x08, - 0xca, 0x17, 0x80, 0x12, 0x53, 0x58, 0x49, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x51, 0x53, 0x79, - 0x80, 0x49, 0xca, 0x01, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0f, 0x80, 0x07, 0xca, 0x17, - 0x80, 0x19, 0xca, 0x00, 0x53, 0x5d, 0x48, 0x80, 0x47, 0x54, 0x56, 0x81, 0x40, 0x80, 0x4f, 0xca, - 0x00, 0x80, 0x07, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, 0x07, 0xca, 0x0d, 0x80, 0x07, 0xca, - 0x12, 0x80, 0x54, 0x4f, 0x56, 0x77, 0x80, 0x01, 0xca, 0x00, 0x80, 0x4e, 0xca, 0x00, 0x80, 0x09, - 0xca, 0x09, 0x80, 0x08, 0xca, 0x12, 0x80, 0x13, 0xca, 0x00, 0x80, 0x02, 0x4d, 0x55, 0x2b, 0x80, - 0x28, 0x4e, 0x50, 0x25, 0x80, 0x23, 0x4f, 0x58, 0x82, 0x08, 0x80, 0x81, 0x11, 0xca, 0x00, 0x80, - 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x61, 0xca, 0x00, 0x80, - 0x12, 0x4f, 0x41, 0x0b, 0x80, 0x06, 0x51, 0x53, 0x4a, 0x80, 0x48, 0x4f, 0x44, 0x0a, 0x80, 0x17, - 0x4e, 0x46, 0x44, 0x80, 0x47, 0x56, 0x5e, 0x81, 0x6f, 0x80, 0x62, 0xca, 0x00, 0x80, 0x08, 0xca, - 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x78, 0x54, 0x5e, 0x4a, 0x80, 0x01, - 0xca, 0x00, 0x80, 0x47, 0x58, 0x59, 0x49, 0x80, 0x48, 0x54, 0x60, 0x7a, 0x80, 0x49, 0xca, 0x00, - 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x19, 0xca, 0x00, - 0x53, 0x5d, 0x76, 0x80, 0x48, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, - 0x07, 0xca, 0x12, 0x80, 0x13, 0x54, 0x26, 0x0e, 0x80, 0x05, 0x56, 0x57, 0x4a, 0x80, 0x01, 0xca, - 0x00, 0x80, 0x47, 0x54, 0x5f, 0x82, 0x7f, 0x80, 0x81, 0x11, 0xca, 0x01, 0x80, 0x08, 0xca, 0x04, - 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x08, 0xca, 0x0f, 0x80, 0x08, 0xca, 0x12, - 0x80, 0x07, 0xca, 0x17, 0x80, 0x81, 0x41, 0xca, 0x00, 0x80, 0x91, 0x7f, 0x94, 0x74, 0x06, 0x00, - 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x04, 0xc1, 0x5a, 0xc0, 0x00, 0xc4, 0x00, 0xcb, 0x17, - 0xca, 0x00, 0x37, 0x53, 0x82, 0x7c, 0x34, 0x3f, 0x82, 0x7a, 0x80, 0x6c, 0x43, 0x5f, 0x06, 0x80, - 0x18, 0x43, 0x28, 0x06, 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, 0x11, 0x06, 0x80, 0x18, 0x4f, 0x28, - 0x09, 0x80, 0x0c, 0x95, 0x5a, 0x0b, 0x00, 0x39, 0x46, 0x82, 0x79, 0x36, 0x2f, 0x82, 0x79, 0x80, - 0x0c, 0x4f, 0x11, 0x08, 0x80, 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, - 0x4f, 0x5f, 0x08, 0x43, 0x11, 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x18, 0x4f, 0x11, 0x08, - 0x80, 0x60, 0x43, 0x5f, 0x07, 0x80, 0x18, 0x43, 0x28, 0x07, 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, - 0x11, 0x07, 0x80, 0x18, 0x4f, 0x28, 0x09, 0x80, 0x0c, 0x35, 0x34, 0x82, 0x7a, 0x39, 0x3e, 0x82, - 0x79, 0x80, 0x0c, 0x4f, 0x11, 0x09, 0x80, 0x60, 0x43, 0x5f, 0x04, 0x80, 0x18, 0x43, 0x28, 0x04, - 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, 0x11, 0x04, 0x80, 0x18, 0x4f, 0x28, 0x09, 0x80, 0x0c, 0x95, - 0x5a, 0x0b, 0x00, 0x34, 0x41, 0x82, 0x7c, 0x37, 0x34, 0x82, 0x7c, 0x80, 0x0c, 0x4f, 0x11, 0x08, - 0x80, 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, 0x4f, 0x5f, 0x08, 0x43, - 0x11, 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x18, 0x4f, 0x11, 0x08, 0x80, 0x81, 0x2f, 0x42, - 0x56, 0x0d, 0x80, 0x05, 0x43, 0x63, 0x82, 0x0e, 0x80, 0x02, 0xc0, 0x4f, 0x80, 0x81, 0x0e, 0xca, - 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x6d, 0xca, - 0x00, 0x80, 0x05, 0x43, 0x3f, 0x05, 0x80, 0x06, 0x45, 0x65, 0x4a, 0x80, 0x48, 0x43, 0x50, 0x07, - 0x80, 0x17, 0x42, 0x5a, 0x42, 0x80, 0x48, 0x4a, 0x6b, 0x81, 0x6e, 0x80, 0x62, 0xca, 0x02, 0x80, - 0x08, 0xca, 0x07, 0x80, 0x08, 0xca, 0x0b, 0x80, 0x07, 0xca, 0x12, 0x80, 0x79, 0xca, 0x00, 0x45, - 0x66, 0x44, 0x80, 0x40, 0x47, 0x5f, 0x09, 0x80, 0x08, 0x48, 0x5f, 0x78, 0x80, 0x54, 0xca, 0x01, - 0x80, 0x09, 0xca, 0x0a, 0x80, 0x08, 0xca, 0x17, 0x80, 0x12, 0x47, 0x62, 0x49, 0x80, 0x01, 0xca, - 0x00, 0x80, 0x47, 0x45, 0x5d, 0x79, 0x80, 0x49, 0xca, 0x01, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, - 0xca, 0x0f, 0x80, 0x07, 0xca, 0x17, 0x80, 0x19, 0xca, 0x00, 0x47, 0x67, 0x48, 0x80, 0x47, 0x48, - 0x60, 0x81, 0x40, 0x80, 0x4f, 0xca, 0x00, 0x80, 0x07, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, - 0x07, 0xca, 0x0d, 0x80, 0x07, 0xca, 0x12, 0x80, 0x54, 0x43, 0x60, 0x77, 0x80, 0x01, 0xca, 0x00, - 0x80, 0x4e, 0xca, 0x00, 0x80, 0x09, 0xca, 0x09, 0x80, 0x08, 0xca, 0x12, 0x80, 0x13, 0xca, 0x00, - 0x80, 0x02, 0x41, 0x5f, 0x2b, 0x80, 0x28, 0x42, 0x5a, 0x25, 0x80, 0x23, 0x43, 0x62, 0x82, 0x08, - 0x80, 0x81, 0x11, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, - 0x12, 0x80, 0x61, 0xca, 0x00, 0x80, 0x12, 0x43, 0x4b, 0x0b, 0x80, 0x06, 0x45, 0x5d, 0x4a, 0x80, - 0x48, 0x43, 0x4e, 0x0a, 0x80, 0x17, 0x42, 0x50, 0x44, 0x80, 0x47, 0x4a, 0x68, 0x81, 0x6f, 0x80, - 0x62, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, - 0x78, 0x48, 0x68, 0x4a, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x4c, 0x63, 0x49, 0x80, 0x48, 0x48, - 0x6a, 0x7a, 0x80, 0x49, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, - 0xca, 0x12, 0x80, 0x19, 0xca, 0x00, 0x47, 0x67, 0x76, 0x80, 0x48, 0xca, 0x00, 0x80, 0x08, 0xca, - 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x13, 0x48, 0x30, 0x0e, 0x80, 0x05, - 0x4a, 0x61, 0x4a, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x48, 0x69, 0x82, 0x7f, 0x80, 0x81, 0x11, - 0xca, 0x01, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x08, - 0xca, 0x0f, 0x80, 0x08, 0xca, 0x12, 0x80, 0x07, 0xca, 0x17, 0x80, 0x81, 0x41, 0xca, 0x00, 0x80, - 0x92, 0x00, 0x94, 0x06, 0x09, 0x00, 0x80, 0x81, 0x40, 0xff, 0x80, 0x0c, 0x4f, 0x11, 0x09, 0x80, - 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, 0x4f, 0x5f, 0x08, 0x43, 0x11, - 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x05, 0xc1, 0x5d, 0xc0, - 0x40, 0xc4, 0x00, 0xca, 0x00, 0x4f, 0x4e, 0x8b, 0x4b, 0x80, 0xa0, 0x7e, 0x4a, 0x4a, 0x45, 0x47, - 0x39, 0x45, 0x43, 0x47, 0x45, 0x80, 0x48, 0x4b, 0x51, 0x47, 0x48, 0x40, 0x47, 0x44, 0x4b, 0x47, - 0x80, 0x48, 0x49, 0x37, 0x83, 0x31, 0x4d, 0x51, 0x83, 0x31, 0x46, 0x4b, 0x83, 0x31, 0x80, 0x93, - 0x72, 0x94, 0x7b, 0x0b, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x06, 0xc1, 0x7f, 0xc0, - 0x40, 0xc4, 0x00, 0xca, 0x00, 0x4f, 0x48, 0x0b, 0x80, 0x18, 0x54, 0x3a, 0x0b, 0x80, 0x18, 0x5b, - 0x37, 0x0b, 0x80, 0x18, 0x4f, 0x42, 0x0b, 0x80, 0x18, 0x54, 0x3b, 0x0b, 0x80, 0x18, 0x5b, 0x2e, - 0x0b, 0x80, 0x18, 0x4f, 0x3e, 0x0b, 0x80, 0x18, 0x54, 0x38, 0x0b, 0x80, 0x18, 0x5b, 0x33, 0x0b, - 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x3a, 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, - 0x18, 0x4f, 0x45, 0x0b, 0x80, 0x18, 0x54, 0x3b, 0x0b, 0x80, 0x18, 0x5b, 0x34, 0x0b, 0x80, 0x18, - 0x4f, 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, 0x4f, - 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2b, 0x0b, 0x80, 0x18, 0x4f, 0x40, - 0x0b, 0x80, 0x18, 0x54, 0x38, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3d, 0x0b, - 0x80, 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x35, 0x0b, 0x80, - 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x3b, 0x0b, 0x80, 0x18, - 0x54, 0x36, 0x0b, 0x80, 0x18, 0x5b, 0x36, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, - 0x39, 0x0b, 0x80, 0x18, 0x5b, 0x2d, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, 0x31, - 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, 0x35, 0x0b, - 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x3b, 0x0b, 0x80, 0x18, 0x54, 0x32, 0x0b, 0x80, - 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x36, 0x0b, 0x80, 0x18, - 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x39, 0x0b, 0x80, 0x18, 0x5b, - 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2e, - 0x0b, 0x80, 0x18, 0x4f, 0x42, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, - 0x80, 0x18, 0x4f, 0x38, 0x0b, 0x80, 0x18, 0x54, 0x2d, 0x0b, 0x80, 0x18, 0x5b, 0x29, 0x0b, 0x80, - 0x18, 0x4f, 0x35, 0x0b, 0x80, 0x18, 0x54, 0x2d, 0x0b, 0x80, 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, - 0x4f, 0x31, 0x0b, 0x80, 0xaa, 0x18, 0x94, 0xbb, 0x0b, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, - 0x81, 0x07, 0xc1, 0x7f, 0xc0, 0x40, 0xc4, 0x00, 0xca, 0x00, 0x80, 0xa5, 0x0f, 0x50, 0x5a, 0x24, - 0x80, 0x08, 0x57, 0x4e, 0x20, 0x80, 0x0c, 0x5a, 0x53, 0x0f, 0x80, 0x07, 0x5c, 0x43, 0x14, 0x80, - 0x0a, 0x5e, 0x64, 0x2a, 0x80, 0x0c, 0x63, 0x5e, 0x3a, 0x80, 0x90, 0x40, 0x94, 0x10, 0x0d, 0x00, - 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x7f, 0xc1, 0x7f, 0xc0, 0x40, 0xc4, 0x00, 0xca, 0x00, - 0x24, 0x7e, 0x47, 0x31, 0x60, 0x81, 0x0f, 0x80, 0x84, 0x38, 0x41, 0x17, 0x03, 0x80, 0x04, 0x41, - 0x30, 0x03, 0x80, 0x04, 0x41, 0x74, 0x0b, 0x80, 0x0c, 0x41, 0x56, 0x0b, 0x80, 0x0c, 0x41, 0x7f, - 0x47, 0x80, 0x60, 0x24, 0x71, 0x23, 0x31, 0x5b, 0x46, 0x80, 0x24, 0x24, 0x74, 0x23, 0x34, 0x54, - 0x81, 0x03, 0x80, 0x24, 0x24, 0x78, 0x2f, 0x31, 0x60, 0x81, 0x0f, 0x80, 0x84, 0x38, 0x41, 0x17, - 0x03, 0x80, 0x04, 0x41, 0x30, 0x03, 0x80, 0x04, 0x29, 0x4c, 0x0b, 0x41, 0x5a, 0x0b, 0x80, 0x0c, - 0x29, 0x28, 0x0b, 0x41, 0x3e, 0x0b, 0x80, 0x0c, 0x29, 0x3a, 0x0b, 0x41, 0x40, 0x0b, 0x80, 0x0c, - 0x29, 0x28, 0x0b, 0x41, 0x38, 0x0b, 0x80, 0x0c, 0x29, 0x36, 0x0b, 0x41, 0x42, 0x0b, 0x80, 0x0c, - 0x29, 0x38, 0x0b, 0x41, 0x38, 0x0b, 0x80, 0x0c, 0x29, 0x44, 0x0b, 0x41, 0x4c, 0x0b, 0x80, 0x0c, - 0x29, 0x42, 0x0b, 0x41, 0x54, 0x0b, 0x80, 0x0c, 0x29, 0x4e, 0x0b, 0x41, 0x5e, 0x0b, 0x80, 0x0c, - 0x29, 0x54, 0x0b, 0x41, 0x54, 0x0b, 0x80, 0x0c, 0x29, 0x5e, 0x0b, 0x41, 0x62, 0x0b, 0x80, 0x0c, - 0x29, 0x62, 0x0b, 0x41, 0x6a, 0x0b, 0x80, 0x0c, 0x29, 0x6e, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, - 0x29, 0x6c, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, 0x29, 0x73, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, - 0x29, 0x70, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, 0x31, 0x60, 0x81, 0x3e, 0x24, 0x79, 0x2f, 0x80, - 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6c, 0x0b, 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, - 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2e, 0x80, 0x30, 0x95, 0x5f, 0x10, 0x00, 0x95, 0x83, - 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, 0x80, - 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x31, 0x5b, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, 0x34, 0x54, - 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0x5f, 0x10, 0x00, 0x95, - 0x83, 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, - 0x80, 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x37, 0x7f, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, 0x34, - 0x60, 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0x5f, 0x10, 0x00, - 0x95, 0x83, 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, - 0x0b, 0x80, 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x31, 0x5b, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x34, 0x5b, 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0xc5, 0x10, - 0x00, 0x31, 0x5b, 0x81, 0x0f, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, - 0x7c, 0x17, 0x80, 0x18, 0x34, 0x5b, 0x77, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, - 0x18, 0x31, 0x60, 0x81, 0x10, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x95, 0xc5, 0x10, 0x00, 0x24, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, 0x2f, - 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x81, 0x0f, - 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x2f, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x7c, - 0x17, 0x80, 0x18, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, - 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x24, 0x7c, 0x2f, 0x80, - 0x18, 0x29, 0x7c, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x0c, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, - 0x79, 0x2f, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x17, - 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x31, 0x60, 0x81, 0x6f, 0x24, 0x79, 0x47, 0x80, 0x18, - 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x5f, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, - 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, - 0x18, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x34, 0x60, 0x81, 0x57, 0x24, 0x79, - 0x2f, 0x80, 0x30, 0x24, 0x79, 0x3b, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x5f, - 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, - 0x30, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x3b, - 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x7f, 0x17, 0x80, - 0x18, 0x29, 0x7f, 0x0b, 0x80, 0x0c, 0x29, 0x7f, 0x81, 0x4b, 0x80, 0x0c, 0x37, 0x79, 0x81, 0x3f, - 0x24, 0x79, 0x81, 0x3f, 0x80, 0x84, 0x40, 0x94, 0x46, 0x0d, 0x00, 0x80, 0x81, 0x40, 0xff, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, 0x80, 0x0c, 0x24, 0x7c, - 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x6e, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x23, - 0x80, 0x24, 0xfd, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6c, 0x0b, - 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2e, 0x80, - 0x30, 0xfd, 0x31, 0x60, 0x81, 0x3f, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, - 0x24, 0x6c, 0x0b, 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, - 0x7c, 0x2e, 0x80, 0x30, 0xfd, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, - 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, - 0x2f, 0x80, 0x0c, 0x24, 0x79, 0x23, 0x80, 0x24, 0xfd, 0xc7, 0x00, 0x81, 0x0b, 0xc1, 0x60, 0xc0, - 0x4d, 0xc4, 0x00, 0xca, 0x00, 0x2e, 0x45, 0x17, 0x80, 0x18, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, - 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2e, 0x76, 0x0b, 0x80, 0x0c, 0x2c, 0x4e, - 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, - 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x65, 0x0b, 0x80, - 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, - 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, - 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, - 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2e, 0x75, 0x0b, 0x80, 0x0c, - 0x2c, 0x52, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, - 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, - 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, - 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, - 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, - 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, - 0x51, 0x0b, 0x80, 0x0c, 0x2a, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, - 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, - 0x80, 0x0c, 0x2e, 0x6d, 0x23, 0x80, 0x18, 0x2c, 0x4d, 0x0b, 0x80, 0x0c, 0x2e, 0x69, 0x23, 0x80, - 0x24, 0x2c, 0x69, 0x05, 0x80, 0x06, 0x2a, 0x33, 0x05, 0x80, 0x06, 0x2a, 0x52, 0x05, 0x80, 0x06, - 0x2a, 0x25, 0x05, 0x80, 0x06, 0x2a, 0x69, 0x05, 0x80, 0x06, 0x2a, 0x48, 0x05, 0x80, 0x06, 0x2a, - 0x5c, 0x05, 0x80, 0x06, 0x2a, 0x38, 0x05, 0x80, 0x06, 0x2a, 0x67, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, - 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, - 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, - 0x0c, 0x2a, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x39, - 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x32, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, - 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2e, 0x7e, 0x0b, 0x80, 0x0c, 0x2c, 0x58, 0x0b, 0x80, 0x0c, - 0x2a, 0x4a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, - 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x1d, - 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, - 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x77, 0x80, 0x30, - 0x2c, 0x1a, 0x17, 0x80, 0x18, 0x2c, 0x30, 0x17, 0x80, 0x18, 0x2c, 0x1c, 0x17, 0x80, 0x18, 0x2c, - 0x32, 0x17, 0x80, 0x18, 0x2c, 0x20, 0x17, 0x80, 0x18, 0x2c, 0x3e, 0x17, 0x80, 0x18, 0x2c, 0x2e, - 0x17, 0x80, 0x24, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, - 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x3f, 0x0b, 0x80, 0x0c, 0x2e, 0x7d, 0x17, 0x80, 0x18, - 0x2c, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x95, 0x17, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, - 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, - 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, - 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x73, 0x17, 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, 0x2a, - 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, - 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, - 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, - 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x7a, 0x23, 0x80, 0x24, - 0x2e, 0x7c, 0x23, 0x80, 0x24, 0x95, 0xd7, 0x17, 0x00, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, - 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x17, 0x80, 0x18, 0x2c, - 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, - 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, - 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, - 0x2e, 0x7e, 0x17, 0x80, 0x18, 0x2c, 0x5a, 0x0b, 0x80, 0x0c, 0x2e, 0x7b, 0x23, 0x80, 0x24, 0x2a, - 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, - 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x74, 0x17, 0x80, - 0x18, 0x2c, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x95, 0x17, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, - 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, - 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, - 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x7a, 0x17, 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, - 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, - 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, - 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x76, 0x17, 0x80, - 0x18, 0x2c, 0x4b, 0x0b, 0x80, 0x0c, 0x2e, 0x7c, 0x23, 0x80, 0x24, 0x2a, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x18, 0x2a, - 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, - 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x72, 0x17, 0x80, 0x18, 0x2c, 0x65, 0x0b, - 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, - 0x0c, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, - 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2e, 0x78, - 0x17, 0x80, 0x18, 0x2c, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x17, - 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, - 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, - 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, - 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, - 0x0b, 0x80, 0x0c, 0x2e, 0x6e, 0x17, 0x80, 0x18, 0x2c, 0x3f, 0x0b, 0x80, 0x0c, 0x2e, 0x65, 0x0b, - 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x0c, 0x95, 0xd7, 0x17, 0x00, - 0x95, 0x65, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, - 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, - 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, - 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x45, 0x0b, 0x80, 0x24, 0x95, 0x65, 0x18, 0x00, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, - 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, - 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, - 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x18, - 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, - 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, - 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x65, 0x17, 0x80, - 0x18, 0x2c, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, - 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, - 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, - 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x24, - 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, - 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, - 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, - 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x6a, 0x17, 0x80, 0x18, 0x2c, 0x5a, 0x0b, 0x80, - 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x24, 0x2c, 0x6a, 0x81, 0x0f, 0x80, 0x84, 0x40, 0x94, 0xeb, 0x10, - 0x00, 0x80, 0x81, 0x40, 0xff, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x24, 0x2a, 0x2a, 0x0b, 0x80, - 0x0c, 0x2a, 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, - 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, - 0x30, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x34, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x6d, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, - 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, - 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, - 0x2a, 0x42, 0x0b, 0x80, 0x18, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, - 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2e, 0x66, 0x17, 0x80, 0x18, 0x2c, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, - 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x0c, - 0xc1, 0x52, 0xc0, 0x27, 0xc4, 0x00, 0xca, 0x00, 0x80, 0x18, 0x46, 0x4c, 0x2f, 0x80, 0x30, 0x46, - 0x44, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, 0x46, 0x41, 0x2f, 0x80, 0x30, 0x46, 0x46, - 0x2f, 0x80, 0x30, 0x46, 0x46, 0x2f, 0x80, 0x30, 0x46, 0x45, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, - 0x80, 0x30, 0x46, 0x45, 0x2f, 0x80, 0x30, 0x46, 0x43, 0x2f, 0x80, 0x30, 0x46, 0x41, 0x2f, 0x80, - 0x30, 0x46, 0x43, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, - 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, - 0x46, 0x2f, 0x80, 0x30, 0x46, 0x42, 0x2f, 0x80, 0x30, 0x46, 0x47, 0x2f, 0x80, 0x30, 0x46, 0x48, - 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x4e, 0x2f, 0x80, 0x30, 0x46, 0x47, 0x2f, - 0x80, 0x30, 0x46, 0x46, 0x2f, 0x80, 0x30, 0x46, 0x4a, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, - 0x30, 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, - 0x46, 0x4a, 0x2f, 0x80, 0x30, 0x46, 0x49, 0x17, 0x80, 0x18, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0x1e, 0x1a, 0x00, 0x95, 0x6f, - 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x46, 0x7d, - 0x81, 0x0f, 0x80, 0x84, 0x40, 0x94, 0xae, 0x18, 0x00, 0x80, 0x81, 0x40, 0xff, 0x46, 0x28, 0x0b, - 0x80, 0x0c, 0x46, 0x1f, 0x0b, 0x80, 0x0c, 0x46, 0x4a, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, - 0x0c, 0x46, 0x1d, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, 0x0c, 0x46, 0x50, 0x0b, 0x80, 0x0c, - 0x46, 0x23, 0x0b, 0x80, 0x0c, 0x46, 0x28, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, 0x46, - 0x50, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x2d, 0x0b, 0x80, 0x0c, 0x46, 0x2f, - 0x0b, 0x80, 0x0c, 0x46, 0x59, 0x0b, 0x80, 0x0c, 0x46, 0x27, 0x0b, 0x80, 0x0c, 0xfd, 0x46, 0x1f, - 0x0b, 0x80, 0x0c, 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x64, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, - 0x80, 0x0c, 0x46, 0x25, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x54, 0x0b, 0x80, - 0x0c, 0x46, 0x30, 0x0b, 0x80, 0x0c, 0x46, 0x2d, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, - 0x46, 0x5e, 0x0b, 0x80, 0x0c, 0x46, 0x2e, 0x0b, 0x80, 0x0c, 0x46, 0x27, 0x0b, 0x80, 0x0c, 0x46, - 0x20, 0x0b, 0x80, 0x0c, 0x46, 0x5b, 0x0b, 0x80, 0x0c, 0x46, 0x34, 0x0b, 0x80, 0x0c, 0xfd, 0x46, - 0x29, 0x0b, 0x80, 0x0c, 0x46, 0x1b, 0x0b, 0x80, 0x0c, 0x46, 0x56, 0x0b, 0x80, 0x0c, 0x46, 0x1a, - 0x0b, 0x80, 0x0c, 0x46, 0x2f, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, 0x46, 0x54, 0x0b, - 0x80, 0x0c, 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x32, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, - 0x0c, 0x46, 0x56, 0x0b, 0x80, 0x0c, 0x46, 0x2f, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, - 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x5b, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, 0xfd, - 0x46, 0x37, 0x0b, 0x80, 0x0c, 0x46, 0x37, 0x0b, 0x80, 0x0c, 0x46, 0x5e, 0x0b, 0x80, 0x0c, 0x46, - 0x12, 0x0b, 0x80, 0x0c, 0x46, 0x35, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, 0x0c, 0x46, 0x48, - 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, 0x46, 0x1d, 0x0b, - 0x80, 0x0c, 0x46, 0x50, 0x0b, 0x80, 0x0c, 0x46, 0x1b, 0x0b, 0x80, 0x0c, 0x46, 0x37, 0x0b, 0x80, - 0x0c, 0x46, 0x2e, 0x0b, 0x80, 0x0c, 0x46, 0x59, 0x0b, 0x80, 0x0c, 0x46, 0x19, 0x0b, 0x80, 0x0c, - 0xfd, 0xff, 0x00, 0x00, -}; - -const u8 sound_bank_data[] ATTRIBUTE_ALIGN(32) = -{ - 0x53, 0x42, 0x4e, 0x4b, 0xff, 0xfe, 0x02, 0x00, 0x84, 0x04, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, - 0x44, 0x41, 0x54, 0x41, 0x74, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x11, 0x64, 0x04, 0x00, - 0x01, 0x3c, 0x02, 0x00, 0x01, 0x46, 0x02, 0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x24, 0x04, 0x00, - 0x01, 0x50, 0x02, 0x00, 0x01, 0x5a, 0x02, 0x00, 0x11, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xd8, 0x03, 0x00, 0x01, 0x64, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6e, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x47, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x09, 0x00, 0x00, 0x00, 0x47, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x4b, 0x7f, 0x7f, 0x7f, 0x64, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x58, 0x7f, - 0x7f, 0x7f, 0x64, 0x40, 0x03, 0x00, 0x00, 0x00, 0x42, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x24, 0x41, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x30, 0x7f, 0x7f, 0x7f, 0x78, 0x22, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x7f, - 0x7f, 0x7f, 0x78, 0x22, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x7f, 0x7f, 0x7f, 0x78, 0x22, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, 0x7f, 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x34, 0x7f, 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, 0x7f, - 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, - 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, - 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x11, 0x00, - 0x00, 0x00, 0x41, 0x7f, 0x7f, 0x7f, 0x78, 0x37, 0x2b, 0x2d, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x2c, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2e, 0x7f, - 0x7f, 0x7f, 0x7b, 0x40, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x7d, 0x40, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x43, 0x7f, - 0x7f, 0x7f, 0x7d, 0x40, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x7d, 0x40, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x43, 0x7f, - 0x7f, 0x7f, 0x7d, 0x40, 0x53, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x4f, 0x7f, 0x7f, 0x7f, 0x64, 0x40, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5b, 0x7f, - 0x7f, 0x7f, 0x64, 0x40, 0x3b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x7f, 0x7b, 0x40, -}; - -const u8 sound_wave_data[] ATTRIBUTE_ALIGN(32) = -{ - 0x53, 0x57, 0x41, 0x52, 0xff, 0xfe, 0x01, 0x00, 0x64, 0x7f, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, - 0x44, 0x41, 0x54, 0x41, 0x54, 0x7f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x30, 0x0f, 0x00, 0x00, 0x0c, 0x23, 0x00, 0x00, 0xc0, 0x2e, 0x00, 0x00, 0x78, 0x38, 0x00, 0x00, - 0x08, 0x8a, 0x00, 0x00, 0x18, 0xac, 0x00, 0x00, 0xf8, 0xc4, 0x00, 0x00, 0x48, 0x04, 0x01, 0x00, - 0xd8, 0x23, 0x01, 0x00, 0x34, 0x5c, 0x01, 0x00, 0xc8, 0x92, 0x01, 0x00, 0xe4, 0xad, 0x01, 0x00, - 0x84, 0xd7, 0x01, 0x00, 0x40, 0xf7, 0x01, 0x00, 0x90, 0x1a, 0x02, 0x00, 0xe0, 0x3b, 0x02, 0x00, - 0xb4, 0x5e, 0x02, 0x00, 0x02, 0x01, 0x52, 0x7d, 0x0a, 0x02, 0x47, 0x03, 0x61, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0xcf, 0x89, 0xa8, 0x80, 0x9b, 0x09, 0x98, 0x19, 0xaa, 0x99, 0xaa, 0x99, - 0xaa, 0x90, 0x90, 0x0b, 0xbc, 0x00, 0x19, 0xc9, 0x98, 0xba, 0xa9, 0xbb, 0xa1, 0x8c, 0x2c, 0xb3, - 0x0b, 0xac, 0xac, 0xb2, 0x0b, 0x19, 0xb9, 0xb9, 0x8c, 0xc9, 0xbb, 0xb9, 0x09, 0xba, 0xd9, 0xa9, - 0xab, 0xdb, 0xc9, 0x9a, 0x9a, 0xb9, 0xbb, 0x9d, 0xc9, 0x99, 0xdc, 0x9b, 0xeb, 0xbb, 0x9d, 0xba, - 0xab, 0xa9, 0xbe, 0xcb, 0xdb, 0xcb, 0xba, 0xaa, 0xa8, 0xcf, 0xaa, 0xba, 0xdb, 0xcc, 0xaa, 0x99, - 0xcb, 0xbd, 0xcb, 0xcb, 0xba, 0xdb, 0xbd, 0xaa, 0x9a, 0xcc, 0xcc, 0xba, 0xcc, 0xbb, 0xaa, 0xbb, - 0xbc, 0xcd, 0xcb, 0xba, 0xbd, 0xca, 0xab, 0xab, 0xbc, 0xbc, 0xcb, 0xdb, 0xbc, 0xba, 0xbb, 0xbc, - 0xbd, 0xbc, 0xbb, 0x9c, 0xdb, 0xcb, 0xbb, 0xaa, 0xbb, 0xba, 0xcc, 0xbb, 0xbc, 0xbb, 0xaa, 0xbb, - 0xbc, 0xfa, 0x8b, 0xca, 0xad, 0x82, 0xbf, 0x1b, 0x15, 0x89, 0xb9, 0xfa, 0x6a, 0xa3, 0x8f, 0x17, - 0x89, 0x00, 0x03, 0x2a, 0x96, 0x9f, 0x02, 0x19, 0x26, 0xa8, 0x0b, 0x92, 0x01, 0x9f, 0x23, 0x29, - 0xe9, 0x20, 0x80, 0x23, 0x88, 0x14, 0xbf, 0x11, 0x11, 0x09, 0x04, 0x9a, 0x81, 0x68, 0xb1, 0x58, - 0xa1, 0x1b, 0x92, 0xaa, 0x32, 0xc8, 0x62, 0x24, 0xc9, 0x19, 0x24, 0xb0, 0x9a, 0x41, 0x22, 0x12, - 0xcd, 0x28, 0x18, 0x32, 0x91, 0x0a, 0x02, 0xdd, 0x09, 0x42, 0x24, 0xc8, 0xbd, 0x30, 0x25, 0xa0, - 0xaa, 0x09, 0x42, 0xa1, 0x8c, 0x12, 0x89, 0x98, 0x10, 0x90, 0x23, 0xed, 0x9a, 0x52, 0x02, 0xc9, - 0x19, 0xd8, 0xab, 0x61, 0x14, 0xa9, 0xad, 0x29, 0x01, 0x21, 0x98, 0xdc, 0x2a, 0x83, 0xa9, 0x9a, - 0x54, 0xb8, 0xbc, 0x48, 0x14, 0x01, 0xba, 0xdb, 0x78, 0x83, 0xbc, 0x19, 0x15, 0x80, 0xbb, 0x58, - 0x92, 0xba, 0x29, 0x91, 0x21, 0x01, 0x64, 0xa1, 0x09, 0xb9, 0xbe, 0x40, 0x16, 0x91, 0xaa, 0x20, - 0x12, 0xba, 0x0a, 0x23, 0xd1, 0xad, 0x21, 0x54, 0x92, 0xbc, 0x8a, 0x08, 0x30, 0x93, 0x28, 0x83, - 0xda, 0x0a, 0xca, 0x9c, 0x73, 0x14, 0x98, 0x8a, 0x98, 0xda, 0xac, 0x43, 0x22, 0x90, 0xa9, 0x8f, - 0x88, 0x18, 0x88, 0xc9, 0x8e, 0x32, 0x31, 0x13, 0x99, 0xa9, 0xff, 0x29, 0x12, 0x18, 0x20, 0xc0, - 0x8c, 0x00, 0x31, 0xc9, 0x99, 0x46, 0xb8, 0x49, 0x13, 0xab, 0x71, 0xc1, 0x1b, 0x24, 0x91, 0xcb, - 0x1a, 0x27, 0xb8, 0x1b, 0x25, 0x98, 0x09, 0x11, 0xa8, 0x48, 0x92, 0xce, 0x0a, 0x44, 0x91, 0x0a, - 0x11, 0xb8, 0x0c, 0x21, 0x02, 0x88, 0x22, 0xd1, 0x9f, 0x52, 0x91, 0xaa, 0x18, 0xb0, 0x8e, 0x52, - 0x02, 0xa9, 0x9c, 0x18, 0x80, 0x32, 0xa2, 0xbd, 0x41, 0xb1, 0xaf, 0x19, 0x43, 0x82, 0xbb, 0x49, - 0x14, 0xa9, 0xcd, 0x1b, 0x16, 0x18, 0xd9, 0x09, 0x01, 0x21, 0xa2, 0x8b, 0x91, 0xbf, 0x29, 0x46, - 0x01, 0xb9, 0xac, 0x10, 0x33, 0x88, 0x89, 0x21, 0xd0, 0xbc, 0x0a, 0x57, 0x01, 0xab, 0x80, 0x3a, - 0x06, 0x9a, 0x99, 0x88, 0x31, 0x04, 0xdc, 0x39, 0x12, 0x08, 0xca, 0x29, 0x15, 0xca, 0x8b, 0x32, - 0x33, 0xb2, 0x9f, 0x51, 0x91, 0x0a, 0xa0, 0x08, 0x99, 0x18, 0x55, 0x81, 0x09, 0xd2, 0x2c, 0xa0, - 0x46, 0x98, 0xaa, 0x30, 0x12, 0xb9, 0x08, 0x08, 0x02, 0xcb, 0x48, 0x34, 0x01, 0xb0, 0xaf, 0x48, - 0x04, 0x9a, 0x22, 0x98, 0x9b, 0x24, 0xda, 0x9a, 0x28, 0x34, 0x11, 0x40, 0x96, 0xcf, 0x10, 0x13, - 0xa9, 0x30, 0x03, 0xbe, 0x18, 0x31, 0xb3, 0xaf, 0x00, 0x18, 0x32, 0x35, 0xdb, 0x28, 0x23, 0xfc, - 0x19, 0x31, 0xb1, 0x8d, 0x21, 0x01, 0xba, 0x38, 0xb3, 0xaf, 0x53, 0x92, 0xba, 0x50, 0x04, 0xb9, - 0x28, 0x82, 0xbe, 0x00, 0x43, 0x91, 0x88, 0x9b, 0x89, 0x12, 0x32, 0xc8, 0x72, 0x05, 0xcd, 0x1a, - 0x32, 0xa0, 0xbb, 0x18, 0x31, 0x12, 0x22, 0xf9, 0x1a, 0x14, 0xdd, 0x1a, 0x34, 0x82, 0xad, 0x09, - 0x21, 0xa1, 0xbe, 0x40, 0x82, 0x10, 0xa0, 0xac, 0x11, 0x80, 0x09, 0x44, 0x83, 0xfb, 0x9d, 0x38, - 0x05, 0xa8, 0xaa, 0x20, 0x14, 0xa8, 0x0b, 0x34, 0xb8, 0xbb, 0xac, 0x60, 0x25, 0x80, 0xda, 0x1a, - 0x33, 0x91, 0xbd, 0x19, 0x34, 0x81, 0xdb, 0x19, 0x22, 0xa0, 0x0b, 0x31, 0xa1, 0xaf, 0x12, 0x11, - 0x21, 0x02, 0xcd, 0x18, 0x10, 0x14, 0xdc, 0x1a, 0x26, 0xa9, 0x08, 0x29, 0x83, 0xd9, 0x0c, 0x53, - 0x81, 0xba, 0x99, 0x18, 0x25, 0x90, 0x09, 0xc9, 0x0a, 0x73, 0x14, 0xa0, 0xbe, 0x0a, 0x12, 0x30, - 0x27, 0xa9, 0x09, 0x88, 0xa1, 0xab, 0x75, 0x92, 0xac, 0x30, 0x24, 0xa9, 0xab, 0x99, 0x18, 0x35, - 0x90, 0x19, 0x21, 0x83, 0xfd, 0x48, 0x14, 0xdc, 0x38, 0x32, 0xa8, 0x0b, 0xa0, 0xab, 0x64, 0x02, - 0x98, 0xb9, 0x20, 0xb3, 0x8f, 0x34, 0xb0, 0x9c, 0x22, 0x88, 0x18, 0x12, 0xdb, 0x9a, 0x60, 0x14, - 0xaa, 0x31, 0xe2, 0x9d, 0x53, 0xa1, 0x8b, 0x13, 0x89, 0x01, 0x9a, 0x22, 0xdd, 0x38, 0x06, 0xa8, - 0x18, 0x81, 0xcc, 0x28, 0x02, 0x80, 0x08, 0x12, 0xd8, 0x1a, 0x14, 0xca, 0x28, 0x83, 0xba, 0x61, - 0x13, 0x98, 0xdb, 0x9a, 0x10, 0x81, 0xba, 0x49, 0x15, 0x90, 0xdd, 0x8b, 0x21, 0x01, 0x20, 0x25, - 0xd9, 0xab, 0xda, 0x8c, 0x63, 0x12, 0x01, 0xbb, 0x29, 0x13, 0xed, 0x8a, 0x32, 0x82, 0xdb, 0x18, - 0x44, 0xa0, 0xac, 0xa9, 0x08, 0x29, 0x23, 0x22, 0x83, 0x20, 0xe1, 0xbf, 0x38, 0x12, 0x90, 0xaa, - 0x52, 0xd9, 0x8b, 0x42, 0x13, 0xa8, 0xbd, 0x8b, 0x44, 0x98, 0x98, 0x38, 0x84, 0xbd, 0x50, 0x03, - 0x88, 0xab, 0x12, 0xc9, 0x6a, 0x04, 0xab, 0x0a, 0x26, 0xa9, 0x18, 0x82, 0xbf, 0x19, 0x43, 0x16, - 0xcb, 0x19, 0x81, 0x19, 0x16, 0xb9, 0x1a, 0x11, 0xa9, 0x11, 0x72, 0x93, 0xcf, 0x19, 0x34, 0xa8, - 0x28, 0xb0, 0x8c, 0x12, 0xba, 0x61, 0x81, 0x09, 0xa1, 0x3c, 0x37, 0xdc, 0x09, 0x21, 0x00, 0x20, - 0xb2, 0x8d, 0x22, 0x80, 0x9b, 0x89, 0x42, 0xc9, 0x69, 0x34, 0xb8, 0xac, 0x99, 0x21, 0x01, 0x32, - 0x04, 0xcd, 0x28, 0x93, 0x39, 0x34, 0xf0, 0x8d, 0x31, 0x32, 0xa8, 0xbc, 0x09, 0x32, 0x32, 0x81, - 0xab, 0x00, 0x91, 0xaf, 0x31, 0x22, 0xd1, 0xbd, 0x49, 0x27, 0xb0, 0xaa, 0x10, 0x88, 0x20, 0x88, - 0x47, 0xa0, 0x9c, 0x30, 0x01, 0x20, 0xf9, 0x8e, 0x32, 0x01, 0x99, 0xa9, 0x00, 0x02, 0x8a, 0x00, - 0x10, 0x52, 0xf0, 0xae, 0x41, 0x13, 0xbb, 0x0b, 0x43, 0x91, 0xaa, 0x10, 0x92, 0xbc, 0x51, 0x82, - 0xac, 0x31, 0xda, 0x9a, 0x73, 0x84, 0xac, 0x0a, 0x11, 0x00, 0x98, 0x20, 0x90, 0x99, 0xaa, 0x8c, - 0x57, 0xb0, 0xbb, 0x10, 0x43, 0x81, 0x09, 0x22, 0xfb, 0x1a, 0x82, 0xbe, 0x58, 0x02, 0xa9, 0x20, - 0xb0, 0x8b, 0x81, 0x70, 0xa3, 0x9f, 0x22, 0xc9, 0x39, 0x15, 0xaa, 0x10, 0xb1, 0x9c, 0x31, 0x23, - 0xb8, 0xef, 0x30, 0x05, 0xaa, 0x18, 0x90, 0x19, 0x13, 0xbc, 0x10, 0x01, 0xeb, 0x1a, 0x47, 0x91, - 0xac, 0x18, 0x81, 0x21, 0x82, 0xab, 0x01, 0x8a, 0x23, 0x11, 0x62, 0xb4, 0xff, 0x29, 0x24, 0xa8, - 0x8a, 0x81, 0x18, 0x08, 0x81, 0x09, 0x01, 0x21, 0x11, 0xcb, 0x80, 0xdf, 0x08, 0x63, 0x24, 0xb9, - 0xac, 0x30, 0x91, 0x8d, 0x33, 0xa8, 0x9b, 0x10, 0x76, 0x81, 0xbb, 0x9a, 0xba, 0x73, 0x16, 0xa8, - 0x09, 0x81, 0x98, 0x88, 0x18, 0x14, 0xda, 0x2a, 0x35, 0x80, 0xb0, 0xbf, 0x38, 0x15, 0x98, 0x0a, - 0x11, 0x01, 0xca, 0x29, 0x34, 0xba, 0x38, 0xa1, 0x59, 0x37, 0xd8, 0x9d, 0x21, 0x12, 0xa0, 0x0a, - 0x33, 0xd8, 0x8c, 0x22, 0xa0, 0x1a, 0xa1, 0x8b, 0x56, 0x02, 0xb9, 0x9c, 0x38, 0x82, 0x99, 0x48, - 0x06, 0xaa, 0x18, 0x88, 0x41, 0xa3, 0xaf, 0x18, 0x21, 0x11, 0xc9, 0x9c, 0x11, 0x8a, 0x52, 0xa0, - 0x9b, 0x43, 0xc9, 0x29, 0x15, 0xcb, 0x8a, 0x00, 0x52, 0x83, 0x19, 0xa0, 0xdf, 0x19, 0x12, 0x98, - 0x88, 0x80, 0x88, 0x51, 0x83, 0xcf, 0x29, 0x01, 0xa9, 0x09, 0x13, 0xab, 0x32, 0xc0, 0x49, 0x03, - 0xfb, 0xaf, 0x20, 0x24, 0xa1, 0xbc, 0x30, 0x04, 0x99, 0x08, 0xa1, 0x9d, 0x11, 0xaa, 0x41, 0x34, - 0xd8, 0x9e, 0x51, 0x02, 0xcb, 0x8a, 0x10, 0x23, 0xa9, 0x38, 0x03, 0xcf, 0x20, 0x00, 0x31, 0x83, - 0xef, 0x09, 0x22, 0x22, 0xb8, 0xac, 0x32, 0xc0, 0x1a, 0x25, 0xc0, 0x9c, 0x18, 0x32, 0x92, 0x9a, - 0x90, 0xad, 0x63, 0x92, 0xac, 0x21, 0x12, 0x88, 0x10, 0x11, 0xf8, 0xae, 0x40, 0x34, 0x90, 0xd9, - 0xac, 0x40, 0x14, 0xaa, 0x18, 0x02, 0xa9, 0x19, 0x25, 0xa2, 0xce, 0x89, 0x21, 0x53, 0x14, 0xda, - 0x8b, 0x22, 0x91, 0xab, 0x38, 0x35, 0xc8, 0x0b, 0x26, 0xb8, 0x9a, 0xaa, 0x38, 0x46, 0x91, 0x9a, - 0x09, 0x43, 0xb1, 0x9c, 0x42, 0x90, 0xaa, 0x30, 0x43, 0x14, 0xfc, 0x9b, 0x33, 0x23, 0xb8, 0x9d, - 0x21, 0x91, 0x08, 0x20, 0x01, 0x41, 0xa0, 0x9b, 0x65, 0x02, 0xda, 0x9d, 0x21, 0x23, 0x80, 0x18, - 0xa0, 0x9b, 0x11, 0xa9, 0x42, 0xfb, 0x8a, 0x50, 0x15, 0x88, 0xa9, 0x9b, 0x10, 0x81, 0x51, 0x14, - 0xa9, 0x9a, 0x00, 0x51, 0x05, 0xda, 0x9a, 0x30, 0x25, 0xc9, 0x9b, 0x00, 0xb9, 0x10, 0x11, 0x36, - 0xc1, 0xac, 0x30, 0x83, 0x98, 0xfc, 0x8b, 0x45, 0x92, 0xab, 0x10, 0x00, 0x90, 0xab, 0x40, 0xa3, - 0xbf, 0x89, 0x51, 0x23, 0xa0, 0xbe, 0x08, 0x22, 0xa2, 0xbf, 0x18, 0x25, 0xc9, 0x29, 0x23, 0xd8, - 0x9a, 0x89, 0x42, 0xa1, 0xba, 0x9a, 0x18, 0x57, 0x83, 0xcb, 0x89, 0x99, 0x18, 0x53, 0x02, 0xda, - 0xac, 0x31, 0x34, 0x80, 0xda, 0x9d, 0x32, 0x91, 0x9c, 0x52, 0xa1, 0xbb, 0x29, 0x55, 0x91, 0xad, - 0x18, 0x01, 0x20, 0x81, 0xbd, 0x39, 0x36, 0xa8, 0xab, 0x30, 0xb1, 0xbf, 0x61, 0x23, 0xa9, 0xbc, - 0x0a, 0x52, 0x12, 0xb9, 0x9a, 0x18, 0x34, 0xb8, 0x18, 0x11, 0xda, 0x9c, 0x62, 0x44, 0x91, 0xbd, - 0x0a, 0x21, 0x02, 0xb9, 0x30, 0x25, 0xa8, 0xab, 0x21, 0xc0, 0xcc, 0x19, 0x73, 0x33, 0xa1, 0xbe, - 0x18, 0x11, 0x00, 0xaa, 0x09, 0x34, 0x13, 0x89, 0x00, 0xd8, 0xcc, 0x8a, 0x32, 0x34, 0x82, 0xcd, - 0x19, 0x01, 0x42, 0x15, 0xb9, 0x8a, 0x01, 0x40, 0x35, 0xc8, 0xac, 0x08, 0x21, 0x25, 0xa0, 0xcb, - 0x99, 0x89, 0x31, 0x37, 0x83, 0xaa, 0x00, 0x44, 0x23, 0xc0, 0xae, 0x09, 0x22, 0x00, 0x31, 0x22, - 0x02, 0xdd, 0x0a, 0x45, 0xb0, 0xad, 0x31, 0x02, 0x11, 0xa8, 0xbd, 0x29, 0x23, 0xa0, 0x8a, 0x71, - 0x04, 0xbc, 0x50, 0x23, 0xd9, 0x8b, 0x31, 0x14, 0xa8, 0x9c, 0xa8, 0x8a, 0x34, 0xc9, 0x1a, 0x15, - 0xb8, 0x0b, 0x25, 0x01, 0xc9, 0xad, 0x20, 0x11, 0x11, 0xf9, 0x0b, 0x44, 0x81, 0xab, 0x10, 0xd8, - 0xac, 0x48, 0x27, 0xb8, 0x9c, 0x11, 0x11, 0x08, 0xa0, 0xbc, 0x0a, 0x11, 0x13, 0x21, 0x36, 0xf9, - 0x9e, 0x30, 0x12, 0xb9, 0xbb, 0x28, 0x43, 0x81, 0x9a, 0x08, 0x01, 0xda, 0x0b, 0x52, 0x04, 0xec, - 0x0b, 0x44, 0x02, 0xb9, 0xad, 0x20, 0x34, 0xb0, 0xac, 0x09, 0x00, 0x01, 0x42, 0x14, 0xd8, 0xad, - 0x1a, 0x53, 0x01, 0xa9, 0x9a, 0x18, 0x34, 0xa0, 0x0c, 0x11, 0xca, 0x1a, 0x53, 0x14, 0xa0, 0xbf, - 0x0a, 0x32, 0x23, 0xa9, 0xac, 0x30, 0x23, 0xd9, 0xac, 0x8a, 0x42, 0x53, 0x24, 0x88, 0xa9, 0xdb, - 0xab, 0x41, 0x14, 0x80, 0x01, 0xa9, 0x48, 0x03, 0xda, 0xbc, 0xaa, 0x68, 0x36, 0x81, 0x99, 0xb9, - 0x0b, 0x43, 0xa1, 0x0a, 0x03, 0x9b, 0x41, 0x24, 0x46, 0xd0, 0x9e, 0x11, 0x01, 0x00, 0x91, 0xdb, - 0x09, 0x10, 0x34, 0xb0, 0x58, 0x04, 0xbd, 0x30, 0x04, 0xaa, 0x28, 0x12, 0x80, 0x0a, 0x43, 0xf8, - 0x9d, 0x20, 0x90, 0x18, 0x03, 0x18, 0x55, 0x02, 0x98, 0xdb, 0x09, 0x11, 0x21, 0x34, 0xfa, 0x1a, - 0x33, 0xc9, 0x19, 0x24, 0x98, 0xab, 0x62, 0x82, 0xba, 0x19, 0x02, 0xba, 0x2a, 0x15, 0xa8, 0x9a, - 0x00, 0x41, 0x46, 0x92, 0xcc, 0x29, 0x37, 0x92, 0xdb, 0x8b, 0x31, 0x12, 0xca, 0x9a, 0x00, 0xa8, - 0x0b, 0x65, 0x24, 0xc8, 0xbc, 0x18, 0x43, 0x82, 0xdb, 0x8b, 0x41, 0x11, 0x98, 0x08, 0x11, 0xfa, - 0x9d, 0x31, 0x14, 0xb8, 0xab, 0x28, 0x35, 0xa1, 0xbd, 0x8b, 0x31, 0x01, 0x89, 0x10, 0xa8, 0x9c, - 0x41, 0x24, 0x91, 0xff, 0x8a, 0x20, 0x24, 0xa0, 0xbb, 0x8b, 0x42, 0x03, 0x09, 0x91, 0xcd, 0xab, - 0x10, 0x63, 0x25, 0xc8, 0x9b, 0x18, 0x21, 0x12, 0xfb, 0x8b, 0x20, 0x21, 0x24, 0xda, 0x8a, 0x88, - 0x19, 0x33, 0xca, 0x30, 0xc2, 0x0c, 0x13, 0xca, 0x08, 0xc9, 0x48, 0x36, 0x01, 0x83, 0xff, 0x8a, - 0x32, 0x01, 0x08, 0x80, 0x99, 0xa9, 0x20, 0xd1, 0xad, 0x30, 0x92, 0x3b, 0x77, 0x81, 0xab, 0x9b, - 0x21, 0x03, 0x18, 0x22, 0xb8, 0x8c, 0x32, 0x03, 0xb9, 0xdf, 0x8a, 0x42, 0x14, 0x88, 0x10, 0xb9, - 0x9d, 0x30, 0x13, 0x90, 0x88, 0xc9, 0x9c, 0x72, 0x25, 0xb8, 0x8d, 0x62, 0x92, 0xaa, 0x9a, 0x00, - 0x01, 0x11, 0x90, 0x8a, 0x18, 0x65, 0xa1, 0x8a, 0x02, 0xdc, 0x38, 0x36, 0x02, 0x00, 0xa9, 0xab, - 0xeb, 0x09, 0x23, 0xa0, 0xaa, 0x0c, 0x67, 0x03, 0xb9, 0x8b, 0x32, 0x24, 0xb0, 0xac, 0x20, 0x33, - 0x91, 0xcd, 0x41, 0x84, 0xcb, 0x38, 0x25, 0x81, 0xba, 0x9c, 0x50, 0x23, 0xa0, 0xbd, 0x09, 0x11, - 0x00, 0x10, 0x24, 0xd9, 0xac, 0x40, 0x35, 0x81, 0x99, 0xab, 0x38, 0x15, 0xbb, 0x8a, 0xc9, 0x8b, - 0x22, 0x53, 0x13, 0xc9, 0x9b, 0x89, 0x72, 0x83, 0xbf, 0x1a, 0x33, 0x03, 0xa8, 0xbe, 0x18, 0x01, - 0x20, 0xa1, 0xbb, 0xaa, 0x9a, 0x74, 0x17, 0xa8, 0xba, 0xdb, 0x18, 0x24, 0x82, 0xe9, 0xaa, 0x21, - 0x12, 0x33, 0xd2, 0xbe, 0x08, 0x12, 0xa9, 0x09, 0x01, 0xb8, 0x09, 0x36, 0xa0, 0xbc, 0xbb, 0xbb, - 0x58, 0x37, 0xa2, 0xae, 0x28, 0x33, 0xa9, 0x9b, 0xba, 0x18, 0x33, 0x53, 0x24, 0xfb, 0xbd, 0x19, - 0x43, 0x12, 0xa0, 0x99, 0xca, 0x9c, 0x52, 0x82, 0xac, 0x19, 0x33, 0x32, 0x04, 0xda, 0xdd, 0x0b, - 0x63, 0x82, 0x88, 0x10, 0x98, 0xaa, 0x8a, 0x20, 0xa1, 0xaf, 0x10, 0x31, 0x55, 0x91, 0xbc, 0x9a, - 0x20, 0x43, 0x91, 0x89, 0x32, 0x11, 0x81, 0xce, 0x18, 0xa0, 0x3a, 0x37, 0xc8, 0x9b, 0x22, 0x11, - 0x21, 0x91, 0x89, 0x00, 0xfb, 0xcc, 0x58, 0x26, 0xc8, 0xab, 0x51, 0x34, 0x81, 0xbc, 0x99, 0x00, - 0x22, 0xb0, 0x0c, 0x44, 0x91, 0xbb, 0x08, 0x02, 0xc9, 0xac, 0x60, 0x35, 0x11, 0xa9, 0x0b, 0x25, - 0xa1, 0xbb, 0x08, 0xca, 0x1a, 0x43, 0x21, 0x83, 0xbe, 0x89, 0x73, 0x25, 0x90, 0xcb, 0x09, 0x33, - 0x12, 0x00, 0xba, 0xa9, 0x9a, 0x50, 0x55, 0x13, 0xdb, 0x0a, 0x53, 0x02, 0xa9, 0x8a, 0xb9, 0x39, - 0x17, 0xa8, 0xbb, 0x10, 0x81, 0x08, 0x44, 0x02, 0xa8, 0x71, 0x25, 0x98, 0x8a, 0xdb, 0xbb, 0x58, - 0x24, 0xa8, 0xaa, 0x89, 0x38, 0x45, 0x91, 0xcc, 0x8a, 0x38, 0x33, 0x88, 0x18, 0xd8, 0xbc, 0x88, - 0x41, 0x33, 0xd9, 0xae, 0x20, 0x42, 0x82, 0xac, 0x19, 0x92, 0x9b, 0x41, 0xd8, 0xbc, 0x08, 0x31, - 0x14, 0x00, 0x81, 0xfd, 0x0a, 0x33, 0xa8, 0xab, 0x9a, 0x28, 0x33, 0x44, 0x91, 0xef, 0x9a, 0x18, - 0x42, 0x03, 0xda, 0x8a, 0x00, 0x10, 0x10, 0xa8, 0x89, 0x10, 0x24, 0xd9, 0x38, 0xf2, 0xbe, 0x10, - 0x43, 0x13, 0x98, 0xbd, 0x99, 0x08, 0x32, 0xa8, 0x0c, 0x23, 0x88, 0x64, 0xa2, 0xce, 0x8a, 0x21, - 0x12, 0x98, 0x20, 0x26, 0x80, 0xb9, 0xbd, 0x29, 0x84, 0xca, 0x2a, 0x45, 0x82, 0xcc, 0xab, 0x41, - 0x15, 0xa8, 0xbb, 0x48, 0x14, 0x90, 0x08, 0x10, 0xb8, 0x8c, 0x31, 0x33, 0xb1, 0xbf, 0x8a, 0x42, - 0x15, 0x80, 0x88, 0x20, 0xc8, 0x9b, 0x88, 0xbc, 0x28, 0x23, 0x74, 0x27, 0xa0, 0xad, 0x18, 0x22, - 0x01, 0x9a, 0x09, 0x01, 0x31, 0x26, 0xc9, 0xbd, 0x8a, 0x99, 0x60, 0x25, 0x90, 0x9b, 0x20, 0x54, - 0x02, 0x98, 0xa9, 0xbc, 0x38, 0x24, 0xa8, 0x9b, 0x08, 0x20, 0x12, 0x32, 0x85, 0xcc, 0x51, 0x13, - 0x31, 0x14, 0xec, 0x89, 0x10, 0x33, 0x82, 0xcc, 0x0a, 0x55, 0x23, 0xc9, 0x9b, 0x31, 0x11, 0x20, - 0x23, 0xc0, 0xbf, 0x9b, 0x21, 0x01, 0x21, 0xc0, 0x8d, 0x72, 0x23, 0x00, 0xaa, 0x9a, 0x89, 0x20, - 0x02, 0x88, 0xa9, 0xce, 0x29, 0x27, 0xb9, 0x8a, 0x88, 0x08, 0x32, 0x13, 0xda, 0xbc, 0x29, 0x25, - 0x88, 0x81, 0xfd, 0x9c, 0x21, 0x14, 0x81, 0xaa, 0x9a, 0x41, 0x23, 0xc0, 0xbd, 0x9a, 0xa9, 0x1a, - 0x57, 0x01, 0xa9, 0xab, 0x89, 0x21, 0x02, 0xa9, 0xcb, 0x0a, 0x53, 0x23, 0xd9, 0xcf, 0x8a, 0x41, - 0x23, 0xa8, 0xbc, 0x9b, 0x31, 0xa1, 0x9d, 0x50, 0x33, 0xc1, 0xbc, 0x38, 0x03, 0xdd, 0x8a, 0x41, - 0x33, 0xa1, 0xbc, 0x09, 0x12, 0xc9, 0xbb, 0x1a, 0x41, 0x54, 0x02, 0x98, 0xdb, 0xbc, 0x0a, 0x31, - 0x36, 0xa0, 0xad, 0x31, 0x14, 0x99, 0x19, 0x90, 0xcb, 0x09, 0x63, 0x83, 0xba, 0xba, 0xad, 0x51, - 0x14, 0xca, 0xab, 0x30, 0x25, 0xa0, 0x09, 0x90, 0x0a, 0x67, 0x01, 0xa9, 0xbb, 0xab, 0x38, 0x37, - 0x22, 0xa8, 0x8b, 0x00, 0x21, 0x16, 0xfa, 0xbb, 0x18, 0x34, 0x33, 0x00, 0xdb, 0xab, 0x30, 0x15, - 0x98, 0x30, 0x01, 0xa9, 0x69, 0x37, 0xa0, 0xbd, 0x89, 0x01, 0x11, 0xb8, 0xaf, 0x30, 0x24, 0x22, - 0x81, 0xaa, 0x29, 0x15, 0x00, 0x08, 0x00, 0xea, 0xac, 0x61, 0x03, 0xbb, 0xab, 0x10, 0x64, 0x33, - 0x01, 0xcb, 0xab, 0x31, 0x14, 0x32, 0x91, 0xbd, 0x29, 0x33, 0x22, 0x91, 0xac, 0x40, 0x47, 0x23, - 0x80, 0x11, 0xd9, 0xbc, 0x0a, 0x22, 0xc8, 0xcc, 0x18, 0x54, 0x22, 0xa0, 0xaa, 0x18, 0x43, 0x13, - 0x98, 0xbb, 0xcb, 0x0a, 0x44, 0x02, 0x98, 0xfb, 0xab, 0x20, 0x24, 0x80, 0x88, 0xfa, 0x8b, 0x63, - 0x24, 0xb8, 0xbf, 0x0a, 0x32, 0x82, 0xba, 0x29, 0x43, 0x14, 0xba, 0x8c, 0x00, 0xdb, 0x8b, 0x31, - 0x26, 0x98, 0xbb, 0xbc, 0x2a, 0x36, 0xb8, 0x9b, 0x32, 0x93, 0xbd, 0x8a, 0x98, 0xba, 0x59, 0x37, - 0xb0, 0xcb, 0xba, 0x8a, 0x20, 0x92, 0xcf, 0x19, 0x35, 0x82, 0xa9, 0xa8, 0xde, 0x8a, 0x22, 0x43, - 0x12, 0xa8, 0xcc, 0x0a, 0x21, 0x90, 0xac, 0x99, 0x20, 0x37, 0x12, 0xca, 0xbb, 0x0a, 0x11, 0xa8, - 0x10, 0xf8, 0x8f, 0x43, 0x02, 0xaa, 0x98, 0xba, 0x51, 0x35, 0x01, 0xda, 0xad, 0x28, 0x43, 0x02, - 0xca, 0x9a, 0x98, 0x8a, 0x21, 0x22, 0xa8, 0xac, 0x62, 0x35, 0x23, 0xc0, 0xcf, 0x8a, 0x42, 0x02, - 0x98, 0x09, 0x20, 0x23, 0x91, 0xbc, 0x9b, 0x08, 0x21, 0x32, 0x15, 0xb0, 0xad, 0x38, 0x13, 0x08, - 0xc0, 0xff, 0x18, 0x34, 0x23, 0x82, 0xa9, 0xaa, 0x89, 0x34, 0xa1, 0xef, 0x8b, 0x20, 0x33, 0x82, - 0xaa, 0x89, 0x32, 0x12, 0x72, 0x36, 0x81, 0xcb, 0x99, 0x20, 0x21, 0xd8, 0xbc, 0x10, 0x44, 0x14, - 0xb9, 0x8b, 0x20, 0x21, 0x42, 0x15, 0xb8, 0x9b, 0x52, 0x15, 0xb9, 0xab, 0x0b, 0x53, 0x23, 0x53, - 0x36, 0x91, 0xad, 0x29, 0x24, 0x81, 0xbd, 0xab, 0x10, 0x43, 0x12, 0xca, 0x0a, 0x43, 0x01, 0x09, - 0x42, 0xa2, 0xbd, 0x28, 0x34, 0x01, 0x98, 0xdc, 0x8a, 0x22, 0x92, 0xdc, 0x09, 0x11, 0x21, 0x35, - 0x82, 0xeb, 0xcb, 0x89, 0x18, 0x81, 0x88, 0x08, 0x52, 0x15, 0xe9, 0x8b, 0x18, 0x10, 0x33, 0xa1, - 0xdd, 0x99, 0x98, 0x88, 0x30, 0x04, 0xfa, 0x8a, 0x41, 0x02, 0xc9, 0xbd, 0x8a, 0x20, 0x35, 0x33, - 0xc8, 0xbd, 0x8b, 0x08, 0x88, 0xaa, 0x30, 0x82, 0x0a, 0x55, 0xb1, 0xef, 0x8a, 0x11, 0x22, 0x02, - 0xca, 0x9a, 0x30, 0x16, 0xc8, 0xbb, 0x8a, 0x18, 0x34, 0x23, 0x81, 0xea, 0xbd, 0x19, 0x44, 0x13, - 0xdb, 0xac, 0x18, 0x32, 0x01, 0xa9, 0xad, 0x38, 0x44, 0x91, 0xbb, 0x08, 0xa9, 0x40, 0x36, 0x11, - 0xa8, 0xcc, 0x99, 0x88, 0xb9, 0x9b, 0x9a, 0x74, 0x22, 0x33, 0x92, 0xde, 0x8b, 0x30, 0x33, 0xb8, - 0xad, 0x10, 0x41, 0x45, 0x90, 0xab, 0x09, 0x98, 0x18, 0x33, 0x24, 0xa2, 0xbe, 0x38, 0x25, 0x91, - 0xdd, 0xab, 0x28, 0x32, 0x44, 0x24, 0xa8, 0x8b, 0x52, 0x14, 0xca, 0x9b, 0x20, 0x01, 0x98, 0xba, - 0xad, 0x09, 0x11, 0x10, 0x76, 0x24, 0xb8, 0x9c, 0x42, 0x23, 0xa0, 0xcc, 0x8b, 0x42, 0x23, 0x90, - 0xbb, 0x9a, 0x00, 0x28, 0x56, 0x12, 0x99, 0x1a, 0x22, 0x43, 0x83, 0xde, 0x9b, 0x20, 0x23, 0x21, - 0x34, 0x01, 0x30, 0x36, 0x23, 0xa0, 0xbc, 0xbc, 0x28, 0x13, 0xa0, 0xce, 0x1a, 0x54, 0x01, 0x90, - 0x98, 0x88, 0x10, 0x10, 0x55, 0x13, 0xb9, 0x28, 0x13, 0xfb, 0x9e, 0x89, 0x80, 0x32, 0x26, 0x91, - 0xbb, 0x9b, 0x20, 0x12, 0x90, 0xec, 0xab, 0x30, 0x04, 0x10, 0xc8, 0xbc, 0x0b, 0x73, 0x34, 0x90, - 0xbc, 0xac, 0x0a, 0x63, 0x91, 0xbb, 0x38, 0x33, 0x80, 0xfb, 0xcb, 0x9a, 0x20, 0x34, 0x12, 0x10, - 0xea, 0xbc, 0x08, 0x23, 0x92, 0xde, 0x9b, 0x41, 0x24, 0x80, 0xeb, 0x9b, 0x08, 0x10, 0x31, 0x82, - 0xca, 0x9b, 0x31, 0x23, 0xb9, 0xcd, 0xab, 0x18, 0x44, 0x80, 0xa9, 0xac, 0x8a, 0x62, 0x34, 0x90, - 0xcd, 0x9b, 0x20, 0x23, 0xb8, 0xbf, 0x28, 0x35, 0x90, 0xbb, 0x9a, 0xcb, 0x0a, 0x57, 0x13, 0xa8, - 0x18, 0xa8, 0x9a, 0x20, 0xc1, 0xcd, 0x9b, 0x00, 0x73, 0x23, 0xa0, 0xcc, 0x0a, 0x43, 0x81, 0xbc, - 0x89, 0x21, 0x42, 0x13, 0x99, 0x28, 0xb0, 0xdf, 0x18, 0x33, 0x82, 0x9a, 0x10, 0x55, 0x14, 0xd9, - 0xad, 0x09, 0x31, 0x02, 0x98, 0x89, 0x98, 0x40, 0x36, 0x13, 0x98, 0xaa, 0x0a, 0x44, 0x13, 0xdb, - 0xcc, 0xaa, 0x18, 0x32, 0x04, 0x80, 0x80, 0x08, 0x72, 0x34, 0x90, 0xbc, 0x39, 0x27, 0x90, 0x88, - 0xa8, 0xaa, 0x08, 0x21, 0x01, 0xa9, 0x71, 0x35, 0x12, 0x24, 0xc8, 0x9c, 0x08, 0x88, 0x11, 0x98, - 0x9b, 0x61, 0x46, 0x23, 0x10, 0x11, 0x08, 0x51, 0x82, 0xdc, 0x9a, 0x18, 0x43, 0x12, 0x88, 0xa0, - 0xcf, 0x8a, 0x42, 0x33, 0x03, 0xba, 0x29, 0x55, 0x02, 0xc9, 0xac, 0x0a, 0x32, 0x23, 0x80, 0xab, - 0x00, 0xc9, 0x19, 0x73, 0x83, 0xeb, 0x9a, 0x21, 0x02, 0xea, 0xcc, 0x89, 0x63, 0x23, 0x91, 0xda, - 0xab, 0x09, 0x22, 0x14, 0xa0, 0xac, 0x89, 0x42, 0x33, 0xe8, 0xbe, 0x0a, 0x11, 0x01, 0x42, 0x03, - 0xec, 0x8a, 0x20, 0x01, 0xba, 0x9a, 0x18, 0x32, 0x33, 0xfa, 0xae, 0x89, 0x80, 0x00, 0x80, 0xd9, - 0x9c, 0x41, 0x02, 0x9a, 0x8a, 0x99, 0x88, 0x00, 0xb9, 0x98, 0xfe, 0xbc, 0x28, 0x47, 0x12, 0xda, - 0x9b, 0x19, 0x32, 0x81, 0xba, 0x8b, 0x42, 0x02, 0xbb, 0xa9, 0xfa, 0xdb, 0x8a, 0x61, 0x33, 0x91, - 0xa9, 0x28, 0x36, 0x91, 0xcc, 0xab, 0x99, 0x40, 0x14, 0xa9, 0x89, 0x80, 0x11, 0x32, 0xb8, 0xff, - 0x9c, 0x40, 0x33, 0x01, 0x89, 0xba, 0xcb, 0x18, 0x44, 0x80, 0x9a, 0x0a, 0x51, 0x45, 0x02, 0xaa, - 0xba, 0xab, 0x41, 0x03, 0xb8, 0xcd, 0x8a, 0x32, 0x23, 0x00, 0x35, 0x12, 0x54, 0x24, 0x91, 0xca, - 0x9b, 0xa9, 0x09, 0x11, 0xc9, 0xae, 0x28, 0x35, 0x13, 0xca, 0x9c, 0x42, 0x35, 0x12, 0x98, 0x20, - 0xa8, 0x9b, 0x01, 0xc0, 0xaf, 0x28, 0x88, 0x73, 0x26, 0x91, 0xba, 0x39, 0x25, 0x02, 0xcb, 0xbb, - 0x9b, 0x72, 0x22, 0x01, 0x10, 0x10, 0x21, 0x45, 0x91, 0x0a, 0x11, 0x00, 0x30, 0x47, 0xb0, 0xbd, - 0x08, 0x11, 0x00, 0x31, 0xb1, 0xaf, 0x61, 0x34, 0x90, 0xbb, 0x89, 0x20, 0x43, 0x13, 0xd9, 0xcb, - 0x89, 0x30, 0x44, 0x02, 0xdb, 0x9a, 0x21, 0x11, 0x90, 0xbc, 0xbc, 0x0a, 0x32, 0x45, 0x13, 0xd8, - 0xbc, 0x09, 0x02, 0xa8, 0xbc, 0x30, 0x36, 0x01, 0xc9, 0xcb, 0x99, 0x90, 0xaa, 0x60, 0x12, 0xc9, - 0xba, 0x1a, 0x34, 0xc0, 0xce, 0x8a, 0x53, 0x03, 0xa8, 0xbc, 0xa9, 0x89, 0x32, 0x81, 0xd9, 0xcd, - 0x9a, 0x89, 0x41, 0x14, 0xca, 0x9b, 0x31, 0x82, 0xb8, 0xce, 0x9a, 0x00, 0x20, 0x32, 0xa2, 0xdd, - 0x9b, 0x20, 0x33, 0xb0, 0xce, 0x09, 0x52, 0x33, 0xa8, 0xdd, 0xcb, 0x18, 0x01, 0x88, 0xa8, 0x9a, - 0x38, 0x67, 0x12, 0x91, 0xcb, 0x9c, 0x18, 0x31, 0x23, 0xc8, 0xab, 0x09, 0x11, 0x00, 0xfc, 0x9b, - 0x18, 0x43, 0x22, 0x11, 0xb0, 0xaf, 0x19, 0x11, 0xb8, 0xab, 0x08, 0x62, 0x45, 0x02, 0xb9, 0x9b, - 0x54, 0x13, 0x80, 0xa8, 0xbc, 0x8a, 0x80, 0xba, 0x8a, 0xec, 0x9b, 0x73, 0x27, 0x12, 0x88, 0x98, - 0x08, 0x42, 0x03, 0xdc, 0x9b, 0x20, 0x11, 0x98, 0xb8, 0xcd, 0x9b, 0x73, 0x24, 0x01, 0x98, 0x09, - 0x21, 0x24, 0x81, 0xbb, 0xcb, 0x9b, 0x30, 0x45, 0x92, 0xa9, 0x18, 0x75, 0x32, 0x81, 0xcb, 0x9a, - 0x31, 0x14, 0x81, 0xca, 0xac, 0x48, 0x36, 0x02, 0x88, 0x89, 0x31, 0x45, 0x34, 0x80, 0xaa, 0x9a, - 0x89, 0x31, 0x33, 0xb9, 0xbf, 0x8b, 0x55, 0x23, 0x90, 0xba, 0x8b, 0x64, 0x02, 0x08, 0x80, 0x00, - 0x99, 0x90, 0xcc, 0x29, 0x12, 0x31, 0x43, 0x15, 0xfb, 0xad, 0x09, 0x41, 0x03, 0xa8, 0x9b, 0x18, - 0x98, 0x08, 0xd8, 0xac, 0xaa, 0x40, 0x57, 0x01, 0xca, 0xab, 0x9b, 0x31, 0x15, 0x90, 0x98, 0x89, - 0x88, 0xaa, 0xbb, 0xbb, 0xce, 0x09, 0x54, 0x12, 0xc8, 0xac, 0x09, 0x41, 0x13, 0xfb, 0xac, 0x89, - 0x10, 0x12, 0xb0, 0xae, 0x89, 0x20, 0x11, 0x80, 0xca, 0xcf, 0x8a, 0x52, 0x12, 0x89, 0xba, 0xac, - 0x19, 0x24, 0xa0, 0xae, 0x0a, 0x20, 0x24, 0x24, 0xa0, 0xab, 0xcb, 0xbb, 0x9a, 0xa8, 0xdb, 0x1a, - 0x46, 0x02, 0x99, 0xaa, 0xa9, 0x48, 0x37, 0xa0, 0x9a, 0x10, 0x14, 0x98, 0x08, 0xfb, 0xcd, 0x8a, - 0x31, 0x25, 0x81, 0xcb, 0x8a, 0x32, 0x04, 0xa9, 0xbb, 0x9b, 0x39, 0x47, 0x02, 0xa8, 0xdb, 0x8a, - 0x61, 0x34, 0x80, 0x9a, 0x20, 0x24, 0x90, 0xca, 0xce, 0x8a, 0x18, 0x33, 0x12, 0x81, 0xba, 0x29, - 0x57, 0x34, 0x80, 0xab, 0x88, 0x32, 0x24, 0xc9, 0xdd, 0x9a, 0x00, 0x32, 0x82, 0xaa, 0x8a, 0x64, - 0x24, 0x12, 0x80, 0xbb, 0x0b, 0x43, 0x12, 0x00, 0xfa, 0xab, 0x10, 0x73, 0x23, 0xa0, 0x9b, 0x31, - 0x37, 0x12, 0xb8, 0xac, 0x08, 0x88, 0x11, 0x12, 0x98, 0x28, 0x77, 0x33, 0x11, 0x21, 0x11, 0x53, - 0x82, 0xaa, 0xdb, 0x9a, 0x53, 0x14, 0x00, 0x88, 0xdd, 0x8a, 0x32, 0x44, 0x02, 0xa9, 0x9a, 0x42, - 0x25, 0x98, 0xbc, 0x0a, 0x11, 0x43, 0x23, 0xc9, 0xbc, 0x8a, 0x00, 0x30, 0x47, 0xa0, 0xbc, 0x29, - 0x03, 0xda, 0xaa, 0xaa, 0x52, 0x35, 0x02, 0xea, 0xab, 0x89, 0x10, 0x22, 0x90, 0xbc, 0x09, 0x33, - 0x35, 0x83, 0xef, 0xbb, 0x08, 0x32, 0x11, 0x81, 0xeb, 0x9a, 0x21, 0x24, 0xc9, 0xaa, 0xa9, 0x89, - 0x10, 0x02, 0xfc, 0x9b, 0x9a, 0x20, 0x12, 0xfa, 0xbc, 0x29, 0x02, 0xaa, 0x09, 0x21, 0x90, 0x28, - 0xe8, 0xbd, 0xcc, 0xbd, 0x19, 0x55, 0x03, 0xb8, 0x9c, 0x08, 0x13, 0x81, 0xca, 0xac, 0x0a, 0x21, - 0x11, 0x90, 0xdc, 0xbd, 0x8a, 0x53, 0x14, 0x90, 0x99, 0x20, 0x36, 0x81, 0xcb, 0xab, 0xbb, 0x29, - 0x25, 0x80, 0x99, 0xaa, 0x19, 0x44, 0x01, 0xfd, 0xbb, 0x48, 0x26, 0x02, 0xb8, 0xbb, 0xab, 0x38, - 0x35, 0x01, 0xa9, 0x08, 0x63, 0x36, 0x81, 0xbb, 0xaa, 0x9b, 0x32, 0x04, 0xb9, 0xbf, 0x9b, 0x42, - 0x25, 0x01, 0x00, 0x00, 0x63, 0x34, 0x82, 0xc9, 0xab, 0x99, 0x08, 0x80, 0xdb, 0xbc, 0x20, 0x44, - 0x23, 0x98, 0x9a, 0x52, 0x44, 0x23, 0xa0, 0x18, 0x91, 0xbb, 0x18, 0xb1, 0xcf, 0x18, 0x22, 0x66, - 0x02, 0x01, 0x44, 0x7d, 0x0a, 0x02, 0xd0, 0x03, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x9f, 0x35, 0x90, 0xbc, 0xa9, 0x8a, 0x10, 0x62, 0x55, 0x33, 0x31, 0x54, 0x33, 0x22, 0x63, 0x44, - 0x23, 0x32, 0x43, 0x34, 0x35, 0x34, 0x34, 0x24, 0x23, 0x43, 0x43, 0x24, 0x33, 0x35, 0x34, 0x24, - 0x43, 0x33, 0x35, 0x33, 0x34, 0x34, 0x43, 0x43, 0x43, 0x24, 0x33, 0x53, 0x33, 0x34, 0x33, 0x44, - 0x43, 0x24, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x34, 0x24, 0x24, 0x33, 0x43, 0x33, 0x43, 0x33, - 0x15, 0x94, 0xff, 0x1f, 0x81, 0x08, 0x00, 0x90, 0xb8, 0x8b, 0x90, 0x38, 0xf9, 0x8d, 0x00, 0xbc, - 0x9b, 0x41, 0x92, 0xbb, 0xbc, 0xdc, 0xab, 0xa9, 0x99, 0x9a, 0xaa, 0xba, 0xba, 0xcb, 0xbb, 0xac, - 0x2d, 0x77, 0x12, 0xc8, 0xac, 0x20, 0x84, 0x0c, 0x12, 0x00, 0x08, 0x88, 0x80, 0xef, 0x89, 0x89, - 0x88, 0x88, 0x89, 0x89, 0x89, 0x99, 0x99, 0x9a, 0xaa, 0xaa, 0xab, 0xac, 0xbb, 0xbc, 0xbb, 0xbc, - 0xcb, 0xbb, 0xcb, 0x1b, 0x24, 0x33, 0x22, 0x54, 0x33, 0x81, 0x73, 0x25, 0x13, 0x34, 0x12, 0x20, - 0x26, 0x41, 0x33, 0x12, 0x73, 0x43, 0x02, 0x10, 0x34, 0x20, 0x34, 0x22, 0x34, 0x12, 0x11, 0x46, - 0x22, 0x22, 0x32, 0x32, 0x33, 0x34, 0x43, 0x33, 0x24, 0x24, 0x33, 0x24, 0x43, 0x32, 0x24, 0x33, - 0x34, 0x33, 0x34, 0x24, 0x33, 0x34, 0x43, 0x33, 0x43, 0x33, 0x84, 0x9b, 0x47, 0x90, 0xba, 0x1b, - 0x66, 0x23, 0xea, 0x39, 0x93, 0x8b, 0x80, 0x9a, 0x90, 0xbf, 0x19, 0x00, 0xa9, 0x30, 0xc2, 0xef, - 0x88, 0x80, 0x18, 0x98, 0xdb, 0x8c, 0xa8, 0x8c, 0x02, 0xbb, 0x08, 0x11, 0xe9, 0xbe, 0x0a, 0x12, - 0x00, 0xb8, 0xbf, 0x9a, 0xa8, 0xbb, 0x30, 0x04, 0xcb, 0x30, 0x84, 0xbf, 0x9b, 0x21, 0x34, 0xa1, - 0xce, 0x8a, 0x88, 0x09, 0x31, 0x02, 0xca, 0x29, 0x23, 0xc8, 0xad, 0x18, 0x34, 0x82, 0xcd, 0x9a, - 0x10, 0x22, 0x42, 0x13, 0xa0, 0x9a, 0x31, 0x24, 0xb8, 0x0c, 0x62, 0x02, 0xda, 0x9a, 0x41, 0x34, - 0x44, 0x12, 0x00, 0xa8, 0x89, 0x43, 0x23, 0x80, 0x88, 0x88, 0xdb, 0xab, 0x08, 0x66, 0x33, 0x24, - 0x11, 0x88, 0xaa, 0x30, 0x34, 0x22, 0x91, 0x88, 0x80, 0xbc, 0x8a, 0x62, 0x13, 0x51, 0x24, 0x22, - 0x82, 0x2a, 0x24, 0x22, 0xd9, 0x28, 0x82, 0x89, 0xb8, 0xef, 0x08, 0x89, 0x08, 0x31, 0x03, 0x1b, - 0x34, 0x82, 0xdb, 0x3b, 0x37, 0x21, 0x22, 0x34, 0x90, 0x61, 0x25, 0x80, 0x11, 0x98, 0x41, 0xa1, - 0x0c, 0x45, 0x22, 0x20, 0x37, 0x91, 0x29, 0x44, 0x12, 0x10, 0xa1, 0x9c, 0x98, 0x08, 0x43, 0x92, - 0x08, 0x01, 0xec, 0xac, 0x28, 0x45, 0x90, 0x08, 0xc9, 0xab, 0x98, 0x2a, 0x27, 0xaa, 0xa1, 0xbf, - 0xc8, 0xbe, 0x20, 0x02, 0xeb, 0x9a, 0xb9, 0x8a, 0xa9, 0x9d, 0x10, 0xca, 0xbc, 0x0a, 0xd0, 0xbd, - 0x88, 0x99, 0xa9, 0xce, 0x0b, 0x81, 0xcb, 0x9b, 0x9a, 0x88, 0xfb, 0x9f, 0x08, 0x98, 0x9a, 0x09, - 0xa8, 0xcc, 0x09, 0x12, 0xb8, 0xad, 0xaa, 0x9a, 0xaa, 0xca, 0xad, 0x08, 0x08, 0x32, 0xd2, 0xbf, - 0x19, 0xa8, 0xbc, 0x20, 0xa0, 0x8d, 0x34, 0x82, 0xbb, 0x09, 0x80, 0x21, 0xf8, 0x9e, 0x52, 0x03, - 0xaa, 0x19, 0x23, 0x12, 0x42, 0x34, 0x01, 0xde, 0x8a, 0x73, 0x12, 0x88, 0x40, 0x04, 0xea, 0x9b, - 0x20, 0x12, 0xca, 0x1a, 0x33, 0x91, 0xbb, 0x50, 0x04, 0xa9, 0x0a, 0xa0, 0xdf, 0xab, 0x42, 0x24, - 0xa8, 0xbb, 0x89, 0x01, 0x98, 0xbb, 0xce, 0x9b, 0x08, 0x00, 0xc9, 0xbe, 0x1a, 0x12, 0xe9, 0xbd, - 0x8b, 0x10, 0x81, 0xcc, 0xac, 0x99, 0x18, 0x01, 0xe9, 0xac, 0x8a, 0x30, 0x13, 0xa8, 0xab, 0x11, - 0x12, 0xeb, 0xce, 0xaa, 0x31, 0x22, 0xa0, 0xcc, 0xab, 0x30, 0x35, 0x02, 0xb8, 0xcb, 0xbb, 0xab, - 0x31, 0x37, 0x63, 0x33, 0x02, 0xca, 0x9a, 0x31, 0x47, 0x23, 0x80, 0x88, 0x89, 0x40, 0x55, 0x22, - 0x33, 0x14, 0x80, 0x00, 0x90, 0x61, 0x44, 0x32, 0x31, 0x02, 0xba, 0x40, 0x36, 0x43, 0x12, 0x11, - 0x11, 0x88, 0x40, 0x36, 0x24, 0x00, 0x10, 0x34, 0x01, 0x72, 0x34, 0x13, 0x11, 0x11, 0x80, 0x88, - 0x10, 0x66, 0x14, 0x90, 0x19, 0x01, 0x18, 0x63, 0x32, 0x22, 0xea, 0xab, 0x89, 0x89, 0x00, 0x62, - 0x13, 0x98, 0xa9, 0x18, 0xd0, 0x1a, 0x23, 0xc9, 0x9d, 0x99, 0xbb, 0xfb, 0xcc, 0x89, 0x90, 0x09, - 0x01, 0x99, 0xa9, 0x8a, 0x90, 0xef, 0xcb, 0x99, 0x89, 0xca, 0xba, 0xac, 0x99, 0x00, 0x20, 0x01, - 0xfb, 0xac, 0xaa, 0xbc, 0xab, 0x9a, 0x08, 0x00, 0x18, 0x81, 0xb9, 0x30, 0x04, 0xea, 0xac, 0x8a, - 0xca, 0xcc, 0x19, 0x34, 0x81, 0x8a, 0x20, 0x33, 0x41, 0x56, 0x34, 0x02, 0x88, 0x31, 0x03, 0x98, - 0x61, 0x44, 0x01, 0xa9, 0x1a, 0x45, 0x33, 0x34, 0x44, 0x23, 0x11, 0x41, 0x44, 0x02, 0x20, 0x53, - 0x23, 0xa0, 0x9a, 0x52, 0x44, 0x12, 0x43, 0x23, 0x90, 0x30, 0x35, 0x23, 0x08, 0x31, 0x36, 0x11, - 0x10, 0x62, 0x24, 0x22, 0x11, 0x11, 0x81, 0x99, 0x51, 0x44, 0x32, 0x33, 0x44, 0x34, 0x12, 0x11, - 0x23, 0x82, 0xaa, 0x48, 0x34, 0x01, 0x99, 0x31, 0x01, 0x03, 0x9a, 0x42, 0x67, 0x35, 0x21, 0x01, - 0x80, 0x28, 0x54, 0x13, 0xb9, 0x9c, 0x18, 0x54, 0x23, 0x88, 0x30, 0x45, 0x43, 0x12, 0x98, 0x39, - 0x37, 0x21, 0x00, 0x98, 0x40, 0x47, 0x23, 0x91, 0xca, 0x8a, 0x21, 0x02, 0xa8, 0x19, 0x64, 0x24, - 0x98, 0x99, 0x98, 0x73, 0x24, 0xa8, 0xdb, 0x9b, 0x41, 0x25, 0x81, 0x99, 0xa9, 0xa9, 0x00, 0xd8, - 0xce, 0x8a, 0x18, 0x02, 0xc9, 0x8a, 0x00, 0xa8, 0xdc, 0xbc, 0xa9, 0xcb, 0x18, 0x02, 0xdc, 0xac, - 0x89, 0x80, 0xc9, 0xbd, 0xbb, 0xca, 0xac, 0x09, 0x80, 0xa9, 0xa9, 0xdb, 0xce, 0xac, 0x8a, 0x10, - 0x80, 0xb9, 0xdb, 0xbb, 0xab, 0x30, 0x13, 0xfb, 0xbd, 0xbc, 0xab, 0x09, 0x21, 0x22, 0x82, 0xcb, - 0xcc, 0xac, 0x8b, 0x20, 0x33, 0x91, 0xde, 0xac, 0x9b, 0x20, 0x44, 0x13, 0xa8, 0xbc, 0x9c, 0x19, - 0x52, 0x34, 0x13, 0x80, 0xaa, 0xb9, 0xab, 0x71, 0x35, 0x24, 0x01, 0x99, 0xab, 0x18, 0x54, 0x22, - 0xb8, 0xbb, 0xab, 0x9a, 0x19, 0x77, 0x34, 0x01, 0x99, 0xbb, 0xbc, 0x0a, 0x43, 0x02, 0xfb, 0xac, - 0x18, 0x43, 0x11, 0x01, 0x90, 0xca, 0xcc, 0xab, 0x8a, 0x08, 0x11, 0x82, 0xfc, 0xbd, 0x9b, 0x88, - 0xa0, 0xba, 0xab, 0xdc, 0xbc, 0xaa, 0x88, 0xa9, 0xaa, 0x09, 0xa8, 0xcc, 0x9b, 0x88, 0xfb, 0xcb, - 0x9a, 0x89, 0xaa, 0xbc, 0xba, 0xbb, 0xba, 0xab, 0x31, 0x36, 0xa1, 0xdd, 0xcb, 0xbc, 0xad, 0x10, - 0x22, 0x22, 0x12, 0x12, 0x23, 0xc8, 0x8a, 0x71, 0x24, 0x11, 0x80, 0x1a, 0x64, 0x24, 0x54, 0x22, - 0x11, 0x22, 0x33, 0x13, 0x53, 0x34, 0x31, 0x34, 0x32, 0x23, 0x32, 0x63, 0x56, 0x02, 0x01, 0x21, - 0x53, 0x23, 0x43, 0x12, 0x98, 0x31, 0x53, 0x23, 0x33, 0x63, 0x54, 0x34, 0x12, 0x32, 0x33, 0x12, - 0x22, 0xa0, 0xbc, 0x8a, 0x72, 0x45, 0x23, 0x81, 0x20, 0x33, 0x12, 0x00, 0xba, 0xdc, 0x9b, 0x08, - 0xa9, 0x19, 0x10, 0x56, 0x22, 0xb0, 0xbf, 0x8a, 0x80, 0x90, 0xdc, 0xbc, 0x19, 0x01, 0xaa, 0x88, - 0xc9, 0xae, 0xab, 0x88, 0xda, 0xbc, 0x89, 0x11, 0xfa, 0xbf, 0x99, 0x89, 0x98, 0x88, 0x98, 0xcb, - 0x9b, 0x88, 0x80, 0xa9, 0xbc, 0xaa, 0xcb, 0xbf, 0xab, 0xaa, 0xaa, 0x9a, 0x80, 0x99, 0xcb, 0x9a, - 0x50, 0x33, 0xd9, 0x9b, 0x08, 0x90, 0x09, 0x53, 0x24, 0x81, 0x89, 0x88, 0x08, 0x90, 0x51, 0x47, - 0x24, 0x01, 0x00, 0x10, 0x73, 0x44, 0x43, 0x32, 0x23, 0x31, 0x33, 0x13, 0x22, 0x64, 0x35, 0x33, - 0x02, 0x00, 0x31, 0x54, 0x34, 0x25, 0x23, 0x31, 0x43, 0x22, 0x01, 0x31, 0x45, 0x33, 0x11, 0x98, - 0xb9, 0x0a, 0x56, 0x35, 0x14, 0x01, 0x10, 0x22, 0x32, 0x32, 0x44, 0x33, 0x12, 0x80, 0x20, 0x32, - 0x65, 0x44, 0x22, 0xb8, 0xac, 0x09, 0x43, 0x24, 0x42, 0x22, 0x90, 0xba, 0x9a, 0x89, 0x20, 0x46, - 0x43, 0x80, 0xab, 0x2a, 0x65, 0x23, 0x01, 0x88, 0xaa, 0xaa, 0x1b, 0x47, 0x24, 0x33, 0x33, 0x01, - 0xa9, 0x0a, 0x73, 0x36, 0x02, 0x90, 0x99, 0x08, 0x20, 0x64, 0x33, 0x81, 0xba, 0xcb, 0x9a, 0x21, - 0x55, 0x35, 0x13, 0xa8, 0xab, 0x88, 0x89, 0x61, 0x33, 0x81, 0x99, 0x88, 0x00, 0x41, 0x34, 0x81, - 0xfe, 0xbc, 0x9b, 0x00, 0x80, 0x08, 0x98, 0xba, 0xbe, 0xab, 0x89, 0x99, 0xda, 0xcc, 0xeb, 0xbc, - 0x9a, 0x88, 0xc9, 0xcb, 0xcb, 0xba, 0xaa, 0xab, 0xab, 0xb9, 0xcd, 0xab, 0xeb, 0xdc, 0xaa, 0x9a, - 0x9a, 0xab, 0xac, 0x8a, 0x10, 0xb8, 0xdd, 0xcb, 0xac, 0xab, 0x89, 0x89, 0x99, 0xaa, 0x8a, 0x99, - 0xde, 0xac, 0x18, 0x02, 0xe9, 0xbc, 0xbb, 0xbb, 0x09, 0x34, 0x04, 0xb9, 0xab, 0x52, 0x02, 0xda, - 0x09, 0x43, 0x33, 0x80, 0xaa, 0xab, 0x18, 0x64, 0x35, 0x03, 0x80, 0x62, 0x35, 0x02, 0xb9, 0xaa, - 0x08, 0x32, 0x13, 0x00, 0x31, 0x65, 0x44, 0x11, 0xba, 0xad, 0x88, 0xb9, 0xbe, 0xab, 0x30, 0x37, - 0x23, 0x11, 0x00, 0x98, 0x18, 0x90, 0xfc, 0xcc, 0xbb, 0x8a, 0x88, 0xa9, 0xba, 0x9a, 0xcb, 0xde, - 0xbc, 0xbc, 0xbb, 0xaa, 0x99, 0xbb, 0xbe, 0xbb, 0x9a, 0xa9, 0xcb, 0xba, 0xdc, 0xcb, 0x9a, 0x89, - 0x99, 0xcb, 0xcd, 0xdb, 0xba, 0x9b, 0x89, 0x18, 0x21, 0x12, 0xc9, 0xcd, 0xac, 0x99, 0xa9, 0xcb, - 0xcc, 0xaa, 0x99, 0x08, 0x42, 0x44, 0x12, 0x11, 0x91, 0xca, 0xcb, 0x9a, 0x30, 0x34, 0x33, 0x54, - 0x44, 0x32, 0x33, 0x43, 0x33, 0x22, 0x43, 0x13, 0x81, 0x42, 0x55, 0x34, 0x12, 0x21, 0x42, 0x43, - 0x43, 0x43, 0x33, 0x12, 0x31, 0x44, 0x33, 0x24, 0x53, 0x44, 0x23, 0x11, 0x31, 0x34, 0x34, 0x53, - 0x43, 0x22, 0x11, 0x10, 0x21, 0x11, 0x53, 0x45, 0x24, 0x11, 0x00, 0x11, 0x11, 0x33, 0x35, 0x12, - 0xa0, 0xcb, 0xbb, 0xdb, 0x8a, 0x42, 0x34, 0x80, 0xba, 0x9a, 0x20, 0x55, 0x34, 0x91, 0xec, 0xac, - 0x9b, 0x99, 0x9a, 0x99, 0xa8, 0xdd, 0xbc, 0xaa, 0x8a, 0x88, 0x99, 0xca, 0xcd, 0xbc, 0xba, 0x99, - 0x80, 0x98, 0xda, 0xcd, 0xcb, 0xab, 0x89, 0x08, 0x98, 0xba, 0xbe, 0xcb, 0xaa, 0x88, 0x10, 0x00, - 0xa8, 0xbb, 0xba, 0xaa, 0x40, 0x36, 0xb0, 0xdf, 0xab, 0x99, 0x08, 0x21, 0x43, 0x23, 0x00, 0x89, - 0x00, 0x22, 0x54, 0x45, 0x23, 0x80, 0x89, 0x42, 0x35, 0x14, 0x11, 0x10, 0x21, 0x52, 0x54, 0x34, - 0x33, 0x33, 0x34, 0x24, 0x12, 0x11, 0x34, 0x33, 0x12, 0x21, 0x54, 0x44, 0x24, 0x23, 0x02, 0x88, - 0x10, 0x53, 0x43, 0x22, 0x53, 0x43, 0x23, 0x11, 0x21, 0x32, 0x36, 0x25, 0x12, 0x10, 0x10, 0x44, - 0x34, 0x13, 0x81, 0x10, 0x32, 0x33, 0x33, 0x42, 0x63, 0x34, 0x24, 0x01, 0x88, 0x20, 0x43, 0x02, - 0xda, 0xaa, 0x08, 0x54, 0x44, 0x12, 0x00, 0x08, 0x20, 0x31, 0x22, 0x54, 0x44, 0x24, 0x11, 0x01, - 0x21, 0x31, 0x44, 0x34, 0x23, 0x21, 0x32, 0x25, 0x13, 0x88, 0x99, 0x21, 0x33, 0x43, 0x55, 0x43, - 0x22, 0x63, 0x44, 0x23, 0x01, 0x88, 0x80, 0xa8, 0xbb, 0x08, 0x22, 0x33, 0x56, 0x24, 0x91, 0xba, - 0x19, 0x81, 0xed, 0xbd, 0xaa, 0x88, 0x00, 0x00, 0xb8, 0xde, 0xbc, 0xaa, 0x99, 0xcb, 0xbc, 0xaa, - 0xeb, 0xcd, 0xab, 0xa9, 0xa8, 0xa9, 0xab, 0xdb, 0xbc, 0xac, 0xa9, 0xda, 0xbc, 0xbc, 0xbc, 0xcb, - 0xac, 0x9a, 0x09, 0x88, 0x99, 0xdb, 0xbc, 0xac, 0xaa, 0xa9, 0xcb, 0xbc, 0xbb, 0xbb, 0xab, 0x9b, - 0x99, 0xca, 0xdd, 0xbc, 0xbe, 0xbb, 0x9a, 0x08, 0x11, 0x01, 0x88, 0xb9, 0xcd, 0xbb, 0x89, 0x98, - 0xb9, 0xbb, 0xdb, 0xbb, 0x1a, 0x46, 0x34, 0x22, 0x01, 0x10, 0x42, 0x33, 0x53, 0x54, 0x24, 0x12, - 0x98, 0xba, 0xab, 0x89, 0x30, 0x35, 0x22, 0x62, 0x35, 0x33, 0x11, 0x80, 0xfa, 0xcd, 0xac, 0x88, - 0x31, 0x44, 0x44, 0x43, 0x11, 0x98, 0xaa, 0xbb, 0xbc, 0xab, 0x99, 0xeb, 0xcc, 0xaa, 0x10, 0x32, - 0x22, 0x90, 0xec, 0xbd, 0xbd, 0xab, 0xaa, 0x99, 0x89, 0xa9, 0xcb, 0xcc, 0x8a, 0x18, 0x80, 0xca, - 0xcc, 0xcb, 0xbb, 0xab, 0x9a, 0xa9, 0xbb, 0xbd, 0xbc, 0xac, 0x9a, 0x18, 0x02, 0xc9, 0xcf, 0xbc, - 0xaa, 0x8a, 0x80, 0x90, 0xc9, 0xba, 0x9a, 0x89, 0x20, 0x44, 0x25, 0x01, 0xb9, 0xab, 0x39, 0x65, - 0x34, 0x14, 0x01, 0x00, 0x31, 0x45, 0x34, 0x33, 0x23, 0x33, 0x22, 0x22, 0x43, 0x55, 0x43, 0x23, - 0x11, 0x21, 0x64, 0x44, 0x33, 0x23, 0x12, 0x11, 0x23, 0x34, 0x34, 0x34, 0x43, 0x34, 0x33, 0x43, - 0x33, 0x46, 0x33, 0x33, 0x33, 0x33, 0x44, 0x43, 0x33, 0x13, 0x91, 0x88, 0x32, 0x35, 0x34, 0x34, - 0x33, 0x12, 0x88, 0x88, 0x52, 0x43, 0x33, 0x01, 0xa8, 0x09, 0x65, 0x35, 0x22, 0x98, 0xda, 0xcc, - 0xac, 0x9b, 0x09, 0x88, 0x99, 0x99, 0xba, 0xbd, 0xac, 0xaa, 0xbb, 0xbf, 0xad, 0xaa, 0xaa, 0xaa, - 0xdb, 0xcc, 0xbd, 0xac, 0x9b, 0x99, 0xa9, 0x99, 0x9a, 0xaa, 0xbc, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, - 0xbd, 0xac, 0xab, 0xa9, 0x98, 0x99, 0xaa, 0xcb, 0xcb, 0xac, 0xa9, 0x89, 0x30, 0x44, 0x22, 0x98, - 0xbb, 0xdb, 0xab, 0x89, 0x31, 0x44, 0x34, 0x25, 0x23, 0x22, 0x44, 0x45, 0x33, 0x23, 0x33, 0x44, - 0x44, 0x24, 0x33, 0x33, 0x24, 0x33, 0x33, 0x34, 0x34, 0x34, 0x24, 0x23, 0x22, 0x33, 0x45, 0x34, - 0x33, 0x43, 0x32, 0x43, 0x42, 0x42, 0x33, 0x24, 0x12, 0x22, 0x22, 0x33, 0x64, 0x53, 0x33, 0x24, - 0x23, 0x23, 0x23, 0x11, 0x33, 0x44, 0x33, 0x33, 0x44, 0x24, 0x33, 0x53, 0x33, 0x12, 0xa8, 0xaa, - 0x9a, 0x8a, 0x20, 0x45, 0x14, 0x01, 0x28, 0x53, 0x44, 0x43, 0x34, 0x14, 0x11, 0x00, 0x20, 0x42, - 0x33, 0x44, 0x43, 0x22, 0x10, 0x20, 0x43, 0x45, 0x43, 0x32, 0x01, 0x88, 0x88, 0x10, 0x42, 0x54, - 0x35, 0x44, 0x32, 0x21, 0x01, 0x01, 0x01, 0x80, 0xca, 0xbb, 0x18, 0x65, 0x34, 0x34, 0x23, 0x12, - 0xa0, 0xca, 0xbb, 0x9b, 0x42, 0x24, 0xd8, 0xcc, 0x9b, 0x18, 0x12, 0x90, 0xec, 0xcc, 0xbc, 0xaa, - 0x8a, 0x10, 0x31, 0x23, 0xc8, 0xef, 0xcb, 0x9b, 0x8a, 0x98, 0xa9, 0xca, 0xbc, 0xdb, 0xba, 0xba, - 0xbb, 0xab, 0xbb, 0xcd, 0xcb, 0xab, 0x08, 0x80, 0xda, 0xce, 0xcb, 0xab, 0xab, 0xa9, 0x89, 0x9a, - 0xaa, 0xa9, 0xca, 0xdb, 0xba, 0xba, 0xde, 0xbc, 0xad, 0x9a, 0x08, 0x20, 0x11, 0x90, 0xcb, 0xab, - 0x99, 0xaa, 0xbd, 0xac, 0xbb, 0xab, 0x19, 0x54, 0x35, 0x34, 0x33, 0x12, 0x80, 0x88, 0x32, 0x35, - 0x81, 0xcc, 0xbc, 0xaa, 0x18, 0x44, 0x35, 0x23, 0x12, 0x00, 0x10, 0x31, 0x63, 0x23, 0x90, 0xcd, - 0xac, 0x08, 0x54, 0x44, 0x23, 0x11, 0x80, 0x88, 0x00, 0x80, 0xba, 0xcd, 0xdb, 0xbb, 0xbb, 0x99, - 0x80, 0xb8, 0xed, 0xbc, 0xbd, 0x9b, 0x8a, 0x98, 0xeb, 0xcd, 0xbb, 0xac, 0xa9, 0x89, 0x88, 0x99, - 0xca, 0xba, 0xcb, 0xcb, 0xba, 0xbb, 0xbd, 0xcd, 0xba, 0xaa, 0x99, 0xa9, 0xbb, 0xcd, 0xba, 0xbb, - 0xac, 0xcb, 0xbb, 0xbc, 0xbb, 0xbd, 0xac, 0x9a, 0x99, 0x99, 0x99, 0x09, 0x20, 0x63, 0x34, 0x24, - 0x02, 0x80, 0x98, 0xa9, 0xaa, 0x51, 0x57, 0x53, 0x33, 0x33, 0x33, 0x32, 0x22, 0x53, 0x53, 0x43, - 0x43, 0x33, 0x24, 0x23, 0x43, 0x53, 0x33, 0x33, 0x43, 0x32, 0x34, 0x44, 0x34, 0x35, 0x43, 0x33, - 0x33, 0x33, 0x43, 0x34, 0x44, 0x33, 0x43, 0x22, 0x23, 0x33, 0x34, 0x33, 0x22, 0x22, 0x43, 0x44, - 0x34, 0x35, 0x24, 0x23, 0x23, 0x11, 0x11, 0x22, 0x22, 0x23, 0x11, 0xa8, 0xcb, 0xcb, 0x8a, 0x41, - 0x34, 0x12, 0x99, 0xba, 0xbc, 0x9c, 0x20, 0x81, 0xff, 0xbc, 0xbd, 0xdb, 0xbb, 0xac, 0xa9, 0xba, - 0xcc, 0xbb, 0xac, 0xab, 0xab, 0xbb, 0xdc, 0xcb, 0xcb, 0xaa, 0xbb, 0xbc, 0xab, 0xbb, 0xcc, 0xbc, - 0xbb, 0xaa, 0x9b, 0xba, 0xcb, 0xbc, 0xad, 0xbb, 0xaa, 0xba, 0x99, 0x11, 0x02, 0xc9, 0xce, 0xbb, - 0xab, 0xab, 0xab, 0xaa, 0xbc, 0xab, 0x28, 0x44, 0x53, 0x44, 0x43, 0x23, 0x00, 0x00, 0x42, 0x34, - 0x35, 0x43, 0x23, 0x34, 0x44, 0x43, 0x33, 0x33, 0x32, 0x43, 0x43, 0x42, 0x43, 0x34, 0x33, 0x33, - 0x23, 0x32, 0x45, 0x44, 0x34, 0x33, 0x22, 0x11, 0x11, 0x22, 0x42, 0x34, 0x44, 0x43, 0x33, 0x43, - 0x34, 0x34, 0x34, 0x33, 0x13, 0x11, 0x00, 0x32, 0x45, 0x34, 0x43, 0x32, 0x22, 0x32, 0x22, 0x81, - 0x88, 0xaa, 0xaa, 0x89, 0x65, 0x45, 0x34, 0x24, 0x01, 0x88, 0x89, 0x28, 0x43, 0x34, 0x33, 0x23, - 0x22, 0x33, 0x44, 0x34, 0x24, 0x32, 0x21, 0x21, 0x53, 0x54, 0x44, 0x33, 0x22, 0x01, 0x08, 0x11, - 0x42, 0x43, 0x33, 0x22, 0x34, 0x45, 0x33, 0x34, 0x32, 0x21, 0x88, 0x09, 0x73, 0x45, 0x44, 0x22, - 0x01, 0x80, 0x99, 0x89, 0x99, 0xba, 0xbd, 0xac, 0x9b, 0x20, 0x46, 0x44, 0x23, 0x01, 0xda, 0xbc, - 0xbb, 0x9a, 0xaa, 0xcb, 0xcc, 0xab, 0x9b, 0x98, 0x80, 0x99, 0xdd, 0xcd, 0xbc, 0xbc, 0xba, 0xa9, - 0x99, 0xcb, 0xbc, 0xbb, 0xab, 0x9a, 0xaa, 0xeb, 0xcc, 0xdb, 0xbc, 0xbb, 0xbb, 0xbb, 0xba, 0x9a, - 0xba, 0xaa, 0xab, 0xdb, 0xdc, 0xcc, 0xcb, 0xbb, 0xac, 0xab, 0xbb, 0xbc, 0xab, 0xbb, 0xca, 0xba, - 0x9b, 0x8a, 0x99, 0xbb, 0xbc, 0xdb, 0xcb, 0x9b, 0x89, 0x88, 0x08, 0x53, 0x45, 0x22, 0x22, 0x42, - 0x23, 0x11, 0x00, 0xca, 0xde, 0xbb, 0x8b, 0x51, 0x45, 0x33, 0x23, 0x01, 0xa9, 0xa9, 0x30, 0x55, - 0x33, 0x14, 0x12, 0x00, 0x98, 0x28, 0x54, 0x34, 0x43, 0x32, 0x43, 0x43, 0x43, 0x12, 0xd9, 0xcd, - 0xbc, 0xab, 0xab, 0xab, 0x9a, 0x89, 0xaa, 0xbc, 0xbd, 0xcc, 0xcc, 0xcb, 0xdb, 0xcb, 0xbb, 0x9a, - 0x09, 0x88, 0x98, 0xa9, 0xcc, 0xdb, 0xbb, 0xbb, 0xbb, 0xba, 0xcc, 0xcc, 0xac, 0xbb, 0xcb, 0xba, - 0xcb, 0xcb, 0xba, 0xab, 0xbb, 0xcb, 0xaa, 0xbb, 0xdb, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x98, 0x98, - 0x98, 0x88, 0x08, 0x10, 0x20, 0x63, 0x55, 0x44, 0x33, 0x33, 0x53, 0x63, 0x33, 0x35, 0x32, 0x22, - 0x12, 0x22, 0x43, 0x43, 0x44, 0x33, 0x34, 0x42, 0x42, 0x43, 0x34, 0x35, 0x34, 0x43, 0x22, 0x32, - 0x43, 0x43, 0x33, 0x34, 0x33, 0x43, 0x43, 0x33, 0x34, 0x34, 0x43, 0x33, 0x43, 0x33, 0x35, 0x34, - 0x34, 0x22, 0x12, 0x12, 0x21, 0x33, 0x44, 0x33, 0x32, 0x12, 0x22, 0x44, 0x34, 0x45, 0x22, 0x02, - 0x98, 0xab, 0x09, 0x42, 0x25, 0x23, 0x01, 0x99, 0xbb, 0xcd, 0xbc, 0xbc, 0xac, 0xcb, 0xcb, 0xba, - 0xa9, 0x98, 0xba, 0xdd, 0xbc, 0xac, 0xab, 0xba, 0xcc, 0xdb, 0xcb, 0xba, 0xbb, 0xab, 0xaa, 0xbb, - 0xcc, 0xcb, 0xbb, 0xbb, 0x89, 0x89, 0xda, 0xdc, 0xbc, 0xab, 0x9b, 0x9a, 0x88, 0x98, 0xa8, 0xca, - 0xcb, 0xcb, 0xba, 0xcb, 0xcc, 0xcb, 0xab, 0x19, 0x52, 0x33, 0x33, 0x11, 0x98, 0x9a, 0x08, 0x43, - 0x43, 0x34, 0x33, 0x44, 0x63, 0x34, 0x35, 0x33, 0x23, 0x11, 0x20, 0x42, 0x45, 0x44, 0x32, 0x23, - 0x13, 0x32, 0x32, 0x44, 0x33, 0x43, 0x23, 0x22, 0x53, 0x34, 0x35, 0x33, 0x22, 0x22, 0x31, 0x45, - 0x44, 0x43, 0x43, 0x32, 0x32, 0x22, 0x33, 0x43, 0x33, 0x23, 0x22, 0x32, 0x63, 0x34, 0x44, 0x23, - 0x22, 0x10, 0x00, 0x11, 0x21, 0x52, 0x53, 0x33, 0x34, 0x24, 0x23, 0x13, 0x80, 0xa9, 0xa9, 0x18, - 0x54, 0x44, 0x44, 0x43, 0x33, 0x34, 0x33, 0x33, 0x22, 0x32, 0x12, 0x22, 0x21, 0x33, 0x32, 0x43, - 0x73, 0x46, 0x44, 0x34, 0x43, 0x12, 0x01, 0x00, 0x00, 0x31, 0x43, 0x33, 0x43, 0x23, 0x34, 0x45, - 0x43, 0x24, 0x12, 0x80, 0xb9, 0xbc, 0x9a, 0x10, 0x44, 0x43, 0x33, 0x22, 0x12, 0x11, 0x11, 0x01, - 0xc9, 0xde, 0xcc, 0xcb, 0xbb, 0xac, 0xac, 0xbb, 0xba, 0x9a, 0x80, 0x01, 0xa8, 0xcf, 0xcd, 0xbd, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, 0xbb, 0xcb, 0xcb, 0xba, 0xbb, 0xbc, 0xcc, 0xcb, 0xac, 0xbb, 0xab, - 0xcb, 0xba, 0xbd, 0xbb, 0xbc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, 0xbc, 0xcb, 0xcb, 0xbc, 0xcb, 0xbb, - 0xbb, 0xab, 0x89, 0x00, 0x01, 0x98, 0xca, 0xbc, 0xbc, 0xcb, 0xbc, 0xbc, 0xaa, 0x18, 0x42, 0x34, - 0x34, 0x32, 0x11, 0x98, 0xbb, 0xbb, 0x9a, 0x00, 0xc8, 0xbe, 0xab, 0x61, 0x45, 0x33, 0x24, 0x23, - 0x23, 0x11, 0x11, 0x73, 0x63, 0x32, 0x22, 0x80, 0x89, 0x41, 0x46, 0x33, 0x22, 0x11, 0x21, 0x32, - 0x33, 0x03, 0xfa, 0xdc, 0xcc, 0xcb, 0xab, 0xaa, 0x89, 0xba, 0xce, 0xbc, 0xbb, 0xab, 0x89, 0x99, - 0xdb, 0xbc, 0xbd, 0xbb, 0xbb, 0xaa, 0x99, 0xbb, 0xce, 0xbc, 0xbc, 0xac, 0xba, 0xdb, 0xbb, 0xcb, - 0xab, 0xab, 0xba, 0xcb, 0xdb, 0xba, 0xbc, 0xbb, 0xbc, 0xbb, 0xbc, 0xcc, 0xcb, 0xab, 0xaa, 0x08, - 0x80, 0xa9, 0xcb, 0xbb, 0x9a, 0x42, 0x45, 0x34, 0x33, 0x22, 0x00, 0x00, 0x21, 0x53, 0x33, 0x11, - 0x00, 0x10, 0x75, 0x54, 0x43, 0x24, 0x23, 0x22, 0x23, 0x53, 0x43, 0x43, 0x43, 0x32, 0x33, 0x34, - 0x35, 0x44, 0x32, 0x23, 0x32, 0x32, 0x44, 0x53, 0x34, 0x43, 0x32, 0x23, 0x33, 0x53, 0x43, 0x43, - 0x33, 0x33, 0x33, 0x43, 0x32, 0x43, 0x32, 0x33, 0x24, 0x33, 0x35, 0x36, 0x34, 0x34, 0x23, 0x11, - 0x00, 0x88, 0x88, 0x88, 0x08, 0x20, 0x44, 0x44, 0x43, 0x23, 0x12, 0xa8, 0xdc, 0xbc, 0xbc, 0x9a, - 0x99, 0x98, 0xa9, 0xba, 0xbc, 0xbe, 0xbd, 0xbd, 0xbc, 0xcb, 0xbb, 0xba, 0xac, 0xbb, 0xcb, 0xcb, - 0xbb, 0xcb, 0xbb, 0xbb, 0xbd, 0xbb, 0xcb, 0xba, 0xbb, 0xdc, 0xcb, 0xbb, 0xbc, 0xba, 0xaa, 0xaa, - 0xba, 0xac, 0xac, 0xcb, 0xba, 0xcb, 0xbb, 0xad, 0xac, 0x9a, 0x88, 0x22, 0x33, 0x12, 0xa8, 0xcc, - 0xac, 0x9b, 0x09, 0x43, 0x35, 0x35, 0x43, 0x43, 0x34, 0x34, 0x33, 0x43, 0x22, 0x32, 0x34, 0x34, - 0x44, 0x32, 0x43, 0x32, 0x23, 0x33, 0x44, 0x33, 0x33, 0x33, 0x43, 0x44, 0x63, 0x43, 0x43, 0x33, - 0x43, 0x33, 0x34, 0x33, 0x43, 0x32, 0x22, 0x11, 0x21, 0x53, 0x54, 0x34, 0x34, 0x33, 0x32, 0x33, - 0x23, 0x12, 0x02, 0x21, 0x31, 0x44, 0x32, 0x33, 0x53, 0x42, 0x32, 0x34, 0x34, 0x35, 0x32, 0x23, - 0x02, 0x10, 0x41, 0x44, 0x44, 0x32, 0x24, 0x33, 0x33, 0x43, 0x24, 0x24, 0x12, 0x81, 0x88, 0x0a, - 0x61, 0x54, 0x53, 0x32, 0x43, 0x32, 0x33, 0x33, 0x33, 0x33, 0x22, 0x00, 0x88, 0x30, 0x57, 0x35, - 0x34, 0x32, 0x21, 0x22, 0x53, 0x43, 0x24, 0x23, 0x23, 0x11, 0x98, 0xba, 0xac, 0x8a, 0x21, 0x43, - 0x34, 0x35, 0x45, 0x22, 0x81, 0xda, 0xcc, 0xbb, 0xbb, 0xcb, 0xba, 0xac, 0xab, 0xba, 0xaa, 0xcb, - 0xcd, 0xcd, 0xcc, 0xdb, 0xbb, 0xac, 0x9a, 0x9a, 0xa9, 0xba, 0xbb, 0xbc, 0xbb, 0xbc, 0xdb, 0xdb, - 0xcb, 0xcb, 0xcb, 0xba, 0xba, 0xbc, 0xcb, 0xac, 0xbb, 0xba, 0xba, 0xbc, 0xcc, 0xdb, 0xbb, 0xcb, - 0xaa, 0xaa, 0xaa, 0xcb, 0xbc, 0xbc, 0xaa, 0x99, 0x00, 0x00, 0x98, 0xdb, 0xbc, 0xbc, 0x9a, 0x08, - 0x01, 0x98, 0xeb, 0xba, 0x09, 0x51, 0x43, 0x22, 0x80, 0xa9, 0xaa, 0xaa, 0x09, 0x31, 0x23, 0x91, - 0x9a, 0x73, 0x77, 0x34, 0x24, 0x02, 0x80, 0x09, 0x52, 0x45, 0x34, 0x33, 0x23, 0x12, 0x21, 0x31, - 0x53, 0x23, 0x02, 0xfb, 0xcc, 0xbb, 0x9b, 0x89, 0x90, 0xb9, 0xdd, 0xcb, 0xac, 0xbb, 0xaa, 0x99, - 0xaa, 0xcb, 0xbc, 0xbc, 0xbc, 0xbc, 0xcd, 0xcc, 0xba, 0xba, 0xa9, 0xa9, 0xa9, 0xba, 0xca, 0xcb, - 0xcb, 0xbc, 0xbc, 0xbc, 0xbc, 0xdb, 0xba, 0xcb, 0xbb, 0xcc, 0xba, 0xab, 0xbb, 0xaa, 0xba, 0xaa, - 0xbb, 0xbb, 0xaa, 0xbb, 0xcd, 0xcb, 0xab, 0x9a, 0x08, 0x42, 0x34, 0x24, 0x01, 0xa9, 0xcc, 0xab, - 0x08, 0x31, 0x54, 0x63, 0x44, 0x53, 0x43, 0x23, 0x32, 0x21, 0x01, 0x11, 0x31, 0x44, 0x45, 0x53, - 0x33, 0x43, 0x43, 0x33, 0x34, 0x34, 0x32, 0x43, 0x33, 0x53, 0x33, 0x35, 0x43, 0x33, 0x24, 0x23, - 0x43, 0x42, 0x33, 0x53, 0x32, 0x24, 0x33, 0x24, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x35, 0x43, - 0x33, 0x22, 0x00, 0x08, 0x10, 0x32, 0x34, 0x34, 0x43, 0x43, 0x34, 0x33, 0x33, 0x12, 0x98, 0xdc, - 0xcc, 0xab, 0x9a, 0x08, 0x88, 0xb8, 0xbd, 0xbd, 0xcc, 0xcb, 0xcc, 0xbb, 0xbb, 0xac, 0xbb, 0xba, - 0xbb, 0xcb, 0xcb, 0xbc, 0xbc, 0xbb, 0xbb, 0xcd, 0xcb, 0xbc, 0xbb, 0xbb, 0xaa, 0xaa, 0xba, 0xba, - 0xcc, 0xdb, 0xbb, 0xbc, 0xac, 0xbb, 0xbc, 0xbb, 0xaa, 0x8a, 0x88, 0xa8, 0xdb, 0xcc, 0xac, 0xab, - 0xab, 0xaa, 0x99, 0x08, 0x31, 0x64, 0x53, 0x34, 0x43, 0x32, 0x23, 0x23, 0x33, 0x43, 0x33, 0x32, - 0x43, 0x43, 0x53, 0x44, 0x43, 0x34, 0x24, 0x33, 0x33, 0x34, 0x33, 0x43, 0x22, 0x22, 0x43, 0x44, - 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x43, 0x42, 0x33, 0x35, 0x43, 0x33, 0x43, 0x43, 0x34, 0x32, - 0x24, 0x22, 0x12, 0x12, 0x22, 0x32, 0x24, 0x33, 0x23, 0x32, 0x44, 0x45, 0x34, 0x34, 0x22, 0x23, - 0x22, 0x33, 0x34, 0x23, 0x12, 0x98, 0xaa, 0x8a, 0x73, 0x47, 0x53, 0x33, 0x23, 0x11, 0x11, 0x21, - 0x33, 0x35, 0x33, 0x22, 0x12, 0x31, 0x64, 0x54, 0x43, 0x33, 0x22, 0x12, 0x11, 0x22, 0x43, 0x24, - 0x23, 0x34, 0x43, 0x44, 0x43, 0x34, 0x43, 0x22, 0x11, 0x00, 0x10, 0x31, 0x43, 0x23, 0x80, 0x9a, - 0x18, 0x54, 0x36, 0x24, 0x23, 0x01, 0x80, 0x80, 0x88, 0x88, 0xca, 0xde, 0xbd, 0xbd, 0xcb, 0xaa, - 0xba, 0xba, 0xcb, 0xcb, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xbb, 0xcb, 0xba, 0xbb, 0xbc, 0xcb, 0xbb, - 0xcc, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xbc, 0xbb, 0xac, 0xbb, 0xbc, 0xcb, 0xcb, 0xbb, 0xbc, 0xbc, - 0xbc, 0xbb, 0xcb, 0xba, 0xaa, 0xba, 0xbb, 0xbd, 0xcb, 0xcb, 0xab, 0xbb, 0xbb, 0xbb, 0xac, 0xaa, - 0x9a, 0x89, 0x89, 0xb9, 0xce, 0xcc, 0xab, 0x9b, 0x09, 0x10, 0x11, 0x81, 0xa9, 0xcb, 0xbb, 0xab, - 0x8b, 0x63, 0x35, 0x34, 0x45, 0x44, 0x44, 0x43, 0x23, 0x23, 0x32, 0x34, 0x44, 0x32, 0x23, 0x11, - 0x80, 0xa9, 0xdb, 0xbb, 0x8a, 0x18, 0x41, 0x44, 0x44, 0x33, 0x03, 0xda, 0xcf, 0xcb, 0xcb, 0xaa, - 0x9a, 0xaa, 0xa9, 0xaa, 0xbb, 0xbb, 0xcd, 0xdb, 0xbc, 0xbd, 0xbc, 0xbb, 0xaa, 0x88, 0x08, 0xa8, - 0xeb, 0xcc, 0xcb, 0xbc, 0xbc, 0xbb, 0xbc, 0xac, 0xab, 0xbb, 0xba, 0xba, 0xbb, 0xcc, 0xcb, 0xab, - 0xbb, 0xab, 0xbc, 0xdb, 0xbb, 0xad, 0xbb, 0xaa, 0x99, 0x99, 0x98, 0x08, 0x10, 0x31, 0x34, 0x33, - 0x80, 0xdb, 0xbc, 0x8a, 0x31, 0x57, 0x34, 0x35, 0x43, 0x32, 0x43, 0x32, 0x43, 0x33, 0x34, 0x35, - 0x34, 0x44, 0x33, 0x44, 0x32, 0x24, 0x24, 0x23, 0x24, 0x33, 0x24, 0x43, 0x33, 0x53, 0x33, 0x35, - 0x43, 0x33, 0x43, 0x43, 0x42, 0x32, 0x32, 0x33, 0x33, 0x44, 0x42, 0x33, 0x34, 0x34, 0x33, 0x24, - 0x32, 0x32, 0x43, 0x43, 0x33, 0x24, 0x33, 0x43, 0x43, 0x33, 0x34, 0x33, 0x12, 0x01, 0x80, 0x88, - 0x11, 0x12, 0x02, 0xb9, 0xce, 0xac, 0xac, 0xbb, 0xbd, 0xcc, 0xbc, 0xbc, 0xcb, 0xbb, 0xcb, 0xcb, - 0xbb, 0xbc, 0xcb, 0xab, 0xab, 0xcb, 0xcc, 0xcc, 0xcb, 0xbb, 0xac, 0xaa, 0xa9, 0xaa, 0xbb, 0xbc, - 0xcb, 0xcb, 0xba, 0xcb, 0xcb, 0xdb, 0xbb, 0xbc, 0xba, 0xaa, 0xa9, 0xaa, 0xcb, 0xcb, 0xba, 0xbb, - 0xab, 0x9a, 0xa9, 0xa9, 0xab, 0x9a, 0x18, 0x31, 0x43, 0x54, 0x43, 0x35, 0x45, 0x33, 0x33, 0x23, - 0x22, 0x33, 0x53, 0x44, 0x44, 0x43, 0x43, 0x42, 0x32, 0x24, 0x24, 0x33, 0x33, 0x23, 0x43, 0x32, - 0x44, 0x43, 0x34, 0x35, 0x43, 0x24, 0x33, 0x24, 0x33, 0x32, 0x43, 0x32, 0x33, 0x34, 0x43, 0x33, - 0x35, 0x43, 0x34, 0x33, 0x43, 0x32, 0x22, 0x21, 0x22, 0x43, 0x34, 0x24, 0x24, 0x32, 0x24, 0x43, - 0x32, 0x22, 0x33, 0x32, 0x24, 0x32, 0x43, 0x43, 0x43, 0x34, 0x24, 0x43, 0x43, 0x34, 0x33, 0x34, - 0x33, 0x24, 0x33, 0x33, 0x32, 0x33, 0x43, 0x53, 0x53, 0x43, 0x43, 0x34, 0x43, 0x33, 0x24, 0x33, - 0x24, 0x33, 0x33, 0x24, 0x43, 0x43, 0x34, 0x34, 0x23, 0x33, 0x32, 0x43, 0x24, 0x24, 0x33, 0x53, - 0x33, 0x43, 0x24, 0x24, 0x33, 0x23, 0x80, 0xba, 0xbe, 0xac, 0xaa, 0x99, 0x99, 0xaa, 0xaa, 0xcb, - 0xba, 0xcc, 0xcd, 0xbd, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xcb, 0xbd, 0xcc, 0xcb, 0xbb, 0xac, 0xbb, - 0xdb, 0xca, 0xba, 0xbc, 0xbb, 0xcb, 0xbb, 0xbd, 0xcb, 0xcb, 0xcb, 0xca, 0xba, 0xbb, 0xbc, 0xbc, - 0xcb, 0xbb, 0xba, 0xbb, 0xcb, 0xbb, 0xcb, 0xbb, 0xbd, 0xcb, 0xbc, 0xac, 0xbb, 0xab, 0xba, 0x99, - 0x99, 0x88, 0xa9, 0xcc, 0xcc, 0xbc, 0xbc, 0xcb, 0xab, 0x9b, 0x99, 0x00, 0x22, 0x32, 0x32, 0x22, - 0x21, 0x11, 0x11, 0x43, 0x35, 0x45, 0x45, 0x53, 0x34, 0x33, 0x24, 0x13, 0x12, 0x22, 0x42, 0x24, - 0x23, 0x12, 0x01, 0x00, 0x18, 0x52, 0x55, 0x53, 0x33, 0x23, 0x80, 0xb9, 0xcc, 0xcc, 0xbc, 0xcd, - 0xbb, 0xcb, 0x9a, 0x89, 0x10, 0x10, 0x80, 0xb9, 0xce, 0xcc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xcb, - 0xba, 0xaa, 0xba, 0xcb, 0xbc, 0xbd, 0xbc, 0xcb, 0xcb, 0xba, 0xcb, 0xbb, 0xac, 0xbb, 0xbb, 0xbb, - 0xcb, 0xcb, 0xbc, 0xbc, 0xcb, 0xab, 0xab, 0xba, 0xaa, 0xbb, 0xbb, 0xbb, 0xaa, 0x99, 0xa9, 0xdc, - 0xcc, 0xbc, 0xab, 0x8a, 0x10, 0x33, 0x34, 0x33, 0x33, 0x54, 0x63, 0x53, 0x43, 0x33, 0x24, 0x43, - 0x32, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x43, 0x33, 0x25, 0x24, 0x33, 0x43, 0x43, 0x43, 0x43, - 0x32, 0x34, 0x33, 0x44, 0x32, 0x33, 0x34, 0x33, 0x43, 0x33, 0x44, 0x33, 0x35, 0x43, 0x32, 0x33, - 0x24, 0x23, 0x33, 0x34, 0x43, 0x43, 0x43, 0x43, 0x32, 0x43, 0x32, 0x33, 0x43, 0x32, 0x22, 0x12, - 0x12, 0x11, 0x00, 0x00, 0x22, 0x33, 0x13, 0x80, 0xca, 0xbc, 0xcc, 0xcc, 0xbd, 0xcc, 0xbc, 0xbc, - 0xcc, 0xba, 0xac, 0xba, 0xab, 0xbc, 0xbb, 0xbc, 0xbc, 0xdb, 0xbb, 0xbd, 0xbb, 0xbc, 0xbb, 0xdb, - 0xba, 0xbb, 0xbc, 0xba, 0xbc, 0xcb, 0xbc, 0xbc, 0xdb, 0xbb, 0xcb, 0xba, 0xaa, 0xab, 0xaa, 0xaa, - 0xa9, 0xba, 0xca, 0xbc, 0xbd, 0xac, 0xbb, 0xab, 0x9a, 0x08, 0x00, 0x20, 0x32, 0x36, 0x44, 0x43, - 0x23, 0x13, 0x22, 0x22, 0x53, 0x43, 0x34, 0x34, 0x33, 0x43, 0x53, 0x53, 0x43, 0x43, 0x23, 0x33, - 0x24, 0x43, 0x43, 0x34, 0x43, 0x43, 0x32, 0x43, 0x43, 0x34, 0x43, 0x33, 0x23, 0x33, 0x43, 0x33, - 0x34, 0x34, 0x43, 0x43, 0x32, 0x34, 0x34, 0x43, 0x24, 0x23, 0x22, 0x21, 0x11, 0x22, 0x33, 0x34, - 0x44, 0x33, 0x34, 0x43, 0x22, 0x33, 0x33, 0x44, 0x33, 0x43, 0x34, 0x53, 0x32, 0x33, 0x22, 0x23, - 0x33, 0x34, 0x34, 0x53, 0x33, 0x35, 0x25, 0x43, 0x32, 0x32, 0x43, 0x33, 0x34, 0x43, 0x43, 0x43, - 0x42, 0x22, 0x33, 0x33, 0x34, 0x33, 0x33, 0x34, 0x44, 0x44, 0x34, 0x43, 0x23, 0x23, 0x22, 0x22, - 0x32, 0x44, 0x44, 0x33, 0x24, 0x13, 0x12, 0x22, 0x22, 0x12, 0x11, 0x88, 0x88, 0x42, 0x46, 0x44, - 0x23, 0x80, 0xfb, 0xcc, 0xbc, 0xbb, 0xac, 0x9a, 0x9a, 0x99, 0x98, 0x98, 0x99, 0xcc, 0xcd, 0xcd, - 0xcb, 0xac, 0xbb, 0xaa, 0x9a, 0xaa, 0xbb, 0xbd, 0xcc, 0xbb, 0xcb, 0xac, 0xac, 0xbc, 0xcb, 0xcb, - 0xbb, 0xac, 0xbb, 0xbc, 0xcb, 0xbb, 0xbb, 0xac, 0xba, 0xca, 0xca, 0xbb, 0xad, 0xbb, 0xbb, 0x9a, - 0xaa, 0xca, 0xcb, 0xbc, 0xac, 0xba, 0xba, 0xbc, 0xcc, 0xcb, 0xbb, 0xbb, 0x9b, 0x88, 0x21, 0x23, - 0x11, 0x98, 0x89, 0x88, 0x99, 0xea, 0xdc, 0xcb, 0xab, 0x99, 0x10, 0x54, 0x36, 0x45, 0x43, 0x33, - 0x33, 0x33, 0x13, 0x11, 0x00, 0x21, 0x45, 0x44, 0x33, 0x22, 0x01, 0x88, 0xbb, 0xbe, 0xbd, 0xbc, - 0xab, 0xbb, 0xaa, 0x89, 0x00, 0x22, 0x13, 0xc9, 0xcf, 0xbd, 0xbd, 0xac, 0xac, 0xab, 0xba, 0xa9, - 0xaa, 0xdb, 0xdb, 0xbc, 0xcb, 0xac, 0xcb, 0xbb, 0xbc, 0xbd, 0xcb, 0xbb, 0xac, 0xbb, 0xba, 0xcb, - 0xcb, 0xbb, 0xbd, 0xbb, 0xbc, 0xac, 0xbb, 0xab, 0xbb, 0xba, 0xaa, 0xab, 0xbc, 0xbc, 0xbc, 0xbc, - 0xcb, 0xcb, 0xcb, 0xaa, 0xaa, 0x08, 0x20, 0x32, 0x24, 0x11, 0x80, 0x88, 0x10, 0x31, 0x44, 0x34, - 0x63, 0x44, 0x44, 0x34, 0x34, 0x43, 0x23, 0x43, 0x32, 0x43, 0x43, 0x43, 0x24, 0x24, 0x43, 0x43, - 0x43, 0x34, 0x33, 0x34, 0x33, 0x43, 0x43, 0x33, 0x34, 0x33, 0x24, 0x33, 0x33, 0x35, 0x44, 0x43, - 0x33, 0x34, 0x33, 0x34, 0x43, 0x32, 0x33, 0x33, 0x33, 0x33, 0x45, 0x43, 0x34, 0x24, 0x33, 0x23, - 0x22, 0x23, 0x43, 0x43, 0x22, 0x22, 0x22, 0x42, 0x34, 0x44, 0x32, 0x11, 0x90, 0xca, 0xcc, 0xdb, - 0xba, 0xbc, 0xbb, 0xcc, 0xbb, 0xab, 0xab, 0xaa, 0xb9, 0xca, 0xcb, 0xdb, 0xbb, 0xbd, 0xbd, 0xbc, - 0xdb, 0xba, 0xbb, 0xbb, 0xac, 0xbb, 0xcb, 0xbb, 0xbc, 0xbb, 0xbd, 0xcb, 0xdb, 0xbb, 0xbc, 0xac, - 0xbb, 0xbb, 0xba, 0xbb, 0xba, 0xba, 0xcb, 0xcb, 0xdb, 0xbb, 0xbb, 0xab, 0x88, 0x21, 0x33, 0x34, - 0x33, 0x23, 0x33, 0x44, 0x43, 0x12, 0x90, 0xa9, 0x09, 0x65, 0x45, 0x43, 0x33, 0x23, 0x23, 0x34, - 0x44, 0x44, 0x43, 0x43, 0x32, 0x23, 0x23, 0x34, 0x43, 0x43, 0x43, 0x42, 0x42, 0x43, 0x43, 0x43, - 0x33, 0x33, 0x32, 0x33, 0x24, 0x34, 0x53, 0x43, 0x33, 0x43, 0x22, 0x33, 0x33, 0x24, 0x23, 0x33, - 0x53, 0x33, 0x35, 0x44, 0x33, 0x34, 0x22, 0x12, 0x00, 0x00, 0x31, 0x44, 0x43, 0x24, 0x24, 0x23, - 0x33, 0x22, 0x12, 0x11, 0x11, 0x42, 0x46, 0x44, 0x53, 0x33, 0x33, 0x22, 0x12, 0x10, 0x21, 0x43, - 0x34, 0x34, 0x44, 0x42, 0x42, 0x32, 0x43, 0x32, 0x24, 0x22, 0x11, 0x11, 0x22, 0x34, 0x44, 0x43, - 0x34, 0x53, 0x33, 0x44, 0x32, 0x43, 0x32, 0x33, 0x22, 0x22, 0x11, 0x01, 0x21, 0x32, 0x25, 0x43, - 0x33, 0x34, 0x33, 0x11, 0xa8, 0xdc, 0xbd, 0xcb, 0xcb, 0xba, 0xdb, 0xbc, 0xbd, 0xbd, 0xbb, 0xba, - 0xab, 0xaa, 0xcb, 0xdc, 0xcb, 0xcb, 0xcb, 0xba, 0xba, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xcb, 0xcb, - 0xdb, 0xca, 0xba, 0xbb, 0xbb, 0xbb, 0xab, 0xbb, 0xbb, 0xcc, 0xcb, 0xcc, 0xcb, 0xcb, 0xbb, 0xcb, - 0xba, 0xaa, 0xba, 0xba, 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, 0xbb, 0xbb, 0xba, 0x9a, 0x9a, - 0xba, 0xdc, 0xcc, 0xcb, 0xbb, 0xbc, 0xba, 0xa9, 0xaa, 0x99, 0x11, 0x45, 0x35, 0x34, 0x33, 0x33, - 0x33, 0x43, 0x34, 0x44, 0x32, 0x33, 0x33, 0x34, 0x44, 0x44, 0x34, 0x32, 0x11, 0x88, 0xba, 0xab, - 0xaa, 0xa9, 0xaa, 0xac, 0x9b, 0x09, 0x42, 0x36, 0x33, 0xc0, 0xde, 0xcd, 0xcb, 0xba, 0xab, 0xa9, - 0x99, 0x9a, 0xba, 0xbb, 0xcd, 0xbc, 0xce, 0xdb, 0xcb, 0xbb, 0xac, 0xbb, 0xaa, 0xba, 0xca, 0xcb, - 0xdb, 0xbb, 0xbc, 0xbc, 0xac, 0xcb, 0xbb, 0xbb, 0xbc, 0xca, 0xaa, 0xab, 0xbb, 0xbb, 0xcb, 0xcb, - 0xbb, 0xdb, 0xbb, 0xbc, 0xbc, 0xbb, 0xac, 0xaa, 0x99, 0x88, 0x10, 0x22, 0x33, 0x23, 0x11, 0xb9, - 0xdb, 0xab, 0x9b, 0x28, 0x65, 0x45, 0x44, 0x43, 0x34, 0x33, 0x34, 0x34, 0x42, 0x33, 0x53, 0x43, - 0x43, 0x33, 0x53, 0x33, 0x44, 0x33, 0x43, 0x24, 0x32, 0x33, 0x34, 0x43, 0x43, 0x43, 0x43, 0x33, - 0x34, 0x33, 0x25, 0x24, 0x33, 0x24, 0x33, 0x32, 0x24, 0x33, 0x24, 0x24, 0x33, 0x34, 0x24, 0x24, - 0x43, 0x42, 0x33, 0x43, 0x32, 0x23, 0x23, 0x23, 0x33, 0x23, 0x33, 0x24, 0x23, 0x33, 0x32, 0x33, - 0x33, 0xb0, 0xde, 0xcc, 0xbc, 0xab, 0xbb, 0xbb, 0xbd, 0xbd, 0xbc, 0xbc, 0xcb, 0xcb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, 0xbc, 0xbd, 0xcb, 0xac, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xcb, - 0xbc, 0xca, 0xba, 0xbb, 0xcb, 0xcb, 0xba, 0xbb, 0xbb, 0xba, 0xca, 0xba, 0xcc, 0xba, 0xac, 0xaa, - 0xa9, 0x88, 0x88, 0x88, 0xa9, 0xaa, 0xab, 0x99, 0x30, 0x55, 0x44, 0x34, 0x35, 0x33, 0x24, 0x22, - 0x21, 0x22, 0x43, 0x44, 0x53, 0x34, 0x53, 0x33, 0x34, 0x43, 0x33, 0x43, 0x33, 0x43, 0x32, 0x34, - 0x53, 0x43, 0x43, 0x34, 0x33, 0x25, 0x33, 0x33, 0x43, 0x33, 0x33, 0x34, 0x43, 0x33, 0x34, 0x34, - 0x34, 0x34, 0x43, 0x23, 0x33, 0x33, 0x22, 0x22, 0x33, 0x34, 0x45, 0x33, 0x24, 0x24, 0x33, 0x24, - 0x23, 0x32, 0x32, 0x33, 0x43, 0x32, 0x43, 0x34, 0x44, 0x43, 0x43, 0x33, 0x34, 0x34, 0x43, 0x33, - 0x43, 0x32, 0x24, 0x32, 0x12, 0x32, 0x32, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x33, 0x34, 0x33, - 0x24, 0x33, 0x24, 0x43, 0x33, 0x35, 0x34, 0x43, 0x32, 0x22, 0x22, 0x33, 0x35, 0x33, 0x34, 0x34, - 0x34, 0x43, 0x34, 0x33, 0x33, 0x13, 0x98, 0xcc, 0xbd, 0xba, 0xaa, 0x9a, 0xaa, 0xa9, 0xab, 0xab, - 0xbb, 0xdd, 0xdc, 0xbd, 0xbc, 0xbc, 0xac, 0xab, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbc, 0xbb, 0xcb, 0xcb, 0xca, 0xba, 0xbc, 0xbc, 0xac, 0xcb, 0xbb, 0xcb, 0xcb, 0xbb, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, 0xcb, 0xab, 0xbc, 0xcb, 0xcb, 0xbc, 0x7c, 0x02, 0x00, 0x22, 0x56, - 0xf7, 0x02, 0x01, 0x00, 0xe9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xa8, 0x9a, 0xa0, 0x2d, - 0xfc, 0xf4, 0x9f, 0x16, 0x80, 0xa0, 0xaa, 0x19, 0x35, 0x80, 0xab, 0x10, 0x12, 0xcc, 0x71, 0x84, - 0x9c, 0x10, 0x00, 0x93, 0x29, 0xfd, 0x41, 0xbb, 0x47, 0x9a, 0x98, 0x40, 0xa0, 0x0a, 0x43, 0xa0, - 0x9e, 0x32, 0x98, 0xa4, 0x1f, 0xa3, 0x28, 0xc1, 0x1b, 0x14, 0x90, 0x9a, 0x11, 0xb0, 0x2a, 0x14, - 0xaa, 0x10, 0xa8, 0xad, 0x20, 0x13, 0xa9, 0x9a, 0x39, 0xa4, 0x9d, 0x52, 0xd8, 0x9a, 0x10, 0x14, - 0xdc, 0x08, 0x80, 0x80, 0x88, 0x08, 0x88, 0x88, 0x89, 0x88, 0x88, 0x89, 0x88, 0x08, 0x08, 0x00, - 0x11, 0x11, 0x31, 0x32, 0x21, 0x32, 0x52, 0xd3, 0x77, 0x77, 0xf2, 0x1a, 0x33, 0x82, 0xbc, 0x21, - 0x42, 0xa1, 0x19, 0x12, 0xa8, 0x51, 0x92, 0x62, 0x92, 0x88, 0x00, 0x08, 0x32, 0x45, 0x04, 0xbd, - 0x52, 0x01, 0x88, 0x0b, 0x24, 0x08, 0x88, 0x18, 0x11, 0x80, 0x88, 0x10, 0x80, 0x88, 0x89, 0x99, - 0xa9, 0xbb, 0xbc, 0xcb, 0xbc, 0xbc, 0xdb, 0x8b, 0xff, 0x2b, 0x10, 0xf8, 0x0f, 0x92, 0x2a, 0xb1, - 0xab, 0x8c, 0x02, 0xac, 0x01, 0x9a, 0xfb, 0x0a, 0x02, 0xab, 0x19, 0xf0, 0x8d, 0x20, 0xb1, 0x9d, - 0x08, 0x02, 0xcc, 0x10, 0x9a, 0x11, 0xcd, 0x42, 0xa0, 0xbb, 0x1a, 0x15, 0x89, 0xaa, 0x18, 0x10, - 0x81, 0x9d, 0x91, 0x0a, 0x11, 0x10, 0x10, 0x11, 0x11, 0x12, 0x22, 0x33, 0x44, 0x33, 0x34, 0x35, - 0x43, 0x34, 0x43, 0x43, 0x33, 0x34, 0x43, 0x43, 0x43, 0x21, 0x23, 0x77, 0xa0, 0x51, 0x02, 0x08, - 0x12, 0x31, 0x18, 0x37, 0x0b, 0x35, 0x00, 0x1a, 0x15, 0x1a, 0x37, 0x98, 0x9b, 0x54, 0x82, 0x89, - 0x31, 0x13, 0xcb, 0x21, 0x22, 0x83, 0x29, 0xd2, 0x71, 0xb3, 0x19, 0x82, 0x31, 0xcb, 0x62, 0x01, - 0xc9, 0x2c, 0x06, 0x99, 0x9a, 0x36, 0xaa, 0x09, 0x08, 0x90, 0x29, 0x80, 0x90, 0xbf, 0x42, 0x89, - 0xa2, 0x8f, 0xb2, 0x2a, 0xa2, 0x0c, 0x00, 0xa0, 0x8e, 0x02, 0x9d, 0x92, 0x1b, 0xb3, 0xac, 0x8c, - 0x05, 0x9b, 0xb0, 0x8a, 0x00, 0xba, 0xd9, 0x2c, 0xb2, 0x0d, 0xc9, 0x1a, 0x04, 0xbc, 0x88, 0x19, - 0xf8, 0x1b, 0x81, 0x99, 0xbe, 0x10, 0x11, 0xdb, 0x21, 0xba, 0xda, 0x61, 0xd8, 0x8a, 0x00, 0x10, - 0xb1, 0x8b, 0x90, 0xba, 0x4b, 0xf1, 0x39, 0xd8, 0x98, 0x5a, 0x93, 0xcb, 0x19, 0x92, 0x90, 0x1c, - 0xb3, 0x1c, 0xbc, 0x05, 0x0d, 0x13, 0xb8, 0x8e, 0x23, 0x81, 0xdb, 0x09, 0x11, 0x88, 0x91, 0x1e, - 0x03, 0x8b, 0xb0, 0x68, 0xc9, 0x41, 0x00, 0xa8, 0xaa, 0x0d, 0x33, 0x12, 0x89, 0xdf, 0x50, 0xa1, - 0x98, 0x2a, 0x16, 0x8a, 0xa8, 0x19, 0x31, 0x84, 0xcb, 0x1a, 0x35, 0x98, 0x19, 0x11, 0xca, 0x40, - 0x12, 0x15, 0xaa, 0xd9, 0x79, 0x04, 0x98, 0x8a, 0x43, 0x81, 0x90, 0x1a, 0x24, 0x82, 0x89, 0x41, - 0x03, 0x72, 0xa0, 0x09, 0x73, 0x83, 0x0b, 0x23, 0x18, 0x22, 0x44, 0xc0, 0x39, 0x34, 0x33, 0xa9, - 0x42, 0x81, 0x34, 0x28, 0x17, 0x3b, 0x94, 0x51, 0x90, 0x12, 0x19, 0x04, 0x30, 0x17, 0x9a, 0x82, - 0x5b, 0x07, 0xa8, 0x1a, 0x26, 0x89, 0x9a, 0x33, 0x80, 0x88, 0x09, 0x43, 0x81, 0xb9, 0x2b, 0x37, - 0x82, 0xbc, 0x32, 0x08, 0x83, 0x31, 0xdf, 0x51, 0x91, 0x89, 0x18, 0x81, 0x9a, 0x28, 0xb1, 0x72, - 0xc3, 0xac, 0x30, 0x13, 0xca, 0x28, 0xc0, 0x11, 0x0a, 0xf0, 0x2e, 0x04, 0xca, 0x2b, 0x15, 0xca, - 0x19, 0x12, 0xba, 0x0a, 0x92, 0x8b, 0x10, 0xb1, 0x9f, 0x88, 0xac, 0xa9, 0x28, 0xa4, 0xaf, 0x90, - 0x0a, 0xc1, 0x9c, 0x29, 0xb1, 0x9c, 0xd8, 0x8d, 0x22, 0xc9, 0xcc, 0x38, 0xc2, 0x0a, 0xb0, 0xbb, - 0x08, 0x04, 0xcd, 0x99, 0x00, 0xc8, 0x2a, 0xe2, 0x8c, 0x90, 0x30, 0xea, 0x89, 0x09, 0x11, 0xb8, - 0xbc, 0x89, 0x09, 0x21, 0xd2, 0x9e, 0x09, 0x12, 0xac, 0x01, 0xa8, 0x9c, 0x91, 0x09, 0x88, 0x25, - 0xba, 0x9f, 0x24, 0x99, 0xa0, 0x29, 0x91, 0x52, 0x81, 0xdb, 0x1b, 0x27, 0x00, 0x80, 0x31, 0xa1, - 0x1a, 0x14, 0x89, 0x73, 0x05, 0x98, 0x21, 0x12, 0x10, 0x44, 0x02, 0x88, 0x62, 0x24, 0x88, 0x18, - 0x44, 0x22, 0x21, 0x01, 0x30, 0x35, 0x22, 0x34, 0x23, 0x12, 0x63, 0x24, 0x23, 0x10, 0x44, 0x33, - 0x11, 0x71, 0x24, 0x00, 0x31, 0x23, 0x02, 0x72, 0x14, 0x20, 0x22, 0x22, 0x80, 0x51, 0x23, 0x53, - 0x22, 0x01, 0x9a, 0x52, 0x34, 0x12, 0x18, 0x02, 0x59, 0x07, 0xa9, 0x28, 0x35, 0xb8, 0x9c, 0x51, - 0x82, 0x9c, 0x31, 0x02, 0xeb, 0x28, 0xb1, 0x1b, 0x31, 0xf2, 0x8c, 0x00, 0x00, 0xab, 0x11, 0x9a, - 0xc3, 0xcf, 0x11, 0x18, 0xfa, 0x3d, 0x81, 0x81, 0xae, 0x00, 0x30, 0xd1, 0x0b, 0x81, 0x09, 0xaa, - 0x10, 0x88, 0xa1, 0x8e, 0xd9, 0x29, 0x92, 0x0b, 0xba, 0x08, 0x88, 0x37, 0xef, 0x20, 0x90, 0x09, - 0xa9, 0x02, 0x9c, 0x33, 0xa8, 0xdb, 0x20, 0xe0, 0x1b, 0x14, 0xa2, 0xaf, 0x05, 0x89, 0xca, 0x32, - 0x08, 0xa2, 0x0d, 0x99, 0x41, 0x91, 0xad, 0x10, 0x21, 0xb0, 0x8c, 0x10, 0xc0, 0x68, 0xb2, 0x0d, - 0xa1, 0x08, 0x09, 0x23, 0xeb, 0x1a, 0x84, 0x89, 0x99, 0x08, 0x1a, 0x23, 0xd0, 0xbf, 0x23, 0x19, - 0xb1, 0xa9, 0xbb, 0x73, 0xd1, 0x9b, 0x63, 0xa1, 0x8b, 0x82, 0x99, 0x8b, 0x26, 0x99, 0xca, 0x51, - 0xa8, 0x12, 0x9c, 0x00, 0x0c, 0x27, 0xda, 0x18, 0x22, 0xb9, 0x89, 0x3c, 0x07, 0x9b, 0x82, 0x0b, - 0x23, 0x00, 0x89, 0xaa, 0x91, 0x9f, 0x73, 0x94, 0x9d, 0x00, 0x33, 0xe8, 0x0a, 0x31, 0x83, 0xab, - 0x8a, 0x41, 0x11, 0xb8, 0x4a, 0x13, 0xe9, 0x0c, 0x45, 0x91, 0x9c, 0x00, 0x22, 0x80, 0x9b, 0x63, - 0x98, 0x01, 0x8c, 0x34, 0x90, 0x89, 0x10, 0x63, 0x82, 0x0a, 0xc0, 0x6a, 0x84, 0x1a, 0x12, 0x18, - 0x90, 0x30, 0x04, 0x8a, 0x55, 0x90, 0x13, 0xad, 0x42, 0x01, 0x02, 0x09, 0xa8, 0x71, 0x86, 0x88, - 0x0b, 0x25, 0x9b, 0x23, 0x11, 0xbc, 0x34, 0xa8, 0x89, 0x72, 0xb2, 0x2c, 0x06, 0xba, 0x19, 0x53, - 0xb8, 0x38, 0xc2, 0x0b, 0x32, 0x13, 0xec, 0x29, 0x12, 0x99, 0x89, 0x20, 0x08, 0xb8, 0x2d, 0x15, - 0xb8, 0x8d, 0x03, 0x18, 0xe2, 0x8d, 0x22, 0x88, 0xa9, 0x8b, 0x62, 0xd0, 0x28, 0xc8, 0x09, 0x09, - 0x81, 0xcc, 0x58, 0xa2, 0x9d, 0x10, 0x80, 0x98, 0x9d, 0x81, 0xaa, 0x02, 0xab, 0x80, 0xbf, 0x9b, - 0x02, 0x8b, 0x81, 0x03, 0xff, 0x1d, 0x92, 0xab, 0x00, 0x08, 0x9a, 0x03, 0xcf, 0x88, 0x80, 0xb9, - 0x50, 0xe0, 0x0a, 0x30, 0xc3, 0x9f, 0x11, 0x80, 0x9a, 0x28, 0xa1, 0x8a, 0xa0, 0x0a, 0x33, 0xf8, - 0x8b, 0x03, 0x89, 0xb0, 0x6a, 0xb0, 0x8a, 0x48, 0x92, 0x0a, 0x21, 0x02, 0xee, 0x58, 0x82, 0x8a, - 0x8a, 0x37, 0xb9, 0x19, 0x51, 0xa3, 0x8c, 0x80, 0x42, 0x91, 0x09, 0x11, 0x83, 0x59, 0x87, 0x8b, - 0x15, 0x89, 0x98, 0x45, 0xb9, 0x30, 0x02, 0x81, 0x9d, 0x27, 0x80, 0x88, 0x28, 0x00, 0x02, 0x09, - 0x24, 0x44, 0xa0, 0x30, 0xc8, 0x70, 0x84, 0x0a, 0x12, 0x91, 0x2b, 0x47, 0x88, 0x09, 0x33, 0xc9, - 0x62, 0x81, 0x90, 0x2a, 0x17, 0x09, 0x80, 0x09, 0x43, 0x03, 0x9a, 0x33, 0xaa, 0x24, 0x72, 0xb1, - 0x1c, 0x04, 0x18, 0x12, 0x10, 0xaa, 0x45, 0xaa, 0x08, 0x54, 0xc9, 0x29, 0x14, 0xb8, 0x0a, 0x27, - 0xc8, 0x1a, 0x11, 0x80, 0x88, 0x98, 0xab, 0x73, 0xa3, 0xac, 0x19, 0x04, 0x9a, 0x8a, 0x13, 0xad, - 0x81, 0x89, 0xc9, 0x40, 0xb0, 0xcb, 0x8e, 0x14, 0xab, 0xa8, 0x49, 0xb1, 0x2b, 0xfa, 0x2a, 0xa8, - 0xb1, 0x1d, 0xd1, 0x08, 0xcb, 0x42, 0xca, 0x88, 0x9d, 0x33, 0xa9, 0xda, 0x0c, 0x82, 0xaa, 0x40, - 0xf0, 0x1c, 0x93, 0x9a, 0x99, 0x10, 0xaa, 0x20, 0xd9, 0xae, 0x33, 0xc0, 0x9b, 0x89, 0x03, 0xaf, - 0x22, 0xaa, 0xb0, 0x8d, 0x00, 0x24, 0xdd, 0x10, 0x80, 0x88, 0x8a, 0x80, 0x19, 0x95, 0x9f, 0x00, - 0x31, 0xba, 0x10, 0xaa, 0x88, 0x64, 0xb0, 0x8b, 0x20, 0x03, 0xc9, 0x9a, 0x28, 0x34, 0x84, 0xbf, - 0x21, 0x28, 0x04, 0x9a, 0xaa, 0x42, 0xa8, 0x22, 0x99, 0x90, 0x70, 0x85, 0x9d, 0x21, 0x12, 0x99, - 0xbb, 0x61, 0xa3, 0x1c, 0x93, 0x89, 0x49, 0x27, 0x99, 0xc9, 0x19, 0x42, 0x14, 0xc8, 0x8a, 0x31, - 0x15, 0xd9, 0x29, 0x02, 0x40, 0x13, 0xcb, 0x18, 0x24, 0x80, 0x00, 0x62, 0x23, 0xc9, 0x2b, 0x54, - 0x84, 0x9a, 0x18, 0x25, 0x18, 0x03, 0x29, 0xa1, 0x60, 0x83, 0x58, 0x06, 0xaa, 0x11, 0x33, 0xb1, - 0x19, 0x40, 0x85, 0x50, 0xa1, 0x01, 0xab, 0x15, 0x31, 0x93, 0xbc, 0x2a, 0x37, 0xc0, 0x0a, 0x12, - 0x11, 0xcb, 0x48, 0x03, 0xfa, 0x0c, 0x02, 0x82, 0x9c, 0x81, 0x00, 0x88, 0x00, 0xfb, 0x8c, 0x33, - 0xd9, 0x9c, 0x33, 0xd8, 0x1a, 0x12, 0xaa, 0x9b, 0x98, 0x89, 0x32, 0xf8, 0x8d, 0x31, 0xa0, 0xbd, - 0x50, 0xa1, 0x0b, 0x12, 0xd9, 0x39, 0x13, 0xd9, 0x8c, 0x33, 0xb8, 0x29, 0x17, 0xc9, 0x3a, 0x14, - 0x9a, 0xbb, 0x64, 0x80, 0x13, 0xbb, 0x01, 0x22, 0xba, 0x71, 0x84, 0xba, 0x49, 0x04, 0x89, 0x24, - 0xa9, 0x8b, 0x35, 0x90, 0x9b, 0x37, 0xda, 0x20, 0x82, 0x80, 0x09, 0xa8, 0x1a, 0x44, 0x82, 0xcf, - 0x31, 0x01, 0x90, 0x8e, 0x01, 0x08, 0x12, 0xcb, 0x0a, 0x41, 0xc0, 0x0b, 0x02, 0xc9, 0x8c, 0x35, - 0xb8, 0xdb, 0x1a, 0x23, 0x99, 0xdb, 0x19, 0x91, 0x00, 0xbf, 0x23, 0xac, 0xa9, 0x79, 0xc3, 0x9c, - 0x22, 0xa0, 0x9c, 0x10, 0x81, 0x99, 0xb0, 0x8f, 0x33, 0xb9, 0xda, 0x60, 0xa2, 0x8a, 0x18, 0xa1, - 0x8d, 0x83, 0x1b, 0x03, 0xa8, 0x9c, 0x66, 0xb1, 0x8a, 0x11, 0x01, 0x89, 0x81, 0x09, 0x44, 0x90, - 0x32, 0x10, 0xc0, 0x7a, 0x05, 0x38, 0xf1, 0x1a, 0x23, 0x10, 0x98, 0x42, 0x81, 0xa0, 0x71, 0xa3, - 0x2a, 0xb1, 0x30, 0x65, 0xa2, 0x8e, 0x32, 0x82, 0x09, 0x90, 0x20, 0x03, 0x01, 0x8c, 0x25, 0xb9, - 0x09, 0x55, 0xa2, 0x1a, 0x13, 0xaa, 0xab, 0x55, 0xb0, 0x91, 0x2c, 0x06, 0x08, 0xa9, 0x11, 0xac, - 0x98, 0x72, 0x81, 0x98, 0xba, 0x39, 0x05, 0xab, 0xbc, 0x72, 0x83, 0xc9, 0x8a, 0x03, 0xca, 0x0b, - 0x22, 0x24, 0xdc, 0x08, 0x11, 0xa0, 0xae, 0x20, 0xa2, 0x8c, 0x00, 0x22, 0xce, 0x18, 0x01, 0xa0, - 0xac, 0x08, 0x80, 0x98, 0xad, 0x11, 0xd8, 0xbb, 0x9a, 0x72, 0xa3, 0xaf, 0x8a, 0x32, 0xb8, 0x9b, - 0xb9, 0x0b, 0x90, 0xb9, 0x1e, 0xe2, 0x9d, 0x00, 0x08, 0xab, 0x88, 0xbb, 0xa9, 0x71, 0xf3, 0x8e, - 0x91, 0x18, 0x81, 0x09, 0x99, 0xa9, 0x1b, 0xa1, 0x11, 0xef, 0x51, 0x91, 0x8a, 0x8b, 0x31, 0x80, - 0x20, 0x93, 0xaa, 0x9c, 0x44, 0x15, 0xbb, 0x10, 0x72, 0x82, 0x08, 0x89, 0x34, 0x01, 0x98, 0x62, - 0x25, 0xa8, 0x19, 0x37, 0x98, 0x11, 0x28, 0x01, 0x46, 0xa0, 0x18, 0x42, 0x01, 0x20, 0x25, 0x88, - 0x40, 0x02, 0x00, 0x71, 0x02, 0x99, 0x53, 0x01, 0x98, 0x41, 0x81, 0x72, 0xa2, 0x0a, 0x09, 0x35, - 0x99, 0x98, 0x51, 0x92, 0x99, 0x9a, 0x62, 0xd0, 0x89, 0x09, 0x35, 0xb9, 0x8b, 0xb9, 0x9c, 0x40, - 0xb2, 0xbd, 0x1a, 0xa2, 0xbf, 0x18, 0xb1, 0x9f, 0x81, 0x18, 0xc0, 0x9d, 0x99, 0x29, 0x91, 0x8b, - 0xec, 0x09, 0x99, 0x82, 0xbb, 0xba, 0x1a, 0xfa, 0x8a, 0x00, 0xa9, 0xbe, 0x10, 0x99, 0xb9, 0x8e, - 0x13, 0x9a, 0xc9, 0x1c, 0x02, 0xac, 0x89, 0x72, 0xb0, 0x1a, 0xa9, 0x32, 0x33, 0xd8, 0x8c, 0x32, - 0xb8, 0x19, 0x75, 0xa3, 0x9d, 0x40, 0x15, 0xaa, 0x89, 0x32, 0x11, 0x02, 0x9a, 0x98, 0x71, 0x82, - 0x8b, 0x47, 0x90, 0x09, 0x10, 0x22, 0x8a, 0x92, 0x1e, 0x45, 0x92, 0x9e, 0x20, 0x11, 0x81, 0x89, - 0x82, 0x5a, 0x85, 0x8c, 0x21, 0x81, 0xac, 0x35, 0x98, 0x88, 0x32, 0xd9, 0x28, 0x03, 0xb8, 0x0a, - 0x23, 0x08, 0x26, 0xb0, 0x0a, 0x55, 0xb1, 0x8f, 0x43, 0xa0, 0x9c, 0x30, 0x21, 0xc0, 0x1b, 0x22, - 0x91, 0x8d, 0x34, 0xdb, 0x38, 0x11, 0xe0, 0x1c, 0x04, 0x89, 0x88, 0x18, 0x08, 0x13, 0xdf, 0x28, - 0x02, 0xc8, 0x1a, 0x13, 0x89, 0x90, 0xaa, 0x0a, 0x33, 0xfc, 0x28, 0x18, 0xa2, 0x0e, 0x92, 0x4a, - 0xb2, 0x8d, 0x10, 0x23, 0xab, 0x31, 0xdb, 0x09, 0x72, 0x05, 0xbb, 0x09, 0x54, 0xb0, 0x1a, 0x34, - 0xc8, 0x19, 0x33, 0x11, 0x21, 0xd9, 0x28, 0x54, 0x91, 0x9b, 0x46, 0x81, 0x88, 0x41, 0xa2, 0x49, - 0x04, 0xa8, 0x3a, 0x37, 0xa8, 0x28, 0x80, 0x34, 0xa0, 0x28, 0x44, 0x93, 0x8b, 0x13, 0x48, 0xb0, - 0x71, 0x03, 0x31, 0xc9, 0x8a, 0x72, 0x84, 0x9b, 0x00, 0x20, 0x10, 0x13, 0xdf, 0x38, 0x82, 0xa9, - 0x1a, 0x86, 0x9b, 0x81, 0xaa, 0x30, 0x82, 0xfd, 0x0a, 0x01, 0x90, 0x9e, 0x88, 0x08, 0xa1, 0xac, - 0x19, 0xa0, 0xcc, 0x29, 0xd2, 0xaf, 0x01, 0x98, 0x99, 0x89, 0xb9, 0x9b, 0x98, 0x09, 0xf8, 0xae, - 0x09, 0x01, 0xb8, 0xdb, 0x19, 0xf9, 0x19, 0x99, 0x23, 0xcd, 0x89, 0x19, 0x92, 0xaa, 0x99, 0xca, - 0x1a, 0x42, 0xc0, 0xad, 0x98, 0x89, 0xa9, 0x29, 0x23, 0xd9, 0xaf, 0x19, 0x53, 0xc0, 0x8c, 0x20, - 0x14, 0xcd, 0x18, 0x02, 0x98, 0x8a, 0x21, 0xa1, 0x8d, 0x13, 0x00, 0xe8, 0x0a, 0x03, 0x34, 0xc9, - 0xca, 0x39, 0x85, 0x28, 0x80, 0xb0, 0x1e, 0x23, 0x10, 0x91, 0x2b, 0x87, 0x29, 0xb4, 0x1d, 0x26, - 0x90, 0x99, 0x58, 0x83, 0x09, 0x12, 0x21, 0xa1, 0x6b, 0x14, 0x01, 0x89, 0x63, 0x14, 0xba, 0x52, - 0x11, 0x10, 0x33, 0x33, 0x98, 0x52, 0x11, 0x35, 0x11, 0x30, 0x35, 0x33, 0x88, 0x46, 0x89, 0x34, - 0x21, 0xa1, 0x71, 0xa1, 0x48, 0x23, 0x93, 0x9c, 0x41, 0x32, 0x84, 0x8c, 0x91, 0x5a, 0x92, 0x89, - 0x30, 0x85, 0x8c, 0x02, 0x1b, 0xc0, 0x8b, 0xc8, 0x39, 0x06, 0xdd, 0x0a, 0x32, 0xc8, 0xbc, 0x38, - 0xc0, 0x89, 0x89, 0xc9, 0x9d, 0x08, 0x00, 0xcb, 0x9b, 0xbb, 0x02, 0xbf, 0xb9, 0x1b, 0xc3, 0x9f, - 0x08, 0x92, 0xad, 0x80, 0x99, 0xb8, 0x2a, 0xc0, 0x0b, 0xc9, 0x8c, 0x08, 0x16, 0xdb, 0x09, 0x82, - 0x9a, 0xa8, 0x21, 0x80, 0x02, 0x1b, 0x75, 0xd3, 0x0b, 0x12, 0x11, 0x89, 0x13, 0x22, 0x00, 0x26, - 0x40, 0x85, 0x0c, 0x04, 0x48, 0x05, 0x99, 0x20, 0x03, 0x21, 0x10, 0x35, 0xa9, 0x73, 0xa0, 0x21, - 0x81, 0x26, 0x9b, 0x36, 0x90, 0xa9, 0x78, 0x93, 0x18, 0xa0, 0x0a, 0x90, 0x73, 0x90, 0x08, 0x20, - 0x83, 0xcc, 0x28, 0x01, 0x80, 0x0a, 0xa0, 0x31, 0xfc, 0x2b, 0x34, 0xa9, 0xca, 0x9d, 0x21, 0x94, - 0x8c, 0xa3, 0x8c, 0xd8, 0x58, 0xa3, 0x9b, 0x90, 0x88, 0x9c, 0x24, 0xfb, 0x19, 0x11, 0x90, 0x9b, - 0x90, 0x28, 0x98, 0x82, 0x0e, 0x95, 0x9c, 0x9b, 0x64, 0xb1, 0xac, 0x42, 0x81, 0x89, 0x99, 0x28, - 0x00, 0x23, 0xfa, 0x8b, 0x48, 0x04, 0x18, 0xd9, 0x49, 0xb2, 0x20, 0xba, 0x43, 0x8b, 0x36, 0xa8, - 0x99, 0xab, 0x55, 0x12, 0xc9, 0x2a, 0x03, 0x24, 0xdc, 0x20, 0x10, 0x90, 0x31, 0x23, 0xcb, 0x41, - 0x02, 0xcb, 0x40, 0x14, 0x11, 0x20, 0xb0, 0x48, 0x53, 0x12, 0x92, 0x0d, 0x27, 0x10, 0x98, 0x18, - 0x14, 0x21, 0x32, 0xe8, 0x49, 0x35, 0xb0, 0x2b, 0x04, 0x29, 0x82, 0x40, 0xa1, 0x72, 0xd0, 0x39, - 0x03, 0xd8, 0x0b, 0x25, 0x08, 0xa1, 0x2a, 0xe9, 0x10, 0x08, 0x91, 0xad, 0x99, 0x28, 0xa4, 0xad, - 0xdb, 0x00, 0xab, 0x25, 0xfb, 0x8a, 0x90, 0x8c, 0x00, 0xba, 0x9c, 0x08, 0xb9, 0xcb, 0xbb, 0xca, - 0xbd, 0x18, 0xc9, 0xac, 0x08, 0xae, 0xa8, 0x1a, 0xe0, 0x0a, 0xcb, 0x43, 0xc9, 0x9a, 0x98, 0x98, - 0x21, 0xd8, 0x8c, 0x11, 0x00, 0xad, 0x33, 0x8a, 0xc2, 0x7b, 0xa2, 0x1a, 0x12, 0x11, 0x18, 0x43, - 0x01, 0x04, 0x28, 0x32, 0x17, 0x48, 0x05, 0x08, 0x81, 0x63, 0x12, 0x32, 0x90, 0x72, 0x22, 0x92, - 0x3c, 0x17, 0x00, 0x88, 0x41, 0x81, 0x31, 0x01, 0x21, 0x42, 0x81, 0x60, 0x13, 0x10, 0x98, 0x55, - 0x98, 0x21, 0x28, 0x04, 0x18, 0x00, 0x10, 0x10, 0x89, 0x74, 0x92, 0x8a, 0x24, 0xa0, 0x0d, 0x15, - 0xab, 0x41, 0xa2, 0xac, 0x00, 0x11, 0xb9, 0x29, 0xa2, 0x9f, 0x23, 0xba, 0x99, 0x31, 0xf2, 0xae, - 0x99, 0x52, 0xc0, 0x08, 0x99, 0x81, 0x8d, 0x03, 0x8c, 0x81, 0xa9, 0xa9, 0x30, 0xfc, 0x29, 0x10, - 0xa1, 0x8e, 0x91, 0x3b, 0xc3, 0x8b, 0xa0, 0x89, 0x3b, 0x87, 0x9d, 0x00, 0x18, 0xc0, 0x0a, 0x00, - 0xd2, 0x0d, 0xa0, 0x1c, 0x25, 0xc0, 0x8d, 0x10, 0x00, 0x98, 0x8a, 0x90, 0x10, 0xbc, 0xa2, 0x3d, - 0xd4, 0x0c, 0x01, 0x91, 0xbc, 0x38, 0x82, 0xd9, 0x0c, 0x82, 0x32, 0xed, 0x10, 0xa9, 0x11, 0x89, - 0xb0, 0x9c, 0x11, 0x91, 0x9d, 0x90, 0x40, 0xd9, 0x88, 0x29, 0x95, 0x8e, 0x04, 0x8a, 0x98, 0x2a, - 0x93, 0x99, 0xad, 0x01, 0x2b, 0x17, 0x8c, 0x12, 0x80, 0xda, 0x48, 0x82, 0x99, 0x0a, 0x17, 0xab, - 0x03, 0x1d, 0x83, 0x1b, 0x98, 0x51, 0x05, 0x9f, 0x12, 0x08, 0x90, 0x10, 0x8a, 0x14, 0x18, 0xda, - 0x38, 0x91, 0x0b, 0x35, 0x98, 0xaa, 0x53, 0xa9, 0x02, 0x5a, 0xd0, 0x51, 0xa8, 0x01, 0x1a, 0x94, - 0x1c, 0x06, 0xab, 0x11, 0x32, 0xcc, 0x22, 0x0a, 0x13, 0x19, 0xc3, 0x2c, 0xa2, 0x79, 0x85, 0x9b, - 0x20, 0x83, 0x8c, 0x02, 0x21, 0xa9, 0x63, 0xc9, 0x01, 0x38, 0x83, 0x8b, 0x27, 0xa9, 0x49, 0x05, - 0xab, 0x14, 0x08, 0xc9, 0x51, 0x90, 0x43, 0xc0, 0x1a, 0x13, 0x32, 0xfb, 0x38, 0x30, 0xc3, 0x2c, - 0x94, 0x18, 0xa8, 0x41, 0x91, 0x53, 0xbc, 0x03, 0x3b, 0xb5, 0x69, 0x92, 0x3b, 0xb4, 0x2c, 0xa0, - 0x73, 0xb9, 0x21, 0x10, 0xc8, 0x2a, 0x05, 0x0a, 0x93, 0x2b, 0xb8, 0x64, 0xd8, 0x20, 0x00, 0xa1, - 0x1b, 0x16, 0x9a, 0x01, 0x18, 0x18, 0x84, 0xad, 0x11, 0x33, 0xfb, 0x40, 0x98, 0xa0, 0x18, 0x23, - 0xc9, 0x08, 0x98, 0x30, 0xf1, 0x0b, 0x84, 0x8c, 0xa2, 0x72, 0xdc, 0x10, 0x09, 0x92, 0x2b, 0xa1, - 0x08, 0x8d, 0xa2, 0x1b, 0xb4, 0x0d, 0x02, 0xbd, 0x11, 0x8d, 0x92, 0x8c, 0x22, 0xd0, 0x8d, 0x00, - 0x22, 0xcb, 0x90, 0x0f, 0x14, 0xba, 0x09, 0x10, 0xb9, 0x20, 0xb0, 0x3c, 0xb5, 0x8c, 0x09, 0x15, - 0x9c, 0xa2, 0x39, 0xc1, 0x20, 0xbb, 0x23, 0xdb, 0x0b, 0x26, 0xa0, 0x9a, 0x88, 0x40, 0xb1, 0x3a, - 0xd3, 0x19, 0x92, 0x0f, 0x93, 0x18, 0xab, 0x36, 0xeb, 0x09, 0x04, 0x08, 0xa0, 0xa8, 0x0f, 0x24, - 0xa9, 0x8a, 0x03, 0x39, 0xd1, 0x9b, 0x50, 0x84, 0x9d, 0x88, 0x11, 0x22, 0xe9, 0x19, 0x10, 0x15, - 0xad, 0x02, 0x32, 0xd0, 0x0b, 0x24, 0xaa, 0x12, 0x18, 0x89, 0x86, 0x2d, 0x86, 0x18, 0xd0, 0x38, - 0x93, 0x38, 0xb1, 0x48, 0x09, 0x07, 0x8b, 0x03, 0x38, 0x88, 0x26, 0xaa, 0x23, 0x0a, 0x06, 0x49, - 0x94, 0x2b, 0xb1, 0x73, 0xa0, 0x20, 0x88, 0x11, 0x42, 0xa0, 0x10, 0x0a, 0x07, 0x39, 0xa3, 0x50, - 0xe8, 0x38, 0xa2, 0x19, 0x04, 0x90, 0x9b, 0x31, 0x06, 0xbd, 0x62, 0xb9, 0x30, 0xa9, 0x10, 0x89, - 0x94, 0x9f, 0x22, 0xb0, 0x9e, 0x22, 0xa1, 0xbc, 0x10, 0x10, 0xb1, 0x9d, 0x10, 0x90, 0xdc, 0x1b, - 0x05, 0xaa, 0xa0, 0x99, 0xab, 0x80, 0x28, 0xf8, 0x1b, 0xcb, 0x03, 0x1d, 0xb1, 0x9b, 0x80, 0xae, - 0x43, 0xda, 0x89, 0x20, 0xda, 0x09, 0x13, 0xca, 0x31, 0xe9, 0x19, 0x04, 0xbc, 0x11, 0x21, 0xc9, - 0x30, 0x93, 0xaf, 0x30, 0x84, 0xdb, 0x40, 0xb1, 0x58, 0x83, 0xbe, 0x30, 0x23, 0xb8, 0x18, 0x01, - 0xa9, 0x31, 0x9a, 0x57, 0xba, 0x31, 0x90, 0x12, 0x99, 0x73, 0x81, 0x8b, 0x42, 0x03, 0x89, 0xbd, - 0x73, 0x83, 0xa9, 0x59, 0x93, 0x8b, 0x50, 0x83, 0x8b, 0x25, 0xa9, 0x20, 0x12, 0xda, 0x72, 0xa2, - 0x0a, 0x19, 0x04, 0x0b, 0x15, 0x8b, 0x00, 0x13, 0xbb, 0x73, 0xa2, 0x8d, 0x82, 0x30, 0xb0, 0x21, - 0xdb, 0x32, 0xc1, 0x28, 0x8d, 0x87, 0x1c, 0x94, 0x28, 0xda, 0x21, 0xab, 0x32, 0x03, 0xcb, 0x08, - 0x13, 0xcd, 0x10, 0x31, 0xb8, 0x30, 0xa8, 0xfa, 0x61, 0xc0, 0x18, 0x80, 0x10, 0x98, 0xc9, 0x7a, - 0xb2, 0x1a, 0x08, 0x02, 0xca, 0x38, 0x82, 0x99, 0x9a, 0x16, 0xaf, 0x11, 0x12, 0xcb, 0x11, 0xbb, - 0x15, 0x0b, 0xe0, 0x73, 0xb9, 0x98, 0x1a, 0x13, 0xa9, 0x19, 0x90, 0xa8, 0x0d, 0x91, 0x41, 0xba, - 0xf1, 0x1e, 0x04, 0x8a, 0xc1, 0x49, 0xa1, 0x0c, 0x02, 0xab, 0x13, 0x8d, 0x84, 0x39, 0xa1, 0xdc, - 0x20, 0x00, 0x33, 0xce, 0x20, 0x11, 0xd9, 0x28, 0x01, 0xb0, 0x1d, 0x83, 0x41, 0xd8, 0x20, 0x82, - 0xaa, 0x09, 0x64, 0xa8, 0xa8, 0x6a, 0xa3, 0x39, 0xea, 0x31, 0x80, 0x22, 0xae, 0x31, 0x91, 0x00, - 0x99, 0x38, 0x93, 0x1d, 0x13, 0x19, 0xd2, 0x0e, 0x13, 0x88, 0xe0, 0x2a, 0x15, 0x89, 0x09, 0x80, - 0x89, 0x99, 0xb1, 0x6c, 0xb2, 0x0c, 0xb9, 0x72, 0xa8, 0x80, 0x0d, 0x93, 0x49, 0xd0, 0x0a, 0x11, - 0xda, 0x48, 0x90, 0x99, 0x29, 0xb1, 0x9d, 0x52, 0xc9, 0x8a, 0x42, 0xa0, 0xac, 0x20, 0x21, 0x9a, - 0xa3, 0xef, 0x22, 0x90, 0x9a, 0x12, 0x89, 0x9a, 0x84, 0x0d, 0x14, 0x00, 0xcc, 0x30, 0x92, 0xaa, - 0x23, 0x32, 0xec, 0x09, 0x53, 0x02, 0xba, 0xab, 0x71, 0x95, 0x19, 0x00, 0x80, 0x1a, 0x26, 0xa9, - 0x48, 0x91, 0x98, 0x5c, 0x15, 0xa8, 0x29, 0x22, 0x80, 0x99, 0x25, 0x99, 0x34, 0xa1, 0x18, 0x10, - 0x36, 0x11, 0x0a, 0x05, 0x1a, 0x24, 0x40, 0x15, 0x99, 0x99, 0x70, 0x96, 0x09, 0x10, 0x22, 0xeb, - 0x40, 0x91, 0x11, 0x99, 0x00, 0x41, 0x92, 0xac, 0x53, 0xb8, 0x08, 0x21, 0xa2, 0x89, 0x18, 0x98, - 0x10, 0x01, 0xdf, 0x32, 0xb8, 0xbb, 0x79, 0xf3, 0x3b, 0x81, 0x89, 0xba, 0x42, 0xfc, 0x38, 0xa0, - 0x09, 0xba, 0x20, 0x32, 0xe9, 0xbb, 0x38, 0xa8, 0xea, 0x4a, 0xc2, 0x9a, 0xab, 0x35, 0x90, 0xfb, - 0x19, 0x91, 0x98, 0x0a, 0xd1, 0x39, 0x92, 0xb0, 0xbf, 0x25, 0x9a, 0x0a, 0x01, 0x08, 0x08, 0x08, - 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, - 0x88, 0x01, 0x98, 0x18, 0x00, 0xa8, 0x30, 0xa8, 0x29, 0x88, 0x31, 0xb0, 0xab, 0x30, 0x21, 0x47, - 0xce, 0x48, 0x91, 0x09, 0x00, 0x81, 0xaa, 0x61, 0xa1, 0x9e, 0x33, 0xa8, 0x08, 0x03, 0x8e, 0xa3, - 0x3b, 0x94, 0x80, 0x0b, 0xd9, 0x54, 0xb0, 0x08, 0x8b, 0x25, 0xb8, 0x1a, 0xa2, 0x2b, 0x37, 0xbc, - 0x31, 0x99, 0xba, 0x66, 0xc8, 0x1a, 0x15, 0xbb, 0x51, 0xb0, 0x19, 0x91, 0x31, 0xda, 0x28, 0x91, - 0x39, 0xa6, 0x0d, 0x02, 0xa9, 0x60, 0xc0, 0x38, 0xa8, 0x20, 0xe1, 0x59, 0xc1, 0x29, 0x93, 0xa8, - 0x1b, 0x05, 0x99, 0x28, 0x91, 0x39, 0xed, 0x71, 0xa1, 0x8c, 0x21, 0x91, 0x09, 0x02, 0xb9, 0x89, - 0x58, 0x84, 0x8c, 0x12, 0xc9, 0x48, 0xb1, 0x1b, 0x17, 0xcb, 0x31, 0xb2, 0x0a, 0xa2, 0x3b, 0x07, - 0x9c, 0x11, 0x83, 0x9f, 0x22, 0xa1, 0x30, 0xfb, 0x7b, 0xb2, 0x19, 0x12, 0xac, 0x21, 0x90, 0x08, - 0x20, 0xa8, 0x9b, 0x45, 0xab, 0x94, 0x2c, 0x02, 0x12, 0xcf, 0x30, 0x04, 0xbc, 0x41, 0xb0, 0x49, - 0x91, 0xa8, 0x38, 0xdb, 0x36, 0xba, 0x39, 0x92, 0x9d, 0x25, 0xab, 0x31, 0xb8, 0x4a, 0xb2, 0x59, - 0xe9, 0x41, 0xa0, 0x89, 0x11, 0x0b, 0x96, 0x1d, 0x84, 0x0b, 0x02, 0x9a, 0x32, 0xbc, 0x31, 0x81, - 0x98, 0x32, 0xdf, 0x24, 0xd9, 0x39, 0x14, 0xdb, 0x41, 0xb9, 0x29, 0x03, 0x89, 0x18, 0xb0, 0x18, - 0x28, 0xc8, 0x78, 0xa1, 0x0d, 0x85, 0x1b, 0x83, 0xa8, 0x8e, 0x25, 0xba, 0x30, 0x95, 0x9e, 0x13, - 0x09, 0x90, 0x08, 0x10, 0xba, 0x42, 0x80, 0x48, 0xf9, 0x29, 0xa0, 0x50, 0x92, 0x0c, 0x82, 0x0d, - 0x12, 0x9a, 0x22, 0xd8, 0x28, 0x80, 0x82, 0xac, 0x43, 0x90, 0xeb, 0x72, 0xb8, 0x2a, 0x33, 0xf8, - 0x2b, 0x07, 0xab, 0x21, 0xa0, 0x38, 0xc1, 0x28, 0xb1, 0x39, 0xb1, 0x89, 0x00, 0x10, 0x35, 0xfa, - 0x49, 0xb9, 0x60, 0xb3, 0x0f, 0x03, 0x9b, 0x40, 0x83, 0xae, 0x11, 0x02, 0xaa, 0x83, 0x89, 0x22, - 0x9a, 0x91, 0x1a, 0x82, 0x30, 0xf3, 0x0f, 0x43, 0xd2, 0x0e, 0x13, 0x9a, 0x20, 0xb1, 0x2c, 0x85, - 0x8b, 0x00, 0x11, 0xb9, 0x40, 0xab, 0x47, 0xea, 0x38, 0x91, 0x89, 0x12, 0x99, 0x8b, 0x15, 0x19, - 0xd3, 0x0f, 0x04, 0x9a, 0x32, 0xb8, 0x1b, 0x83, 0x8b, 0x30, 0xa1, 0x73, 0xfa, 0x49, 0x91, 0x19, - 0xb2, 0x2d, 0x03, 0x8b, 0x92, 0x2c, 0x85, 0x8c, 0x42, 0xd8, 0x19, 0x80, 0x32, 0xba, 0x08, 0x33, - 0xcd, 0x10, 0x22, 0xc0, 0x2b, 0x85, 0x9d, 0x52, 0xb1, 0x0c, 0x14, 0xbb, 0x49, 0x05, 0xab, 0x83, - 0x0b, 0x05, 0xbb, 0x72, 0xb1, 0x8c, 0x33, 0xb8, 0x19, 0x91, 0x10, 0x19, 0xe3, 0x2b, 0x15, 0xda, - 0x49, 0x92, 0x1b, 0x81, 0x00, 0x19, 0xc1, 0x8b, 0x45, 0xb0, 0x9a, 0x50, 0xa3, 0x9e, 0x23, 0xb9, - 0x38, 0x84, 0xcb, 0x21, 0x03, 0x9f, 0x21, 0x80, 0x09, 0x9b, 0x27, 0x9c, 0x11, 0x18, 0x98, 0x80, - 0x0c, 0x03, 0x33, 0xdf, 0x41, 0x90, 0x8a, 0x10, 0xb0, 0x70, 0xb8, 0x59, 0x92, 0xbb, 0x40, 0xa1, - 0x31, 0xbb, 0x62, 0xb8, 0x9c, 0x53, 0xa8, 0x21, 0xd8, 0x2b, 0x17, 0xac, 0x31, 0x90, 0x98, 0x39, - 0xa3, 0x0d, 0x02, 0x9b, 0x47, 0xda, 0x28, 0x80, 0x28, 0xa1, 0x9b, 0x52, 0xb1, 0x0e, 0x15, 0xac, - 0x52, 0xd8, 0x28, 0x82, 0x9a, 0x13, 0xba, 0x72, 0xd8, 0x28, 0x91, 0x09, 0x12, 0xb8, 0x0a, 0x84, - 0x1b, 0x07, 0xac, 0x42, 0xb0, 0x0c, 0x24, 0xa9, 0x19, 0x91, 0x1a, 0x04, 0x9b, 0x18, 0x52, 0xd8, - 0x09, 0x33, 0xcb, 0x28, 0x07, 0xbc, 0x20, 0x31, 0x92, 0xdd, 0x40, 0x92, 0x8d, 0x13, 0xba, 0x41, - 0x91, 0x8a, 0x09, 0x15, 0xcb, 0x60, 0xa1, 0x8c, 0x05, 0xa9, 0x10, 0x80, 0x08, 0x01, 0xba, 0x61, - 0xa1, 0x8e, 0x33, 0xa9, 0x0a, 0x14, 0xbb, 0x22, 0x88, 0x2b, 0x87, 0xaa, 0x11, 0x30, 0xf1, 0x2e, - 0x06, 0xdb, 0x40, 0x92, 0xab, 0x43, 0xa9, 0x18, 0x82, 0x0b, 0x92, 0x1b, 0x14, 0xae, 0x54, 0xb9, - 0x28, 0xb8, 0x31, 0xb1, 0x3c, 0x97, 0x9a, 0x21, 0xb8, 0x40, 0xa1, 0x0c, 0x13, 0xbc, 0x72, 0xb0, - 0x48, 0xc8, 0x20, 0xda, 0x52, 0xa1, 0x19, 0xc9, 0x10, 0x01, 0x40, 0xe0, 0x2a, 0x84, 0x9c, 0x32, - 0xb0, 0x3b, 0x82, 0x98, 0x9b, 0x55, 0xc9, 0x00, 0x10, 0x92, 0xae, 0x44, 0xc8, 0x39, 0x91, 0x0a, - 0x91, 0x18, 0x32, 0xea, 0x09, 0x34, 0xe9, 0x29, 0x82, 0x89, 0x88, 0x01, 0x28, 0xd1, 0x39, 0x12, - 0xf2, 0x8f, 0x33, 0xb0, 0x0c, 0x34, 0xcb, 0x39, 0x82, 0xaa, 0x62, 0xb8, 0x08, 0x82, 0x9d, 0x44, - 0xb8, 0x38, 0xf9, 0x40, 0xb1, 0x2b, 0x05, 0xac, 0x20, 0x01, 0x82, 0x9b, 0x20, 0xb9, 0x28, 0x44, - 0xfb, 0x40, 0xa0, 0x09, 0x11, 0x91, 0x9e, 0x42, 0xa0, 0x3b, 0xa3, 0xae, 0x62, 0x80, 0x88, 0x9a, - 0x01, 0x3b, 0x97, 0x09, 0x98, 0x40, 0xe1, 0x4a, 0x82, 0x8d, 0x13, 0xab, 0x72, 0xa8, 0x9a, 0x40, - 0xa3, 0x8e, 0x24, 0xba, 0x29, 0x04, 0x8c, 0x23, 0xfa, 0x39, 0x04, 0xbb, 0x41, 0xb0, 0x18, 0x82, - 0x9a, 0x8c, 0x36, 0xb9, 0x28, 0xc1, 0x4b, 0x85, 0x8f, 0x25, 0xba, 0x30, 0xc8, 0x28, 0x81, 0x22, - 0xdb, 0x89, 0x23, 0x19, 0xe8, 0x61, 0xc0, 0x29, 0xb1, 0x29, 0x05, 0xba, 0x01, 0x00, 0x99, 0x01, - 0x20, 0x01, 0xb0, 0xdc, 0x71, 0xc9, 0x51, 0x92, 0xad, 0x21, 0x01, 0xaa, 0x52, 0xb8, 0x8a, 0x31, - 0x98, 0x32, 0xfb, 0x40, 0xb1, 0x2c, 0x82, 0x9a, 0x23, 0x9f, 0x26, 0xda, 0x38, 0x93, 0x9c, 0x32, - 0xb9, 0x1a, 0x07, 0x0b, 0x93, 0x8c, 0x22, 0x09, 0xc0, 0x3a, 0x04, 0xaa, 0x81, 0x48, 0xd2, 0x2b, - 0x12, 0xd8, 0x29, 0x93, 0x41, 0xf8, 0x19, 0x80, 0x18, 0x92, 0x3a, 0x93, 0xde, 0x71, 0xc1, 0x09, - 0x12, 0xb8, 0x48, 0xc1, 0x2a, 0xa3, 0x4b, 0x92, 0x8a, 0x80, 0xab, 0x47, 0xb8, 0x21, 0xeb, 0x10, - 0x12, 0xb0, 0x3a, 0xb4, 0x0f, 0x14, 0xb9, 0x28, 0x82, 0x8e, 0x22, 0x01, 0xcc, 0x31, 0xa0, 0x10, - 0xb0, 0x3d, 0x96, 0x9b, 0x52, 0xb1, 0x8b, 0x34, 0xfa, 0x39, 0x04, 0xac, 0x22, 0xa8, 0x40, 0xd0, - 0x2b, 0x06, 0xab, 0x22, 0xba, 0x20, 0x04, 0xbd, 0x43, 0xa8, 0x28, 0xb1, 0x2a, 0x90, 0x32, 0xca, - 0xaa, 0x74, 0xb8, 0x21, 0x89, 0x0a, 0x94, 0x1b, 0x00, 0x09, 0x05, 0x0d, 0x26, 0xbe, 0x42, 0xb9, - 0x40, 0x91, 0x0b, 0x02, 0x0a, 0xa8, 0x52, 0xf0, 0x49, 0xb3, 0x0e, 0x13, 0x0a, 0x93, 0x9e, 0x32, - 0xb1, 0x0b, 0x01, 0x12, 0x99, 0x0a, 0x96, 0x9d, 0x53, 0xa0, 0x08, 0xad, 0x54, 0xc8, 0x38, 0xa1, - 0x1b, 0x01, 0x18, 0xa0, 0x20, 0xf9, 0x68, 0xa1, 0x2b, 0x90, 0x18, 0x01, 0x2a, 0x94, 0xca, 0x19, - 0x00, 0x24, 0xa1, 0xaf, 0x25, 0xac, 0x43, 0xbb, 0x24, 0xbc, 0x52, 0xa0, 0x0a, 0x32, 0xd9, 0x28, - 0xb0, 0x59, 0x93, 0x8e, 0x23, 0xbb, 0x21, 0x82, 0x9c, 0x21, 0x84, 0xaf, 0x16, 0xba, 0x11, 0x00, - 0x98, 0x20, 0x90, 0x89, 0xa8, 0x68, 0xb1, 0x38, 0x90, 0x98, 0x5b, 0xa4, 0xbf, 0x46, 0xc8, 0x19, - 0x01, 0x99, 0x31, 0xa0, 0x98, 0x89, 0x58, 0x94, 0xbc, 0x73, 0xc8, 0x39, 0xa2, 0x2a, 0x94, 0x9b, - 0x10, 0x03, 0x8d, 0x23, 0xea, 0x40, 0xb8, 0x30, 0xa0, 0x29, 0xc2, 0x2c, 0x87, 0x9a, 0x19, 0x22, - 0xa2, 0x9e, 0x31, 0x80, 0xaa, 0x42, 0xca, 0x43, 0xda, 0x40, 0xa8, 0x28, 0xa1, 0x2a, 0xa3, 0x0f, - 0x16, 0xab, 0x38, 0xc2, 0x2a, 0x13, 0xd9, 0x3a, 0x85, 0x8b, 0x02, 0xa9, 0x23, 0xae, 0x41, 0x82, - 0x8a, 0xb0, 0x0d, 0x16, 0x99, 0x00, 0x09, 0x01, 0xc8, 0x50, 0xa1, 0x8e, 0x04, 0x0a, 0x13, 0xcc, - 0x51, 0xa0, 0x8b, 0x33, 0x9a, 0x32, 0xec, 0x40, 0xa0, 0x08, 0x20, 0xb2, 0x9f, 0x34, 0xab, 0x20, - 0x01, 0xab, 0x90, 0x70, 0x91, 0x0a, 0x89, 0x31, 0xb0, 0x2a, 0xb2, 0x59, 0x96, 0x8f, 0x03, 0x9a, - 0x42, 0xd8, 0x18, 0x00, 0x10, 0xa0, 0xbb, 0x71, 0xa2, 0x08, 0x9c, 0x53, 0xb1, 0x8d, 0x53, 0xb9, - 0x1a, 0x14, 0xaa, 0x01, 0x28, 0xc1, 0x0c, 0x25, 0xca, 0x30, 0xb1, 0x0d, 0x06, 0x9a, 0x02, 0x0a, - 0x83, 0x9d, 0x31, 0x85, 0xad, 0x21, 0x01, 0xa8, 0x1b, 0x03, 0x81, 0x9c, 0x22, 0xaa, 0x32, 0x89, - 0xb5, 0x0f, 0x05, 0xaa, 0x21, 0x9a, 0x24, 0xbc, 0x41, 0xa2, 0x9a, 0x01, 0x4a, 0xc0, 0x43, 0xca, - 0x29, 0xa4, 0x3c, 0x81, 0xb1, 0x3b, 0xa6, 0x0c, 0x85, 0x0b, 0x83, 0xba, 0x72, 0xd3, 0x0a, 0x00, - 0x81, 0x29, 0x83, 0xae, 0x34, 0xda, 0x48, 0xa1, 0x2b, 0x93, 0x8d, 0x53, 0xb1, 0xab, 0x20, 0x82, - 0x08, 0x9a, 0x54, 0x98, 0xca, 0x48, 0x81, 0xba, 0x44, 0x88, 0xab, 0x21, 0x3b, 0x87, 0x0d, 0x82, - 0x09, 0xb8, 0x33, 0x9a, 0x25, 0xe8, 0x0a, 0x02, 0x09, 0x12, 0xc1, 0x1a, 0x91, 0x1c, 0x47, 0x9f, - 0x21, 0x90, 0x10, 0xca, 0x30, 0x81, 0x88, 0xa9, 0x62, 0xc0, 0x1a, 0x01, 0x00, 0x3a, 0xb5, 0x8e, - 0x22, 0x82, 0xdb, 0x39, 0x04, 0xab, 0x24, 0xba, 0x30, 0x98, 0x18, 0xe9, 0x70, 0xa0, 0x08, 0xa1, - 0x3a, 0xb2, 0x50, 0xc2, 0x1a, 0xd8, 0x5a, 0x16, 0xbc, 0x30, 0x91, 0x08, 0x98, 0x38, 0xc2, 0x2b, - 0x83, 0x8a, 0x31, 0xa8, 0x10, 0xff, 0x44, 0xc9, 0x29, 0x94, 0x0b, 0x22, 0xca, 0x28, 0x11, 0x00, - 0xfb, 0x40, 0x92, 0xa9, 0x89, 0x21, 0x01, 0x92, 0x8e, 0x11, 0x94, 0x0f, 0x02, 0x89, 0x88, 0x12, - 0x8b, 0x02, 0xd1, 0x59, 0xb0, 0x18, 0x15, 0xdc, 0x48, 0x92, 0x8b, 0x31, 0x92, 0xbc, 0x38, 0x03, - 0x8a, 0x02, 0x9b, 0x48, 0xa4, 0x8e, 0x00, 0x44, 0xe9, 0x1a, 0x25, 0xbb, 0x48, 0xa2, 0x8c, 0x32, - 0xc8, 0x38, 0x93, 0xbc, 0x31, 0xb0, 0x18, 0x63, 0xd9, 0x08, 0x21, 0x91, 0x9e, 0x23, 0xab, 0x43, - 0xd0, 0x2a, 0x86, 0xab, 0x42, 0xb0, 0x29, 0xb0, 0x28, 0x82, 0x0a, 0x12, 0x81, 0xdf, 0x42, 0xa8, - 0x19, 0x84, 0xbc, 0x51, 0x14, 0xad, 0x28, 0xa0, 0x28, 0x15, 0xbb, 0x10, 0x9a, 0x27, 0xcb, 0x38, - 0x84, 0xaa, 0x49, 0xb2, 0x1b, 0x24, 0xa9, 0x89, 0x20, 0x99, 0x19, 0x15, 0x89, 0xa4, 0xcf, 0x25, - 0xaa, 0x12, 0x88, 0x89, 0x81, 0x0c, 0x04, 0x88, 0x08, 0x10, 0xba, 0x5b, 0xa4, 0x3a, 0xa1, 0x0a, - 0x35, 0xda, 0xab, 0x73, 0xa4, 0xab, 0x22, 0xa0, 0x02, 0x0f, 0x15, 0x9c, 0x20, 0xa0, 0x48, 0xc0, - 0x09, 0x22, 0xb0, 0x2a, 0x83, 0x0d, 0x81, 0x2b, 0x16, 0xad, 0x21, 0x91, 0x29, 0x91, 0x98, 0x8a, - 0xb9, 0x57, 0xb0, 0x0c, 0x15, 0xca, 0x48, 0xa3, 0x8c, 0x21, 0xb8, 0x30, 0xa0, 0x38, 0xc0, 0x29, - 0xb8, 0x73, 0xf1, 0x19, 0x10, 0x02, 0x98, 0xdb, 0x21, 0x90, 0x32, 0xc2, 0x8f, 0x14, 0x9b, 0x14, - 0xbb, 0x30, 0x93, 0x8c, 0x33, 0xbb, 0x2b, 0x07, 0x8c, 0x92, 0x29, 0x05, 0xaa, 0xaa, 0x54, 0x98, - 0x0b, 0x04, 0x8a, 0x82, 0x1c, 0x82, 0x92, 0xaf, 0x62, 0xa2, 0x8c, 0x02, 0x89, 0x80, 0x59, 0x95, - 0x8e, 0x22, 0xaa, 0x31, 0xc8, 0x0a, 0x26, 0xb9, 0x19, 0x02, 0x8b, 0x82, 0x88, 0x10, 0xb4, 0x8f, - 0x25, 0xab, 0x31, 0xd9, 0x39, 0x05, 0xac, 0x32, 0xba, 0x18, 0x36, 0xda, 0x28, 0xa8, 0x30, 0x91, - 0xac, 0x72, 0x90, 0x0b, 0x04, 0xba, 0x29, 0x05, 0x88, 0xb9, 0x60, 0xb2, 0x0c, 0x81, 0x08, 0x32, - 0xa0, 0xcb, 0x58, 0x92, 0x9e, 0x63, 0xb9, 0x38, 0x90, 0x00, 0x98, 0x89, 0x22, 0x8a, 0x40, 0xb1, - 0x9c, 0x20, 0x84, 0x09, 0xc1, 0x1a, 0x03, 0x20, 0xfa, 0x7c, 0xb1, 0x09, 0x62, 0xc0, 0xa9, 0x68, - 0x92, 0x8c, 0x22, 0x90, 0xc8, 0x3a, 0x04, 0xb9, 0x21, 0x09, 0xc3, 0x8d, 0x25, 0xca, 0x20, 0x01, - 0xc1, 0x0c, 0x23, 0xb1, 0x1b, 0xa3, 0x2d, 0xc3, 0x79, 0xa2, 0x9b, 0x89, 0x27, 0xa9, 0x89, 0x14, - 0xab, 0x21, 0x02, 0x8b, 0xd8, 0x4b, 0x85, 0x29, 0xd1, 0x1c, 0x14, 0xaa, 0x10, 0x10, 0x99, 0x88, - 0x11, 0x71, 0xc9, 0x19, 0x91, 0x2c, 0x86, 0x19, 0xe1, 0x2a, 0x82, 0x02, 0x9d, 0x23, 0xd9, 0x20, - 0xa8, 0x33, 0xaa, 0x92, 0x8f, 0x04, 0x09, 0x83, 0xdb, 0x58, 0xb0, 0x18, 0x15, 0xac, 0x11, 0x81, - 0x88, 0xa9, 0x13, 0x9a, 0x60, 0xa4, 0x8e, 0x23, 0xcb, 0x33, 0xaa, 0x81, 0x1a, 0x23, 0xab, 0x02, - 0xab, 0x88, 0x47, 0xa9, 0x9a, 0x14, 0x0e, 0x17, 0xeb, 0x40, 0x90, 0x09, 0x01, 0x0b, 0x92, 0x29, - 0x81, 0x8a, 0x84, 0x8e, 0x14, 0xaa, 0x03, 0x2a, 0xb0, 0x94, 0x8f, 0x86, 0x0a, 0x83, 0x8c, 0x13, - 0x8a, 0x8a, 0x42, 0xd0, 0x3b, 0x06, 0x9a, 0x39, 0xd0, 0x10, 0x0a, 0x86, 0x29, 0xc2, 0x0e, 0x03, - 0x1a, 0x00, 0x99, 0x20, 0x80, 0xda, 0x72, 0xc0, 0x3b, 0x86, 0x8c, 0x12, 0x8a, 0x13, 0x8c, 0x90, - 0x21, 0xab, 0x34, 0xd9, 0x30, 0xc2, 0x8c, 0x23, 0x98, 0x93, 0x1f, 0x93, 0x9b, 0x25, 0xab, 0x20, - 0x98, 0x32, 0xcd, 0x23, 0x99, 0x11, 0x80, 0x9e, 0x22, 0x98, 0x39, 0x93, 0xcb, 0x40, 0xaa, 0x32, - 0x07, 0xaf, 0x32, 0xd0, 0x49, 0xa2, 0x29, 0xd9, 0x49, 0x82, 0x9a, 0x42, 0xa9, 0x88, 0x3b, 0x95, - 0x89, 0x09, 0x15, 0x9d, 0x22, 0x98, 0x88, 0x1b, 0x06, 0x9f, 0x25, 0xba, 0x21, 0xb0, 0x39, 0xa2, - 0x9b, 0x30, 0x84, 0x0f, 0x25, 0xdb, 0x28, 0x91, 0x00, 0x89, 0x04, 0x8a, 0x90, 0x8a, 0x27, 0xbb, - 0x51, 0xe9, 0x48, 0x92, 0x0b, 0x02, 0xab, 0x32, 0x94, 0x9e, 0x22, 0x80, 0x0b, 0x93, 0x8e, 0x14, - 0x98, 0x98, 0x12, 0xaa, 0x40, 0xd0, 0x48, 0xb0, 0x38, 0xb2, 0x1e, 0x07, 0xac, 0x32, 0xd8, 0x30, - 0x98, 0x01, 0xa9, 0x29, 0x05, 0xab, 0x31, 0xc8, 0x20, 0x9b, 0x47, 0xac, 0x21, 0xc8, 0x30, 0x80, - 0x08, 0xb0, 0x2a, 0x80, 0x17, 0x9e, 0x31, 0xb1, 0x1b, 0x84, 0x0b, 0xa4, 0x6b, 0xb2, 0x0c, 0x22, - 0xb8, 0x29, 0x91, 0x58, 0xc1, 0x10, 0xdb, 0x6a, 0x85, 0xab, 0x32, 0xc0, 0x2b, 0x85, 0x8b, 0x22, - 0xa9, 0x18, 0x28, 0x01, 0xca, 0x3a, 0x94, 0x9a, 0x34, 0xeb, 0x71, 0xd8, 0x49, 0xb2, 0x1b, 0x13, - 0x88, 0x8b, 0x05, 0x9d, 0x42, 0xb0, 0x28, 0xaa, 0x40, 0xb2, 0x2e, 0x84, 0xab, 0x41, 0xa1, 0x8a, - 0x01, 0x18, 0x01, 0xc8, 0x2a, 0x82, 0x95, 0x2f, 0x93, 0xab, 0x28, 0x80, 0x43, 0x88, 0xf8, 0x19, - 0x00, 0x15, 0xae, 0x53, 0xb9, 0x00, 0x18, 0x81, 0xa9, 0x51, 0xe9, 0x48, 0x92, 0x8d, 0x32, 0xb8, - 0x2a, 0x21, 0xda, 0x20, 0x00, 0x21, 0xfb, 0x58, 0x90, 0x8b, 0x33, 0x9a, 0x82, 0xbb, 0x70, 0xd3, - 0x3a, 0x91, 0x00, 0xa8, 0x0f, 0x15, 0x0b, 0x92, 0x09, 0xb0, 0x4a, 0x02, 0xb8, 0x58, 0xd1, 0x28, - 0xa8, 0x12, 0x0a, 0x15, 0xcd, 0x11, 0x00, 0x95, 0x1d, 0x03, 0xaa, 0x8a, 0x24, 0x00, 0xd8, 0x0a, - 0x33, 0x88, 0x99, 0x84, 0x9f, 0x01, 0x14, 0xaa, 0x18, 0xa3, 0x9f, 0x26, 0xba, 0x21, 0x01, 0xbd, - 0x30, 0x04, 0xaa, 0x88, 0x15, 0x9a, 0xb1, 0x4a, 0x83, 0xbd, 0x64, 0xc8, 0x28, 0xa2, 0x0d, 0x14, - 0xaa, 0x10, 0x18, 0x90, 0xa8, 0x79, 0x93, 0xac, 0x12, 0x9a, 0x25, 0xaa, 0x30, 0xc8, 0xb9, 0x73, - 0x91, 0x8b, 0x33, 0xba, 0xba, 0x72, 0xb1, 0x3c, 0x07, 0xbb, 0x31, 0xa2, 0x0e, 0x82, 0x11, 0x9b, - 0x01, 0x1a, 0x05, 0x8b, 0x98, 0x48, 0xa3, 0x8a, 0x21, 0xeb, 0x61, 0xb8, 0x41, 0xad, 0x23, 0x88, - 0x98, 0x22, 0xfb, 0x28, 0x12, 0xc9, 0x42, 0xdb, 0x41, 0x98, 0x89, 0xa2, 0x68, 0xc0, 0x30, 0xb8, - 0x1b, 0x17, 0xbb, 0x53, 0xc9, 0x30, 0xb8, 0x39, 0xb4, 0x5b, 0xa0, 0x30, 0xd8, 0x1a, 0x14, 0xbb, - 0x63, 0x98, 0x98, 0x28, 0xba, 0x63, 0xa0, 0x09, 0x18, 0xb0, 0x59, 0x93, 0xbf, 0x36, 0xca, 0x48, - 0xb0, 0x29, 0x84, 0x0a, 0xa8, 0x28, 0x81, 0x18, 0xa9, 0x37, 0xdc, 0x28, 0x02, 0x19, 0xc1, 0x2a, - 0xa3, 0x1e, 0x94, 0x3b, 0xc3, 0x1b, 0x22, 0xb1, 0x8b, 0x30, 0xb3, 0x29, 0xda, 0x38, 0x82, 0x16, - 0x9d, 0x21, 0xf8, 0x3a, 0x07, 0xab, 0x21, 0xc0, 0x58, 0xa2, 0x8c, 0x13, 0xbb, 0x34, 0xcb, 0x62, - 0xb8, 0x19, 0x11, 0xba, 0x51, 0x81, 0xa9, 0x99, 0x58, 0x91, 0x22, 0xdc, 0x31, 0xf0, 0x6a, 0xb2, - 0x2a, 0x81, 0x89, 0x01, 0x89, 0x00, 0x29, 0xc1, 0x7a, 0xc1, 0x29, 0x81, 0x8a, 0x32, 0xa8, 0xb0, - 0x1d, 0x85, 0x28, 0xb9, 0x28, 0xb6, 0x1f, 0x84, 0x8a, 0x23, 0xeb, 0x30, 0xb1, 0x1b, 0x17, 0xbb, - 0x41, 0xa1, 0x8c, 0x13, 0x08, 0x00, 0xba, 0x19, 0x24, 0xeb, 0x41, 0x90, 0xb0, 0x3c, 0x85, 0x09, - 0xb8, 0x38, 0xc1, 0x28, 0x32, 0xf9, 0x31, 0xbb, 0x98, 0x70, 0xa4, 0x8c, 0x13, 0xab, 0x14, 0x0a, - 0x00, 0xd1, 0x2c, 0x13, 0xa1, 0x9a, 0x02, 0x9c, 0x07, 0x0c, 0x03, 0xa8, 0x2b, 0x13, 0xd0, 0x1d, - 0x84, 0x90, 0x09, 0x22, 0xf9, 0x49, 0xa1, 0x19, 0x81, 0x18, 0xa0, 0xaa, 0x53, 0x9a, 0x17, 0xdb, - 0x30, 0x82, 0x9c, 0x18, 0x44, 0xd8, 0x98, 0x28, 0x80, 0x83, 0x2c, 0xc3, 0x1d, 0x14, 0xaa, 0x01, - 0x99, 0x01, 0x11, 0xa2, 0xbf, 0x45, 0xb9, 0x18, 0x10, 0xb1, 0x2d, 0x93, 0x0a, 0x12, 0x90, 0x48, - 0xf3, 0x8f, 0x14, 0x99, 0x20, 0xc8, 0x58, 0xc1, 0x2a, 0x12, 0xbb, 0x72, 0xc8, 0x00, 0x10, 0x90, - 0x09, 0x00, 0x89, 0x32, 0xaa, 0x11, 0xb9, 0x6a, 0xa5, 0x9e, 0x34, 0xb9, 0x10, 0xa8, 0x29, 0x93, - 0x20, 0xeb, 0x53, 0xc9, 0x2a, 0x16, 0xac, 0x31, 0x89, 0x90, 0x18, 0x91, 0x09, 0x00, 0x58, 0xf1, - 0x69, 0xc8, 0x38, 0x91, 0x19, 0xb1, 0x0b, 0x62, 0x91, 0x0a, 0xaa, 0x41, 0xb1, 0x4a, 0xa3, 0x29, - 0xdc, 0x60, 0x90, 0x98, 0x61, 0xd8, 0x2a, 0x13, 0xb9, 0x19, 0x83, 0x0c, 0x14, 0x9a, 0xa8, 0x38, - 0x15, 0xe9, 0x39, 0xc3, 0x2c, 0x94, 0x2a, 0x02, 0xae, 0x22, 0x08, 0x1c, 0x85, 0x89, 0x88, 0x99, - 0x42, 0x88, 0x20, 0xbd, 0x22, 0x9b, 0x03, 0x32, 0xd2, 0x8e, 0x12, 0xa0, 0x1b, 0x05, 0x81, 0x8d, - 0x82, 0x00, 0x9d, 0x27, 0xca, 0x40, 0xc1, 0x2b, 0x04, 0x9b, 0x14, 0xaa, 0x18, 0x83, 0x9a, 0x01, - 0x99, 0x23, 0xa8, 0x9d, 0x64, 0xb9, 0x28, 0x01, 0xb9, 0x21, 0xaa, 0x62, 0xa0, 0x19, 0x08, 0xa0, - 0x1a, 0x14, 0x9a, 0x10, 0x98, 0x21, 0x89, 0x78, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xf7, 0x8f, 0x77, 0x8a, 0x77, 0x91, 0x88, 0x1b, - 0x86, 0x10, 0xfb, 0x18, 0xa2, 0x5b, 0xd0, 0x30, 0x98, 0x10, 0x0c, 0xd2, 0x1b, 0x80, 0x38, 0xc3, - 0x28, 0x9b, 0x27, 0x8a, 0x83, 0x09, 0x9c, 0x92, 0x58, 0xba, 0x88, 0x47, 0x19, 0xd8, 0x41, 0x8a, - 0x04, 0x80, 0xad, 0x00, 0x20, 0x09, 0x81, 0x90, 0x8f, 0x82, 0x11, 0x8d, 0x02, 0x81, 0x92, 0x8e, - 0x91, 0x40, 0xc0, 0x79, 0x80, 0x99, 0x11, 0x89, 0xc0, 0x38, 0x20, 0x37, 0xc9, 0xba, 0x51, 0x99, - 0x12, 0x91, 0x2b, 0xfa, 0x31, 0x88, 0x89, 0xb0, 0x3b, 0xc1, 0x31, 0x63, 0xb8, 0xf1, 0x3d, 0xa2, - 0x30, 0x99, 0xa0, 0x11, 0x2a, 0x9b, 0x17, 0x0f, 0x02, 0x10, 0x91, 0x9b, 0x58, 0x01, 0xb1, 0x8d, - 0x88, 0x28, 0xa3, 0x11, 0x89, 0x39, 0xf8, 0x28, 0xbd, 0x12, 0x01, 0x47, 0xcc, 0x80, 0x20, 0x30, - 0xa2, 0xba, 0x0e, 0x25, 0x99, 0x01, 0xba, 0x30, 0x19, 0x95, 0x9c, 0x71, 0xb8, 0x11, 0x8d, 0x83, - 0x59, 0x92, 0x08, 0xca, 0x31, 0x10, 0xd2, 0x8b, 0x0a, 0x04, 0x0c, 0x81, 0xbc, 0x44, 0x30, 0xfb, - 0x10, 0x9b, 0x21, 0x10, 0xb2, 0x8f, 0x03, 0x54, 0xc8, 0x88, 0x89, 0x24, 0x98, 0x19, 0x91, 0x88, - 0x18, 0x29, 0xb7, 0x0f, 0x02, 0x08, 0xb8, 0x3c, 0x94, 0x28, 0xa0, 0x00, 0xac, 0x22, 0x11, 0x01, - 0x9c, 0xb2, 0x2d, 0xa3, 0x1a, 0x30, 0xd4, 0x8d, 0x21, 0xd8, 0x1a, 0x14, 0x1b, 0x27, 0x8b, 0xa8, - 0x12, 0x3a, 0x27, 0xc0, 0xaa, 0x9c, 0x31, 0x22, 0x94, 0x9b, 0x0d, 0x95, 0x1a, 0x92, 0x8a, 0x14, - 0x38, 0xd0, 0x20, 0x9e, 0x11, 0x43, 0xdb, 0x18, 0x10, 0xb9, 0x28, 0xa1, 0xad, 0x34, 0xaa, 0xa4, - 0x0f, 0x92, 0x60, 0x82, 0x9a, 0x18, 0x81, 0x01, 0x34, 0xcb, 0x03, 0xbf, 0x81, 0x42, 0x80, 0x98, - 0x1a, 0xe2, 0x1d, 0x84, 0x30, 0xa1, 0xaa, 0x9c, 0x82, 0x5c, 0x84, 0xa9, 0x9b, 0x14, 0x08, 0xab, - 0x09, 0x04, 0x3c, 0x05, 0x02, 0x8f, 0x81, 0x10, 0x90, 0x30, 0xb0, 0x49, 0x04, 0x18, 0xf8, 0x19, - 0xba, 0x19, 0x30, 0x96, 0x49, 0xf9, 0x89, 0x31, 0xa8, 0x09, 0x02, 0x3a, 0x84, 0x31, 0x90, 0xac, - 0x48, 0x93, 0x58, 0x93, 0x4c, 0xb4, 0x9a, 0xdd, 0x38, 0x02, 0xa0, 0x0d, 0x08, 0x82, 0x48, 0x80, - 0xc9, 0x40, 0x10, 0xe3, 0x48, 0xa0, 0x99, 0x2a, 0x04, 0xa8, 0x49, 0x17, 0xc9, 0x18, 0xa9, 0x13, - 0x98, 0xba, 0x0e, 0x14, 0x10, 0xac, 0x88, 0x52, 0x99, 0x01, 0x80, 0x80, 0xad, 0x46, 0x90, 0x0a, - 0x88, 0x53, 0xeb, 0x29, 0x01, 0x40, 0x90, 0x81, 0x0c, 0xc3, 0x0a, 0xab, 0x84, 0x38, 0xdb, 0x33, - 0x52, 0xa8, 0xb9, 0x0c, 0x12, 0x91, 0x18, 0x28, 0x82, 0x0c, 0xe6, 0x4d, 0x83, 0x8b, 0x11, 0x8c, - 0x13, 0x00, 0x99, 0x88, 0x9c, 0x73, 0xf0, 0x0b, 0x12, 0x02, 0x8a, 0x30, 0xb3, 0x1d, 0x80, 0x32, - 0xb8, 0xbc, 0x89, 0x41, 0x83, 0xac, 0x73, 0xb2, 0x5b, 0x86, 0x9b, 0x80, 0x09, 0x50, 0x83, 0xaa, - 0x8b, 0x90, 0xc1, 0x0f, 0x14, 0x20, 0xea, 0x18, 0x22, 0xd9, 0x88, 0x63, 0xa8, 0x99, 0x09, 0x21, - 0x34, 0xd8, 0x9b, 0x81, 0x52, 0x98, 0x22, 0xbd, 0x80, 0x50, 0xa0, 0x21, 0xbb, 0x98, 0x78, 0x94, - 0x9e, 0x22, 0x21, 0xd0, 0x0c, 0x12, 0x98, 0x28, 0xc0, 0x38, 0x80, 0xc9, 0x2b, 0x27, 0x98, 0x89, - 0x54, 0xd9, 0x89, 0x30, 0xa4, 0x19, 0x90, 0xae, 0x12, 0x89, 0x42, 0x81, 0xca, 0x08, 0x32, 0xea, - 0x29, 0x11, 0x40, 0xb8, 0x98, 0x3c, 0x84, 0x10, 0xa8, 0x2a, 0xf2, 0x48, 0x32, 0xc3, 0xaf, 0x38, - 0x92, 0x28, 0xbb, 0x20, 0x31, 0x24, 0xfe, 0x09, 0x20, 0x83, 0x8b, 0xb0, 0x9d, 0x61, 0x04, 0xa9, - 0x89, 0x99, 0x65, 0x91, 0x9a, 0x89, 0x32, 0xb2, 0x0b, 0xaa, 0x35, 0x02, 0xa9, 0xaa, 0x29, 0x80, - 0x42, 0xa4, 0xff, 0x28, 0x22, 0xa1, 0xdb, 0x29, 0x06, 0x9b, 0x02, 0x1b, 0xa2, 0x20, 0x21, 0xea, - 0x99, 0x71, 0xb0, 0x00, 0x28, 0x82, 0x10, 0x88, 0xfe, 0x3a, 0x17, 0x98, 0x9b, 0x20, 0x08, 0x00, - 0x11, 0x94, 0x8e, 0x82, 0x09, 0x28, 0x81, 0x80, 0x9a, 0xba, 0x81, 0x2d, 0xb5, 0x4a, 0x99, 0x03, - 0x1c, 0xc2, 0x39, 0x99, 0x57, 0xca, 0x21, 0x98, 0xb9, 0x78, 0xa4, 0x3a, 0xb3, 0x2a, 0xd9, 0x48, - 0x10, 0x11, 0x11, 0xef, 0x29, 0x13, 0x88, 0xba, 0x00, 0x00, 0x88, 0x81, 0x8a, 0x02, 0x52, 0xa2, - 0xcf, 0x90, 0x50, 0x85, 0xa9, 0x8b, 0x04, 0x49, 0x04, 0xa9, 0x8b, 0x33, 0x80, 0xdc, 0x40, 0x02, - 0x08, 0xba, 0xbb, 0xcc, 0x71, 0x94, 0x18, 0xa9, 0x89, 0x22, 0xb8, 0x0c, 0x10, 0x25, 0x08, 0xc8, - 0x30, 0xda, 0x52, 0x91, 0x89, 0x98, 0xab, 0x64, 0x80, 0x08, 0x81, 0x88, 0xcd, 0x01, 0x1a, 0x37, - 0xb8, 0x9e, 0x00, 0x32, 0xb0, 0x3b, 0x86, 0xad, 0x28, 0x25, 0xb9, 0x89, 0x11, 0x00, 0xb9, 0x29, - 0x32, 0xc8, 0x61, 0xb8, 0x39, 0xa3, 0x8d, 0x26, 0x9c, 0x23, 0x99, 0x88, 0xb9, 0x09, 0x9f, 0x57, - 0xb8, 0x89, 0x11, 0x90, 0x10, 0x11, 0xc8, 0xcd, 0x40, 0x02, 0x00, 0xc9, 0x1a, 0x83, 0x00, 0x98, - 0x98, 0x20, 0x36, 0x88, 0xe9, 0x9d, 0x32, 0x22, 0x12, 0xcb, 0xae, 0x10, 0x73, 0x92, 0x8b, 0xb8, - 0x09, 0x32, 0x01, 0xa9, 0xa9, 0x78, 0xc8, 0x09, 0xaa, 0x74, 0x82, 0xb9, 0x8c, 0x21, 0x30, 0x15, - 0xc9, 0xac, 0x41, 0x82, 0x11, 0xba, 0x9b, 0x30, 0x47, 0xc8, 0x8c, 0x10, 0x04, 0x08, 0x80, 0xea, - 0x1a, 0x24, 0x10, 0xa9, 0x8a, 0xaa, 0x61, 0x92, 0x88, 0x18, 0xc1, 0x9a, 0x40, 0xa3, 0x9f, 0x63, - 0xa0, 0x0a, 0x9a, 0x53, 0x01, 0x9a, 0x91, 0x9d, 0x33, 0x8a, 0x43, 0xa0, 0xae, 0x31, 0x18, 0x82, - 0xcd, 0x28, 0x41, 0x94, 0x9e, 0x00, 0x10, 0x11, 0x18, 0xd1, 0x9c, 0x29, 0x17, 0x8b, 0x03, 0xcb, - 0x1a, 0x25, 0xa8, 0x08, 0x10, 0x04, 0xae, 0x28, 0x13, 0xba, 0x68, 0xa1, 0x08, 0xac, 0x13, 0x40, - 0xf1, 0x0a, 0x21, 0x93, 0x8b, 0x88, 0x15, 0x8b, 0x04, 0x9c, 0xd8, 0x48, 0x91, 0x58, 0xb2, 0xac, - 0x18, 0x17, 0x98, 0xa0, 0x8a, 0x22, 0x00, 0x00, 0x8a, 0x88, 0x09, 0x57, 0xc9, 0x0b, 0x04, 0x28, - 0x90, 0x08, 0xfb, 0x18, 0x35, 0xe8, 0x8a, 0x01, 0x21, 0xa1, 0x99, 0x19, 0xb1, 0x72, 0xa8, 0xa8, - 0x89, 0x72, 0x05, 0x99, 0x9b, 0x11, 0x12, 0xab, 0x04, 0x9e, 0x23, 0x1a, 0x94, 0xab, 0x9b, 0x42, - 0x10, 0x05, 0xae, 0x31, 0xb1, 0x19, 0xa2, 0x89, 0x89, 0x05, 0xbc, 0x51, 0xa2, 0x2b, 0x16, 0xba, - 0x90, 0x79, 0x83, 0xd8, 0x0b, 0x83, 0xca, 0x72, 0x91, 0xb8, 0x59, 0xa1, 0x2a, 0x93, 0x2a, 0x98, - 0x45, 0xcb, 0x10, 0x99, 0x89, 0x58, 0x27, 0xdb, 0x28, 0xb8, 0x49, 0x03, 0x99, 0x09, 0xa1, 0x0b, - 0x12, 0x18, 0xc8, 0x40, 0x91, 0xae, 0x11, 0x2a, 0x06, 0x80, 0x88, 0x08, 0x03, 0x63, 0xfa, 0x39, - 0x92, 0x51, 0xea, 0x10, 0x08, 0x90, 0x18, 0xa0, 0x9b, 0x08, 0x38, 0xf2, 0x50, 0xd1, 0x1c, 0x84, - 0x8c, 0x14, 0x80, 0x89, 0x81, 0x1b, 0x93, 0x0c, 0x07, 0x9b, 0x44, 0xb8, 0x09, 0xa8, 0x40, 0x13, - 0xeb, 0x89, 0x00, 0x20, 0x84, 0x9b, 0xac, 0x73, 0xc2, 0x19, 0x91, 0x8a, 0x44, 0xa9, 0x99, 0x0a, - 0x24, 0x81, 0x19, 0xf2, 0x0d, 0x25, 0x90, 0x8a, 0x98, 0x59, 0x82, 0x98, 0xac, 0x40, 0x92, 0x98, - 0x29, 0x97, 0x8d, 0x12, 0x80, 0xb9, 0x20, 0x01, 0x00, 0xaa, 0x8a, 0x05, 0xaf, 0x33, 0x81, 0xa0, - 0x3a, 0xb2, 0x3a, 0x73, 0xc1, 0x8d, 0x63, 0xa0, 0x89, 0x99, 0x20, 0x32, 0xa0, 0xbc, 0x9b, 0x52, - 0x26, 0xa1, 0xcf, 0x10, 0x32, 0xb0, 0xac, 0x21, 0x80, 0x31, 0xa5, 0xbf, 0x30, 0x23, 0x81, 0xdc, - 0x18, 0x02, 0x18, 0x25, 0xea, 0x8b, 0x53, 0x81, 0xb9, 0x1b, 0x13, 0x19, 0x83, 0xae, 0x08, 0x12, - 0x1a, 0x13, 0x99, 0xcf, 0x50, 0x03, 0xcc, 0x21, 0x98, 0x31, 0xb1, 0x8b, 0x28, 0x93, 0x9b, 0x28, - 0x07, 0x9f, 0x63, 0xb0, 0x8a, 0x02, 0x89, 0x32, 0x00, 0xd0, 0xac, 0x31, 0xb1, 0x61, 0xa1, 0x8c, - 0x11, 0x89, 0x33, 0xf9, 0x89, 0x29, 0x07, 0xa9, 0x8a, 0x16, 0x89, 0x98, 0x81, 0x9a, 0x32, 0x30, - 0xd1, 0x58, 0xb8, 0x88, 0x1b, 0x92, 0x49, 0x16, 0x98, 0xc9, 0x0d, 0x23, 0x91, 0x09, 0x83, 0x8c, - 0xf0, 0x3a, 0x14, 0xa8, 0x8c, 0x90, 0x63, 0xc8, 0x48, 0x93, 0xcc, 0x38, 0x05, 0xab, 0x10, 0x81, - 0x38, 0x22, 0xf0, 0x8e, 0x32, 0xa9, 0x53, 0xb0, 0x9d, 0x00, 0x23, 0xa0, 0x8a, 0xc0, 0x19, 0x17, - 0xa9, 0x0a, 0x02, 0x23, 0xaa, 0xd9, 0x58, 0xa0, 0x41, 0xa8, 0xba, 0x4b, 0x27, 0x99, 0x89, 0x00, - 0x8e, 0x34, 0x81, 0xda, 0x1a, 0x22, 0x83, 0xbd, 0x33, 0xb9, 0x9c, 0x24, 0x89, 0x01, 0x0a, 0x15, - 0xaa, 0xeb, 0x40, 0x81, 0x98, 0x19, 0x17, 0xec, 0x20, 0x21, 0xa8, 0x19, 0x88, 0x99, 0x50, 0x94, - 0x1a, 0xa1, 0x8c, 0x26, 0xcc, 0x28, 0x12, 0x18, 0x93, 0xbf, 0x38, 0x13, 0xa9, 0x0b, 0x21, 0xd1, - 0x6a, 0xa2, 0xaa, 0x19, 0x14, 0x11, 0xa2, 0xdf, 0x28, 0x24, 0xc9, 0x18, 0x81, 0x99, 0x18, 0x15, - 0x19, 0xe9, 0x48, 0xa2, 0x9b, 0x28, 0x14, 0x13, 0xfc, 0x1b, 0x01, 0x23, 0xa9, 0x9a, 0x40, 0xb1, - 0x8c, 0x43, 0xb8, 0x18, 0x13, 0x01, 0xfb, 0x0b, 0x02, 0x58, 0x15, 0xc9, 0x0c, 0x22, 0x98, 0x2a, - 0x86, 0x9a, 0x01, 0xc9, 0x5a, 0x05, 0xac, 0x11, 0x91, 0xa8, 0x9b, 0x47, 0xa1, 0x8b, 0x00, 0x12, - 0xc9, 0x0b, 0x45, 0xa8, 0x8c, 0x42, 0x98, 0x80, 0xaa, 0x40, 0x05, 0xba, 0x8b, 0x35, 0xa0, 0x0b, - 0x05, 0x98, 0xac, 0x12, 0x31, 0xb1, 0x9e, 0x21, 0x41, 0xd8, 0x0a, 0x14, 0xc8, 0x2b, 0x83, 0x19, - 0x82, 0xaa, 0x23, 0xcf, 0x35, 0xa9, 0x98, 0x29, 0x13, 0x09, 0xdb, 0x64, 0xc8, 0x0a, 0x32, 0x01, - 0xb9, 0x0c, 0x91, 0x3a, 0xa5, 0x2c, 0x87, 0x9b, 0x99, 0x62, 0x03, 0xbd, 0x48, 0x91, 0x88, 0x30, - 0xd1, 0x19, 0xc0, 0x60, 0x91, 0xa9, 0x1a, 0x32, 0x92, 0xaf, 0x21, 0x13, 0xab, 0x18, 0x80, 0x9a, - 0x31, 0x37, 0xfa, 0x0b, 0x32, 0x03, 0xba, 0x00, 0xaf, 0x51, 0x83, 0xbb, 0x19, 0x03, 0x1b, 0x07, - 0xa9, 0x8e, 0x23, 0x08, 0x80, 0x8b, 0x80, 0x10, 0x10, 0x01, 0xd9, 0xcd, 0x62, 0x81, 0xa9, 0x29, - 0x32, 0x96, 0xae, 0x52, 0xb9, 0x00, 0x30, 0x83, 0xab, 0x8c, 0x25, 0xa8, 0x8c, 0x31, 0x81, 0xbc, - 0x62, 0xa1, 0x8f, 0x21, 0x81, 0x88, 0xac, 0x22, 0x08, 0x15, 0xda, 0x19, 0x04, 0xab, 0x52, 0x91, - 0xab, 0x18, 0x44, 0xb0, 0xab, 0x39, 0x47, 0xb8, 0x9a, 0x10, 0x10, 0x90, 0x19, 0x83, 0xcf, 0x40, - 0x12, 0xb9, 0x9f, 0x63, 0x90, 0xaa, 0x08, 0x19, 0x02, 0x62, 0xc0, 0x9a, 0x21, 0x88, 0x14, 0xa8, - 0xca, 0x30, 0x34, 0xea, 0x2a, 0x01, 0x00, 0x09, 0x91, 0xac, 0x00, 0x73, 0xc0, 0x18, 0x18, 0xf9, - 0x19, 0x02, 0x41, 0xb1, 0x0c, 0x80, 0x93, 0x9f, 0x43, 0x88, 0xb9, 0x20, 0x82, 0x98, 0x0d, 0x26, - 0x82, 0xcd, 0x19, 0x31, 0xb1, 0x60, 0xa0, 0xa9, 0xa9, 0x52, 0xa2, 0x0b, 0xa1, 0x7a, 0x04, 0xdc, - 0x28, 0x01, 0x11, 0xb8, 0x0a, 0x83, 0xab, 0x73, 0x82, 0xc0, 0x9e, 0x53, 0x90, 0x8b, 0x00, 0x21, - 0x02, 0xcd, 0x28, 0x01, 0x89, 0x32, 0x91, 0xbd, 0x1a, 0x26, 0xb8, 0x09, 0x21, 0xa0, 0x80, 0x9a, - 0xfb, 0x79, 0x83, 0x08, 0x88, 0xd9, 0x0b, 0x33, 0x54, 0xe0, 0x1a, 0x01, 0x9a, 0x62, 0xb0, 0x8b, - 0x32, 0xaa, 0x83, 0x8e, 0x22, 0x14, 0x8a, 0xa3, 0xbf, 0x08, 0x63, 0x83, 0x9c, 0x99, 0x22, 0x11, - 0xf9, 0x49, 0x91, 0x1b, 0x03, 0xa9, 0x9a, 0x9a, 0x77, 0xc0, 0x1a, 0xa1, 0x38, 0x33, 0xfa, 0x18, - 0x99, 0x32, 0x91, 0x88, 0x9a, 0x90, 0x70, 0x82, 0xbc, 0x09, 0x44, 0xb0, 0x30, 0xfb, 0x18, 0x10, - 0x11, 0xa0, 0x0c, 0x81, 0x29, 0x35, 0xf9, 0x1a, 0x01, 0x19, 0x00, 0xc0, 0x29, 0x9b, 0x47, 0xb0, - 0x8b, 0x20, 0x83, 0x29, 0xc8, 0x91, 0x4b, 0x93, 0x38, 0xfa, 0xa0, 0x3b, 0x36, 0x02, 0xde, 0x28, - 0x02, 0x00, 0xba, 0x10, 0xa0, 0x38, 0x21, 0x94, 0xcf, 0x28, 0x86, 0x09, 0xa0, 0x8d, 0x44, 0xb0, - 0x0b, 0x03, 0x9b, 0x41, 0x11, 0xb1, 0x9f, 0x48, 0x84, 0x8a, 0x81, 0xab, 0x30, 0x17, 0x9b, 0x00, - 0x8c, 0x13, 0x18, 0xca, 0x33, 0xaf, 0x44, 0xa8, 0xab, 0x31, 0xa1, 0x50, 0x80, 0xe9, 0x38, 0x80, - 0x02, 0xb8, 0x3b, 0xb0, 0x61, 0x83, 0xbf, 0x42, 0x99, 0x10, 0x03, 0xae, 0x89, 0x72, 0x82, 0xab, - 0x10, 0x8a, 0x01, 0x04, 0x09, 0xe8, 0x59, 0xa2, 0x1a, 0x92, 0xca, 0x51, 0x91, 0x99, 0x9c, 0x64, - 0xa0, 0x09, 0x81, 0xc9, 0x10, 0x11, 0x12, 0xeb, 0x39, 0x06, 0x9c, 0x20, 0x80, 0x88, 0x91, 0x89, - 0x33, 0xaa, 0xfa, 0x71, 0xa1, 0x0b, 0x20, 0x03, 0xae, 0x08, 0x53, 0xc8, 0x28, 0xa0, 0x21, 0xdb, - 0x11, 0x38, 0xb1, 0x8a, 0x8a, 0x34, 0x81, 0x09, 0x41, 0xf2, 0x0f, 0x21, 0x01, 0x99, 0xab, 0x63, - 0xb1, 0x2d, 0xa4, 0x3b, 0x92, 0x8b, 0x21, 0xac, 0x13, 0x21, 0xa1, 0xbf, 0x32, 0x28, 0xe0, 0x4a, - 0x92, 0x0b, 0x32, 0xa2, 0xdf, 0x49, 0x13, 0x9a, 0x11, 0xe8, 0x48, 0x91, 0x1b, 0xa2, 0x10, 0x8c, - 0x12, 0x51, 0xf0, 0x2b, 0x93, 0x18, 0xba, 0x58, 0x02, 0xd8, 0x3a, 0xa3, 0x90, 0x0f, 0x05, 0x0a, - 0x90, 0x1b, 0x86, 0x28, 0xc0, 0x28, 0x88, 0xaa, 0x63, 0x90, 0x90, 0xac, 0x43, 0xe9, 0x21, 0x91, - 0x89, 0xa1, 0x3a, 0x87, 0x9d, 0x33, 0x89, 0x88, 0x9a, 0x0a, 0x35, 0x08, 0x22, 0xed, 0x20, 0xa1, - 0x20, 0xc2, 0x8c, 0x02, 0x40, 0xc2, 0xae, 0x31, 0xa3, 0x0b, 0x23, 0x8b, 0xa1, 0x2a, 0x93, 0x23, - 0x8d, 0xe8, 0x65, 0xd8, 0x19, 0x11, 0x88, 0x90, 0x0a, 0x23, 0xac, 0x34, 0x89, 0xa2, 0xbf, 0x39, - 0x15, 0x88, 0xa8, 0xaa, 0x22, 0x51, 0xd9, 0x20, 0x90, 0x9a, 0x57, 0xd9, 0x1a, 0x21, 0x82, 0x8a, - 0xa8, 0x19, 0x41, 0x25, 0xc9, 0xbd, 0x72, 0x91, 0x89, 0x80, 0xca, 0x51, 0x81, 0x90, 0xab, 0x20, - 0x40, 0xb3, 0x8c, 0xb0, 0x71, 0x82, 0xcb, 0x31, 0xd8, 0x41, 0xa8, 0x29, 0x98, 0x80, 0x58, 0x84, - 0x9c, 0x98, 0x41, 0x80, 0xa8, 0x8b, 0x14, 0x81, 0x9b, 0x44, 0xd8, 0xac, 0x73, 0xa0, 0x80, 0x08, - 0x81, 0x0b, 0x04, 0x9c, 0x43, 0x99, 0x8a, 0x32, 0xc9, 0x01, 0xac, 0x74, 0xb1, 0x99, 0x88, 0x48, - 0x86, 0x9b, 0x92, 0x1a, 0x13, 0x99, 0xb1, 0x8c, 0x1a, 0x57, 0x08, 0xdc, 0x28, 0x05, 0x88, 0x99, - 0x8a, 0x22, 0x22, 0xc9, 0x98, 0x89, 0x54, 0xb0, 0x38, 0xfa, 0x39, 0x14, 0xa9, 0xa9, 0x3a, 0x04, - 0xa0, 0x2a, 0xd1, 0x49, 0xa2, 0x8b, 0x22, 0xa1, 0x1e, 0x05, 0xaa, 0x0b, 0x16, 0xa9, 0x80, 0x48, - 0x91, 0x10, 0xe9, 0x41, 0x90, 0x30, 0xdd, 0x21, 0x11, 0xc8, 0x18, 0xfa, 0x30, 0x83, 0x88, 0xa0, - 0xbf, 0x53, 0x92, 0x89, 0xab, 0x02, 0x51, 0x91, 0x0b, 0xd1, 0x49, 0x01, 0x93, 0xaf, 0x23, 0x98, - 0x30, 0xd0, 0x9b, 0x23, 0x50, 0xb3, 0x9f, 0x08, 0x25, 0xa9, 0x99, 0x0a, 0x24, 0x01, 0xba, 0xaa, - 0x3a, 0x37, 0x80, 0xca, 0xab, 0x72, 0x82, 0x98, 0xa8, 0x19, 0x43, 0xb1, 0x0a, 0xc9, 0x61, 0xb2, - 0x0a, 0x20, 0xc9, 0x45, 0xba, 0x09, 0x1b, 0x27, 0x9a, 0x98, 0x18, 0x19, 0x87, 0x8b, 0x92, 0x2c, - 0x86, 0xab, 0x20, 0x02, 0x9a, 0x15, 0x9c, 0xa2, 0x61, 0xa9, 0x80, 0x2a, 0x17, 0xaa, 0xb3, 0x1e, - 0x12, 0x02, 0x80, 0xbd, 0x1a, 0x12, 0x31, 0x83, 0xdf, 0x28, 0x11, 0xa1, 0x8c, 0x21, 0x85, 0x8d, - 0x83, 0xa9, 0x28, 0x13, 0xa8, 0x9a, 0x09, 0x27, 0x0d, 0x83, 0xac, 0x33, 0x89, 0x00, 0xb8, 0x8f, - 0x35, 0xa0, 0x8a, 0xb9, 0x78, 0x81, 0xb8, 0x29, 0x15, 0xda, 0x5a, 0xc3, 0x2a, 0x03, 0x8a, 0x89, - 0x98, 0x49, 0x17, 0xab, 0x98, 0x30, 0x06, 0xcc, 0x20, 0x01, 0x98, 0x81, 0x10, 0xec, 0x31, 0x08, - 0x03, 0xeb, 0x19, 0x23, 0xa1, 0x0c, 0x92, 0x81, 0x40, 0xfb, 0x29, 0x24, 0xb0, 0x1a, 0xa8, 0x18, - 0x82, 0x88, 0x42, 0xfc, 0x39, 0x82, 0x91, 0xac, 0x38, 0x16, 0xbb, 0x21, 0xa8, 0x38, 0xa9, 0x57, - 0xc0, 0x0a, 0x80, 0x38, 0x02, 0x08, 0x99, 0xf9, 0x5d, 0x94, 0x0a, 0xa0, 0x20, 0xc9, 0x58, 0xa0, - 0x18, 0x31, 0xc0, 0x88, 0x9e, 0x21, 0x24, 0xb0, 0x9c, 0x92, 0x10, 0x98, 0x32, 0xa4, 0x8f, 0x28, - 0xa3, 0x28, 0xba, 0x36, 0xab, 0x05, 0xaf, 0x31, 0x88, 0x00, 0x20, 0xd1, 0x8a, 0xb9, 0x70, 0x85, - 0x99, 0x00, 0x99, 0x80, 0x0c, 0x37, 0xc0, 0x8a, 0x29, 0x83, 0x1a, 0x01, 0x80, 0x00, 0x9a, 0xce, - 0x41, 0x83, 0x9a, 0x44, 0xdb, 0x88, 0x2a, 0x16, 0x98, 0x8a, 0x11, 0x98, 0x88, 0x9b, 0x25, 0x61, - 0xd2, 0x8d, 0x11, 0x88, 0x31, 0xa2, 0x8b, 0xca, 0x30, 0x83, 0x98, 0x09, 0x16, 0xac, 0x13, 0xbc, - 0x00, 0x76, 0xd2, 0x1a, 0xa1, 0x09, 0x23, 0xa1, 0x9c, 0x32, 0x98, 0xea, 0x51, 0xa9, 0x52, 0xa8, - 0xa8, 0x09, 0x10, 0x42, 0x12, 0xf0, 0x0f, 0x03, 0x89, 0x01, 0x18, 0xba, 0x31, 0xc9, 0x38, 0xa2, - 0x52, 0xeb, 0x38, 0xa1, 0x2b, 0x16, 0xaa, 0x08, 0x12, 0x08, 0xc9, 0x81, 0x68, 0x91, 0x11, 0xcf, - 0x28, 0x22, 0x02, 0xdb, 0x99, 0x21, 0x02, 0xd8, 0x4a, 0x92, 0x8b, 0x34, 0xe1, 0x8d, 0x34, 0x80, - 0xaa, 0x8b, 0x29, 0x17, 0x08, 0x80, 0xbd, 0x32, 0x88, 0xa1, 0x2b, 0x27, 0xdb, 0x50, 0xb0, 0x09, - 0x01, 0x01, 0x80, 0xac, 0x31, 0x80, 0x23, 0xfb, 0x79, 0x91, 0x9c, 0x22, 0x99, 0x01, 0x00, 0xa0, - 0xad, 0x50, 0x93, 0x1b, 0xb2, 0x1c, 0x34, 0x91, 0x9f, 0x11, 0x00, 0x83, 0x9f, 0x01, 0x09, 0x53, - 0xe0, 0x2a, 0x83, 0x8a, 0x08, 0x92, 0x9e, 0x44, 0x80, 0xba, 0x89, 0x38, 0x34, 0xa3, 0xcf, 0x10, - 0x11, 0x91, 0x10, 0xb9, 0x2b, 0x04, 0xc8, 0x29, 0x99, 0x14, 0x50, 0xd1, 0x9c, 0x30, 0x12, 0x11, - 0xfa, 0x2c, 0x82, 0x40, 0xb0, 0x9b, 0x18, 0x35, 0x8a, 0xf9, 0x48, 0x81, 0x29, 0xa1, 0x8c, 0x09, - 0x13, 0x80, 0x0b, 0x83, 0x9c, 0x02, 0x42, 0x9b, 0x47, 0xeb, 0x1a, 0x02, 0x30, 0xc0, 0x89, 0xa8, - 0x20, 0x27, 0xcb, 0x21, 0x9b, 0x21, 0x25, 0xcb, 0x20, 0x10, 0xa1, 0xdb, 0x29, 0x00, 0x44, 0xc8, - 0x99, 0x5b, 0x94, 0x39, 0xf8, 0x18, 0x91, 0x31, 0xca, 0x8a, 0x35, 0x9c, 0x04, 0x9a, 0xba, 0x45, - 0x01, 0x99, 0x99, 0x8b, 0x38, 0x47, 0xbd, 0x41, 0x81, 0xaa, 0x28, 0x00, 0x01, 0x09, 0xb1, 0x1d, - 0x85, 0x8a, 0x50, 0xb1, 0x9c, 0x12, 0x32, 0xe9, 0x1a, 0x04, 0x1a, 0xe8, 0x29, 0x13, 0xc0, 0x2b, - 0x83, 0xab, 0x68, 0x91, 0x00, 0xaa, 0x72, 0x84, 0xac, 0x9a, 0x72, 0x02, 0x9a, 0x9b, 0x12, 0x8a, - 0x26, 0xc1, 0x0e, 0x02, 0x09, 0x22, 0xea, 0x19, 0x14, 0x99, 0xa0, 0x1c, 0x12, 0x10, 0x88, 0xc8, - 0x1c, 0x43, 0xa2, 0x9e, 0x02, 0x01, 0x22, 0xec, 0x09, 0x40, 0xb2, 0x40, 0xc9, 0x88, 0x11, 0x21, - 0xa2, 0x0c, 0xd9, 0x50, 0xb1, 0x2b, 0x12, 0x83, 0x9f, 0x91, 0x18, 0x19, 0x13, 0xb8, 0xbc, 0x70, - 0x83, 0x8b, 0xe1, 0x4a, 0x83, 0x98, 0x19, 0xc8, 0x70, 0xa2, 0x0b, 0x33, 0xd9, 0x09, 0x22, 0x80, - 0xd2, 0x2d, 0xa3, 0x9d, 0x02, 0x40, 0x83, 0xeb, 0x8b, 0x14, 0x82, 0x8c, 0x23, 0xba, 0x9b, 0x46, - 0xb2, 0x0d, 0x80, 0x41, 0xc0, 0x0a, 0x83, 0x28, 0x81, 0xa9, 0x30, 0xf8, 0x69, 0x92, 0x89, 0x8a, - 0x33, 0xa9, 0xaf, 0x33, 0x89, 0x42, 0xf8, 0x8b, 0x31, 0x01, 0x10, 0xc0, 0x1b, 0xc9, 0x64, 0xc9, - 0x20, 0x00, 0x91, 0x0b, 0x81, 0x48, 0x98, 0x92, 0x0c, 0x14, 0x9a, 0x31, 0xa4, 0xcf, 0x24, 0x98, - 0xa0, 0x8c, 0x12, 0x53, 0xd8, 0x88, 0x28, 0xd1, 0x29, 0x02, 0x89, 0x88, 0x31, 0xc0, 0x9c, 0x3a, - 0x67, 0x99, 0xaa, 0x28, 0x24, 0xb8, 0x8c, 0x22, 0x98, 0x23, 0x00, 0xcd, 0x99, 0x50, 0x22, 0xc3, - 0xbf, 0x31, 0x14, 0xab, 0x88, 0x31, 0xa9, 0x20, 0x90, 0x98, 0x4d, 0x06, 0xaa, 0xb9, 0x49, 0x16, - 0xa9, 0x09, 0x00, 0x10, 0x02, 0x88, 0xef, 0x31, 0x01, 0xb8, 0x29, 0xe8, 0x50, 0xa1, 0x09, 0xb8, - 0x52, 0xa9, 0x10, 0x02, 0xbc, 0x73, 0xb1, 0x89, 0x08, 0x82, 0x40, 0xa0, 0xca, 0x2d, 0x27, 0xab, - 0x08, 0x80, 0x02, 0x1a, 0x04, 0xcb, 0x89, 0x24, 0x98, 0x12, 0xcc, 0x28, 0x93, 0x8e, 0x14, 0x29, - 0xe0, 0x1b, 0x02, 0x31, 0xa9, 0x22, 0x9e, 0x02, 0x18, 0x00, 0xc8, 0x08, 0x38, 0xa6, 0x9f, 0x30, - 0x23, 0x91, 0xde, 0x29, 0x14, 0x98, 0x09, 0xb1, 0x0c, 0x25, 0x08, 0xdd, 0x30, 0x83, 0x80, 0xb9, - 0x09, 0x1a, 0x27, 0x08, 0xa8, 0xab, 0x38, 0x27, 0xd8, 0x8a, 0x21, 0x82, 0x28, 0xda, 0x80, 0x60, - 0xa2, 0x8d, 0x02, 0x9a, 0x11, 0x25, 0xec, 0x00, 0x20, 0x90, 0x08, 0x98, 0x10, 0x23, 0xa1, 0xcf, - 0x32, 0xb0, 0x2a, 0x25, 0xc9, 0x89, 0x08, 0x24, 0xad, 0x34, 0xab, 0x82, 0x0e, 0x04, 0x08, 0x08, - 0xca, 0x39, 0x22, 0xa2, 0xcb, 0x38, 0x13, 0xa3, 0xdf, 0x12, 0x99, 0x11, 0x48, 0xe2, 0x0b, 0x81, - 0x53, 0xa0, 0xaa, 0x3b, 0x07, 0x9a, 0x02, 0x99, 0x40, 0x85, 0xab, 0xea, 0x61, 0x80, 0x80, 0x08, - 0xb9, 0x4a, 0x06, 0x1b, 0xd1, 0x2a, 0x94, 0x09, 0x90, 0x18, 0xa1, 0x1a, 0x16, 0xcb, 0x18, 0x00, - 0x83, 0x49, 0xb2, 0x8f, 0x03, 0x09, 0x92, 0x28, 0xc8, 0x10, 0xa8, 0x38, 0x00, 0x06, 0x8f, 0x12, - 0x80, 0xbf, 0x53, 0xa1, 0x8b, 0x05, 0xa9, 0x19, 0x02, 0x14, 0xbe, 0x11, 0x21, 0xa9, 0x22, 0xfb, - 0x38, 0x90, 0x13, 0x8e, 0xc2, 0x3a, 0x04, 0x00, 0x98, 0xbd, 0x50, 0x02, 0x99, 0xa9, 0x34, 0xaa, - 0x84, 0x8d, 0x92, 0x69, 0x92, 0x08, 0xb9, 0xa9, 0x41, 0x35, 0xf9, 0x0b, 0x22, 0x01, 0xba, 0x90, - 0x38, 0x84, 0x88, 0x30, 0xde, 0x40, 0x92, 0x99, 0x01, 0xe8, 0x49, 0x94, 0x0b, 0x98, 0x63, 0xb0, - 0x1a, 0xa0, 0x58, 0x91, 0x08, 0xb0, 0x5b, 0xc2, 0x0a, 0x35, 0xca, 0x01, 0x29, 0xd9, 0x29, 0x13, - 0x10, 0xb8, 0x1a, 0xcf, 0x53, 0x82, 0xbd, 0x51, 0x91, 0xaa, 0x12, 0x00, 0x89, 0x03, 0xa9, 0xae, - 0x15, 0x18, 0x11, 0xe1, 0x8c, 0x28, 0x15, 0xaa, 0x0b, 0x33, 0x00, 0xa9, 0x1b, 0x23, 0xa9, 0x08, - 0x11, 0x28, 0xf8, 0x68, 0xa8, 0x11, 0xcf, 0x44, 0xa9, 0x09, 0x89, 0x17, 0x8a, 0x80, 0x98, 0x28, - 0xa2, 0x1b, 0x13, 0x1b, 0xd1, 0x30, 0xbc, 0x35, 0x8b, 0x83, 0xa8, 0xbd, 0x79, 0x24, 0xc1, 0xac, - 0x10, 0x24, 0xc8, 0x08, 0xa8, 0x48, 0x22, 0xd0, 0x0c, 0x03, 0x08, 0x80, 0x80, 0xbd, 0x31, 0x22, - 0x07, 0xaf, 0x82, 0x48, 0x91, 0xba, 0x18, 0x51, 0xb2, 0x9a, 0x23, 0xca, 0x41, 0x98, 0x80, 0x89, - 0x23, 0x3b, 0xc7, 0x0d, 0x82, 0x28, 0x94, 0xad, 0x31, 0xa2, 0x2b, 0xc1, 0x29, 0x42, 0xea, 0x58, - 0xb1, 0x1b, 0x03, 0xba, 0x51, 0xa1, 0x11, 0x9a, 0xca, 0x08, 0x74, 0x82, 0xb9, 0x9c, 0x41, 0x08, - 0x04, 0x8d, 0x81, 0x81, 0xbb, 0x44, 0x08, 0xc1, 0x28, 0xe9, 0x30, 0xca, 0x61, 0x92, 0xab, 0x98, - 0x30, 0x12, 0x81, 0xaa, 0x3a, 0x47, 0xac, 0x29, 0x93, 0x1a, 0x31, 0x90, 0xa1, 0xff, 0x33, 0xa0, - 0x8b, 0x84, 0x9b, 0x15, 0x99, 0x08, 0x29, 0x04, 0xcb, 0x49, 0xc0, 0x18, 0x49, 0x95, 0x9b, 0x10, - 0x91, 0x1a, 0x22, 0xa9, 0x22, 0xbb, 0x1d, 0xa2, 0x2f, 0x47, 0xaa, 0x99, 0x21, 0xd1, 0x3c, 0x06, - 0x89, 0x88, 0x11, 0xbc, 0x41, 0x98, 0x33, 0xcc, 0x08, 0x82, 0x29, 0x15, 0xae, 0x18, 0x12, 0x88, - 0x99, 0x8a, 0x13, 0x01, 0xb4, 0x4c, 0xf8, 0x39, 0x84, 0x1b, 0x81, 0x09, 0x42, 0xfa, 0x5b, 0x82, - 0x08, 0x99, 0x92, 0x0b, 0x14, 0x1b, 0x94, 0x1b, 0xc8, 0x28, 0x83, 0xaa, 0xcc, 0x72, 0x95, 0xad, - 0x41, 0x98, 0x08, 0x82, 0x19, 0x18, 0xb9, 0x50, 0xb9, 0x43, 0xca, 0x32, 0x90, 0xfb, 0x48, 0x82, - 0x00, 0xba, 0x00, 0x4a, 0xa4, 0xaa, 0x70, 0xa2, 0x19, 0xb2, 0x9f, 0x15, 0x9a, 0x23, 0x9b, 0xa8, - 0x59, 0x80, 0x80, 0xac, 0x63, 0xa1, 0x9c, 0x01, 0x88, 0x64, 0xb0, 0x8a, 0x88, 0x08, 0x54, 0x90, - 0xc0, 0x1c, 0x23, 0x91, 0xba, 0x8f, 0x26, 0x99, 0x80, 0x89, 0x1a, 0x13, 0xc8, 0x38, 0xa9, 0xb3, - 0x4f, 0x02, 0xc8, 0x2b, 0x33, 0xd0, 0xab, 0x69, 0x83, 0x28, 0xbc, 0x04, 0x0a, 0x92, 0x19, 0x15, - 0x99, 0xcb, 0x52, 0x10, 0xe0, 0x19, 0x01, 0x98, 0x1a, 0x01, 0x58, 0xd1, 0x8d, 0x23, 0x82, 0xbe, - 0x31, 0x11, 0xa9, 0x9a, 0x31, 0xa0, 0x40, 0x10, 0xe0, 0x38, 0xc0, 0x58, 0x93, 0xaa, 0xbd, 0x72, - 0x84, 0x9c, 0x08, 0x41, 0xa1, 0x8b, 0x81, 0x2a, 0x95, 0x28, 0x99, 0xd0, 0x0c, 0x53, 0x91, 0xb0, - 0x9f, 0x23, 0x03, 0x9c, 0xa8, 0x58, 0x00, 0x00, 0xa0, 0x8b, 0x0b, 0x27, 0x3a, 0xc4, 0x8b, 0x08, - 0x32, 0xc3, 0x0b, 0x40, 0xb4, 0x8d, 0x08, 0x14, 0xa9, 0x1a, 0x07, 0xa9, 0x99, 0xa1, 0x73, 0xc1, - 0x10, 0x9a, 0xb1, 0x5a, 0x03, 0x82, 0xdc, 0x19, 0x05, 0x98, 0x09, 0x08, 0x22, 0x11, 0xfb, 0x1a, - 0x18, 0x34, 0xa1, 0x9e, 0xa8, 0x51, 0x80, 0x12, 0xdb, 0x28, 0xb2, 0x60, 0xb0, 0x8c, 0x43, 0x98, - 0x98, 0xc9, 0x58, 0x93, 0x19, 0x11, 0xfc, 0x20, 0x80, 0x01, 0xaa, 0x08, 0x34, 0xb1, 0x9d, 0x90, - 0x50, 0x11, 0x94, 0x8f, 0x81, 0x09, 0x33, 0xa0, 0x8c, 0xc9, 0x39, 0x17, 0x98, 0xa8, 0x18, 0x18, - 0xc3, 0x1c, 0x13, 0xc0, 0x1a, 0x19, 0x07, 0x0d, 0x90, 0x42, 0xa8, 0xba, 0x60, 0x91, 0x1b, 0x87, - 0x8a, 0xa0, 0x11, 0x21, 0xaa, 0x93, 0x1c, 0x11, 0xa5, 0x2c, 0xe0, 0x29, 0x02, 0x84, 0xad, 0x48, - 0x81, 0xa8, 0x40, 0xd8, 0x18, 0x08, 0x81, 0x30, 0xca, 0x11, 0x98, 0x39, 0xa6, 0x0c, 0x21, 0xa2, - 0x3a, 0x91, 0x85, 0xaf, 0x49, 0x04, 0x98, 0x9d, 0x02, 0x12, 0x9b, 0x12, 0xb8, 0x2d, 0x91, 0x42, - 0xb9, 0xa9, 0x30, 0x2a, 0x17, 0x8f, 0x20, 0x82, 0x8b, 0x29, 0x93, 0x10, 0x1b, 0x97, 0xab, 0x42, - 0x99, 0x06, 0xbb, 0x20, 0xa0, 0x8e, 0x27, 0xaa, 0x98, 0x30, 0x89, 0x04, 0x8a, 0x18, 0x9a, 0x17, - 0x1f, 0xa2, 0x89, 0x28, 0x03, 0x8c, 0xa2, 0x0c, 0x06, 0x19, 0x94, 0x9d, 0x32, 0xe0, 0x39, 0xa2, - 0x0d, 0x41, 0x81, 0xaa, 0x8a, 0x02, 0x40, 0x82, 0xea, 0x0a, 0x18, 0x15, 0xa0, 0x1b, 0xe1, 0x2a, - 0x74, 0xc0, 0x0a, 0x11, 0x11, 0xa1, 0x8f, 0x01, 0x00, 0x10, 0x01, 0xd8, 0x8d, 0x11, 0x24, 0x9a, - 0xa9, 0x30, 0xa1, 0x0b, 0x16, 0xab, 0x00, 0x81, 0x51, 0xea, 0x20, 0x21, 0xaa, 0x14, 0xad, 0x81, - 0x48, 0x92, 0x89, 0x9b, 0x82, 0x51, 0xb0, 0x61, 0xda, 0x28, 0x10, 0x81, 0xcc, 0x19, 0x37, 0xb9, - 0x18, 0xb1, 0x8f, 0x22, 0x12, 0xc8, 0x2a, 0x90, 0x9a, 0x62, 0x83, 0xe8, 0x2a, 0xb3, 0x20, 0xa8, - 0x39, 0x07, 0x8d, 0x08, 0x00, 0x00, 0x0c, 0x17, 0xa9, 0x8c, 0x32, 0xa0, 0x29, 0xa0, 0x2a, 0x84, - 0xcb, 0x30, 0x52, 0xf8, 0x49, 0x81, 0x99, 0x09, 0x28, 0x04, 0xa9, 0x8c, 0x80, 0x63, 0xa8, 0xa9, - 0x46, 0xcb, 0x00, 0x01, 0x00, 0xb0, 0x38, 0x00, 0xa3, 0xac, 0x0e, 0x07, 0x99, 0x40, 0xc0, 0x18, - 0x99, 0x41, 0x93, 0x8c, 0xa8, 0x59, 0x92, 0x89, 0x99, 0x43, 0xc8, 0x08, 0x9b, 0x27, 0x0b, 0x91, - 0x31, 0xf9, 0x8d, 0x24, 0x00, 0x80, 0xc9, 0x09, 0x20, 0x06, 0x9a, 0x89, 0x04, 0xab, 0x30, 0xa4, - 0x0c, 0xb0, 0x73, 0x00, 0xda, 0x09, 0x43, 0x00, 0xea, 0x28, 0x91, 0x89, 0x50, 0xa3, 0x9c, 0x20, - 0x91, 0x2b, 0x96, 0x0b, 0x02, 0x01, 0xc8, 0x8c, 0x21, 0x15, 0x9c, 0x80, 0x40, 0xd9, 0x09, 0x73, - 0x90, 0xbb, 0x52, 0xa1, 0xab, 0x23, 0x48, 0xd0, 0x09, 0x30, 0x98, 0x80, 0x28, 0x98, 0xa3, 0x0f, - 0x80, 0x06, 0x3b, 0xb2, 0x9c, 0x99, 0x32, 0xa0, 0x73, 0xa1, 0x9e, 0x11, 0x01, 0x91, 0x99, 0x19, - 0x98, 0x35, 0xc9, 0x6a, 0x84, 0xaa, 0x18, 0xa9, 0x80, 0x44, 0x89, 0xa0, 0x0b, 0x9d, 0x47, 0xbb, - 0x08, 0x05, 0x89, 0x32, 0xfb, 0x29, 0x01, 0x01, 0x9b, 0x43, 0xfa, 0x49, 0x02, 0xb9, 0x39, 0x81, - 0xa1, 0x40, 0xdc, 0x22, 0x11, 0xea, 0x2a, 0x05, 0xab, 0x01, 0x21, 0x90, 0x9c, 0x53, 0xb9, 0x08, - 0x03, 0x9d, 0x33, 0xe9, 0x19, 0x24, 0xe0, 0x0a, 0x33, 0xc9, 0x20, 0x10, 0xd2, 0x1c, 0x02, 0x98, - 0x08, 0x01, 0x8b, 0x15, 0xc9, 0x2e, 0x85, 0x1b, 0x93, 0x9a, 0x88, 0x43, 0xc9, 0x58, 0xc0, 0x1a, - 0x04, 0x88, 0x80, 0x9a, 0x09, 0x42, 0x90, 0x09, 0xd3, 0x3c, 0xa3, 0x24, 0xcf, 0x31, 0x10, 0xc8, - 0x10, 0x01, 0xa9, 0xba, 0x56, 0x9a, 0x90, 0x48, 0x80, 0xd2, 0x1e, 0x12, 0x81, 0xab, 0x51, 0xd0, - 0x29, 0x01, 0xa3, 0x0d, 0x08, 0xc1, 0x41, 0x08, 0xb3, 0x0e, 0xa2, 0x19, 0x22, 0x84, 0xbe, 0x41, - 0x81, 0xb8, 0x28, 0xbb, 0x64, 0x90, 0x81, 0x8b, 0xb8, 0x58, 0x23, 0xc2, 0xaf, 0x02, 0x40, 0xb1, - 0x8a, 0x80, 0x28, 0x11, 0xaa, 0xa0, 0x0b, 0x75, 0x96, 0xac, 0x30, 0xa0, 0x40, 0xa0, 0x19, 0xa8, - 0x58, 0x93, 0xac, 0x01, 0x39, 0x84, 0x02, 0xdf, 0x21, 0x81, 0x89, 0x20, 0xc8, 0x09, 0x19, 0x15, - 0xab, 0x11, 0x21, 0xec, 0x18, 0x23, 0x98, 0x18, 0xf8, 0x3a, 0x34, 0xc1, 0x9d, 0x41, 0xb3, 0x0c, - 0x81, 0x88, 0x08, 0x23, 0xe9, 0x28, 0x89, 0x06, 0x9a, 0x81, 0xaa, 0x71, 0x85, 0xbc, 0x28, 0x01, - 0x92, 0x50, 0xfa, 0x08, 0x41, 0xa1, 0x9a, 0x29, 0x91, 0x50, 0x90, 0xab, 0x28, 0x24, 0xb9, 0x10, - 0xc8, 0x1d, 0x27, 0xa8, 0xaa, 0x21, 0x38, 0xb1, 0xcb, 0x3c, 0x07, 0x9a, 0x32, 0xda, 0x10, 0x21, - 0xa0, 0x0a, 0xeb, 0x52, 0x93, 0x0c, 0xa0, 0x19, 0x90, 0x40, 0x03, 0xcc, 0x38, 0x92, 0x8b, 0x17, - 0xba, 0x40, 0xc0, 0x49, 0xa1, 0x20, 0xab, 0x13, 0x8d, 0x31, 0xd4, 0x2c, 0x83, 0x9c, 0x13, 0x9a, - 0x04, 0x9d, 0x31, 0xa3, 0x9e, 0x51, 0x82, 0x9c, 0x28, 0x91, 0x12, 0x8a, 0xc0, 0x8d, 0x35, 0xb8, - 0x18, 0x08, 0xfa, 0x51, 0x91, 0xaa, 0x29, 0x13, 0x9a, 0x15, 0xcd, 0x31, 0x00, 0xb9, 0x13, 0x9b, - 0x12, 0x82, 0xa9, 0x8f, 0x17, 0x0a, 0xa0, 0x29, 0xb9, 0x35, 0xb1, 0x1a, 0xb8, 0xaa, 0x75, 0xb3, - 0xab, 0x29, 0x14, 0x99, 0xb9, 0x5a, 0x95, 0x2b, 0x80, 0xb3, 0x1e, 0x98, 0x14, 0x18, 0xb9, 0x8a, - 0x45, 0x99, 0xa0, 0x5b, 0x02, 0x93, 0x9f, 0x11, 0x91, 0x02, 0x9b, 0x87, 0x8d, 0xa0, 0x72, 0xb2, - 0x9b, 0x09, 0x43, 0xc2, 0x3b, 0x83, 0xea, 0x3a, 0x04, 0xa8, 0x4a, 0x82, 0xdb, 0x59, 0x91, 0x19, - 0x20, 0xa8, 0x38, 0xba, 0x82, 0x5a, 0xb5, 0x2d, 0x12, 0xa1, 0x9f, 0x21, 0xa0, 0x08, 0x22, 0x9a, - 0x91, 0x2b, 0x97, 0x1d, 0x83, 0x8c, 0x22, 0x8a, 0x82, 0xc0, 0x5b, 0x04, 0xfa, 0x29, 0x21, 0xb2, - 0x1c, 0x10, 0x81, 0x9c, 0x42, 0x93, 0x9e, 0x0a, 0x17, 0x09, 0xaa, 0x00, 0x41, 0xa0, 0x18, 0xa1, - 0x8d, 0x80, 0x71, 0xb2, 0x0d, 0x08, 0x22, 0x99, 0xa2, 0x0e, 0x03, 0x08, 0x89, 0x20, 0xd0, 0x48, - 0x85, 0xbc, 0x51, 0xb9, 0x52, 0xa9, 0x98, 0x40, 0xb2, 0x2a, 0xa1, 0xea, 0x5a, 0x25, 0xb9, 0x99, - 0x10, 0xab, 0x47, 0x99, 0x88, 0x98, 0x20, 0x8a, 0x17, 0xac, 0x11, 0x01, 0x09, 0x81, 0xac, 0x32, - 0x13, 0xfa, 0x1b, 0x14, 0x99, 0x28, 0x13, 0xcf, 0x00, 0x31, 0x03, 0xdc, 0x18, 0x12, 0x09, 0xa1, - 0x2b, 0xb1, 0x30, 0x40, 0x96, 0xce, 0x28, 0x25, 0xb9, 0x1b, 0x01, 0x08, 0x13, 0x80, 0xad, 0xc0, - 0x7a, 0x94, 0x89, 0x98, 0x28, 0xa2, 0x09, 0x40, 0xe0, 0x08, 0x22, 0x89, 0xa2, 0x0d, 0x23, 0x9a, - 0xab, 0x55, 0xa3, 0x9f, 0x23, 0xc9, 0x2a, 0x14, 0xba, 0x20, 0xa4, 0x8c, 0x00, 0x23, 0xb8, 0x1b, - 0xf1, 0x39, 0x32, 0xc2, 0x09, 0xac, 0x90, 0x65, 0x98, 0x98, 0x08, 0x41, 0xc0, 0x18, 0xa1, 0x1c, - 0x04, 0x21, 0xfb, 0x0d, 0x24, 0xa0, 0x09, 0xa8, 0x52, 0xd8, 0x28, 0x01, 0xaa, 0x11, 0x11, 0xe0, - 0x8c, 0x13, 0x41, 0xd8, 0x09, 0x88, 0x41, 0xb0, 0x40, 0x91, 0xbc, 0x30, 0x05, 0xbc, 0x53, 0xa8, - 0x19, 0x11, 0xf9, 0x38, 0x93, 0x0a, 0x90, 0x29, 0xf1, 0x29, 0x81, 0x51, 0xc1, 0x9b, 0x88, 0x51, - 0x01, 0xa0, 0x88, 0x0c, 0xa3, 0x3c, 0x01, 0xa2, 0x69, 0x92, 0xbf, 0x42, 0xa0, 0x41, 0xa0, 0xc9, - 0x1e, 0x23, 0x02, 0xad, 0x80, 0x28, 0x22, 0xaa, 0xaa, 0x23, 0x18, 0x92, 0x55, 0xfb, 0x2d, 0x03, - 0x18, 0xdb, 0x20, 0x01, 0xb0, 0x2a, 0x15, 0xba, 0x32, 0xb0, 0x9f, 0x05, 0x19, 0x84, 0xaa, 0x0b, - 0x33, 0x90, 0x1a, 0xd0, 0x01, 0x5b, 0xc5, 0x2b, 0x81, 0x12, 0xac, 0x81, 0x88, 0x41, 0x90, 0xd8, - 0x6a, 0x02, 0xb8, 0x10, 0xbd, 0x51, 0x84, 0x0a, 0xb0, 0x1b, 0x20, 0x16, 0x90, 0xbc, 0x2b, 0x17, - 0x89, 0xa3, 0x1e, 0x84, 0x9a, 0x18, 0x80, 0x80, 0x0b, 0x37, 0xdc, 0x31, 0xa8, 0x31, 0xda, 0x08, - 0x41, 0xb2, 0x1b, 0x98, 0x30, 0x88, 0x02, 0x3a, 0xf4, 0x1c, 0x32, 0x90, 0x88, 0xdb, 0x38, 0x93, - 0x8b, 0x35, 0xa8, 0xbc, 0x91, 0x60, 0x22, 0xcc, 0x32, 0xbf, 0x33, 0x80, 0x99, 0xa3, 0x1c, 0x12, - 0x90, 0x31, 0xd9, 0x9a, 0x50, 0x24, 0xed, 0x41, 0x90, 0x89, 0x88, 0x08, 0x81, 0x70, 0xa9, 0x88, - 0x40, 0xb0, 0x1a, 0x94, 0x8d, 0x34, 0xba, 0x28, 0x91, 0x9e, 0x35, 0xb8, 0x8a, 0x11, 0x08, 0x84, - 0x8c, 0x23, 0x0a, 0xfb, 0x52, 0x80, 0xaa, 0x08, 0x32, 0xc9, 0x08, 0x31, 0xc2, 0x8f, 0x14, 0xac, - 0x24, 0xb9, 0x81, 0x9a, 0x73, 0x91, 0x9b, 0x11, 0xa8, 0x19, 0x43, 0xa1, 0x0a, 0xdc, 0x62, 0xa1, - 0x89, 0x80, 0x02, 0xb0, 0x4c, 0xa4, 0x3c, 0xa2, 0x9a, 0x09, 0x21, 0x07, 0x8e, 0x02, 0x89, 0x13, - 0xad, 0x22, 0xb9, 0x2b, 0x35, 0xa1, 0xad, 0x31, 0xa8, 0x90, 0x51, 0xa1, 0x51, 0xba, 0x98, 0x11, - 0x7a, 0xd2, 0x38, 0xba, 0x88, 0x55, 0xa9, 0x89, 0x08, 0x82, 0x31, 0xe9, 0x8b, 0x25, 0x20, 0xf8, - 0x39, 0xa9, 0x11, 0x80, 0x31, 0xf9, 0x3a, 0x13, 0xd9, 0x50, 0xd9, 0x20, 0x01, 0xb8, 0x10, 0x0a, - 0xb4, 0x5b, 0xa2, 0x1b, 0x02, 0x18, 0xa4, 0xbf, 0x52, 0x02, 0x99, 0x8b, 0xc0, 0x49, 0x22, 0x02, - 0xcb, 0xa9, 0x9a, 0x72, 0x87, 0x9b, 0x22, 0xba, 0x09, 0x34, 0xc8, 0x18, 0xa1, 0x03, 0xaf, 0x04, - 0x18, 0xb8, 0x42, 0xca, 0x32, 0xac, 0x35, 0xb9, 0xab, 0x52, 0x12, 0xca, 0x09, 0x11, 0x22, 0xa1, - 0xbf, 0x10, 0x08, 0x62, 0xb1, 0x1c, 0xa1, 0x8a, 0x13, 0x70, 0xda, 0x38, 0x84, 0x9b, 0x89, 0x24, - 0x01, 0xca, 0x0a, 0x15, 0xc9, 0x58, 0xa3, 0x0a, 0xb8, 0x71, 0xc1, 0x8b, 0x31, 0x20, 0xc1, 0x9b, - 0x41, 0xa2, 0x2b, 0x85, 0x9b, 0xaa, 0x55, 0xd9, 0x30, 0x90, 0x21, 0xb0, 0xbf, 0x51, 0x82, 0x98, - 0x2a, 0xb1, 0x29, 0x20, 0x84, 0xde, 0x38, 0x92, 0x43, 0xdb, 0x08, 0x01, 0x10, 0xb1, 0x0c, 0x02, - 0x3a, 0xb1, 0x88, 0x7a, 0xc3, 0x4b, 0xc3, 0x0b, 0x32, 0xa8, 0x48, 0xe1, 0x1b, 0x22, 0xd3, 0x4c, - 0xb1, 0x80, 0x1b, 0x07, 0x8a, 0x82, 0x19, 0x93, 0x9f, 0x30, 0x03, 0x9d, 0x80, 0x49, 0x94, 0x8a, - 0x99, 0x02, 0x99, 0x37, 0x8e, 0x93, 0x9d, 0x42, 0x82, 0xbc, 0x28, 0x12, 0x90, 0x99, 0x21, 0x8a, - 0xb2, 0x71, 0x98, 0xb9, 0x5b, 0x25, 0xb1, 0xaf, 0x30, 0x13, 0x9a, 0x89, 0x99, 0x52, 0x92, 0x8b, - 0xc2, 0x0d, 0x16, 0x88, 0x9a, 0xa8, 0x38, 0x16, 0xb8, 0xb9, 0x48, 0x92, 0x13, 0x8a, 0xf9, 0x3a, - 0x17, 0x0b, 0xb8, 0x30, 0x83, 0x89, 0xac, 0x23, 0x11, 0xbf, 0x54, 0x9a, 0x00, 0x89, 0x21, 0x92, - 0xcf, 0x52, 0x90, 0xa8, 0x28, 0x80, 0xb8, 0x48, 0x82, 0x10, 0xfb, 0x10, 0x10, 0x18, 0x88, 0x11, - 0xb8, 0xef, 0x51, 0x82, 0xba, 0x30, 0x89, 0x12, 0xda, 0x49, 0x82, 0x08, 0x10, 0xe9, 0x99, 0x3a, - 0x17, 0x08, 0xd0, 0x8c, 0x14, 0x80, 0x88, 0xa0, 0x49, 0xa3, 0x1b, 0xc3, 0x1c, 0x13, 0x10, 0xd8, - 0x9c, 0x48, 0x16, 0xaa, 0x18, 0x89, 0x10, 0x30, 0xd0, 0x01, 0xad, 0x44, 0xa0, 0x8c, 0x18, 0x14, - 0x99, 0x81, 0xb8, 0x4a, 0x90, 0x20, 0x01, 0xea, 0x38, 0x91, 0x92, 0xae, 0x71, 0xc4, 0x0c, 0x13, - 0x8a, 0x12, 0xba, 0x69, 0x93, 0xab, 0x10, 0x40, 0xc1, 0x18, 0x88, 0xb8, 0x39, 0x85, 0x29, 0xea, - 0x2b, 0x26, 0x90, 0x9d, 0x00, 0x32, 0xc1, 0x19, 0xd0, 0x19, 0x12, 0x58, 0xa1, 0xae, 0x31, 0x01, - 0x01, 0xcd, 0x30, 0x83, 0x8b, 0xb4, 0x3d, 0x85, 0x0a, 0xb1, 0x0b, 0x31, 0x98, 0x73, 0xe0, 0x19, - 0xa9, 0x25, 0x9a, 0x80, 0x28, 0x90, 0x21, 0xeb, 0x28, 0x24, 0xd8, 0x1a, 0x88, 0x21, 0x01, 0x90, - 0x3a, 0x97, 0x8f, 0x03, 0x88, 0x8b, 0x35, 0xc9, 0x00, 0x9c, 0x83, 0x61, 0xb0, 0xab, 0x44, 0xb8, - 0x1a, 0x24, 0xa9, 0x00, 0xa9, 0x9a, 0x15, 0x0e, 0x04, 0x08, 0xc0, 0x8a, 0x24, 0x18, 0xd0, 0x29, - 0x20, 0xb4, 0x8f, 0x01, 0x13, 0xa9, 0x09, 0x80, 0x99, 0x39, 0xa4, 0x73, 0xe4, 0x0b, 0x12, 0xa8, - 0x19, 0x14, 0x0a, 0xd1, 0x3b, 0xc1, 0x41, 0x88, 0x81, 0x8a, 0xb0, 0x10, 0xdd, 0x76, 0xa0, 0x8a, - 0x00, 0xa1, 0x30, 0xb1, 0x20, 0xdb, 0x31, 0x90, 0x02, 0xbf, 0x42, 0x83, 0xac, 0x80, 0x98, 0x60, - 0x03, 0xba, 0x2a, 0xc9, 0x41, 0x09, 0x03, 0x0b, 0x80, 0xbb, 0x45, 0xc8, 0x9a, 0x55, 0xa3, 0xad, - 0x10, 0x11, 0x80, 0x10, 0xeb, 0x31, 0xb9, 0x1c, 0x27, 0xab, 0x82, 0x19, 0x90, 0x10, 0xc8, 0x78, - 0xa0, 0x01, 0x8a, 0x9a, 0x40, 0x43, 0xa1, 0x8f, 0x83, 0x9e, 0x33, 0x88, 0xc1, 0x29, 0x98, 0x12, - 0x9a, 0xc8, 0x74, 0xc0, 0x19, 0xa2, 0x3b, 0x83, 0x88, 0x10, 0xd0, 0x0c, 0x22, 0x96, 0x9e, 0x22, - 0x80, 0x98, 0x10, 0xab, 0x34, 0xb9, 0x30, 0xb9, 0x92, 0x8f, 0x34, 0x08, 0xd1, 0x8c, 0x81, 0x73, - 0xd1, 0x1a, 0x12, 0xb9, 0x10, 0x10, 0x81, 0x9e, 0x13, 0x8b, 0x27, 0xad, 0x10, 0x13, 0xcb, 0x42, - 0xaa, 0x12, 0x09, 0x91, 0xa8, 0x1c, 0x84, 0x1a, 0x85, 0x8d, 0x82, 0x3b, 0x06, 0xaa, 0x0c, 0x06, - 0x89, 0x90, 0x18, 0xa2, 0x00, 0x0d, 0x25, 0xbb, 0x89, 0x63, 0x01, 0xd9, 0x09, 0x81, 0x40, 0xd1, - 0x4b, 0xa4, 0x0c, 0x92, 0x18, 0x03, 0xab, 0x00, 0x18, 0x21, 0xfb, 0x7a, 0x92, 0x9b, 0x00, 0x25, - 0xac, 0x31, 0x90, 0x8b, 0x82, 0x0b, 0x44, 0x81, 0xbf, 0x52, 0x88, 0x88, 0x80, 0x8b, 0x24, 0xa8, - 0x29, 0xb1, 0x9f, 0x42, 0x01, 0xd8, 0x19, 0x01, 0x08, 0x93, 0x9f, 0x42, 0x90, 0x89, 0x0a, 0x07, - 0x0e, 0x83, 0x0a, 0x08, 0xa1, 0x49, 0xa2, 0x1a, 0x93, 0x8b, 0x29, 0x95, 0x0b, 0x81, 0x51, 0xf0, - 0x18, 0x8a, 0x94, 0x8b, 0x45, 0xa9, 0x01, 0x8c, 0x09, 0x27, 0x99, 0x09, 0x91, 0x9f, 0x14, 0x18, - 0x88, 0xc8, 0x3a, 0x24, 0xe9, 0x28, 0x01, 0xa8, 0x19, 0x18, 0xb0, 0x78, 0xd8, 0x48, 0x93, 0x9c, - 0x00, 0x81, 0x20, 0xb0, 0x38, 0xb0, 0x8b, 0xad, 0x47, 0x81, 0x9f, 0x22, 0x98, 0x88, 0x19, 0x11, - 0x12, 0xb9, 0x9c, 0x10, 0x43, 0x91, 0x0a, 0xfa, 0x28, 0x28, 0x03, 0xa8, 0xce, 0x51, 0xa2, 0x8a, - 0xb9, 0x58, 0x03, 0x39, 0xf3, 0x0f, 0x03, 0x8a, 0x22, 0xba, 0x30, 0xa0, 0x1b, 0x26, 0xcb, 0x38, - 0x25, 0xe9, 0x1a, 0x10, 0x31, 0x90, 0xbb, 0x0b, 0x17, 0xbb, 0x63, 0xb8, 0x18, 0x90, 0x19, 0x23, - 0xdd, 0x09, 0x63, 0xb1, 0x8a, 0x11, 0x90, 0x2a, 0x84, 0x09, 0xaa, 0x90, 0x78, 0x15, 0xa8, 0xae, - 0x42, 0xb9, 0x31, 0x98, 0x01, 0x8a, 0x12, 0x49, 0xf0, 0x8b, 0x72, 0xa1, 0x9a, 0x28, 0x93, 0x2a, - 0x86, 0xae, 0x10, 0x21, 0x01, 0x91, 0xae, 0x28, 0x16, 0x99, 0x8a, 0xa0, 0x69, 0x93, 0x1c, 0x91, - 0x8b, 0x40, 0x84, 0x9b, 0x18, 0x82, 0x20, 0xd8, 0x0c, 0x04, 0x01, 0x9b, 0x19, 0x87, 0x0e, 0x05, - 0x9a, 0x88, 0x02, 0x29, 0xc0, 0x20, 0xbb, 0x52, 0xa0, 0x80, 0x1b, 0xd0, 0x73, 0x98, 0x00, 0xa8, - 0x2a, 0x82, 0x30, 0x9a, 0xc2, 0x48, 0xec, 0x73, 0xc0, 0x39, 0x90, 0x09, 0x12, 0xf8, 0x38, 0xa2, - 0x9a, 0x3b, 0x07, 0x0d, 0x80, 0x22, 0xb9, 0x18, 0x19, 0x24, 0xfa, 0x09, 0x22, 0x88, 0x88, 0x28, - 0xb0, 0x8d, 0x43, 0x22, 0xe8, 0x9c, 0x42, 0x82, 0x8a, 0x10, 0xe9, 0x28, 0x98, 0x85, 0x1b, 0xa2, - 0x09, 0x21, 0xb3, 0xbf, 0x06, 0x9a, 0x02, 0x20, 0xe8, 0x39, 0xd1, 0x28, 0x15, 0xaa, 0x89, 0x83, - 0x3a, 0xa2, 0x06, 0x8f, 0x92, 0x19, 0x13, 0xda, 0x20, 0x02, 0xda, 0x2a, 0x85, 0x0a, 0x31, 0xc1, - 0x8e, 0x01, 0x08, 0x34, 0xc9, 0xbc, 0x43, 0x00, 0xa1, 0x1b, 0x91, 0x38, 0x95, 0x8d, 0x90, 0x80, - 0x79, 0x96, 0x8a, 0x90, 0x10, 0x91, 0x20, 0xa8, 0xa0, 0x4a, 0xe1, 0x58, 0x80, 0x0a, 0x10, 0xf0, - 0x2a, 0x84, 0x18, 0xb8, 0x08, 0x99, 0x35, 0xad, 0x23, 0x80, 0xdb, 0x49, 0x81, 0x20, 0xd8, 0x30, - 0x88, 0xa8, 0x60, 0xa1, 0xbb, 0x59, 0x16, 0xc8, 0x2a, 0xa0, 0x49, 0x13, 0xca, 0x18, 0xc0, 0x3a, - 0x23, 0x95, 0xaf, 0x12, 0x18, 0xc1, 0x1b, 0x12, 0x23, 0xcb, 0xa1, 0x2d, 0x93, 0x40, 0xa2, 0xbe, - 0x30, 0x84, 0x29, 0xc3, 0x8e, 0x11, 0x12, 0xca, 0x41, 0xfa, 0x48, 0x01, 0x98, 0x0c, 0x91, 0x30, - 0x80, 0x82, 0x8e, 0x03, 0xaa, 0x21, 0x19, 0x94, 0x0b, 0xe8, 0x30, 0x81, 0x99, 0x62, 0xc0, 0x0c, - 0x82, 0x38, 0xe8, 0x41, 0x99, 0x12, 0xad, 0x22, 0x81, 0xd9, 0x78, 0xa1, 0x8a, 0x10, 0xa3, 0x09, - 0xa0, 0x79, 0xb1, 0x1a, 0xba, 0x47, 0x98, 0x88, 0x19, 0xc8, 0x4a, 0x14, 0xc8, 0x1a, 0xa1, 0x68, - 0xb3, 0x0b, 0x90, 0x48, 0xa8, 0x22, 0xd9, 0x2b, 0x16, 0xa8, 0x80, 0xda, 0x61, 0x92, 0x9b, 0x88, - 0x63, 0xb8, 0x00, 0x88, 0x9a, 0x36, 0xca, 0x20, 0xc1, 0x8b, 0x73, 0x92, 0x8c, 0x90, 0x28, 0x20, - 0xa0, 0x89, 0x80, 0x99, 0x50, 0x24, 0xfa, 0x3a, 0x81, 0x80, 0x09, 0x9a, 0x47, 0xc9, 0x89, 0x22, - 0xb1, 0x8a, 0x31, 0xb2, 0x1d, 0x96, 0x2b, 0xc3, 0x29, 0x9a, 0x26, 0xb8, 0x2b, 0x07, 0xac, 0x21, - 0x90, 0x00, 0x10, 0xc9, 0x2b, 0x15, 0x99, 0x24, 0xdd, 0x29, 0x23, 0xaa, 0x10, 0xab, 0x72, 0xa2, - 0x8a, 0x89, 0x28, 0x82, 0x37, 0xf9, 0x0a, 0x02, 0x20, 0xa1, 0x0c, 0x00, 0x31, 0xd1, 0x8d, 0x13, - 0x8a, 0x25, 0xad, 0x81, 0x19, 0x13, 0x8a, 0xc2, 0x9f, 0x25, 0xb1, 0x1b, 0x80, 0x20, 0x91, 0x8a, - 0x90, 0x62, 0xea, 0x30, 0x14, 0xfb, 0x39, 0x83, 0x9b, 0x32, 0xa2, 0x8e, 0x81, 0x80, 0x19, 0x84, - 0x8c, 0x03, 0xba, 0x01, 0x78, 0xc1, 0x3a, 0xb2, 0x8c, 0x24, 0xd9, 0x58, 0xb3, 0x1c, 0x91, 0x18, - 0x89, 0x33, 0xe9, 0x29, 0x84, 0x89, 0x10, 0xc9, 0x80, 0x5b, 0x07, 0xaa, 0x10, 0x0a, 0x82, 0x32, - 0xdb, 0x08, 0x8c, 0x25, 0xb0, 0x9a, 0x21, 0xa1, 0x39, 0xf3, 0x0d, 0x16, 0xb9, 0x39, 0x85, 0x9c, - 0x18, 0x42, 0xc9, 0x29, 0x04, 0xba, 0x20, 0x98, 0x22, 0x21, 0xfb, 0x3b, 0x86, 0xab, 0x24, 0xa8, - 0x09, 0x81, 0x99, 0x11, 0x91, 0x63, 0xa1, 0xef, 0x30, 0x12, 0xaa, 0x89, 0x80, 0x20, 0x92, 0x08, - 0xc9, 0x4a, 0x86, 0x18, 0xc0, 0x1b, 0x00, 0x43, 0xd9, 0x31, 0xcc, 0x73, 0xa8, 0x8a, 0x22, 0xb9, - 0x42, 0x09, 0xb1, 0x0c, 0x30, 0x03, 0xb8, 0xcf, 0x51, 0xa2, 0x09, 0x80, 0xa8, 0x19, 0x38, 0x17, - 0x9b, 0xca, 0x60, 0x01, 0xa9, 0x1a, 0xa3, 0x1c, 0x45, 0xc0, 0x0c, 0x83, 0x09, 0x22, 0xa8, 0x8f, - 0x32, 0xa9, 0x28, 0x84, 0x9d, 0x21, 0x20, 0xc0, 0x9d, 0x23, 0x11, 0xc1, 0x8e, 0x81, 0x48, 0x92, - 0x2a, 0xc1, 0x9c, 0x33, 0x98, 0x21, 0xec, 0x20, 0x33, 0xda, 0x1b, 0x84, 0x8a, 0x25, 0xa9, 0x0a, - 0x08, 0x38, 0x37, 0xe9, 0x8b, 0x23, 0x80, 0x99, 0x31, 0xc8, 0x3a, 0xb3, 0x9d, 0x22, 0x88, 0x45, - 0xc9, 0xbd, 0x52, 0x80, 0x08, 0x00, 0xd9, 0x59, 0xa2, 0x29, 0x80, 0x98, 0x0a, 0x37, 0xdb, 0x18, - 0x10, 0x81, 0x10, 0xdb, 0x41, 0x92, 0xcb, 0x60, 0xa2, 0x9b, 0x22, 0xa0, 0xac, 0x35, 0xc8, 0x18, - 0x98, 0x98, 0x31, 0xd2, 0x3b, 0x05, 0xca, 0x59, 0xa3, 0x1e, 0x83, 0x99, 0x18, 0x23, 0xdd, 0x51, - 0x90, 0x8a, 0x30, 0xa8, 0x28, 0xb8, 0x32, 0x8a, 0xc4, 0x1e, 0x05, 0xab, 0x31, 0x00, 0xaa, 0xa0, - 0x3a, 0x84, 0x01, 0x9c, 0x21, 0xd1, 0x2d, 0x16, 0xc9, 0x2b, 0x05, 0x09, 0xa8, 0x58, 0xb1, 0x28, - 0xaa, 0x01, 0x53, 0xeb, 0x52, 0xb9, 0x10, 0x18, 0x91, 0xab, 0x10, 0x11, 0x32, 0xde, 0x30, 0x82, - 0xbd, 0x61, 0xa2, 0x0c, 0x23, 0xda, 0x2a, 0x85, 0x99, 0x20, 0xd2, 0x8c, 0x34, 0x91, 0x9c, 0x22, - 0x9c, 0x24, 0xb9, 0x09, 0x31, 0xd0, 0x40, 0x99, 0xb8, 0x5b, 0x14, 0x08, 0xca, 0x1b, 0x25, 0x91, - 0x8f, 0x02, 0x09, 0xa1, 0x30, 0xd9, 0x29, 0x83, 0x18, 0x98, 0xf9, 0x49, 0x04, 0xa8, 0x0b, 0x13, - 0xac, 0x53, 0xa8, 0x19, 0xa8, 0x59, 0x14, 0xcb, 0x28, 0x91, 0x98, 0x4b, 0x07, 0x8e, 0x11, 0x00, - 0x9a, 0x10, 0x01, 0x98, 0x0b, 0xb1, 0x72, 0xd5, 0x2a, 0x92, 0x0a, 0x12, 0x98, 0xbb, 0x65, 0xb8, - 0x1b, 0x17, 0xbb, 0x30, 0x82, 0x8a, 0x98, 0x00, 0x61, 0xa1, 0xae, 0x41, 0x83, 0xbb, 0x00, 0x21, - 0xa8, 0x71, 0xa0, 0x9a, 0x99, 0x72, 0x82, 0xc9, 0x0d, 0x15, 0x09, 0xa9, 0x20, 0x98, 0x41, 0xb8, - 0x8b, 0x10, 0x99, 0x67, 0xc9, 0x18, 0x88, 0x32, 0x99, 0xa8, 0x0a, 0x22, 0x05, 0x8b, 0xc0, 0x1d, - 0x27, 0xa8, 0x9a, 0x81, 0x1a, 0x26, 0xa0, 0xaa, 0x28, 0xd0, 0x49, 0x03, 0xda, 0x3a, 0x85, 0x8a, - 0x81, 0x8a, 0x21, 0x21, 0xf8, 0x19, 0x90, 0x38, 0x80, 0x25, 0xad, 0x23, 0xac, 0x33, 0xf1, 0x2b, - 0x04, 0x9a, 0x81, 0x08, 0xa1, 0x6a, 0x86, 0xaa, 0x88, 0xb8, 0x70, 0x83, 0x9a, 0x0a, 0x03, 0xbf, - 0x44, 0xa0, 0x99, 0x29, 0x03, 0x98, 0x89, 0x88, 0x37, 0xda, 0x00, 0x98, 0x3a, 0x05, 0x08, 0xa9, - 0xba, 0x54, 0x03, 0x9d, 0x98, 0x41, 0x00, 0x9a, 0xb0, 0x9f, 0x45, 0xa0, 0x9a, 0x11, 0xb9, 0x38, - 0x27, 0xc9, 0x19, 0x92, 0x09, 0x82, 0xaa, 0x69, 0x84, 0x0a, 0xb9, 0x61, 0xca, 0x41, 0x80, 0x88, - 0x18, 0xd8, 0x58, 0xb8, 0x52, 0xb9, 0xa0, 0x39, 0x86, 0x8c, 0x22, 0x91, 0x9e, 0x12, 0x0a, 0x12, - 0x90, 0x8b, 0x35, 0xec, 0x28, 0x12, 0x91, 0x8c, 0x12, 0xaa, 0x48, 0x82, 0xbb, 0x40, 0x90, 0x21, - 0x9e, 0x93, 0x1c, 0x03, 0x02, 0xaf, 0x22, 0x08, 0x90, 0x1c, 0x17, 0x9d, 0x81, 0x10, 0x8a, 0x35, - 0xb9, 0x09, 0x21, 0xf0, 0x4b, 0x82, 0xa8, 0x2a, 0x05, 0xbb, 0x41, 0xc8, 0x30, 0x01, 0xbe, 0x63, - 0xba, 0x43, 0xa8, 0xb8, 0x6a, 0x91, 0x80, 0x89, 0x00, 0x61, 0xb0, 0x8a, 0x13, 0xac, 0x52, 0x83, - 0x9c, 0xda, 0x51, 0x92, 0x0a, 0xa1, 0x1d, 0x05, 0x0b, 0x91, 0x89, 0x09, 0x16, 0x90, 0xcb, 0x38, - 0x82, 0x52, 0xfa, 0x18, 0x10, 0x91, 0x08, 0x90, 0x19, 0x28, 0x07, 0xac, 0x81, 0x29, 0x02, 0x53, - 0xfc, 0x28, 0x88, 0x11, 0x80, 0x9c, 0x43, 0xc9, 0x29, 0x93, 0x19, 0xa9, 0x52, 0xda, 0x49, 0x84, - 0x9c, 0x02, 0x0a, 0x05, 0xb9, 0x19, 0x11, 0x23, 0xbb, 0x22, 0xf8, 0x1c, 0x24, 0x98, 0xa0, 0x0f, - 0x13, 0x80, 0xac, 0x31, 0x81, 0x89, 0x11, 0xcc, 0x0a, 0x55, 0x90, 0xab, 0x02, 0x9c, 0x37, 0xc9, - 0x10, 0x0a, 0x11, 0x02, 0x9b, 0xe8, 0x69, 0x92, 0x89, 0x81, 0x8c, 0x32, 0x91, 0x8c, 0x83, 0x9f, - 0x33, 0x81, 0xbc, 0x61, 0xa0, 0x09, 0x11, 0xeb, 0x21, 0x11, 0xa0, 0x99, 0x08, 0x22, 0x8a, 0xf3, - 0x7a, 0xc1, 0x18, 0x80, 0x12, 0xc9, 0x0a, 0x25, 0xc9, 0x01, 0x0c, 0x16, 0xbb, 0x22, 0x00, 0xb0, - 0x0e, 0x22, 0x91, 0x19, 0xe9, 0x29, 0x14, 0x9b, 0x13, 0xa9, 0xaa, 0x41, 0x94, 0x8c, 0x02, 0x1a, - 0x27, 0xdb, 0x08, 0x80, 0x52, 0x90, 0xc8, 0x0c, 0x24, 0xa8, 0x11, 0xa9, 0x9b, 0x36, 0xa9, 0x08, - 0x0b, 0x05, 0x48, 0xf3, 0x0c, 0x81, 0x31, 0x81, 0xba, 0x8c, 0x92, 0x73, 0xd0, 0x29, 0x91, 0x28, - 0x89, 0xa2, 0x2a, 0xa0, 0x46, 0xca, 0x10, 0xbb, 0x67, 0xa9, 0x88, 0x08, 0x00, 0x04, 0x9d, 0x12, - 0x89, 0x18, 0x02, 0xca, 0x18, 0x28, 0x14, 0xda, 0x28, 0xca, 0x54, 0xa8, 0x08, 0x08, 0xa8, 0x31, - 0x89, 0xb1, 0x38, 0x02, 0xc9, 0x91, 0x8e, 0x73, 0xa3, 0x8f, 0x03, 0x9c, 0x04, 0x89, 0x01, 0x91, - 0x0e, 0x84, 0x0b, 0x94, 0x2c, 0x02, 0xa9, 0x0b, 0x25, 0x8a, 0x80, 0x1a, 0x04, 0xa8, 0x8b, 0x53, - 0xb8, 0x3a, 0x85, 0xac, 0x89, 0x34, 0x28, 0xe2, 0x9a, 0x70, 0x91, 0xbc, 0x42, 0x80, 0xa8, 0x2a, - 0x02, 0xb9, 0x3a, 0x27, 0x9c, 0x11, 0x18, 0x80, 0xa0, 0x0b, 0x74, 0x90, 0xb1, 0x9f, 0x12, 0x08, - 0x83, 0x68, 0xfa, 0x28, 0x92, 0x89, 0x00, 0x92, 0x1a, 0xc1, 0x3a, 0xa8, 0x41, 0x24, 0xfc, 0x39, - 0x91, 0x18, 0x32, 0xb0, 0xaf, 0x52, 0xa8, 0x11, 0xab, 0x52, 0x90, 0x99, 0x31, 0xec, 0x41, 0xa9, - 0x33, 0xc9, 0x8c, 0x23, 0x91, 0x0c, 0x82, 0x80, 0xae, 0x34, 0x10, 0xfa, 0x20, 0x89, 0x24, 0xdc, - 0x30, 0x81, 0x88, 0x88, 0x19, 0x94, 0x8e, 0x14, 0x9a, 0x02, 0x9b, 0x24, 0xb9, 0x29, 0xb1, 0x71, - 0xc0, 0x29, 0x92, 0x9d, 0x42, 0x80, 0x89, 0xa8, 0x39, 0x85, 0x1a, 0xc2, 0x8b, 0x42, 0xa0, 0x88, - 0x50, 0xd8, 0x80, 0x4b, 0x86, 0xba, 0x51, 0xa1, 0x8b, 0x20, 0x93, 0x09, 0xb9, 0x49, 0xb2, 0x19, - 0x5a, 0x07, 0xd9, 0x2b, 0x03, 0x18, 0xb1, 0x3c, 0x07, 0xad, 0x48, 0x83, 0x8b, 0x09, 0x41, 0xc8, - 0x29, 0xa0, 0x41, 0xc8, 0x18, 0x81, 0x01, 0xeb, 0x5a, 0x04, 0x9c, 0x81, 0x20, 0xd1, 0x38, 0x82, - 0x9e, 0x02, 0x38, 0x91, 0xfa, 0x49, 0x02, 0x91, 0xcb, 0x29, 0x84, 0x29, 0xb3, 0x1c, 0x95, 0x8c, - 0x14, 0xab, 0x00, 0x09, 0x17, 0xba, 0x10, 0xba, 0x55, 0xa0, 0x9b, 0x25, 0xac, 0x13, 0x08, 0x18, - 0xc0, 0x1a, 0x21, 0xb8, 0x20, 0x51, 0xd8, 0x11, 0x9b, 0x12, 0x09, 0xb2, 0x6a, 0xd2, 0x9d, 0x23, - 0x08, 0xa8, 0x29, 0x21, 0xf0, 0x4d, 0x85, 0x9c, 0x21, 0x08, 0x81, 0xbb, 0x48, 0x84, 0x8a, 0x91, - 0x49, 0xd3, 0x0d, 0x15, 0x88, 0xa9, 0x00, 0x32, 0xf9, 0x0a, 0x13, 0x01, 0xc9, 0x29, 0x09, 0x88, - 0x24, 0xab, 0x63, 0xca, 0x8a, 0x43, 0xb2, 0x0e, 0x04, 0x8a, 0x10, 0xa9, 0x41, 0x80, 0x8a, 0x87, - 0x8c, 0x82, 0x31, 0xa9, 0x01, 0xf9, 0x2b, 0x07, 0x8b, 0x03, 0x9a, 0x11, 0xa8, 0x00, 0x9d, 0x63, - 0xa2, 0x9b, 0x09, 0x82, 0x48, 0x92, 0xac, 0x12, 0x40, 0xdb, 0x24, 0xac, 0x22, 0x09, 0x85, 0xab, - 0x9a, 0x47, 0xa0, 0xaa, 0x42, 0xb0, 0x09, 0x99, 0x23, 0x30, 0x84, 0xff, 0x20, 0x80, 0x8a, 0x27, - 0xca, 0x10, 0x09, 0x01, 0x09, 0x00, 0x98, 0x01, 0x9c, 0x30, 0x96, 0x2a, 0x02, 0xdc, 0x18, 0x01, - 0x21, 0x91, 0x9a, 0x91, 0xaf, 0x17, 0x9b, 0x13, 0x8a, 0x02, 0x00, 0xbc, 0x33, 0x0d, 0x85, 0x4a, - 0xd1, 0x0c, 0x21, 0x12, 0xba, 0x82, 0x2c, 0xf3, 0x3b, 0x85, 0x8a, 0x19, 0x04, 0x8c, 0x93, 0x1e, - 0x93, 0x49, 0xc1, 0x88, 0x18, 0xa0, 0x61, 0xa0, 0x18, 0xc8, 0x19, 0x03, 0x88, 0x19, 0x82, 0x81, - 0xbf, 0x13, 0xad, 0x65, 0xa8, 0x00, 0xab, 0x18, 0x62, 0x82, 0x9c, 0xa0, 0x49, 0x91, 0x32, 0xcc, - 0x81, 0x58, 0xb3, 0x8d, 0xa2, 0x48, 0x91, 0x82, 0x8c, 0xb1, 0x61, 0x90, 0x8a, 0x28, 0x81, 0x29, - 0xf3, 0x2c, 0xa2, 0x50, 0xc8, 0x30, 0xaa, 0x80, 0x42, 0xb0, 0x2b, 0x02, 0xc9, 0x2e, 0x17, 0x9b, - 0x03, 0xdb, 0x30, 0x91, 0x01, 0x88, 0xd0, 0x3b, 0x07, 0xaa, 0x88, 0x22, 0x90, 0x19, 0xb2, 0xaa, - 0x79, 0x03, 0x01, 0x9e, 0xc0, 0x70, 0x91, 0x98, 0x89, 0x83, 0x1d, 0x85, 0x8c, 0x11, 0x88, 0x29, - 0xb3, 0x2c, 0xc4, 0x4c, 0x84, 0x8c, 0x82, 0x8a, 0x33, 0xd9, 0x18, 0x98, 0x42, 0x98, 0x02, 0xcc, - 0x19, 0x23, 0x29, 0x84, 0xde, 0x30, 0x90, 0x30, 0xa8, 0x9c, 0x23, 0xaa, 0x36, 0xb8, 0x0b, 0x84, - 0x8b, 0x41, 0xa9, 0x81, 0x2b, 0x95, 0xaa, 0x2b, 0x96, 0x60, 0xa2, 0x9a, 0x8c, 0x32, 0x12, 0x88, - 0xca, 0xce, 0x72, 0xa2, 0x89, 0x88, 0x89, 0x53, 0xa8, 0x91, 0x0e, 0x13, 0x80, 0x9a, 0xc0, 0x29, - 0x33, 0x84, 0xad, 0x10, 0x98, 0x52, 0xc0, 0x1a, 0x13, 0xa9, 0x12, 0xcf, 0x14, 0x88, 0x90, 0x2a, - 0xe2, 0x3a, 0x81, 0x22, 0x28, 0xf9, 0x59, 0xd8, 0x28, 0x82, 0x1a, 0xa4, 0x8b, 0x13, 0xcc, 0x25, - 0x9b, 0x14, 0x9a, 0x90, 0x1c, 0x05, 0x0b, 0x33, 0xfa, 0x09, 0x21, 0x98, 0x32, 0xcc, 0x31, 0xc8, - 0x38, 0x92, 0x9a, 0x20, 0x92, 0x8d, 0x01, 0x11, 0x02, 0xcf, 0x06, 0x0a, 0x12, 0x9d, 0x03, 0x8b, - 0x22, 0x89, 0x12, 0xcc, 0x49, 0x94, 0x0e, 0x14, 0xab, 0x30, 0xb8, 0x28, 0x91, 0x49, 0xa5, 0x8e, - 0x82, 0x0a, 0x26, 0xba, 0x20, 0xa9, 0x11, 0xa2, 0x6b, 0xc3, 0xaa, 0x73, 0xb0, 0x89, 0x09, 0x25, - 0xaa, 0x11, 0xca, 0x49, 0x15, 0xcb, 0x48, 0xa0, 0x19, 0x23, 0xba, 0xb9, 0x7b, 0x84, 0x0a, 0xa8, - 0x29, 0x00, 0x05, 0x8e, 0x93, 0x1c, 0x06, 0x9a, 0x81, 0x99, 0x33, 0xa1, 0x89, 0xda, 0x72, 0x98, - 0x08, 0x80, 0xab, 0x50, 0x04, 0xbb, 0x31, 0xb3, 0xbf, 0x35, 0xab, 0x00, 0x22, 0xa9, 0x08, 0xa0, - 0x3b, 0x37, 0xbb, 0x19, 0x22, 0xf0, 0x48, 0xa1, 0x99, 0x28, 0xd1, 0x59, 0xb2, 0x1c, 0x83, 0xaa, - 0x62, 0x93, 0x8c, 0xa9, 0x52, 0xab, 0x25, 0xa9, 0x8a, 0x20, 0x01, 0x14, 0xae, 0x21, 0xa9, 0x13, - 0xaa, 0x60, 0x95, 0x9f, 0x33, 0xab, 0x00, 0x9b, 0x37, 0xb0, 0x8d, 0x03, 0x10, 0xb0, 0x1a, 0x81, - 0x89, 0x24, 0xad, 0x43, 0xda, 0x50, 0x90, 0x80, 0x8a, 0x8a, 0x45, 0x90, 0x9b, 0x80, 0x18, 0x03, - 0x8f, 0x85, 0x9c, 0x34, 0xca, 0x30, 0xb0, 0x29, 0x15, 0xbb, 0x00, 0x1a, 0x87, 0x1b, 0x93, 0x99, - 0x3a, 0xd3, 0x48, 0xb0, 0x18, 0x92, 0xaa, 0x20, 0x81, 0x53, 0xfa, 0x29, 0x82, 0xc9, 0x10, 0x23, - 0x98, 0xed, 0x50, 0xa1, 0x1a, 0x12, 0x01, 0xdc, 0x09, 0x43, 0x01, 0xb9, 0xbb, 0x79, 0x03, 0x1b, - 0x82, 0x9e, 0x22, 0xbb, 0x72, 0x93, 0x9f, 0x31, 0x90, 0x9a, 0x10, 0x21, 0xbb, 0x36, 0xfc, 0x38, - 0x81, 0x10, 0xb8, 0x80, 0x0b, 0x25, 0xb0, 0x1a, 0xa3, 0x0e, 0x16, 0xaa, 0x88, 0x80, 0x40, 0x01, - 0x90, 0xcd, 0x60, 0xa1, 0x28, 0x99, 0x81, 0x2b, 0xa2, 0x09, 0x42, 0xcb, 0x31, 0x96, 0x9e, 0x88, - 0x45, 0xc8, 0x29, 0x91, 0x0a, 0x12, 0xab, 0x35, 0xca, 0x18, 0xa1, 0x52, 0xb9, 0x3a, 0x85, 0x0b, - 0xd1, 0x4a, 0x93, 0x8c, 0x14, 0xaa, 0x20, 0xa1, 0x8b, 0x73, 0x90, 0xb9, 0x2a, 0x43, 0xf9, 0x60, - 0xb0, 0x2a, 0x81, 0xa9, 0x62, 0xd0, 0x28, 0x90, 0x28, 0x90, 0x99, 0x10, 0x8c, 0x27, 0xca, 0x10, - 0x80, 0x11, 0x80, 0xbb, 0x03, 0x9b, 0x63, 0x98, 0xd0, 0x1c, 0x37, 0xf1, 0x2a, 0x80, 0x18, 0x82, - 0x89, 0x99, 0xa1, 0x69, 0x94, 0x19, 0xdc, 0x48, 0x01, 0x88, 0x89, 0x80, 0x02, 0x80, 0x98, 0x8b, - 0x06, 0x09, 0xb9, 0x53, 0xea, 0x20, 0x82, 0x81, 0xba, 0x38, 0x13, 0x1a, 0x97, 0xaf, 0x32, 0x90, - 0x28, 0xe8, 0x39, 0x90, 0x10, 0x20, 0xc2, 0x8f, 0x00, 0x13, 0x8b, 0x24, 0xcc, 0x88, 0x60, 0x93, - 0xac, 0x21, 0xa0, 0x69, 0xa3, 0xab, 0x20, 0x13, 0xda, 0x11, 0xbe, 0x40, 0x33, 0xb0, 0xab, 0xac, - 0x43, 0x32, 0xb5, 0x8f, 0x82, 0x2a, 0x84, 0xbb, 0x18, 0x33, 0x00, 0xb0, 0x9e, 0x80, 0x74, 0xb1, - 0x0b, 0x80, 0x99, 0x64, 0xb1, 0x8b, 0x08, 0x10, 0x13, 0xa9, 0x00, 0xbf, 0x73, 0xc1, 0x28, 0xb8, - 0x30, 0xc8, 0x40, 0x90, 0x08, 0x89, 0x81, 0x0c, 0x14, 0x32, 0xcf, 0x31, 0xb8, 0x02, 0x29, 0xd2, - 0x48, 0xc0, 0x0b, 0x23, 0x81, 0x2c, 0x92, 0xda, 0x1b, 0x27, 0xba, 0x43, 0xea, 0x18, 0x12, 0xb9, - 0x30, 0xd8, 0x30, 0x03, 0xc0, 0x0e, 0x12, 0x0a, 0x23, 0xd8, 0x8b, 0x02, 0x20, 0x20, 0xe8, 0x08, - 0x40, 0x91, 0xcc, 0x10, 0x11, 0x81, 0x82, 0xaf, 0x38, 0x93, 0x32, 0xec, 0x1a, 0x13, 0x80, 0x01, - 0xac, 0x84, 0x1e, 0x05, 0xa8, 0x8d, 0x33, 0x98, 0x91, 0x0c, 0x04, 0xba, 0x59, 0x13, 0xd9, 0x88, - 0x39, 0xe3, 0x39, 0x82, 0x89, 0x20, 0xed, 0x58, 0x92, 0x89, 0x01, 0xca, 0x30, 0x02, 0x99, 0x8b, - 0x27, 0xac, 0x32, 0xb8, 0x09, 0x01, 0x89, 0x25, 0xbc, 0x21, 0x12, 0xd1, 0x1d, 0x21, 0xa1, 0x2a, - 0x93, 0xce, 0x38, 0x93, 0x49, 0xf3, 0x1c, 0x11, 0x81, 0x01, 0xae, 0x22, 0xa9, 0x71, 0xb0, 0x1b, - 0x23, 0xa9, 0x00, 0xaa, 0x26, 0xb9, 0x00, 0x11, 0xa2, 0x9f, 0x34, 0xd0, 0x8c, 0x33, 0x19, 0xa1, - 0xbc, 0x59, 0x85, 0x0a, 0xb1, 0x29, 0x91, 0x20, 0xb3, 0x3a, 0xfc, 0x00, 0x59, 0x95, 0x8c, 0x11, - 0xa0, 0x39, 0xb4, 0x2c, 0xa2, 0x2a, 0x80, 0x02, 0x89, 0x90, 0x19, 0x84, 0x3a, 0xfb, 0x6c, 0x02, - 0xbb, 0x30, 0x22, 0xf9, 0x2b, 0x23, 0xeb, 0x40, 0x81, 0x01, 0xea, 0x0a, 0x41, 0x05, 0xbb, 0x10, - 0xb8, 0x3b, 0x37, 0xaa, 0x88, 0x29, 0xb1, 0x50, 0xd0, 0x39, 0xa0, 0x32, 0x88, 0xfb, 0x48, 0x91, - 0x11, 0xcb, 0x20, 0x91, 0x41, 0xca, 0x22, 0xa8, 0x9a, 0x61, 0xc2, 0x9e, 0x41, 0x85, 0xab, 0x11, - 0xba, 0x61, 0x91, 0x21, 0xfb, 0x10, 0x98, 0x32, 0xb0, 0x89, 0x00, 0xa8, 0x51, 0xc2, 0x8d, 0x21, - 0x10, 0x82, 0xa9, 0xae, 0x51, 0xa1, 0x62, 0xc8, 0x9a, 0x40, 0xa3, 0x2a, 0x82, 0xdb, 0x30, 0xa2, - 0x0d, 0x03, 0x1b, 0x15, 0xa9, 0xac, 0x19, 0x35, 0xb9, 0x44, 0xfb, 0x29, 0x82, 0x11, 0xa9, 0x8a, - 0x21, 0x22, 0x81, 0xbf, 0x21, 0x90, 0x59, 0x05, 0xbd, 0x28, 0x10, 0x11, 0x09, 0xc9, 0x10, 0x9a, - 0x73, 0xb3, 0x9c, 0x33, 0xaa, 0xc8, 0x6b, 0xa3, 0x1c, 0x14, 0xaa, 0x99, 0x38, 0x04, 0x60, 0xd0, - 0x9b, 0x33, 0x81, 0x9c, 0x13, 0xac, 0x35, 0xb9, 0x28, 0xeb, 0x30, 0x15, 0x9a, 0x00, 0xd8, 0x0b, - 0x35, 0xb0, 0x0c, 0x12, 0xb9, 0x60, 0xa0, 0x88, 0x98, 0x53, 0xab, 0x27, 0xbb, 0x1b, 0x35, 0xa8, - 0x8a, 0x00, 0x89, 0x42, 0xd0, 0x39, 0xc1, 0x21, 0x88, 0xa2, 0x9f, 0x02, 0x21, 0x80, 0x82, 0xff, - 0x30, 0x82, 0x98, 0x99, 0x81, 0x19, 0x25, 0xf8, 0x28, 0x98, 0x1a, 0x36, 0xc8, 0x8b, 0x08, 0x51, - 0x81, 0xb9, 0x1a, 0x81, 0x38, 0x21, 0xb1, 0x0b, 0xf9, 0x3a, 0x44, 0xd0, 0x2a, 0x84, 0x9a, 0x99, - 0x21, 0x2a, 0x07, 0xab, 0x21, 0x89, 0xa5, 0x2e, 0x83, 0x8a, 0x0a, 0x06, 0x8b, 0x81, 0x88, 0x39, - 0x94, 0x8a, 0x01, 0xc9, 0xcc, 0x74, 0x81, 0x99, 0x8a, 0xa8, 0x71, 0x91, 0x09, 0x98, 0x01, 0x18, - 0x23, 0xfc, 0x4a, 0x84, 0x0b, 0x11, 0xd8, 0x1c, 0x15, 0x99, 0x90, 0x2a, 0x83, 0x9a, 0x10, 0x08, - 0xa0, 0x11, 0x0b, 0xd9, 0x13, 0x4d, 0x16, 0xa9, 0xcb, 0x5b, 0x87, 0x88, 0x08, 0xa0, 0x8a, 0x53, - 0x90, 0x89, 0x00, 0xad, 0x44, 0xb0, 0x08, 0x9a, 0x32, 0x92, 0x8c, 0x81, 0x0b, 0xd3, 0x1c, 0x37, - 0xb0, 0x9c, 0x18, 0x15, 0x9a, 0x12, 0xcb, 0x21, 0x8a, 0x52, 0xa1, 0xae, 0x40, 0x84, 0x9a, 0xa0, - 0x20, 0x42, 0x84, 0xbe, 0x0b, 0x16, 0x01, 0x9a, 0xb9, 0x19, 0x44, 0xa3, 0x8c, 0xc9, 0x48, 0x15, - 0xa8, 0xba, 0x19, 0x46, 0xb8, 0x89, 0x89, 0x42, 0x91, 0x2a, 0xc0, 0x0b, 0x10, 0x17, 0x99, 0x99, - 0x39, 0x94, 0x19, 0xfa, 0x48, 0x01, 0x80, 0xcb, 0x5a, 0x04, 0x99, 0x99, 0x12, 0xda, 0x70, 0x91, - 0x8a, 0x80, 0x10, 0x00, 0x88, 0xd8, 0x5a, 0x05, 0xcb, 0x30, 0xa1, 0x18, 0x98, 0x89, 0x21, 0x44, - 0xfa, 0x18, 0x89, 0x22, 0x12, 0xbc, 0x98, 0x99, 0x64, 0x01, 0xb8, 0x9f, 0x23, 0x01, 0xe8, 0x1a, - 0x23, 0x82, 0xac, 0xaa, 0x73, 0xa0, 0x00, 0x18, 0xd9, 0x40, 0x91, 0x81, 0xbc, 0x41, 0x10, 0x93, - 0xaf, 0x18, 0x34, 0x98, 0xca, 0x19, 0x20, 0x84, 0x9a, 0x02, 0x9a, 0x12, 0x28, 0xfa, 0x39, 0x00, - 0x24, 0xda, 0xad, 0x51, 0x33, 0xea, 0x0a, 0x01, 0x41, 0xb0, 0x9c, 0x31, 0x93, 0x5a, 0xd0, 0x09, - 0x89, 0x63, 0xa8, 0x01, 0x9a, 0x98, 0x60, 0x91, 0x8a, 0x3a, 0x87, 0x8a, 0xc9, 0x48, 0x23, 0xc1, - 0xad, 0x21, 0x00, 0x91, 0x51, 0xda, 0x18, 0x18, 0x22, 0xd8, 0x0a, 0x11, 0x14, 0xea, 0x29, 0x11, - 0x90, 0x10, 0xda, 0x40, 0xa0, 0x20, 0x81, 0xfb, 0x59, 0x93, 0x8b, 0x91, 0x1a, 0x41, 0x95, 0x8e, - 0x98, 0x31, 0x80, 0x01, 0xcc, 0x32, 0x98, 0x80, 0x21, 0xec, 0x41, 0x00, 0x80, 0x9c, 0x23, 0x1a, - 0xc4, 0x0c, 0x01, 0x41, 0xb9, 0x00, 0x0c, 0x00, 0x34, 0xe8, 0x8d, 0x32, 0x01, 0xba, 0x01, 0x1a, - 0x08, 0x86, 0x0a, 0x80, 0xd8, 0x40, 0x81, 0x9d, 0x25, 0xa1, 0x9d, 0x10, 0x12, 0x81, 0xa0, 0x8e, - 0xa2, 0x29, 0x25, 0x80, 0xfd, 0x38, 0x82, 0x18, 0xa8, 0x9b, 0x50, 0x92, 0x09, 0x88, 0x38, 0xaa, - 0x23, 0xde, 0x41, 0x80, 0x11, 0x90, 0xbd, 0x30, 0x51, 0x92, 0xbc, 0xca, 0x45, 0x88, 0x80, 0x0c, - 0xb2, 0x39, 0x44, 0xe0, 0x0a, 0x10, 0x02, 0xaa, 0x30, 0xa9, 0xa8, 0x70, 0xc2, 0x30, 0xab, 0x04, - 0x2a, 0xb1, 0x40, 0xeb, 0x18, 0x22, 0xb1, 0x59, 0xf0, 0x2a, 0x02, 0x01, 0x8a, 0xb8, 0x2c, 0x33, - 0x04, 0xbd, 0x81, 0x29, 0x27, 0xcb, 0xba, 0x72, 0x83, 0x98, 0x9d, 0x11, 0x21, 0x12, 0xfb, 0x8a, - 0x40, 0x02, 0x98, 0xaa, 0xaa, 0x72, 0x04, 0xb8, 0x8c, 0x98, 0x64, 0x90, 0x89, 0xa0, 0x1a, 0x24, - 0x88, 0xa9, 0x38, 0xe8, 0x60, 0xb8, 0x29, 0x21, 0xa3, 0x8e, 0xa8, 0x50, 0x81, 0x08, 0x82, 0xbc, - 0x29, 0x28, 0x14, 0x98, 0xac, 0x38, 0xa1, 0x72, 0xf2, 0x2a, 0xa1, 0x28, 0x82, 0x9a, 0x84, 0xaf, - 0x53, 0x82, 0x9b, 0xaa, 0x52, 0x81, 0x88, 0xb1, 0x1b, 0x91, 0x45, 0xa8, 0xac, 0x11, 0x80, 0x32, - 0xf9, 0x0a, 0x08, 0x33, 0x22, 0xfa, 0x8f, 0x14, 0x81, 0xaa, 0x29, 0x84, 0x18, 0x98, 0xc8, 0x1b, - 0x25, 0x12, 0xf9, 0x9c, 0x43, 0x80, 0x82, 0x9d, 0x10, 0x91, 0x08, 0x22, 0xd8, 0x0a, 0x92, 0x5a, - 0xb3, 0x1c, 0x91, 0x08, 0x80, 0x20, 0xb3, 0x2e, 0xe8, 0x50, 0x00, 0x11, 0xdd, 0x40, 0x98, 0x11, - 0x88, 0xa0, 0x38, 0xb8, 0xaa, 0x61, 0x82, 0x48, 0xc1, 0xae, 0x28, 0x14, 0x00, 0xd8, 0x09, 0x91, - 0x3a, 0x37, 0xda, 0x89, 0x10, 0x42, 0xa0, 0xbb, 0x40, 0x01, 0x91, 0xab, 0x00, 0x18, 0x48, 0x87, - 0x9c, 0x88, 0x50, 0xa1, 0x89, 0x00, 0x42, 0xea, 0x42, 0xab, 0x92, 0x0b, 0x64, 0xa1, 0xac, 0x20, - 0x11, 0x93, 0x9c, 0x8b, 0x27, 0x9a, 0x81, 0x81, 0x9d, 0x52, 0x90, 0x8a, 0x00, 0x91, 0x8d, 0x27, - 0x9a, 0x80, 0x0b, 0x93, 0x6b, 0x86, 0xbb, 0x11, 0x89, 0x13, 0x91, 0x9b, 0x12, 0xc9, 0x72, 0xb1, - 0x8a, 0x21, 0x10, 0xb4, 0xaf, 0x40, 0x11, 0x98, 0xca, 0x2c, 0x15, 0x09, 0x90, 0x8b, 0x90, 0x70, - 0x95, 0x8b, 0x09, 0x22, 0x11, 0xfb, 0x28, 0x92, 0xaa, 0x13, 0x28, 0x03, 0xdd, 0x18, 0x02, 0xa9, - 0x48, 0x07, 0xbc, 0x01, 0x30, 0x81, 0xa9, 0x80, 0x8f, 0x24, 0x98, 0x8a, 0x11, 0x13, 0xdb, 0x9b, - 0x40, 0x36, 0xb0, 0xbc, 0x39, 0x92, 0x60, 0xb2, 0x8d, 0x12, 0x8a, 0x33, 0xa8, 0xbc, 0x49, 0x25, - 0xa0, 0x9f, 0x11, 0x08, 0x23, 0xca, 0x8a, 0x32, 0xb8, 0x3b, 0x27, 0xd8, 0x19, 0x10, 0xa2, 0x8f, - 0x11, 0x42, 0xe8, 0x8a, 0x21, 0x12, 0xab, 0x19, 0x07, 0xbb, 0x41, 0xa2, 0xa9, 0x49, 0x05, 0xa9, - 0x9c, 0x00, 0x54, 0x88, 0x99, 0x89, 0x48, 0xa1, 0x1a, 0xe1, 0x59, 0x04, 0xcb, 0x29, 0x00, 0x42, - 0xc0, 0x9c, 0x02, 0x18, 0x82, 0x11, 0xca, 0x8a, 0x30, 0x17, 0xbc, 0x31, 0x82, 0x0a, 0xa0, 0x00, - 0x0c, 0x36, 0xe0, 0x8b, 0x30, 0x13, 0x99, 0xbd, 0x44, 0x80, 0x80, 0xb9, 0x1a, 0xc1, 0x70, 0xa3, - 0xac, 0x20, 0x09, 0xa1, 0x38, 0x51, 0xc2, 0x2b, 0x99, 0x90, 0x58, 0x26, 0xba, 0xc8, 0x2c, 0x24, - 0x99, 0x12, 0xcb, 0x19, 0x14, 0x1b, 0x06, 0x9e, 0x24, 0xaa, 0xb1, 0x8b, 0x35, 0x98, 0x11, 0xc9, - 0x0b, 0x92, 0x38, 0x34, 0xa8, 0x09, 0x89, 0xea, 0x19, 0x51, 0x02, 0x42, 0xfd, 0x3b, 0x04, 0x00, - 0x09, 0xc0, 0x0b, 0x25, 0xaa, 0x10, 0x1a, 0x07, 0xa9, 0x89, 0xc9, 0x78, 0x94, 0x0b, 0x92, 0x8a, - 0x41, 0xb2, 0x0c, 0x81, 0x20, 0x91, 0xe9, 0x29, 0x12, 0x04, 0x1a, 0xf2, 0x0f, 0x13, 0x08, 0xa1, - 0xbb, 0x50, 0x81, 0x88, 0xa8, 0x49, 0x02, 0xdb, 0x51, 0xb9, 0x41, 0xa0, 0xa8, 0x3a, 0x95, 0x2b, - 0x04, 0xba, 0x3a, 0x83, 0x21, 0xac, 0xb8, 0x70, 0x85, 0x9d, 0x12, 0x18, 0xab, 0x98, 0x73, 0xa9, - 0x22, 0xb0, 0x1c, 0xb3, 0x6b, 0x84, 0xdb, 0x30, 0x98, 0x21, 0x81, 0xdc, 0x18, 0x14, 0x90, 0x08, - 0x91, 0x8c, 0x33, 0xb1, 0x0f, 0xb2, 0x79, 0xa3, 0x9c, 0x90, 0x31, 0x89, 0x17, 0xdb, 0x29, 0x02, - 0x22, 0xbc, 0x28, 0x91, 0x3a, 0xa5, 0x8e, 0x02, 0x08, 0x31, 0xa3, 0xdf, 0x38, 0x04, 0x98, 0x1a, - 0x91, 0x1a, 0x94, 0x1b, 0x04, 0xdb, 0x39, 0x94, 0x8c, 0x12, 0x00, 0xa1, 0x0b, 0x40, 0xd9, 0x39, - 0x82, 0x30, 0x91, 0xeb, 0x2a, 0xc8, 0x73, 0x81, 0xe9, 0x30, 0x91, 0x98, 0x29, 0xa3, 0x7a, 0xc2, - 0x1c, 0xb1, 0x1b, 0x37, 0x91, 0xcb, 0x1b, 0x84, 0x08, 0x21, 0xa9, 0x0a, 0x13, 0x99, 0xb8, 0x69, - 0x00, 0x02, 0x81, 0xef, 0x33, 0xda, 0x61, 0x90, 0x9a, 0x28, 0x92, 0x40, 0xdb, 0x31, 0xa8, 0x10, - 0x89, 0x01, 0xca, 0x2b, 0x67, 0xa9, 0x8a, 0x90, 0x72, 0xa1, 0x0a, 0x90, 0x90, 0x30, 0xb1, 0x33, - 0xcf, 0x32, 0x98, 0x88, 0xa1, 0x2d, 0x06, 0x8a, 0x91, 0x89, 0x02, 0x30, 0xc0, 0x09, 0x99, 0x81, - 0x6a, 0xa4, 0x0c, 0x92, 0x3a, 0x12, 0xe9, 0x8a, 0x53, 0x81, 0x00, 0xea, 0x38, 0xd9, 0x52, 0xa8, - 0x19, 0x93, 0x8f, 0x22, 0xb0, 0x0a, 0x02, 0x20, 0x15, 0xcf, 0x11, 0x10, 0xa1, 0x10, 0x9b, 0x01, - 0x89, 0x44, 0x08, 0xf0, 0x2b, 0x91, 0x53, 0xb9, 0x00, 0x29, 0xc2, 0x0b, 0x84, 0x8c, 0x22, 0x10, - 0x96, 0xaf, 0x30, 0x13, 0xb9, 0x39, 0xea, 0x28, 0x32, 0xa2, 0x8d, 0xb0, 0x3d, 0x17, 0xc9, 0x28, - 0x98, 0x11, 0x1b, 0x85, 0x9b, 0x10, 0x71, 0xd1, 0x19, 0xa0, 0x38, 0x82, 0xa0, 0x1b, 0x02, 0xae, - 0x72, 0x92, 0x9c, 0x00, 0x19, 0x14, 0xb9, 0x0a, 0x88, 0x37, 0xa9, 0xea, 0x28, 0x82, 0x42, 0xc9, - 0x09, 0x90, 0x48, 0x17, 0xbc, 0x10, 0x11, 0x08, 0xa0, 0x8b, 0x00, 0x62, 0x92, 0x9b, 0xe0, 0x4b, - 0x05, 0x98, 0x9a, 0x41, 0xb0, 0x20, 0x9a, 0x91, 0x0d, 0x33, 0x91, 0xca, 0x3a, 0x25, 0xb8, 0x0d, - 0x13, 0x99, 0x18, 0x81, 0x70, 0xc1, 0x1a, 0x94, 0x1c, 0xd0, 0x39, 0x43, 0xe8, 0x28, 0xb0, 0x2b, - 0x04, 0x8a, 0x14, 0xaa, 0xdb, 0x71, 0x90, 0x11, 0x9a, 0x98, 0x4a, 0xa3, 0x4b, 0x91, 0x90, 0x5c, - 0x94, 0xbb, 0x09, 0x63, 0x92, 0x90, 0xac, 0x10, 0x20, 0x10, 0x05, 0xbe, 0x28, 0x32, 0xd1, 0x0c, - 0x01, 0x20, 0x90, 0x09, 0x09, 0xe9, 0x38, 0x27, 0xb8, 0xae, 0x53, 0x80, 0xb9, 0x20, 0x91, 0x8a, - 0x23, 0xbb, 0x54, 0xdb, 0x31, 0x88, 0x00, 0x0b, 0xa3, 0x1f, 0x24, 0xb8, 0xab, 0x32, 0x9a, 0x47, - 0xa8, 0xab, 0x98, 0x1a, 0x77, 0xb0, 0x09, 0x90, 0x18, 0x03, 0x0a, 0xc9, 0x31, 0x11, 0xb9, 0x1a, - 0xa0, 0x61, 0x12, 0xce, 0x10, 0x19, 0x05, 0x91, 0xaa, 0xaf, 0x44, 0xa1, 0x0a, 0x98, 0x32, 0xa9, - 0x89, 0x64, 0xc9, 0x89, 0x43, 0x91, 0xc9, 0x0c, 0x26, 0x99, 0x98, 0x1a, 0x03, 0xa8, 0x8a, 0x64, - 0xd0, 0x2a, 0x82, 0x99, 0x81, 0x99, 0x51, 0x23, 0xfb, 0x5a, 0xb1, 0x19, 0x82, 0xb9, 0x52, 0xa1, - 0x9b, 0x21, 0x91, 0x20, 0xc9, 0x51, 0xb0, 0x9f, 0x31, 0x14, 0xa0, 0xcc, 0x41, 0xd8, 0x29, 0x84, - 0x00, 0xba, 0x89, 0x44, 0x80, 0xb9, 0x2b, 0xb3, 0x69, 0xa1, 0x21, 0x8d, 0x02, 0x28, 0xa1, 0x88, - 0xaf, 0x63, 0x03, 0xcb, 0x8a, 0x22, 0x11, 0xf9, 0x0b, 0x35, 0xb0, 0x0d, 0x13, 0xab, 0x09, 0x43, - 0x12, 0xea, 0x8b, 0x63, 0xc0, 0x28, 0x90, 0x29, 0xc8, 0x40, 0x80, 0xb2, 0x1d, 0x12, 0x00, 0xc9, - 0x38, 0xb0, 0x1b, 0x56, 0xb0, 0x9b, 0x39, 0x95, 0x0c, 0x33, 0xc1, 0x8a, 0x81, 0x89, 0x94, 0x0f, - 0x24, 0xa9, 0x8a, 0x01, 0x28, 0xf1, 0x4b, 0x86, 0x8a, 0x10, 0xa9, 0x48, 0xb1, 0x48, 0xa1, 0x8b, - 0x22, 0xc8, 0x09, 0x54, 0xa1, 0xbb, 0x09, 0x01, 0x60, 0x84, 0x99, 0xbc, 0x9a, 0x46, 0x91, 0x19, - 0xb9, 0x38, 0x92, 0x1a, 0xa5, 0x8d, 0x32, 0x13, 0xf9, 0x8c, 0x32, 0x82, 0x9d, 0x11, 0x30, 0xca, - 0x99, 0x52, 0xa8, 0x80, 0x62, 0xa1, 0xaf, 0x11, 0x41, 0xb1, 0x19, 0xb9, 0x88, 0x78, 0x83, 0x8b, - 0xb1, 0x8c, 0x01, 0x44, 0x98, 0x98, 0x01, 0xad, 0x35, 0xca, 0x28, 0x93, 0x9d, 0x33, 0x91, 0xab, - 0xab, 0x43, 0x33, 0xfc, 0x10, 0x09, 0x33, 0xc8, 0x3a, 0xa1, 0xb9, 0x2e, 0x07, 0x99, 0x80, 0x40, - 0x92, 0xba, 0xdb, 0x70, 0x02, 0x88, 0xbd, 0x31, 0x32, 0xc0, 0x8d, 0x81, 0x21, 0xa1, 0x09, 0x98, - 0xb8, 0x6c, 0x14, 0x91, 0xbf, 0x30, 0x22, 0xc0, 0x0a, 0x11, 0x30, 0xf0, 0x2a, 0x82, 0x09, 0x82, - 0xaa, 0x2b, 0x16, 0x99, 0x30, 0xc2, 0xaf, 0x40, 0x04, 0x89, 0x88, 0xbf, 0x63, 0xa0, 0x08, 0x00, - 0x89, 0x98, 0x38, 0x17, 0xcb, 0x18, 0x11, 0x82, 0x9a, 0x9a, 0x52, 0x90, 0x8c, 0x14, 0x9a, 0x18, - 0x83, 0x0c, 0x85, 0x8b, 0xa8, 0x35, 0x9b, 0x85, 0x8f, 0x14, 0xba, 0x09, 0x42, 0x82, 0xb9, 0x0c, - 0x13, 0x98, 0xaa, 0x74, 0x90, 0x99, 0x9c, 0x34, 0x08, 0x82, 0xcb, 0x09, 0x42, 0xc8, 0x20, 0x33, - 0xef, 0x38, 0x01, 0x98, 0x98, 0x28, 0x13, 0x81, 0xbf, 0x20, 0x12, 0x98, 0x0b, 0x41, 0xa4, 0x9f, - 0x02, 0x08, 0x22, 0x98, 0xa0, 0x8e, 0xa9, 0x46, 0xa0, 0x00, 0xdb, 0x49, 0x13, 0xaa, 0x2b, 0xb2, - 0x68, 0x01, 0x9a, 0x12, 0xbd, 0x61, 0x91, 0x09, 0xc9, 0x18, 0x64, 0xb1, 0x8a, 0x80, 0x00, 0x08, - 0xd8, 0x68, 0x92, 0x29, 0xe9, 0x1a, 0x22, 0x99, 0x30, 0xa4, 0xaf, 0x30, 0x11, 0x00, 0xc1, 0x0e, - 0x23, 0xca, 0x38, 0xa2, 0x18, 0x80, 0x88, 0x13, 0x8d, 0x13, 0xdc, 0x48, 0x16, 0xcb, 0x10, 0xb8, - 0x48, 0x04, 0xa8, 0xab, 0x01, 0x29, 0x15, 0x9c, 0x11, 0x0a, 0x02, 0xd2, 0x8f, 0x13, 0x11, 0xa0, - 0xb8, 0x0f, 0x24, 0x80, 0x99, 0xaa, 0x52, 0xa0, 0x58, 0xd8, 0x1a, 0x24, 0x00, 0xea, 0x09, 0x28, - 0x33, 0xb0, 0x9d, 0x08, 0x83, 0x8a, 0x11, 0x84, 0x9e, 0x34, 0xca, 0x80, 0x2a, 0x23, 0x82, 0xfa, - 0x09, 0x22, 0x81, 0x00, 0x9f, 0x22, 0x01, 0xac, 0x18, 0x83, 0x1e, 0x14, 0x98, 0xcb, 0x38, 0xb4, - 0x29, 0x33, 0xb8, 0xbb, 0x9f, 0x22, 0x82, 0x5a, 0x94, 0x8a, 0xaf, 0x62, 0x92, 0xa9, 0x0d, 0x14, - 0x89, 0x00, 0xa8, 0x8a, 0x52, 0x02, 0x99, 0xbd, 0x30, 0x31, 0x14, 0xc9, 0xad, 0x52, 0xb0, 0x10, - 0xa8, 0x22, 0x81, 0xda, 0x9a, 0x53, 0xa1, 0x50, 0x92, 0xcf, 0x10, 0x12, 0x81, 0x99, 0xaa, 0x43, - 0xb8, 0x08, 0x38, 0x15, 0xcd, 0x41, 0x90, 0x29, 0x91, 0xaa, 0x8a, 0x73, 0xa5, 0xab, 0x00, 0x00, - 0x33, 0xc9, 0x32, 0xcc, 0x99, 0x75, 0xb8, 0x1a, 0x08, 0x44, 0xb9, 0x99, 0x29, 0x82, 0x22, 0xac, - 0x80, 0x81, 0x3a, 0x17, 0x89, 0xca, 0x20, 0x01, 0xe1, 0x0e, 0x25, 0x90, 0x9a, 0x91, 0x09, 0x31, - 0xc0, 0x29, 0x04, 0xce, 0x42, 0xb0, 0x18, 0x00, 0xb9, 0x61, 0xd0, 0x3b, 0x15, 0xa8, 0x8a, 0x11, - 0x92, 0xbc, 0x34, 0xdb, 0x52, 0x98, 0x18, 0xa9, 0x28, 0x19, 0x07, 0xc9, 0x2b, 0x14, 0xa9, 0x29, - 0x82, 0x0a, 0x80, 0x50, 0xf8, 0x28, 0x18, 0x04, 0x0c, 0xd8, 0x58, 0x91, 0x0a, 0x90, 0x28, 0x98, - 0x43, 0xe8, 0x8b, 0x24, 0x18, 0xa2, 0xad, 0x21, 0x81, 0x03, 0xae, 0x01, 0x40, 0xc0, 0x48, 0xb0, - 0x1d, 0x25, 0xb9, 0x0a, 0x11, 0x89, 0x03, 0x08, 0xaf, 0x16, 0x9a, 0x90, 0x18, 0x43, 0xa0, 0x9a, - 0x18, 0xeb, 0x61, 0x91, 0x09, 0xc8, 0x58, 0x81, 0xa9, 0x89, 0x41, 0x04, 0xca, 0x0a, 0x33, 0xc2, - 0x0c, 0x31, 0xf8, 0x39, 0x81, 0x80, 0x9c, 0x14, 0x10, 0xba, 0x80, 0x29, 0x25, 0x90, 0xce, 0x40, - 0xa2, 0x8a, 0x42, 0xd8, 0x39, 0x23, 0xe8, 0x8c, 0x33, 0x98, 0x89, 0x80, 0xca, 0x50, 0x02, 0xa2, - 0xac, 0x8a, 0x37, 0x80, 0xca, 0x28, 0x80, 0x22, 0x9c, 0x02, 0x9e, 0x33, 0xa8, 0xb9, 0x62, 0xb9, - 0x53, 0x91, 0xe9, 0x1e, 0x14, 0x09, 0xc8, 0x38, 0x80, 0x00, 0x99, 0x80, 0x40, 0xc1, 0x19, 0x99, - 0x90, 0x72, 0x96, 0xba, 0x9b, 0x34, 0x13, 0xca, 0x09, 0x10, 0x11, 0x91, 0xab, 0x09, 0x16, 0x0b, - 0xc3, 0x9d, 0x52, 0x11, 0xb2, 0xaf, 0x11, 0x08, 0x25, 0xba, 0x99, 0x29, 0x26, 0xb8, 0x1b, 0xd1, - 0x4a, 0x03, 0x20, 0xb8, 0x9a, 0x9a, 0x33, 0x1d, 0x07, 0xbb, 0x38, 0xb1, 0x40, 0xa1, 0x39, 0xcf, - 0x33, 0x8b, 0x06, 0x0b, 0xc3, 0x7a, 0xb2, 0x89, 0x1a, 0x84, 0x1b, 0x12, 0xa1, 0x8f, 0x03, 0x1a, - 0xa3, 0x2a, 0x99, 0x21, 0xc9, 0xca, 0x79, 0x95, 0x1a, 0x01, 0xbc, 0x19, 0x55, 0x90, 0x0b, 0x88, - 0x08, 0x13, 0x09, 0xec, 0x40, 0x83, 0xab, 0x19, 0xa8, 0x74, 0x81, 0xc8, 0x0c, 0x13, 0x19, 0xe0, - 0x30, 0xb0, 0x59, 0xb1, 0x0c, 0x08, 0x25, 0x98, 0x98, 0xab, 0x41, 0x23, 0x91, 0xed, 0x29, 0x13, - 0x18, 0xd9, 0x88, 0x51, 0xb0, 0x38, 0xba, 0x11, 0x80, 0x10, 0xa9, 0x80, 0x6c, 0x06, 0xad, 0x20, - 0x08, 0x42, 0xda, 0x81, 0x19, 0xa1, 0x22, 0x01, 0xfc, 0x28, 0x92, 0x48, 0xb2, 0x0d, 0x92, 0x11, - 0x9a, 0xb0, 0x73, 0xd0, 0x19, 0x00, 0x02, 0x99, 0x99, 0x23, 0xca, 0x45, 0xac, 0x13, 0x8b, 0xa2, - 0x6a, 0x92, 0xa9, 0x9d, 0x27, 0xaa, 0x88, 0x51, 0xa0, 0x08, 0x99, 0x00, 0x38, 0x87, 0x9b, 0x90, - 0x01, 0x0e, 0x37, 0xdb, 0x2a, 0x23, 0x98, 0x98, 0xa8, 0x38, 0x15, 0x99, 0xdb, 0x30, 0x00, 0x12, - 0x9b, 0xb3, 0xbf, 0x70, 0x12, 0xaa, 0x89, 0x1a, 0x37, 0xcb, 0x18, 0x40, 0xc1, 0x1b, 0x90, 0x35, - 0xca, 0x10, 0x89, 0x81, 0x18, 0x99, 0x35, 0x9c, 0xb8, 0x58, 0xa3, 0x0c, 0x24, 0xa0, 0xae, 0x13, - 0x19, 0x06, 0x9a, 0xcb, 0x51, 0x01, 0xa0, 0x0c, 0x12, 0x8a, 0x10, 0x01, 0x10, 0xde, 0x51, 0x91, - 0xb9, 0x19, 0x12, 0x03, 0xb9, 0xac, 0x73, 0xc2, 0x08, 0x98, 0x18, 0x91, 0x11, 0x39, 0xf2, 0x3d, - 0x90, 0x23, 0xa9, 0xfd, 0x59, 0x84, 0x99, 0x90, 0x00, 0x2a, 0x85, 0x9b, 0x81, 0x19, 0x11, 0x14, - 0xad, 0xa1, 0x4c, 0x85, 0x8a, 0x89, 0x31, 0xa0, 0x28, 0xda, 0x21, 0x00, 0x99, 0x23, 0xbf, 0x23, - 0x80, 0x11, 0xba, 0x00, 0x21, 0xac, 0x23, 0xad, 0x4a, 0x27, 0x9e, 0x10, 0x04, 0x9b, 0x81, 0x8a, - 0x27, 0xac, 0x18, 0x12, 0x2b, 0x87, 0x9d, 0x01, 0x08, 0x08, 0x43, 0xea, 0x28, 0x90, 0x38, 0x92, - 0x9e, 0x32, 0xd8, 0x28, 0x90, 0x01, 0x28, 0xb1, 0x09, 0xa9, 0x00, 0x65, 0xe0, 0x39, 0xb0, 0x22, - 0x9c, 0x11, 0x9a, 0x31, 0x11, 0xb8, 0x9c, 0x03, 0x9f, 0x54, 0x02, 0xcb, 0x1b, 0x93, 0x38, 0xa8, - 0x20, 0x80, 0xe1, 0x4a, 0xe0, 0x60, 0xb0, 0x38, 0xb8, 0x09, 0x31, 0x98, 0x85, 0x2d, 0xb4, 0x2d, - 0xb1, 0x4a, 0x84, 0x18, 0xda, 0x20, 0x08, 0xc2, 0x39, 0xc2, 0x29, 0x40, 0xc5, 0x8f, 0x13, 0x8a, - 0x22, 0xa9, 0x89, 0x19, 0x22, 0x03, 0xae, 0x28, 0x84, 0x1a, 0xd8, 0x19, 0x10, 0x15, 0x9a, 0x99, - 0xba, 0x71, 0x12, 0x81, 0xca, 0x8c, 0x12, 0x19, 0x83, 0x31, 0x10, 0xfd, 0x0a, 0x11, 0x32, 0xe9, - 0x58, 0xb1, 0x91, 0x8f, 0x05, 0x0a, 0x11, 0x88, 0xcb, 0x48, 0x11, 0x80, 0x08, 0xba, 0x18, 0x30, - 0xa2, 0x8e, 0x04, 0x09, 0x15, 0xeb, 0x2a, 0x81, 0x54, 0xc8, 0x89, 0x8a, 0x14, 0x28, 0xc0, 0x39, - 0xb0, 0x18, 0x23, 0xce, 0x31, 0xa8, 0x35, 0xba, 0xcb, 0x6a, 0x04, 0x88, 0xa9, 0x09, 0x42, 0xc1, - 0x4b, 0xa5, 0x8c, 0x12, 0x02, 0xdb, 0x89, 0x33, 0x13, 0xd8, 0x9f, 0x33, 0x99, 0x91, 0x18, 0xba, - 0x52, 0x80, 0x91, 0x9b, 0x18, 0x23, 0x91, 0x05, 0xdf, 0x11, 0x30, 0xa4, 0x9c, 0x80, 0x30, 0xb2, - 0x0e, 0x43, 0xb8, 0x0b, 0x81, 0x40, 0xa3, 0x9e, 0x30, 0x82, 0xca, 0x3a, 0x02, 0x04, 0xae, 0x23, - 0x98, 0xa9, 0x4b, 0x27, 0xca, 0x8a, 0x22, 0x32, 0xd1, 0x8b, 0xa1, 0x61, 0xc8, 0x40, 0x80, 0xba, - 0x58, 0x92, 0x2a, 0xf0, 0x1a, 0x54, 0xc8, 0x1b, 0x12, 0x18, 0xa8, 0x01, 0x9a, 0x83, 0x8c, 0x44, - 0xb0, 0x0b, 0x94, 0x2b, 0xa3, 0x8b, 0x28, 0x96, 0x5b, 0xe3, 0x0c, 0x33, 0xb1, 0x0c, 0x81, 0x28, - 0x03, 0xcc, 0x1a, 0x15, 0x88, 0x10, 0xb8, 0x8d, 0x90, 0x70, 0x95, 0x0c, 0x81, 0x18, 0x90, 0xa9, - 0x4a, 0x06, 0xba, 0x18, 0x01, 0x8a, 0x47, 0xaa, 0xa0, 0x0d, 0x15, 0x88, 0x90, 0x88, 0x9a, 0x27, - 0x9a, 0xba, 0x72, 0xb1, 0x00, 0x99, 0x13, 0x9a, 0x00, 0x51, 0xf8, 0x29, 0x02, 0x09, 0x89, 0xaa, - 0x73, 0xa1, 0x8b, 0x81, 0x18, 0x21, 0x11, 0xf0, 0x8c, 0x08, 0x27, 0xda, 0x31, 0xa8, 0x10, 0xa9, - 0x01, 0x01, 0x98, 0x28, 0x32, 0xf9, 0x3d, 0xa1, 0x38, 0xb1, 0x19, 0x80, 0xfb, 0x70, 0xc3, 0x1a, - 0x81, 0x81, 0x9e, 0x23, 0x31, 0xf8, 0x2b, 0x01, 0x80, 0x88, 0x99, 0x43, 0x08, 0xd8, 0x3a, 0xa1, - 0x58, 0xb1, 0x19, 0xca, 0x32, 0x28, 0x07, 0xcb, 0x89, 0x42, 0x30, 0xf8, 0x0c, 0x12, 0x21, 0xb8, - 0x9a, 0x98, 0x18, 0x54, 0x90, 0xa3, 0xbf, 0x34, 0x08, 0xea, 0x30, 0x10, 0xa1, 0x8f, 0x20, 0x00, - 0x03, 0xbb, 0x0a, 0x13, 0x9b, 0x27, 0xb8, 0xab, 0x18, 0x14, 0x22, 0xdb, 0x9a, 0x72, 0xb1, 0x28, - 0xcb, 0x64, 0x98, 0xa8, 0x2b, 0x06, 0x99, 0x09, 0x00, 0x12, 0x9b, 0x11, 0x2a, 0xa4, 0xbb, 0x58, - 0x97, 0x8e, 0x23, 0x8a, 0x90, 0x1c, 0x92, 0x61, 0xb0, 0x89, 0x09, 0x14, 0x8a, 0x08, 0x82, 0x39, - 0xc4, 0x0f, 0x92, 0x3a, 0x92, 0x31, 0xd8, 0xad, 0x68, 0x14, 0xb8, 0xab, 0x20, 0x04, 0x89, 0x00, - 0xd0, 0x4b, 0x94, 0x19, 0xa1, 0x9c, 0x81, 0x42, 0x88, 0x99, 0x25, 0xbc, 0x00, 0x00, 0x59, 0x07, - 0xaa, 0xb9, 0x61, 0x80, 0x10, 0x9b, 0x10, 0x9a, 0x88, 0x55, 0xc9, 0x20, 0x00, 0xda, 0x30, 0x81, - 0x18, 0xc0, 0xaa, 0x7a, 0x84, 0x9a, 0xa8, 0x70, 0xa1, 0x29, 0x01, 0xfa, 0x39, 0x83, 0x18, 0xe9, - 0x28, 0x11, 0xc0, 0x2a, 0x92, 0x3b, 0x04, 0xc8, 0x0b, 0x53, 0x80, 0x83, 0x9f, 0x88, 0x18, 0x32, - 0x03, 0xfd, 0x19, 0x21, 0x00, 0x98, 0xbc, 0x42, 0x12, 0xb8, 0x99, 0x18, 0x01, 0x33, 0x31, 0xfc, - 0x0f, 0x93, 0x70, 0x90, 0xaa, 0x19, 0x15, 0x9a, 0x82, 0x0a, 0x99, 0x80, 0x69, 0x05, 0xab, 0x00, - 0x1a, 0xb3, 0x2b, 0x00, 0x47, 0xca, 0x19, 0x12, 0xba, 0x12, 0x2a, 0x17, 0xbf, 0x30, 0x13, 0x99, - 0x20, 0xde, 0x40, 0x91, 0x88, 0x80, 0x0a, 0x34, 0xc0, 0x2a, 0xd0, 0x19, 0x11, 0x32, 0xe9, 0x9a, - 0x20, 0x15, 0x9c, 0x03, 0x1a, 0xa3, 0x9a, 0x8e, 0x45, 0x90, 0x89, 0x99, 0xba, 0x54, 0xb9, 0x41, - 0x81, 0x9d, 0x11, 0x89, 0x53, 0xb8, 0x88, 0x00, 0xa8, 0x1b, 0x45, 0x91, 0xbd, 0x62, 0xa1, 0x9a, - 0x1a, 0x05, 0x48, 0xb1, 0xdb, 0x48, 0x82, 0x9a, 0x13, 0xbc, 0x02, 0x29, 0x16, 0xda, 0x3a, 0x03, - 0x18, 0xc8, 0xbb, 0x68, 0x04, 0x89, 0x92, 0x9b, 0x18, 0x01, 0x81, 0x50, 0xf8, 0x59, 0xb1, 0x39, - 0xc9, 0x28, 0x35, 0xd0, 0x9b, 0x89, 0x53, 0x92, 0x0a, 0x02, 0xcc, 0x19, 0x33, 0x99, 0x01, 0x8b, - 0x89, 0x02, 0x7a, 0xa3, 0x78, 0xc0, 0x0b, 0x21, 0x98, 0x12, 0xbb, 0x68, 0x04, 0xbb, 0xad, 0x63, - 0x02, 0xba, 0x81, 0x1b, 0x05, 0x88, 0x98, 0xea, 0x38, 0x26, 0xc8, 0x9c, 0x31, 0x05, 0xa9, 0x8a, - 0x01, 0x29, 0x44, 0xc0, 0x9d, 0x38, 0x14, 0xca, 0x10, 0xa0, 0x31, 0x92, 0x8c, 0xa2, 0x1e, 0x25, - 0xa9, 0x99, 0x0b, 0x25, 0x81, 0xac, 0x01, 0x98, 0x20, 0x22, 0xa0, 0xac, 0x73, 0xa9, 0x98, 0x34, - 0x9d, 0x95, 0x1c, 0x92, 0x1b, 0x13, 0x22, 0xb9, 0xcd, 0x39, 0x04, 0x8d, 0x15, 0x88, 0x8b, 0x93, - 0x0e, 0x02, 0x00, 0x20, 0xbc, 0x10, 0x42, 0x82, 0xdf, 0x40, 0x81, 0xa8, 0x19, 0xa1, 0x08, 0x71, - 0xb2, 0x0c, 0x98, 0x19, 0x63, 0xc1, 0x2b, 0x83, 0x89, 0xab, 0x14, 0x9b, 0x46, 0xa1, 0xac, 0x10, - 0x98, 0x63, 0x91, 0xbb, 0x39, 0x82, 0x01, 0x0b, 0xc8, 0x73, 0x94, 0xac, 0x88, 0x40, 0x13, 0xc8, - 0x9d, 0x81, 0x40, 0x02, 0xab, 0x00, 0x0a, 0x27, 0xc9, 0x8b, 0x04, 0x38, 0x87, 0xcb, 0x29, 0x02, - 0x18, 0x01, 0xbd, 0x42, 0x98, 0x81, 0x08, 0xcb, 0x72, 0xa3, 0xab, 0x8b, 0x04, 0x59, 0x03, 0xba, - 0x8c, 0x22, 0x89, 0x12, 0x08, 0xda, 0x4a, 0x15, 0xba, 0x4a, 0xa3, 0x4a, 0xa5, 0xaf, 0x42, 0x88, - 0x08, 0x80, 0x88, 0x9a, 0x20, 0x03, 0x09, 0xc0, 0x1c, 0x27, 0x9a, 0x80, 0xa9, 0x31, 0xbf, 0x63, - 0x91, 0x9a, 0x91, 0x3a, 0x07, 0xab, 0x29, 0x83, 0x48, 0xb0, 0x0b, 0x00, 0x00, 0x28, 0x07, 0x9f, - 0x81, 0x29, 0x35, 0xc9, 0x8c, 0x32, 0xa1, 0x9b, 0x30, 0x88, 0x52, 0x99, 0xb9, 0x8e, 0x31, 0x15, - 0xaa, 0x90, 0x0d, 0x44, 0xa9, 0x08, 0x81, 0x09, 0x03, 0xdb, 0x0c, 0x37, 0xa8, 0x8a, 0x94, 0x8e, - 0x13, 0x99, 0x22, 0x98, 0x81, 0xac, 0x08, 0xb1, 0x7c, 0x05, 0xa8, 0x9d, 0x21, 0x02, 0x18, 0xb0, - 0x1b, 0x01, 0x9a, 0x46, 0xbb, 0x08, 0x32, 0x90, 0xdc, 0x21, 0x0a, 0x06, 0x19, 0xd0, 0x8a, 0x41, - 0xb1, 0x1c, 0x15, 0x1b, 0xa2, 0x9d, 0x82, 0x19, 0x54, 0x91, 0x9c, 0xa9, 0x59, 0x23, 0xc9, 0x30, - 0xb9, 0xb0, 0x1c, 0x27, 0x99, 0x11, 0xda, 0x19, 0x84, 0x89, 0x11, 0x81, 0x99, 0x02, 0xcf, 0x33, - 0x98, 0x0a, 0x25, 0xa8, 0xfb, 0x3a, 0x06, 0x09, 0xc2, 0x0a, 0x02, 0x18, 0x99, 0x21, 0x23, 0xbe, - 0x43, 0xcd, 0x28, 0x14, 0x99, 0x18, 0xc8, 0x1a, 0x21, 0x16, 0xea, 0x29, 0x01, 0x00, 0xb8, 0x18, - 0x03, 0x90, 0x1b, 0x85, 0xbf, 0x30, 0x14, 0x88, 0xb0, 0x0e, 0x93, 0x3b, 0x02, 0x33, 0xbd, 0x88, - 0x88, 0x0c, 0x47, 0xa8, 0x8a, 0x89, 0x34, 0xc1, 0x0c, 0x15, 0xba, 0x09, 0x51, 0x91, 0xbb, 0x38, - 0x26, 0xd9, 0x89, 0x20, 0x85, 0xab, 0x11, 0x29, 0x26, 0xab, 0x99, 0x1c, 0x33, 0x11, 0xd0, 0x8b, - 0x99, 0x31, 0x27, 0xb8, 0xbc, 0x38, 0x04, 0x18, 0xa3, 0xaf, 0x35, 0xa9, 0x8a, 0x10, 0x08, 0x04, - 0x9a, 0x88, 0x2a, 0xa4, 0x6a, 0xc2, 0x0c, 0x02, 0x24, 0xcb, 0xca, 0x60, 0x02, 0x09, 0x99, 0x99, - 0x28, 0x93, 0x79, 0xa1, 0x1a, 0xb1, 0x58, 0xc0, 0x2b, 0x84, 0x89, 0x28, 0xd0, 0x8c, 0x25, 0x90, - 0xbb, 0x72, 0x01, 0xf8, 0x3a, 0x93, 0x29, 0xa2, 0x0a, 0xc9, 0x29, 0x53, 0xc3, 0x9d, 0x02, 0x20, - 0xc9, 0x30, 0x80, 0x90, 0x30, 0x82, 0xfb, 0x8d, 0x62, 0x92, 0xba, 0x28, 0x14, 0xc9, 0x19, 0xb8, - 0x58, 0x33, 0xb0, 0xcc, 0x1a, 0x14, 0x30, 0xd0, 0x09, 0xb8, 0x2b, 0x16, 0x32, 0xca, 0x9c, 0x32, - 0xd9, 0x29, 0x33, 0x83, 0x8f, 0x91, 0x4a, 0xb1, 0x0c, 0x43, 0xb0, 0x0a, 0x08, 0x12, 0x90, 0x8b, - 0x02, 0x35, 0xcf, 0x10, 0x10, 0x11, 0x80, 0xda, 0x71, 0xd1, 0x8c, 0x31, 0x03, 0xbb, 0x00, 0x00, - 0x82, 0x1b, 0x05, 0x89, 0xfb, 0x78, 0x81, 0xa9, 0x0a, 0x22, 0x24, 0xa9, 0xdc, 0x48, 0x81, 0x28, - 0xb1, 0x0c, 0x93, 0x28, 0x80, 0xf0, 0x1c, 0x23, 0x1a, 0xb3, 0x8e, 0x88, 0x64, 0xb0, 0x89, 0x89, - 0x32, 0x83, 0xed, 0x30, 0xa1, 0x28, 0x93, 0xac, 0x88, 0x09, 0x37, 0xa0, 0x89, 0xad, 0x53, 0x80, - 0x09, 0x80, 0x81, 0xac, 0x88, 0x30, 0x24, 0xb0, 0x1c, 0xa2, 0x98, 0x0b, 0x14, 0xbb, 0x27, 0x8c, - 0x16, 0xbc, 0x32, 0x98, 0x00, 0x98, 0x0c, 0x25, 0xd9, 0x2a, 0x15, 0x89, 0xa2, 0x9d, 0x01, 0x10, - 0x11, 0x24, 0xeb, 0x08, 0xc9, 0x38, 0x03, 0x08, 0x09, 0xa6, 0x0e, 0xb2, 0x2a, 0x35, 0x83, 0xaf, - 0x08, 0x00, 0x21, 0x98, 0x10, 0x89, 0xd0, 0x0c, 0x34, 0xa8, 0x22, 0x80, 0xbb, 0xbd, 0x19, 0x75, - 0x03, 0xbc, 0x19, 0x91, 0x0a, 0x23, 0x00, 0x01, 0xb9, 0x18, 0xfb, 0x2a, 0x00, 0x15, 0x28, 0xfb, - 0x6a, 0xa0, 0x08, 0x63, 0xa0, 0x8b, 0xb8, 0x3a, 0x25, 0x11, 0x90, 0xac, 0x99, 0xab, 0x64, 0x10, - 0xb3, 0x0a, 0xb8, 0xbc, 0x71, 0x83, 0x29, 0x82, 0xcf, 0x09, 0x53, 0x82, 0xaa, 0x80, 0x9c, 0x34, - 0xc0, 0x8c, 0x52, 0x81, 0xab, 0x22, 0xdb, 0x40, 0x12, 0xa8, 0xaa, 0x29, 0x14, 0x12, 0xf8, 0x8c, - 0x23, 0x08, 0xa3, 0x9f, 0x19, 0x34, 0x98, 0xa0, 0x8d, 0x12, 0x0a, 0x06, 0x9d, 0x23, 0x8a, 0x10, - 0xca, 0x29, 0x14, 0x11, 0xca, 0x4a, 0xc1, 0x2c, 0x05, 0xa9, 0x20, 0xc0, 0x19, 0x28, 0x02, 0x18, - 0xea, 0x0b, 0x17, 0x18, 0xb0, 0x1b, 0x83, 0x1b, 0x01, 0x94, 0xff, 0x48, 0x04, 0xb9, 0x8a, 0x12, - 0x09, 0x23, 0xc9, 0x89, 0x10, 0x33, 0xe9, 0x19, 0x91, 0x30, 0x81, 0xdb, 0x2a, 0x15, 0x19, 0x16, - 0xec, 0x0a, 0x34, 0xa0, 0x8a, 0x80, 0x08, 0x21, 0x91, 0x9c, 0x00, 0x90, 0x62, 0xa0, 0xbb, 0x74, - 0xb0, 0x89, 0x10, 0x81, 0x0a, 0x06, 0xa9, 0x9a, 0x42, 0xb1, 0x89, 0x0d, 0x47, 0xb9, 0x8a, 0x10, - 0x23, 0x08, 0x02, 0xaf, 0xd8, 0x69, 0x05, 0xba, 0x18, 0x01, 0x89, 0x02, 0x9d, 0x32, 0x82, 0xab, - 0xb9, 0x39, 0x54, 0x15, 0xbd, 0x00, 0x09, 0x13, 0x12, 0xea, 0x9a, 0x50, 0x14, 0xca, 0x8a, 0x11, - 0x52, 0xb2, 0x9d, 0x18, 0x22, 0x9a, 0x20, 0xa8, 0x18, 0x8a, 0x15, 0xbb, 0x41, 0xa2, 0x2a, 0xf3, - 0x9f, 0x36, 0xb9, 0x09, 0x01, 0x80, 0x1a, 0x95, 0x0d, 0x12, 0x08, 0xb8, 0x19, 0x02, 0x21, 0xac, - 0x11, 0xcb, 0x73, 0xb6, 0x8b, 0x81, 0x19, 0x64, 0xb1, 0x9e, 0x30, 0x80, 0x02, 0x8a, 0xba, 0x49, - 0x03, 0x34, 0xdc, 0x09, 0x20, 0x14, 0xbb, 0xab, 0x58, 0x05, 0x08, 0xb1, 0xad, 0x30, 0x23, 0xa0, - 0xac, 0x32, 0x01, 0xa9, 0x1c, 0xc2, 0x70, 0x93, 0xcc, 0x1a, 0x22, 0x32, 0xd2, 0x8d, 0x02, 0x9a, - 0x41, 0x82, 0x9a, 0x09, 0x10, 0xb0, 0xbf, 0x55, 0x01, 0xda, 0x2a, 0x22, 0x92, 0xdb, 0x19, 0x13, - 0x88, 0x33, 0xfc, 0x8a, 0x43, 0x90, 0x29, 0xe8, 0x19, 0x33, 0x92, 0x9f, 0x01, 0x29, 0x84, 0x8b, - 0xb9, 0x7a, 0x85, 0x9a, 0x88, 0x00, 0x21, 0x00, 0xcb, 0x99, 0x62, 0x02, 0x90, 0xdc, 0x19, 0x43, - 0x82, 0xcb, 0x0a, 0x12, 0x38, 0x84, 0xac, 0x28, 0x22, 0xfa, 0x2a, 0x01, 0x24, 0xab, 0x91, 0xaa, - 0x08, 0x71, 0x87, 0x9c, 0x80, 0x41, 0x81, 0xad, 0x28, 0x23, 0x91, 0xbe, 0x00, 0x21, 0x13, 0xa9, - 0x9a, 0x9c, 0x54, 0x91, 0xa9, 0x88, 0x29, 0x16, 0x90, 0xfb, 0x29, 0x34, 0x80, 0xcc, 0x89, 0x70, - 0x83, 0xab, 0x9a, 0x42, 0x92, 0x08, 0x90, 0xbc, 0x40, 0x32, 0xa1, 0xbc, 0x19, 0x22, 0x13, 0xdb, - 0x8c, 0x36, 0xc0, 0x9b, 0x18, 0x36, 0xa8, 0xa8, 0x1b, 0x33, 0xc8, 0x28, 0x93, 0xcf, 0x22, 0x21, - 0xa2, 0xaf, 0x38, 0x34, 0xe9, 0x1a, 0x80, 0x32, 0xa1, 0xad, 0x21, 0x03, 0xcc, 0x18, 0x08, 0x23, - 0x22, 0xb0, 0xaf, 0x0b, 0x25, 0x22, 0xc0, 0xac, 0x2b, 0x26, 0x90, 0xb9, 0x1b, 0x26, 0x98, 0xad, - 0x31, 0x32, 0xc0, 0x08, 0xca, 0x18, 0x22, 0x23, 0xdf, 0x28, 0x03, 0x08, 0xc0, 0x8a, 0x20, 0x27, - 0xc9, 0x9a, 0x00, 0x44, 0x90, 0x89, 0xdb, 0x50, 0x82, 0x90, 0xac, 0x02, 0x20, 0x24, 0xea, 0x8a, - 0x41, 0x92, 0xaa, 0x89, 0x41, 0x92, 0x09, 0xb8, 0xaa, 0x64, 0x14, 0xca, 0xab, 0x08, 0x65, 0x91, - 0xab, 0x20, 0xa0, 0x29, 0x15, 0xb9, 0xbb, 0x74, 0xa1, 0x8b, 0x12, 0x8b, 0x42, 0xc1, 0x1b, 0x81, - 0x38, 0x21, 0xf0, 0x1c, 0x05, 0xb8, 0x08, 0x08, 0x88, 0x32, 0x9a, 0x33, 0xf8, 0x0f, 0x14, 0x80, - 0x8b, 0x01, 0x88, 0xb9, 0x69, 0x04, 0x8a, 0xd0, 0x0b, 0x62, 0x92, 0x9b, 0x19, 0x04, 0x89, 0x84, - 0x9d, 0x13, 0x0a, 0xc1, 0x50, 0xc8, 0x19, 0x20, 0x06, 0xbc, 0x20, 0x12, 0x80, 0xcb, 0x30, 0xa0, - 0x49, 0x91, 0x10, 0xea, 0x8a, 0x25, 0x80, 0x99, 0x09, 0x11, 0xb1, 0x0c, 0x24, 0x18, 0x27, 0xfb, - 0x0b, 0x13, 0x8a, 0x34, 0x90, 0xaa, 0x8c, 0xbb, 0x77, 0x90, 0x0a, 0x08, 0x80, 0x19, 0x12, 0x88, - 0xc8, 0x8d, 0x24, 0xc8, 0x38, 0xa4, 0x49, 0xd2, 0x0b, 0x21, 0x98, 0x80, 0x39, 0x83, 0x8c, 0x93, - 0x8f, 0xa3, 0x7b, 0xa1, 0x18, 0x80, 0x91, 0x8d, 0x31, 0x02, 0xc8, 0x8a, 0x99, 0x21, 0x52, 0x04, - 0xf9, 0x0b, 0x04, 0x28, 0xa2, 0xbc, 0x34, 0xa0, 0x1a, 0x91, 0x8e, 0x13, 0x31, 0xa4, 0xdf, 0x20, - 0x91, 0x18, 0x02, 0xd9, 0x39, 0xa2, 0x5a, 0xd1, 0x0b, 0x21, 0x17, 0xba, 0x08, 0x1a, 0x15, 0x98, - 0x82, 0xb8, 0x9f, 0x44, 0xb0, 0x1a, 0x01, 0x10, 0xd0, 0x8b, 0x32, 0x80, 0x11, 0x90, 0xaf, 0x88, - 0x41, 0x24, 0xe8, 0x1a, 0x90, 0x8a, 0x71, 0x83, 0xaa, 0x00, 0x98, 0xab, 0x51, 0x25, 0xc8, 0x9b, - 0x02, 0x59, 0x94, 0x9c, 0x12, 0x88, 0xa8, 0x20, 0x91, 0x38, 0x21, 0xf3, 0x9d, 0x9a, 0x37, 0x99, - 0x09, 0x93, 0x8e, 0x43, 0xb0, 0x9d, 0x32, 0x81, 0x28, 0xda, 0x28, 0x81, 0xa9, 0x51, 0xc0, 0x09, - 0x08, 0x45, 0xd8, 0x8a, 0x42, 0xa0, 0x88, 0x19, 0xa4, 0x1d, 0x02, 0x10, 0xca, 0x19, 0x03, 0x91, - 0x4b, 0xb2, 0xad, 0x35, 0x99, 0xa8, 0x18, 0xa0, 0x60, 0xb1, 0x3a, 0x04, 0xcb, 0x8f, 0x36, 0xb8, - 0x19, 0x90, 0x2a, 0x14, 0xcc, 0x48, 0x01, 0x99, 0x09, 0xb8, 0x2c, 0x37, 0xa8, 0x8b, 0xd1, 0x3b, - 0x27, 0x90, 0xaa, 0x80, 0x0a, 0x17, 0xa9, 0x18, 0x01, 0x98, 0x19, 0x93, 0xcc, 0x59, 0x15, 0xba, - 0x9a, 0x31, 0x20, 0x03, 0xcc, 0x1b, 0x04, 0x8a, 0x11, 0xa1, 0x5b, 0x16, 0xda, 0x18, 0x01, 0xc9, - 0x50, 0xa1, 0x0a, 0x22, 0xb0, 0x9a, 0x59, 0x92, 0x20, 0xc0, 0xaf, 0x15, 0x2a, 0x93, 0xad, 0x29, - 0x15, 0xa8, 0xaa, 0x11, 0x21, 0x16, 0xbb, 0xa9, 0x0a, 0x33, 0x37, 0xba, 0xbb, 0x10, 0x44, 0x31, - 0xf0, 0x2f, 0x00, 0x80, 0x89, 0x01, 0x8a, 0x43, 0xaa, 0x92, 0x9f, 0x22, 0x03, 0x9b, 0x81, 0x98, - 0x31, 0xfb, 0x3a, 0x01, 0x41, 0xa3, 0xbf, 0x00, 0x31, 0x98, 0x22, 0x8a, 0xa3, 0x9f, 0x81, 0x78, - 0x96, 0x9a, 0x98, 0x00, 0x10, 0x53, 0xa2, 0xcb, 0x9f, 0x43, 0x81, 0xa8, 0x8d, 0x22, 0x00, 0xa9, - 0x1a, 0x12, 0xa2, 0x3b, 0xa5, 0x9f, 0x31, 0x15, 0xa9, 0xba, 0x2a, 0x15, 0x23, 0xec, 0x88, 0x30, - 0xa3, 0x0c, 0xb1, 0x68, 0x91, 0x08, 0xa8, 0x89, 0x20, 0x54, 0x82, 0xcf, 0x19, 0x24, 0xa9, 0x10, - 0xa9, 0x90, 0x28, 0x02, 0x31, 0xb9, 0xa9, 0x78, 0xb1, 0x8e, 0x44, 0xa0, 0x88, 0x9b, 0x12, 0x22, - 0xb0, 0x8f, 0x82, 0x6a, 0xb3, 0x8d, 0x01, 0x21, 0x99, 0x82, 0x0c, 0xc1, 0x0e, 0x24, 0x00, 0x9b, - 0x12, 0xa9, 0xb9, 0x1b, 0x77, 0x91, 0xbb, 0x39, 0x04, 0x9a, 0x33, 0xc9, 0x09, 0x9d, 0x17, 0x8a, - 0x82, 0x89, 0x00, 0x31, 0xfb, 0x1a, 0x32, 0x02, 0xda, 0x3a, 0x15, 0xfa, 0x28, 0x92, 0x1a, 0xa3, - 0x8c, 0x23, 0x99, 0x19, 0x73, 0xb1, 0xaf, 0x30, 0x02, 0x99, 0x00, 0x80, 0x80, 0x9a, 0x22, 0xec, - 0x52, 0xa0, 0x28, 0x90, 0xa9, 0x69, 0xb2, 0x78, 0xc1, 0x8b, 0x30, 0xa3, 0x0a, 0x09, 0x36, 0xd0, - 0xac, 0x38, 0x14, 0x18, 0x80, 0xd8, 0x8e, 0x22, 0x11, 0x91, 0xcb, 0x0a, 0x23, 0x20, 0xa0, 0x1a, - 0x52, 0xd1, 0x9b, 0x2b, 0x37, 0xa9, 0x08, 0xb8, 0x1b, 0x26, 0xb9, 0x62, 0xc0, 0x8a, 0x30, 0x04, - 0xcb, 0x20, 0x11, 0xd1, 0x1b, 0x01, 0x91, 0x9b, 0x69, 0x84, 0x8a, 0xb9, 0x39, 0x47, 0xa9, 0x09, - 0xa9, 0x89, 0x46, 0x80, 0x98, 0x8c, 0xa1, 0x79, 0x93, 0x0b, 0xb0, 0x2b, 0x37, 0xca, 0x19, 0x10, - 0x02, 0xa9, 0xbb, 0x72, 0xc1, 0x38, 0x11, 0xe8, 0x1a, 0x93, 0x2c, 0x84, 0x9a, 0x44, 0xc9, 0x8b, - 0x63, 0xb0, 0x2b, 0x15, 0xc9, 0x0b, 0x23, 0xa8, 0x31, 0x91, 0xc9, 0x2b, 0xa2, 0x79, 0x94, 0x8d, - 0x12, 0xaa, 0x38, 0x83, 0xb8, 0x9c, 0x53, 0x03, 0xcc, 0x10, 0x28, 0xd8, 0x70, 0x92, 0xac, 0x00, - 0x01, 0x32, 0xc8, 0x8a, 0x03, 0xbb, 0x31, 0x09, 0x27, 0xa1, 0x0d, 0xc9, 0x1a, 0x63, 0xa3, 0x1b, - 0xb3, 0xac, 0x19, 0x25, 0xa8, 0x21, 0xbb, 0x11, 0x82, 0xbf, 0x47, 0xb0, 0x0c, 0x04, 0xba, 0x29, - 0x23, 0x22, 0xe8, 0xab, 0x1a, 0x26, 0x8b, 0x23, 0x09, 0xd9, 0x19, 0x11, 0x90, 0x1a, 0xd4, 0x5a, - 0x85, 0x9d, 0x00, 0x30, 0x82, 0xaa, 0x9a, 0x13, 0x40, 0xb2, 0x8c, 0x81, 0x30, 0xcc, 0x64, 0xe8, - 0x2a, 0x14, 0xa8, 0x99, 0x8a, 0x34, 0x91, 0x98, 0x8c, 0x91, 0x59, 0xc1, 0x50, 0xa1, 0x9c, 0x32, - 0xc1, 0x5b, 0xa4, 0x8c, 0x22, 0x89, 0x89, 0x42, 0xc0, 0x09, 0x00, 0x90, 0x2a, 0xc1, 0x68, 0x93, - 0x9f, 0x11, 0x12, 0x9b, 0x00, 0x20, 0xfb, 0x29, 0x42, 0x91, 0x8a, 0xaa, 0x31, 0x84, 0x0d, 0x01, - 0x89, 0x09, 0x25, 0xac, 0x90, 0x79, 0xb4, 0x0a, 0xa0, 0x29, 0x15, 0x28, 0xd8, 0x0a, 0x28, 0xa0, - 0x34, 0xea, 0x1a, 0x83, 0x29, 0x15, 0xcb, 0x28, 0xac, 0x36, 0xd9, 0x18, 0x23, 0xdb, 0x38, 0x81, - 0x0a, 0x82, 0xa9, 0x29, 0x87, 0x0e, 0x13, 0x89, 0xba, 0x22, 0x9b, 0x41, 0x80, 0x33, 0xde, 0x18, - 0x81, 0x21, 0x04, 0xcd, 0x20, 0x00, 0x11, 0xa0, 0x9c, 0x22, 0x08, 0xb1, 0x1e, 0xb0, 0x70, 0x85, - 0xba, 0x9a, 0x31, 0x23, 0x81, 0x9d, 0xc1, 0x69, 0xd2, 0x2a, 0x84, 0x89, 0x01, 0x81, 0xda, 0x0a, - 0x43, 0x04, 0xca, 0x89, 0x18, 0x51, 0x91, 0xb9, 0x0b, 0x15, 0x99, 0x12, 0xac, 0x42, 0x13, 0xfb, - 0x0a, 0x99, 0x72, 0x93, 0x8c, 0x98, 0x30, 0x91, 0xba, 0x70, 0xb4, 0x1b, 0x03, 0x98, 0x8c, 0x63, - 0x98, 0x09, 0xb9, 0x2a, 0x45, 0x92, 0xad, 0x02, 0x8a, 0x36, 0xea, 0x18, 0x10, 0xa0, 0x1a, 0x82, - 0x19, 0xa8, 0x33, 0x8d, 0x96, 0x9c, 0x72, 0xb1, 0x9b, 0x32, 0x82, 0x99, 0x9b, 0x15, 0x9a, 0x84, - 0x8c, 0x33, 0xe1, 0x38, 0xb0, 0x9c, 0x32, 0x30, 0xd1, 0x8d, 0x33, 0xb9, 0x88, 0x12, 0x8f, 0x13, - 0x10, 0xd9, 0x0c, 0x34, 0xa1, 0xcb, 0x30, 0x80, 0x92, 0x60, 0xe8, 0x38, 0xa1, 0x3a, 0xa2, 0xfa, - 0x3a, 0x17, 0x98, 0xaa, 0x98, 0x50, 0x12, 0xba, 0x2a, 0x02, 0x08, 0x82, 0xce, 0x30, 0x23, 0xc8, - 0x0a, 0xb9, 0x7b, 0x15, 0x91, 0xcb, 0x8a, 0x43, 0x13, 0xb9, 0x9d, 0x31, 0xb2, 0x0c, 0x01, 0x08, - 0x88, 0x54, 0xc1, 0xac, 0x18, 0x53, 0x91, 0xbc, 0x41, 0x81, 0x09, 0xc9, 0x08, 0x30, 0x34, 0xe0, - 0x8b, 0x81, 0x31, 0x24, 0xe8, 0x8b, 0x02, 0x0a, 0x17, 0xb9, 0x88, 0x34, 0xa8, 0xcd, 0x38, 0x23, - 0x11, 0xfa, 0x1b, 0x03, 0xba, 0x70, 0x91, 0x09, 0x90, 0x2a, 0x84, 0xad, 0x52, 0x81, 0x88, 0xdb, - 0x28, 0x12, 0x30, 0xb2, 0x9f, 0x81, 0x88, 0x12, 0x30, 0x86, 0xcb, 0x0a, 0x21, 0xa9, 0x20, 0x33, - 0xe8, 0x8d, 0x22, 0x00, 0xd1, 0x8d, 0x44, 0xb1, 0x0c, 0x88, 0x31, 0x11, 0xda, 0x18, 0x90, 0x0b, - 0x47, 0xaa, 0x21, 0x99, 0x41, 0xc1, 0x9d, 0x80, 0x63, 0xa1, 0x8b, 0xa8, 0x59, 0x05, 0x99, 0x8a, - 0x81, 0x2a, 0x04, 0x01, 0xdd, 0x29, 0x52, 0x91, 0xda, 0x1a, 0x24, 0x90, 0x98, 0xa9, 0x70, 0xa1, - 0x88, 0x88, 0x08, 0x20, 0x00, 0x12, 0xff, 0x38, 0x12, 0xa1, 0x9c, 0x80, 0x40, 0x93, 0x9d, 0x11, - 0x81, 0x88, 0x99, 0x03, 0x9d, 0x02, 0x38, 0x15, 0xfb, 0x1b, 0x23, 0xa0, 0x89, 0x61, 0xa1, 0x9c, - 0x28, 0x89, 0x57, 0xb9, 0x1b, 0x14, 0xa9, 0x11, 0xaa, 0x12, 0xb8, 0x41, 0x01, 0xe0, 0x8e, 0x24, - 0x92, 0x9c, 0x99, 0x62, 0xa2, 0xab, 0x10, 0x12, 0x22, 0xfb, 0x8c, 0x15, 0x9a, 0x52, 0xb8, 0x09, - 0x99, 0x50, 0x04, 0xbb, 0x08, 0x40, 0x92, 0xab, 0x38, 0x12, 0x08, 0xc0, 0x0c, 0x92, 0x2b, 0x37, - 0xb8, 0x09, 0xea, 0x41, 0xc0, 0x28, 0x92, 0x21, 0xf8, 0x8b, 0x22, 0x21, 0x92, 0xae, 0x20, 0x81, - 0x9b, 0x12, 0x82, 0x6c, 0xb3, 0x1c, 0x90, 0xaa, 0x71, 0x24, 0xd9, 0x8b, 0x82, 0x63, 0xb0, 0x9b, - 0x42, 0xc1, 0x38, 0xc8, 0x8a, 0x53, 0xa1, 0x0a, 0xb2, 0x9e, 0x21, 0x44, 0xa0, 0xbc, 0x1a, 0x43, - 0x02, 0x9a, 0xbc, 0x72, 0xb3, 0x8c, 0x22, 0xb9, 0x50, 0x93, 0xac, 0x00, 0x39, 0x94, 0x28, 0xcb, - 0x18, 0x22, 0x90, 0x10, 0xc9, 0x0c, 0x34, 0xd1, 0x8e, 0x82, 0x38, 0x93, 0x08, 0xd9, 0x28, 0xdc, - 0x43, 0x81, 0xac, 0x63, 0xb0, 0x0a, 0x00, 0x01, 0x10, 0xdb, 0x31, 0x31, 0xe1, 0xab, 0x71, 0x93, - 0x9c, 0x08, 0x21, 0x9a, 0x34, 0xcb, 0x18, 0x80, 0xaa, 0x46, 0xe9, 0x20, 0x00, 0xb0, 0x28, 0xea, - 0x52, 0x88, 0x98, 0x09, 0x99, 0x55, 0xb8, 0x88, 0x89, 0x15, 0x8b, 0x05, 0x9a, 0xa9, 0x61, 0x91, - 0x89, 0xa9, 0x48, 0x94, 0x0a, 0xb1, 0x58, 0xb1, 0x4a, 0x93, 0xbf, 0x42, 0x02, 0xa8, 0xbc, 0x21, - 0x00, 0x62, 0xd0, 0x8a, 0x12, 0x11, 0x9a, 0x1a, 0x00, 0x24, 0xbb, 0x02, 0x9e, 0x82, 0x6a, 0x84, - 0x0b, 0xa8, 0x28, 0x39, 0xc7, 0x1d, 0x04, 0x99, 0x18, 0x00, 0x88, 0x89, 0x30, 0x85, 0xad, 0x18, - 0x12, 0xa0, 0x31, 0xa0, 0xd9, 0x00, 0xad, 0x73, 0xb4, 0x09, 0xb9, 0x62, 0xb0, 0x89, 0x18, 0x14, - 0x00, 0xec, 0x20, 0x80, 0x30, 0x92, 0x88, 0xaf, 0x12, 0x20, 0xb2, 0x0b, 0xc9, 0x70, 0x92, 0xcb, - 0x19, 0x26, 0x99, 0xa8, 0x20, 0x08, 0xc2, 0x2d, 0x15, 0x99, 0x9c, 0x32, 0xb8, 0x1a, 0x01, 0x24, - 0x11, 0xfa, 0x19, 0xb9, 0x62, 0x90, 0x41, 0xcb, 0x81, 0x0c, 0x17, 0xb9, 0x20, 0x90, 0x9a, 0x58, - 0x93, 0x1c, 0x03, 0xea, 0x29, 0x82, 0x8a, 0x11, 0x14, 0xa9, 0xb9, 0x1d, 0x44, 0x91, 0xad, 0x18, - 0x34, 0xa9, 0x88, 0xa1, 0x8e, 0x42, 0xa1, 0x8b, 0x85, 0x8d, 0x34, 0xa9, 0x19, 0x98, 0x20, 0x9a, - 0x85, 0x0e, 0x44, 0xc8, 0x0b, 0x11, 0x08, 0x20, 0x11, 0xeb, 0x19, 0x80, 0x28, 0x16, 0xe9, 0x3a, - 0xa4, 0x8a, 0x02, 0x90, 0x61, 0xd1, 0x8b, 0x12, 0x01, 0xb8, 0x30, 0xfa, 0x40, 0xa2, 0x19, 0x90, - 0x09, 0x41, 0xa3, 0xcf, 0x12, 0x12, 0x99, 0x98, 0xea, 0x68, 0x03, 0xba, 0x0a, 0x11, 0x12, 0x20, - 0xfa, 0x1b, 0x04, 0x0b, 0x81, 0x33, 0xaf, 0x30, 0x82, 0xae, 0x32, 0xb1, 0x78, 0xd1, 0x0b, 0x33, - 0x80, 0xba, 0x10, 0x01, 0xa9, 0x51, 0x81, 0x89, 0xc8, 0x2a, 0x02, 0x00, 0x0f, 0x16, 0xa9, 0xcb, - 0x48, 0x24, 0xb0, 0xac, 0x2b, 0x47, 0xa9, 0x88, 0x99, 0x33, 0xba, 0x42, 0xb8, 0x29, 0x44, 0xd9, - 0x1a, 0x88, 0x42, 0x01, 0xb8, 0xaf, 0x22, 0x24, 0xc8, 0x9c, 0x18, 0x34, 0xa0, 0x88, 0xac, 0x41, - 0xa0, 0x31, 0xfa, 0x1b, 0x13, 0x52, 0xd8, 0x9a, 0x30, 0x16, 0xab, 0x98, 0x20, 0x13, 0x10, 0xf9, - 0x2b, 0x81, 0x31, 0xb1, 0x09, 0x98, 0x1b, 0x17, 0xa8, 0x0b, 0x82, 0x35, 0xef, 0x20, 0x18, 0x03, - 0xad, 0x18, 0x21, 0x81, 0x9c, 0x50, 0xc3, 0x1c, 0x82, 0x9a, 0x19, 0x37, 0xa9, 0xba, 0x1a, 0x63, - 0x12, 0xb9, 0x0c, 0x90, 0x31, 0x21, 0xd1, 0xaf, 0x31, 0x23, 0xd0, 0x8b, 0x01, 0x10, 0x23, 0xf9, - 0x8c, 0x15, 0x09, 0x91, 0x9b, 0x19, 0x27, 0xa9, 0x99, 0x18, 0x22, 0x32, 0xf9, 0x8a, 0x8a, 0x45, - 0x90, 0xa8, 0x89, 0x01, 0x30, 0xf0, 0x29, 0x93, 0x19, 0x81, 0xdc, 0x48, 0x12, 0x01, 0xbd, 0x88, - 0x00, 0x34, 0xc1, 0x8a, 0x21, 0xa8, 0x62, 0xfb, 0x08, 0x61, 0xa1, 0x8b, 0x80, 0x28, 0x12, 0x88, - 0xab, 0x10, 0x23, 0x22, 0xfb, 0x8e, 0x42, 0x82, 0xa8, 0xbd, 0x48, 0x85, 0x89, 0x98, 0x30, 0x81, - 0x18, 0xf1, 0x1d, 0x21, 0x22, 0xd9, 0x9b, 0x09, 0x36, 0x00, 0xb0, 0x0c, 0xc8, 0x49, 0x13, 0x80, - 0xad, 0x53, 0xb9, 0x99, 0x32, 0xa0, 0x44, 0xe8, 0x8c, 0x32, 0x00, 0x81, 0xba, 0x89, 0x60, 0xa3, - 0x1b, 0xc8, 0x31, 0x31, 0xb4, 0xbf, 0x21, 0x01, 0x01, 0xdb, 0x28, 0x21, 0xb3, 0x8c, 0xd9, 0x69, - 0x03, 0x01, 0xaf, 0x80, 0x30, 0x04, 0xb9, 0x9b, 0x42, 0x91, 0x18, 0xe8, 0x2b, 0x26, 0x08, 0xa8, - 0xcb, 0x58, 0x03, 0xba, 0x10, 0x98, 0x02, 0x3a, 0xa4, 0x8c, 0x89, 0x66, 0xd8, 0x0a, 0x11, 0x31, - 0xc0, 0x8b, 0x88, 0x61, 0xa2, 0x8b, 0xa8, 0x72, 0x82, 0x9b, 0x00, 0xa9, 0x58, 0x02, 0x88, 0xcc, - 0x31, 0x82, 0x00, 0xdc, 0x51, 0x91, 0xab, 0x18, 0x14, 0x8a, 0x13, 0xba, 0xbc, 0x28, 0x43, 0x36, - 0xde, 0x21, 0x90, 0x80, 0x0a, 0x04, 0x8b, 0x04, 0xcb, 0x50, 0x82, 0x99, 0x88, 0x8a, 0x12, 0x57, - 0xe8, 0x8a, 0x32, 0xa0, 0x18, 0xa1, 0xc9, 0x2a, 0x17, 0x89, 0x98, 0x09, 0x42, 0x81, 0xcc, 0x0a, - 0x34, 0x10, 0xf8, 0x8a, 0x22, 0x11, 0xb0, 0x1c, 0x90, 0x48, 0x13, 0xdb, 0x01, 0x9d, 0x73, 0x81, - 0xbc, 0x18, 0x33, 0xa2, 0xac, 0x88, 0x30, 0x24, 0xa0, 0xac, 0xa9, 0x71, 0x02, 0x90, 0xbd, 0x12, - 0x29, 0x93, 0x0a, 0x89, 0x63, 0xc0, 0x8a, 0x82, 0x0c, 0x37, 0xd8, 0x2a, 0xa0, 0x00, 0x20, 0x21, - 0xe0, 0x8c, 0x21, 0x10, 0x03, 0xdc, 0x28, 0x83, 0xba, 0x59, 0x84, 0x9a, 0x11, 0x28, 0x93, 0xcf, - 0x09, 0x11, 0x73, 0x91, 0xba, 0x0a, 0x81, 0x40, 0x21, 0xc4, 0x9f, 0x30, 0x81, 0x9a, 0x10, 0x20, - 0xa2, 0x9c, 0x99, 0x59, 0x27, 0x90, 0x9a, 0xa9, 0x0b, 0x27, 0x08, 0x91, 0x8d, 0x13, 0x9b, 0xa1, - 0x3c, 0x17, 0x99, 0x9a, 0x11, 0x90, 0x11, 0x19, 0xb3, 0x9e, 0xa8, 0x61, 0x91, 0x09, 0x20, 0x02, - 0xfb, 0x8b, 0x28, 0x73, 0x96, 0x9c, 0x01, 0x11, 0x98, 0xaa, 0x41, 0x81, 0x99, 0x24, 0xad, 0x88, - 0x22, 0x24, 0x09, 0xf8, 0x1e, 0x03, 0x8a, 0x81, 0x23, 0xfb, 0x89, 0x20, 0x82, 0x48, 0xc0, 0x28, - 0xca, 0x00, 0x19, 0x36, 0xb1, 0x9e, 0x80, 0x51, 0x92, 0xad, 0x30, 0x83, 0x98, 0x9d, 0x42, 0x92, - 0x9c, 0x33, 0xb8, 0xbc, 0x70, 0x02, 0x89, 0xd9, 0x48, 0x92, 0x8a, 0x99, 0x52, 0x91, 0xa9, 0xa8, - 0x38, 0x03, 0x8a, 0x11, 0x0b, 0xc4, 0x8f, 0x52, 0xa1, 0x8a, 0x00, 0x21, 0xb2, 0xaf, 0x72, 0xc3, - 0x0b, 0x02, 0x08, 0x84, 0x9d, 0x12, 0x89, 0x01, 0x88, 0xa2, 0x8c, 0x11, 0x43, 0xc8, 0xbd, 0x30, - 0x14, 0x02, 0xdc, 0x09, 0x00, 0x25, 0x98, 0xbd, 0x42, 0x91, 0x9b, 0x24, 0xa0, 0x2b, 0x94, 0x0b, - 0x02, 0xc9, 0x79, 0x06, 0xba, 0x8c, 0x42, 0x92, 0x1b, 0xa2, 0x8a, 0x01, 0x11, 0xc9, 0x70, 0xe0, - 0x49, 0x92, 0xab, 0x20, 0x81, 0x12, 0xcc, 0x18, 0x21, 0x13, 0xbf, 0x32, 0x80, 0x90, 0x80, 0xbb, - 0x43, 0x43, 0xe0, 0x19, 0xb0, 0x30, 0x18, 0xc1, 0x69, 0x83, 0xae, 0x11, 0x8a, 0x23, 0x99, 0xb9, - 0x18, 0xac, 0x63, 0x01, 0xe9, 0x39, 0x04, 0x90, 0xdb, 0x2a, 0x17, 0x09, 0xa0, 0x1a, 0xc8, 0x30, - 0x45, 0xd9, 0x2a, 0x80, 0x12, 0xa8, 0x9a, 0x41, 0x44, 0xca, 0x89, 0x08, 0x08, 0x34, 0xda, 0x00, - 0x09, 0x00, 0x02, 0xce, 0x21, 0x38, 0x06, 0xbc, 0x0b, 0x53, 0x81, 0x09, 0xcb, 0x61, 0xa0, 0x28, - 0x91, 0x0a, 0x14, 0x9a, 0xd8, 0x8b, 0x44, 0x23, 0xb9, 0xbe, 0x40, 0x81, 0x22, 0x9b, 0xa8, 0x8b, - 0x53, 0x12, 0xfb, 0x0a, 0x43, 0xa0, 0xb8, 0x3b, 0x93, 0x4c, 0x86, 0xba, 0x8b, 0x35, 0xa1, 0x8d, - 0x10, 0x23, 0x01, 0xdf, 0x51, 0xa0, 0x08, 0x09, 0x04, 0xa9, 0x88, 0x22, 0xba, 0x38, 0x22, 0x91, - 0xfa, 0x9c, 0x62, 0x91, 0x9a, 0x18, 0x04, 0xa8, 0xac, 0x20, 0x52, 0x91, 0x99, 0xe8, 0x0c, 0x25, - 0x00, 0x91, 0xca, 0x1b, 0x17, 0xa9, 0x28, 0xb9, 0x55, 0xb8, 0x19, 0x99, 0x43, 0x89, 0x90, 0x2a, - 0xeb, 0x50, 0x03, 0xa9, 0x8e, 0x22, 0x18, 0xc0, 0x8c, 0x12, 0x21, 0x91, 0xeb, 0x89, 0x51, 0x01, - 0xa9, 0x20, 0xbb, 0x43, 0x98, 0x31, 0xca, 0x19, 0x27, 0xab, 0xc1, 0x3b, 0x27, 0x98, 0xba, 0x30, - 0x03, 0xa9, 0xc9, 0x68, 0xa0, 0x20, 0xaa, 0xc0, 0x1d, 0x27, 0x98, 0xc9, 0x1b, 0x26, 0x00, 0xdb, - 0x28, 0x83, 0x89, 0x90, 0x08, 0x98, 0x51, 0xa3, 0x2a, 0xd9, 0x08, 0x71, 0xc2, 0x0c, 0x81, 0x52, - 0xb8, 0x9b, 0x21, 0x11, 0x01, 0xb8, 0x9f, 0x14, 0x8b, 0x24, 0xb8, 0x09, 0x21, 0xfb, 0x1a, 0x24, - 0xa0, 0x11, 0xda, 0x89, 0x40, 0x16, 0xa8, 0x8d, 0x81, 0x38, 0x86, 0xab, 0x80, 0x42, 0x98, 0x29, - 0xe8, 0x1b, 0x44, 0x90, 0xa9, 0x8b, 0x33, 0x00, 0xa2, 0xdf, 0x42, 0x92, 0x8b, 0x92, 0x0b, 0x02, - 0x44, 0xdb, 0x10, 0xba, 0x52, 0x81, 0xb9, 0x49, 0x90, 0x32, 0xca, 0xaa, 0x78, 0x04, 0xa8, 0x9b, - 0x13, 0x1a, 0x84, 0xac, 0x41, 0xa8, 0x39, 0xd2, 0x2e, 0x14, 0x80, 0x9b, 0xc9, 0x68, 0x93, 0x99, - 0x00, 0xb8, 0x50, 0x91, 0x88, 0xca, 0x51, 0x01, 0xa0, 0x9f, 0x21, 0x01, 0x99, 0xa1, 0x3b, 0x06, - 0xbb, 0x19, 0x15, 0x0c, 0x27, 0xb8, 0xba, 0x4b, 0x17, 0x99, 0x18, 0xc8, 0x29, 0x01, 0x31, 0xca, - 0x08, 0x88, 0x21, 0xba, 0x18, 0x54, 0xb0, 0x28, 0xdc, 0x88, 0x3a, 0x57, 0x9a, 0x89, 0x10, 0x90, - 0x21, 0xc8, 0x1a, 0x34, 0xea, 0x39, 0x12, 0xd8, 0x38, 0xc8, 0x51, 0x88, 0xb9, 0x40, 0x91, 0x09, - 0x08, 0x01, 0xbe, 0x30, 0x43, 0xd1, 0x8d, 0x81, 0x48, 0x04, 0xbd, 0x30, 0xa0, 0x31, 0x90, 0xc8, - 0x0f, 0x03, 0x31, 0xb2, 0xbc, 0x3a, 0x15, 0x99, 0x21, 0xdb, 0x40, 0x80, 0xa9, 0x80, 0x21, 0xb2, - 0x0d, 0x34, 0xc9, 0x38, 0xa9, 0x23, 0xe9, 0x2a, 0xc1, 0x38, 0x38, 0xf3, 0x0f, 0x03, 0xa8, 0x48, - 0xa3, 0x9c, 0x89, 0x46, 0x98, 0x88, 0xbb, 0x41, 0x04, 0xaa, 0x20, 0x80, 0xb8, 0x2b, 0x27, 0xe9, - 0x2a, 0x04, 0x09, 0x90, 0xcc, 0x51, 0x81, 0x98, 0x89, 0x22, 0xd8, 0x39, 0xa1, 0x18, 0x9a, 0x15, - 0x00, 0xeb, 0x2a, 0x15, 0x10, 0xe9, 0x0a, 0x22, 0x92, 0x5a, 0xd1, 0x2a, 0x93, 0x9a, 0x09, 0x42, - 0x94, 0x0d, 0x04, 0xac, 0x01, 0x0b, 0x44, 0xb2, 0x9f, 0x22, 0xa0, 0x9a, 0x43, 0x02, 0xcc, 0x28, - 0xb0, 0x61, 0x80, 0x0a, 0x91, 0x8c, 0x12, 0x80, 0x00, 0xbb, 0x67, 0xb8, 0x08, 0xa9, 0x38, 0x26, - 0xa0, 0xae, 0x30, 0x13, 0xa8, 0xbb, 0x39, 0x14, 0x08, 0xaa, 0x81, 0xcf, 0x72, 0x82, 0xb9, 0x9b, - 0x32, 0x23, 0xda, 0x30, 0x91, 0xcb, 0x48, 0x84, 0xad, 0x52, 0x90, 0x08, 0xba, 0x29, 0x36, 0xc8, - 0x2a, 0x92, 0x8a, 0x18, 0x85, 0x1c, 0x94, 0x99, 0x89, 0x38, 0xb1, 0x38, 0x13, 0xf9, 0x6a, 0xc0, - 0x1a, 0x22, 0xc0, 0x49, 0x14, 0xda, 0x9b, 0x51, 0x12, 0xa8, 0x8c, 0x21, 0x00, 0x90, 0x1b, 0x32, - 0xb1, 0x9f, 0x15, 0xbd, 0x41, 0x80, 0x20, 0xd1, 0x8c, 0x21, 0x11, 0x80, 0x8a, 0x02, 0x09, 0xc0, - 0xaf, 0x51, 0x81, 0x00, 0xa0, 0x9b, 0xa9, 0x74, 0x94, 0x9b, 0x9a, 0x62, 0x81, 0x98, 0x9b, 0x34, - 0x90, 0xbd, 0x41, 0x11, 0xa0, 0x0d, 0x13, 0x8b, 0x92, 0x3a, 0x91, 0x9e, 0x21, 0x24, 0x8a, 0xfa, - 0x2b, 0x31, 0x05, 0x9d, 0x20, 0x21, 0xd8, 0x0b, 0x81, 0x54, 0xa8, 0x9a, 0x0b, 0x25, 0xa8, 0x41, - 0xc0, 0x0b, 0x90, 0x39, 0x47, 0xdb, 0x29, 0x33, 0xb8, 0x9d, 0x20, 0x10, 0x02, 0x88, 0xfa, 0x30, - 0x98, 0x32, 0x98, 0xcc, 0x28, 0x22, 0xa2, 0x9f, 0x24, 0x9b, 0x13, 0xad, 0x11, 0x23, 0xdc, 0x21, - 0x90, 0x08, 0xa0, 0x8a, 0x14, 0x9c, 0x01, 0x64, 0x92, 0x9f, 0x01, 0x28, 0x02, 0xd9, 0x39, 0x90, - 0x90, 0x89, 0x73, 0xc3, 0x8b, 0x90, 0x28, 0x43, 0xb8, 0x8a, 0x90, 0xb9, 0x73, 0x08, 0xc2, 0x9d, - 0x33, 0x31, 0xe9, 0x88, 0x0b, 0x17, 0x08, 0xba, 0x50, 0xa1, 0x98, 0x2b, 0xb3, 0x70, 0xb2, 0x0a, - 0xa0, 0xab, 0x67, 0xa1, 0x8b, 0xa0, 0x51, 0xa1, 0x08, 0x8b, 0x02, 0x09, 0x08, 0xa3, 0x9e, 0x11, - 0x44, 0xb2, 0x9e, 0x18, 0x10, 0x30, 0xb3, 0xaf, 0x63, 0xc0, 0x1b, 0x83, 0x08, 0x31, 0xf9, 0x89, - 0x21, 0x83, 0xab, 0x43, 0xfb, 0x38, 0x14, 0xda, 0x29, 0x81, 0x00, 0x1a, 0x15, 0xbd, 0x28, 0x13, - 0xa9, 0x41, 0xea, 0x19, 0x23, 0x02, 0xbe, 0x10, 0x81, 0x30, 0xb3, 0xcf, 0x42, 0x90, 0x1a, 0x91, - 0x09, 0x21, 0x92, 0x8f, 0x11, 0x00, 0x80, 0x01, 0xad, 0x01, 0x39, 0xb3, 0xa9, 0xff, 0x43, 0x80, - 0xb1, 0x8e, 0x31, 0x80, 0x08, 0x82, 0xaf, 0x13, 0x09, 0x04, 0xa9, 0x8b, 0x34, 0xa0, 0xca, 0x69, - 0x92, 0x01, 0xbb, 0x99, 0x72, 0x94, 0x8c, 0x80, 0x12, 0x88, 0x98, 0x80, 0xbd, 0x62, 0x03, 0x9b, - 0xc1, 0x8e, 0x32, 0x12, 0xa8, 0x8d, 0x03, 0xab, 0x11, 0x92, 0x70, 0xa5, 0xad, 0x21, 0x20, 0x92, - 0x19, 0xa8, 0xba, 0x1c, 0x24, 0x44, 0xeb, 0x88, 0x40, 0xb1, 0x2b, 0xc0, 0x50, 0x91, 0x98, 0x0b, - 0x33, 0x90, 0xd9, 0x28, 0x99, 0x37, 0xbb, 0x01, 0x99, 0x20, 0x45, 0xb1, 0xdf, 0x28, 0x25, 0xb8, - 0x0b, 0x11, 0x20, 0xb0, 0x8c, 0x21, 0xb8, 0x70, 0x93, 0xba, 0xab, 0x25, 0x18, 0x94, 0xbc, 0x10, - 0x24, 0xd9, 0x28, 0x88, 0x25, 0xb9, 0xcc, 0x49, 0x23, 0x90, 0xaa, 0x80, 0x1a, 0x93, 0x7a, 0xa3, - 0x9c, 0x18, 0x36, 0xd8, 0xab, 0x62, 0x92, 0x99, 0x8c, 0x23, 0x11, 0xd0, 0x8c, 0x12, 0x22, 0xa9, - 0xbb, 0x21, 0x89, 0x57, 0xa0, 0xac, 0x80, 0x21, 0x23, 0xc9, 0x8b, 0x72, 0xb3, 0x8d, 0x00, 0x00, - 0x33, 0xf8, 0x1a, 0x91, 0x1a, 0x23, 0x91, 0xad, 0x00, 0x72, 0xa3, 0x9e, 0x08, 0x33, 0x01, 0xfb, - 0x0a, 0x23, 0x88, 0x10, 0x92, 0xaf, 0x12, 0x00, 0x99, 0x20, 0x98, 0x04, 0x08, 0xfa, 0x3b, 0x04, - 0x89, 0x20, 0xd0, 0x2c, 0x06, 0xac, 0x30, 0x13, 0x9b, 0x81, 0x9f, 0x42, 0x90, 0x1a, 0x85, 0xbb, - 0x18, 0x23, 0xb9, 0x20, 0x72, 0xb1, 0xad, 0x89, 0x45, 0xa0, 0x80, 0x9a, 0x90, 0x39, 0x26, 0xb8, - 0xbc, 0x38, 0x35, 0xa1, 0xbe, 0x30, 0x23, 0xb9, 0x01, 0xbe, 0x52, 0x80, 0x90, 0x08, 0x38, 0xf1, - 0x1a, 0x03, 0x9c, 0x43, 0x90, 0x80, 0xcc, 0x38, 0x33, 0xb2, 0xaf, 0x42, 0xa0, 0x8d, 0x22, 0xa0, - 0x20, 0xd9, 0x29, 0x92, 0x0a, 0x24, 0x98, 0x81, 0x9e, 0x84, 0x0a, 0x84, 0x9a, 0x60, 0x85, 0x9c, - 0x90, 0x38, 0x12, 0xb0, 0x9a, 0x10, 0x98, 0x14, 0x0a, 0xb2, 0xaf, 0x51, 0x11, 0xd9, 0x8c, 0x45, - 0xa8, 0x09, 0xb0, 0x3c, 0x16, 0xaa, 0x18, 0x02, 0x99, 0xb9, 0x61, 0x91, 0xab, 0x45, 0x90, 0xaa, - 0xbc, 0x72, 0x13, 0xb9, 0x0b, 0x02, 0x8a, 0x51, 0x03, 0xbc, 0x99, 0x11, 0x18, 0x81, 0xa9, 0x0a, - 0xbd, 0x77, 0xa9, 0x28, 0x81, 0x09, 0x98, 0x20, 0xa8, 0x9c, 0x46, 0xba, 0x22, 0xcb, 0x50, 0x13, - 0xcb, 0x0d, 0x03, 0x68, 0x92, 0xab, 0x9a, 0x24, 0x89, 0x33, 0xfa, 0x0a, 0x14, 0x09, 0x91, 0x9d, - 0x20, 0x14, 0xaa, 0x9a, 0x18, 0x33, 0xa9, 0x32, 0x88, 0xef, 0x30, 0x10, 0x85, 0xbc, 0x20, 0x04, - 0xba, 0x28, 0x05, 0x8a, 0x90, 0xaa, 0x34, 0x00, 0xf9, 0x48, 0x82, 0x80, 0xac, 0x11, 0xba, 0x50, - 0x16, 0xba, 0x18, 0xa9, 0x22, 0xea, 0x32, 0x89, 0x33, 0xcf, 0x20, 0xb0, 0x58, 0x84, 0x99, 0xbc, - 0x52, 0x81, 0x10, 0x01, 0xfb, 0x19, 0x84, 0x09, 0x81, 0xb9, 0x51, 0xb0, 0x0b, 0x12, 0x22, 0xcb, - 0x88, 0x8a, 0x37, 0xb9, 0x10, 0xc0, 0x1e, 0x14, 0x09, 0xc0, 0x0b, 0x58, 0x05, 0x9a, 0x80, 0x89, - 0x34, 0xfa, 0x18, 0x81, 0x18, 0x82, 0xcc, 0x49, 0x04, 0x88, 0x9a, 0x11, 0x9c, 0x26, 0x99, 0xac, - 0x34, 0xa0, 0x18, 0xad, 0x28, 0x41, 0x92, 0x0c, 0xa2, 0x9f, 0x63, 0xa1, 0x8a, 0x88, 0x20, 0x02, - 0x99, 0xad, 0x50, 0x03, 0xaa, 0x00, 0xad, 0x52, 0x11, 0xc9, 0x1a, 0x82, 0x40, 0xa2, 0xae, 0x29, - 0x14, 0x11, 0xda, 0x88, 0xa0, 0x51, 0x04, 0xca, 0x89, 0x01, 0x88, 0x43, 0xe8, 0x28, 0x92, 0x9a, - 0x18, 0x80, 0x44, 0xb0, 0xae, 0x22, 0x2a, 0x87, 0x9c, 0x01, 0x11, 0x89, 0x91, 0x8b, 0x16, 0x99, - 0x10, 0x18, 0xd8, 0x1c, 0x35, 0xd8, 0x9b, 0x62, 0x92, 0x99, 0xb9, 0x30, 0x04, 0x18, 0xc9, 0x8a, - 0x09, 0x25, 0x80, 0xcb, 0x38, 0x14, 0x9a, 0xc9, 0x69, 0x05, 0x0a, 0xc0, 0x0a, 0x22, 0x01, 0x88, - 0xa9, 0x40, 0xfa, 0x31, 0xa0, 0x0a, 0x24, 0x10, 0xf9, 0x9c, 0x21, 0x53, 0xb1, 0xad, 0x88, 0x72, - 0x91, 0xa9, 0x89, 0x24, 0x89, 0x81, 0x8b, 0xb8, 0x72, 0x91, 0x81, 0xae, 0x52, 0xa8, 0x22, 0xda, - 0x39, 0x02, 0xa8, 0x89, 0x88, 0x71, 0x94, 0x8b, 0xa8, 0x09, 0x31, 0x16, 0xc9, 0xa9, 0x49, 0x12, - 0xa8, 0x8d, 0x53, 0xa0, 0x8b, 0x88, 0x20, 0x24, 0xcb, 0x10, 0x00, 0xd8, 0x59, 0x84, 0x99, 0x8f, - 0x16, 0xa9, 0x18, 0x88, 0x21, 0xa2, 0xac, 0x41, 0x90, 0x88, 0x0a, 0xb2, 0x4a, 0x16, 0x9a, 0xcb, - 0x40, 0x93, 0xa9, 0x10, 0x01, 0x08, 0x19, 0xf9, 0x5b, 0x80, 0x35, 0xca, 0xab, 0x21, 0x52, 0x04, - 0x9c, 0xc9, 0x39, 0x12, 0x01, 0x80, 0xbb, 0x44, 0xa9, 0x00, 0x9d, 0x61, 0x04, 0xeb, 0x1a, 0x12, - 0x21, 0xc0, 0x8a, 0x08, 0x01, 0x11, 0xcb, 0x18, 0x82, 0x62, 0x82, 0xef, 0x10, 0x12, 0x00, 0xab, - 0x48, 0x81, 0x82, 0x9f, 0x12, 0x18, 0x88, 0x83, 0x9e, 0xa8, 0x71, 0x02, 0xaa, 0x8a, 0x20, 0x02, - 0x18, 0xd8, 0x40, 0xb0, 0x09, 0x89, 0xba, 0x78, 0xa3, 0x33, 0xdd, 0x8b, 0x15, 0x21, 0xc8, 0x18, - 0x9a, 0x05, 0x9c, 0x12, 0x22, 0xb0, 0x09, 0x9c, 0xa8, 0x77, 0xb0, 0x09, 0x80, 0x30, 0xc0, 0x0a, - 0x28, 0x43, 0xe9, 0x1c, 0x04, 0x9c, 0x23, 0x89, 0x80, 0x8a, 0x90, 0x69, 0xb2, 0x0d, 0x44, 0xb0, - 0x9b, 0x19, 0x14, 0x08, 0x11, 0xc2, 0x9f, 0x12, 0x08, 0x41, 0xc2, 0xac, 0x51, 0x90, 0x98, 0x18, - 0x00, 0x22, 0xcc, 0x89, 0x28, 0x27, 0xc9, 0x89, 0x80, 0x38, 0x14, 0xaa, 0x9a, 0x12, 0xb9, 0x73, - 0xe5, 0x09, 0x81, 0x20, 0xb3, 0x8f, 0x22, 0x90, 0x89, 0x81, 0x10, 0x92, 0x9e, 0x34, 0xd1, 0x0b, - 0x02, 0x18, 0x81, 0xac, 0x23, 0x20, 0xf8, 0x0e, 0x23, 0x80, 0xb9, 0x8b, 0x16, 0x98, 0x99, 0x1a, - 0x27, 0x99, 0x9a, 0x60, 0xb0, 0x1b, 0x24, 0x92, 0xcb, 0x0a, 0x46, 0xc0, 0x8a, 0x11, 0x31, 0xc8, - 0x9c, 0x41, 0x93, 0x29, 0xe8, 0x18, 0x8b, 0x24, 0x09, 0x11, 0xa8, 0xbf, 0x31, 0x21, 0xd1, 0x3b, - 0x94, 0x0b, 0x98, 0x08, 0x72, 0x82, 0xca, 0x18, 0x98, 0x29, 0x37, 0xb8, 0xac, 0x00, 0x63, 0xb1, - 0x0c, 0x80, 0x33, 0xa0, 0xba, 0x8d, 0x22, 0x23, 0xa9, 0x51, 0xba, 0xbc, 0x68, 0x83, 0x8b, 0x80, - 0x08, 0x02, 0xf0, 0x2d, 0x85, 0x39, 0xe1, 0x1a, 0x91, 0x01, 0x19, 0x42, 0xb0, 0x9c, 0x98, 0x18, - 0x64, 0x82, 0x99, 0x99, 0xa9, 0x39, 0x47, 0xd0, 0x8b, 0x23, 0xc1, 0x0b, 0x02, 0x02, 0x09, 0x93, - 0xbf, 0x1a, 0x35, 0x21, 0x98, 0xde, 0x18, 0x12, 0x08, 0x80, 0x09, 0x80, 0x30, 0xb9, 0x63, 0xf8, - 0x3a, 0x82, 0x19, 0x93, 0x8d, 0x99, 0x43, 0x12, 0xbf, 0x24, 0xca, 0x38, 0x91, 0x20, 0xa9, 0x9b, - 0x53, 0xa8, 0x13, 0x0c, 0xe3, 0x48, 0xb8, 0x10, 0xbc, 0x44, 0x11, 0xf9, 0x09, 0x12, 0x80, 0x30, - 0xd1, 0x9d, 0x30, 0x35, 0xc8, 0xad, 0x32, 0x91, 0x10, 0xca, 0x11, 0x01, 0x8a, 0x23, 0xac, 0xb9, - 0x72, 0x86, 0xac, 0x00, 0x31, 0x81, 0xaa, 0x8c, 0x20, 0x23, 0x88, 0xd1, 0x1b, 0x25, 0xa9, 0x9a, - 0x21, 0xea, 0x70, 0x95, 0xac, 0x10, 0x20, 0x01, 0x88, 0xaa, 0x1a, 0x26, 0xb8, 0x39, 0xd0, 0x39, - 0x92, 0x30, 0xfa, 0x30, 0xc9, 0x20, 0x01, 0x02, 0xcc, 0x0a, 0x22, 0x88, 0x22, 0x20, 0xfa, 0x9b, - 0x45, 0xb8, 0x18, 0x08, 0x24, 0xea, 0x8a, 0x30, 0x27, 0xca, 0x19, 0x90, 0x8a, 0x46, 0x80, 0xb8, - 0xab, 0x21, 0x34, 0xc1, 0x9f, 0x21, 0x00, 0x82, 0xad, 0x21, 0x80, 0x08, 0x09, 0x12, 0xbb, 0x40, - 0x36, 0xfb, 0x1b, 0x15, 0x98, 0xa9, 0x80, 0x58, 0x05, 0xaa, 0x00, 0x8a, 0x32, 0xb0, 0xab, 0x3a, - 0x06, 0x51, 0xf9, 0x08, 0x09, 0x32, 0x01, 0xea, 0x1b, 0x03, 0x12, 0xba, 0x08, 0x29, 0x44, 0xf9, - 0x0a, 0x00, 0x43, 0x98, 0x91, 0x0e, 0x11, 0x11, 0xda, 0x00, 0x99, 0x72, 0x96, 0xac, 0x11, 0x18, - 0x12, 0x98, 0xbc, 0x50, 0xa0, 0x08, 0x38, 0x86, 0x9c, 0x92, 0x8a, 0x80, 0x44, 0x11, 0xc1, 0xaf, - 0x10, 0x22, 0x82, 0xaa, 0xa8, 0x8a, 0x45, 0x00, 0xb8, 0x8c, 0x24, 0xa0, 0x99, 0x9b, 0x34, 0x02, - 0xb8, 0xcb, 0x39, 0x54, 0xa1, 0x9a, 0x1a, 0x93, 0x78, 0xb7, 0x8e, 0x02, 0x21, 0xb8, 0x80, 0x9a, - 0x12, 0x12, 0xbc, 0x63, 0x90, 0x00, 0xeb, 0x00, 0x09, 0x27, 0x99, 0x8a, 0xa2, 0x1c, 0x17, 0xaa, - 0x18, 0x10, 0x80, 0x89, 0xcc, 0x72, 0x81, 0x80, 0xbc, 0x18, 0x33, 0x83, 0x08, 0xfd, 0x28, 0x12, - 0xa1, 0x0c, 0xc1, 0x59, 0x84, 0x9a, 0x99, 0x11, 0x31, 0xc3, 0x9e, 0x10, 0x32, 0xa1, 0x9d, 0x88, - 0x11, 0x20, 0x85, 0xcc, 0x09, 0x34, 0x12, 0xc8, 0xbe, 0x40, 0x03, 0xa0, 0x1a, 0xc2, 0x1c, 0x04, - 0x88, 0x99, 0x10, 0x43, 0xf8, 0x2a, 0xa1, 0x62, 0xb9, 0x09, 0x09, 0x13, 0x88, 0x09, 0xb0, 0x19, - 0x04, 0x18, 0xc1, 0x4c, 0x07, 0x9c, 0x80, 0x28, 0x13, 0x11, 0xfc, 0x2b, 0x23, 0x92, 0x9c, 0x91, - 0x2a, 0x07, 0x99, 0x08, 0xab, 0x51, 0x92, 0x98, 0xbe, 0x63, 0x11, 0x98, 0xad, 0x18, 0x52, 0xa1, - 0x8a, 0x99, 0x31, 0x11, 0x04, 0xbe, 0x18, 0x23, 0xaa, 0x62, 0xd9, 0x20, 0x81, 0x80, 0xec, 0x48, - 0x03, 0xa8, 0x9b, 0x18, 0x24, 0x88, 0xe9, 0x3a, 0x82, 0x80, 0x18, 0xa3, 0x9e, 0x12, 0x0a, 0x33, - 0xa9, 0x8a, 0x36, 0xf9, 0x9a, 0x71, 0x84, 0x9d, 0x01, 0x80, 0x20, 0x90, 0x8a, 0x01, 0xb9, 0x42, - 0x28, 0xe1, 0x2b, 0x84, 0xba, 0x19, 0x31, 0x38, 0x07, 0xfb, 0x1b, 0x34, 0x88, 0xa8, 0xab, 0x28, - 0x56, 0xc0, 0x8a, 0x01, 0x81, 0x10, 0x91, 0x8d, 0x24, 0x9a, 0x04, 0xbb, 0x18, 0x41, 0xa4, 0x9e, - 0x11, 0x88, 0x51, 0xb1, 0x0f, 0x02, 0x89, 0x10, 0x90, 0x89, 0x13, 0xbd, 0x38, 0x23, 0xc9, 0x70, - 0x92, 0xbf, 0x40, 0x92, 0x28, 0xa8, 0x80, 0x0a, 0x13, 0xea, 0x68, 0xa2, 0x0a, 0x92, 0xaa, 0x61, - 0x82, 0xbb, 0x08, 0x91, 0x2a, 0x47, 0xa8, 0xac, 0x48, 0x02, 0x88, 0xba, 0x29, 0x45, 0xc1, 0x1b, - 0x82, 0x9a, 0x19, 0xa5, 0x4a, 0x82, 0x81, 0xbd, 0x53, 0xea, 0x30, 0x81, 0x00, 0xdb, 0x38, 0x00, - 0x43, 0xc9, 0x89, 0x8a, 0x32, 0x21, 0x10, 0xb1, 0xdf, 0x42, 0xa1, 0xac, 0x59, 0x84, 0x0a, 0xa0, - 0x28, 0x00, 0xca, 0x70, 0x81, 0x98, 0x9c, 0x22, 0x88, 0x90, 0x1a, 0xb1, 0x72, 0xe2, 0x88, 0x29, - 0x13, 0x8b, 0x07, 0xab, 0x08, 0x30, 0x92, 0x12, 0xcf, 0x22, 0x8a, 0x84, 0xac, 0x52, 0xa1, 0x08, - 0x99, 0xa9, 0x62, 0x91, 0x0a, 0x31, 0xfa, 0x1b, 0x24, 0xa1, 0x8a, 0x00, 0x01, 0xcc, 0x70, 0xa4, - 0x0b, 0x92, 0x00, 0x0a, 0x92, 0x2d, 0x86, 0x8b, 0x81, 0x41, 0xcb, 0x28, 0x20, 0x92, 0xab, 0x80, - 0x78, 0x95, 0xac, 0x21, 0x80, 0x51, 0xd8, 0x8a, 0x1a, 0x36, 0xa8, 0x8a, 0x02, 0x8e, 0x23, 0x0a, - 0xa2, 0x0e, 0x14, 0x99, 0x98, 0x1a, 0x03, 0x10, 0xf9, 0x59, 0xb1, 0x3a, 0x82, 0x20, 0xcd, 0x41, - 0x80, 0x09, 0x19, 0xea, 0x52, 0x98, 0x90, 0x0a, 0x81, 0x34, 0xbc, 0x32, 0xa8, 0x99, 0x40, 0xf8, - 0x30, 0xb8, 0x40, 0x00, 0xf1, 0x0d, 0x14, 0x88, 0x99, 0x02, 0x19, 0x91, 0x99, 0x31, 0x21, 0xf3, - 0x9e, 0x41, 0x80, 0x99, 0x32, 0xc8, 0x88, 0x9a, 0x20, 0x28, 0x86, 0x48, 0xd2, 0xac, 0x31, 0x91, - 0x99, 0x22, 0xba, 0x42, 0x01, 0xea, 0x02, 0x1e, 0x94, 0x40, 0xf8, 0x0a, 0x24, 0xa9, 0x30, 0xb3, - 0xbf, 0x32, 0x81, 0x91, 0x8a, 0x20, 0x02, 0xaa, 0xaf, 0x41, 0x32, 0xc0, 0x8d, 0x82, 0x8b, 0x52, - 0x82, 0x9d, 0x12, 0xbc, 0x42, 0x02, 0xac, 0x20, 0x20, 0x94, 0xbe, 0x20, 0x14, 0x90, 0x99, 0xa8, - 0x2a, 0x83, 0x43, 0x01, 0xda, 0x9b, 0x31, 0x81, 0x0a, 0x08, 0x57, 0xd1, 0x9c, 0x10, 0x20, 0x16, - 0xcb, 0x00, 0x88, 0x02, 0xc9, 0x59, 0x83, 0x8b, 0x18, 0x88, 0xb9, 0x39, 0x67, 0xb1, 0x9e, 0x12, - 0x21, 0xc8, 0x1b, 0x14, 0x80, 0xa0, 0xaf, 0x63, 0xa8, 0x49, 0x91, 0xaa, 0x00, 0x10, 0x22, 0xc2, - 0x9f, 0x21, 0x11, 0xc0, 0x9b, 0x51, 0x82, 0x0a, 0xb9, 0x30, 0x01, 0x08, 0xb9, 0x32, 0xfd, 0x38, - 0x15, 0xbc, 0x32, 0xa8, 0x33, 0xda, 0x9c, 0x63, 0x81, 0x9a, 0x19, 0x83, 0xbb, 0x30, 0x83, 0x49, - 0xe1, 0x19, 0x99, 0x81, 0x2c, 0x27, 0xc8, 0x8c, 0x03, 0x10, 0xb2, 0x9c, 0x19, 0x47, 0xa9, 0x89, - 0x89, 0x23, 0x81, 0xa8, 0xa8, 0xaf, 0x26, 0x00, 0x90, 0xbc, 0x38, 0x27, 0xb9, 0x99, 0x18, 0x16, - 0xaa, 0x88, 0x10, 0x82, 0x28, 0xb9, 0xfb, 0x59, 0x04, 0x89, 0xa8, 0x9c, 0x43, 0x01, 0xb1, 0x9e, - 0x10, 0x00, 0x33, 0xfb, 0x30, 0x82, 0xa9, 0x11, 0xca, 0x29, 0x24, 0x08, 0xd3, 0xaf, 0x42, 0x02, - 0xab, 0x89, 0x30, 0x83, 0x9d, 0x11, 0x11, 0xb9, 0x19, 0x91, 0xee, 0x39, 0x15, 0x10, 0xc9, 0x2a, - 0xa3, 0x0c, 0x11, 0x20, 0x26, 0xbc, 0x88, 0x9c, 0x37, 0xa8, 0x89, 0x80, 0x08, 0x21, 0xab, 0x27, - 0xca, 0x39, 0x83, 0xbc, 0x80, 0x48, 0x27, 0xab, 0xab, 0x40, 0x12, 0xa8, 0x40, 0xd8, 0x3a, 0x94, - 0xab, 0x20, 0x14, 0x1a, 0xa3, 0x9e, 0x20, 0x11, 0x22, 0xcc, 0xa8, 0x8f, 0x27, 0xa8, 0x8a, 0x21, - 0x01, 0xb8, 0x9e, 0x23, 0x00, 0x81, 0x39, 0xf1, 0x0d, 0x21, 0x82, 0xbb, 0x88, 0x72, 0x83, 0xda, - 0x8b, 0x41, 0x13, 0xa8, 0x88, 0xcc, 0x30, 0x24, 0xb0, 0xaa, 0x99, 0x58, 0x16, 0xba, 0x8a, 0x35, - 0x00, 0xda, 0x9b, 0x58, 0x15, 0x99, 0x9a, 0x91, 0x1c, 0x17, 0x8b, 0x01, 0x09, 0x90, 0x23, 0xca, - 0x8a, 0x53, 0x91, 0x9a, 0xb9, 0x71, 0x92, 0x99, 0x18, 0xea, 0x61, 0xa1, 0x8b, 0x02, 0x21, 0xa0, - 0xad, 0x14, 0xab, 0x53, 0x91, 0x1a, 0xd9, 0x40, 0x82, 0xda, 0x1a, 0x45, 0xc1, 0x8c, 0x12, 0x91, - 0x2a, 0xb1, 0x48, 0xa8, 0x10, 0x18, 0xd3, 0x0e, 0x11, 0x23, 0xdc, 0x18, 0x90, 0x32, 0xb8, 0x8c, - 0x42, 0x82, 0x99, 0x80, 0xce, 0x62, 0xa1, 0x09, 0x19, 0x93, 0x0f, 0x05, 0x98, 0x89, 0x81, 0x29, - 0xc3, 0x0c, 0x23, 0x80, 0xa8, 0xcc, 0x1a, 0x35, 0x80, 0x08, 0xc9, 0x29, 0x12, 0xa9, 0x8a, 0x53, - 0x81, 0x18, 0xfc, 0x0b, 0x54, 0x02, 0xbc, 0x0a, 0x31, 0x83, 0x2b, 0x87, 0x8d, 0x82, 0x19, 0xa2, - 0x8b, 0x20, 0x36, 0xb9, 0xea, 0x1b, 0x16, 0x80, 0x90, 0x8a, 0x88, 0x21, 0xb2, 0xab, 0x61, 0xa0, - 0x54, 0xda, 0x09, 0x20, 0x23, 0x81, 0xbf, 0x20, 0x80, 0x22, 0xc8, 0x39, 0xc1, 0xcb, 0x78, 0xa4, - 0x0b, 0x22, 0x98, 0x1a, 0xa0, 0x3b, 0x37, 0xeb, 0x38, 0x02, 0xeb, 0x40, 0x90, 0x08, 0xa0, 0x19, - 0x82, 0x19, 0x84, 0xbc, 0x52, 0xba, 0x22, 0xa0, 0x0b, 0x93, 0x5a, 0x15, 0xa9, 0xb1, 0x9f, 0x17, - 0x09, 0xa9, 0x28, 0x00, 0x80, 0x19, 0xb4, 0x0c, 0x14, 0x98, 0xb8, 0x8e, 0x53, 0x04, 0xca, 0x99, - 0x38, 0x94, 0x8a, 0x42, 0xd0, 0x2b, 0x03, 0x8a, 0x83, 0xab, 0x29, 0x06, 0xbe, 0x41, 0x11, 0xa0, - 0x4b, 0xf2, 0x2c, 0x05, 0x8a, 0x10, 0x90, 0x8c, 0x23, 0x98, 0x91, 0x1a, 0xb1, 0x20, 0xdc, 0x51, - 0x12, 0xa0, 0xaf, 0x18, 0x16, 0xb9, 0x21, 0xa9, 0x00, 0x19, 0xa2, 0x2b, 0xa5, 0x49, 0x91, 0xb0, - 0x8f, 0x14, 0x40, 0xe0, 0x0a, 0x82, 0x18, 0x02, 0xb8, 0x09, 0x81, 0xba, 0xaa, 0x77, 0xb1, 0x18, - 0x80, 0x98, 0xae, 0x22, 0x42, 0x92, 0xdc, 0x29, 0x84, 0x9b, 0x41, 0x90, 0x80, 0x18, 0xca, 0x21, - 0x88, 0x35, 0xb8, 0xca, 0x1d, 0x84, 0x2a, 0x14, 0xa0, 0x0c, 0xb2, 0x8c, 0x21, 0x22, 0x26, 0xfb, - 0x1a, 0x02, 0x9a, 0x23, 0x18, 0x81, 0xfb, 0x0c, 0x24, 0x88, 0xb0, 0x50, 0xc8, 0x89, 0x42, 0x91, - 0x8a, 0x08, 0x02, 0xda, 0x70, 0xc0, 0x19, 0x13, 0x89, 0x91, 0x8c, 0x99, 0x45, 0x90, 0x38, 0xc0, - 0xbe, 0x50, 0x84, 0xab, 0x32, 0xb1, 0x8c, 0x10, 0x00, 0x29, 0x86, 0x8a, 0xa1, 0x8e, 0x22, 0x12, - 0xbb, 0x32, 0xb9, 0x08, 0x1b, 0x05, 0x03, 0xbf, 0x61, 0xa0, 0x2b, 0x93, 0x1c, 0x06, 0x8b, 0xa0, - 0x29, 0x02, 0x28, 0x20, 0xfb, 0x21, 0xdc, 0x48, 0x13, 0x99, 0x99, 0x8a, 0x23, 0x13, 0xb8, 0x9f, - 0x93, 0x8e, 0x23, 0x13, 0xdc, 0x29, 0x02, 0x02, 0xbd, 0x23, 0x09, 0x11, 0xc3, 0x8e, 0x14, 0xdb, - 0x30, 0x82, 0x88, 0xba, 0x2a, 0x17, 0x9a, 0x22, 0x20, 0xd0, 0x9b, 0x99, 0x42, 0x73, 0xf2, 0x0a, - 0x80, 0x80, 0x51, 0x92, 0x9a, 0xab, 0x20, 0x21, 0x87, 0x9b, 0x24, 0xd0, 0x8f, 0x13, 0x88, 0x11, - 0xa9, 0x8b, 0x34, 0xa9, 0x32, 0xba, 0x20, 0x00, 0xda, 0x0b, 0x73, 0xa1, 0x0c, 0x26, 0xda, 0x9a, - 0x23, 0x12, 0xc0, 0x29, 0xc2, 0x2c, 0xa4, 0x2c, 0x05, 0xba, 0x19, 0x83, 0x88, 0x00, 0x20, 0x04, - 0xae, 0x00, 0x28, 0x93, 0x3c, 0xf2, 0x59, 0x90, 0x90, 0x8a, 0x51, 0xc8, 0x39, 0x04, 0xc9, 0x9a, - 0x32, 0x23, 0x90, 0xdd, 0x20, 0xb8, 0x30, 0x35, 0xf1, 0x0a, 0x91, 0x28, 0xa0, 0x28, 0x30, 0xd4, - 0x0c, 0x92, 0x38, 0xa2, 0x18, 0xda, 0x29, 0x14, 0xa8, 0x8c, 0x53, 0xa2, 0x8d, 0x12, 0x89, 0xca, - 0x52, 0x00, 0xa3, 0x0d, 0xb8, 0x50, 0xf2, 0x39, 0x84, 0xca, 0x19, 0x02, 0x28, 0x82, 0xbb, 0x1a, - 0x00, 0x37, 0x8b, 0x93, 0x8f, 0x01, 0x32, 0xfa, 0x19, 0x28, 0x03, 0x89, 0xeb, 0x19, 0x35, 0xc1, - 0x0a, 0x83, 0x9c, 0x21, 0x84, 0xbb, 0x99, 0x71, 0x94, 0x9b, 0x9a, 0x64, 0x90, 0x99, 0x0b, 0x22, - 0x28, 0x23, 0xac, 0xd9, 0x3b, 0x16, 0x08, 0xa0, 0x0b, 0x91, 0x50, 0x01, 0xa9, 0x49, 0xf0, 0x1a, - 0x11, 0x08, 0x06, 0xcb, 0x10, 0x99, 0x58, 0x93, 0x8b, 0x38, 0xb2, 0x4a, 0xe9, 0x48, 0xa2, 0x1a, - 0x81, 0x08, 0x8c, 0x37, 0x9e, 0x81, 0x00, 0x11, 0x10, 0xfa, 0x19, 0x22, 0x90, 0x10, 0xfb, 0x18, - 0x11, 0x23, 0xca, 0xba, 0x4a, 0x35, 0xc0, 0x0e, 0x01, 0x20, 0xa0, 0x0a, 0x01, 0x8c, 0x24, 0xa1, - 0x9d, 0x21, 0x80, 0x99, 0x15, 0xaa, 0x10, 0x13, 0xcf, 0x30, 0x82, 0x18, 0x00, 0xe1, 0x4b, 0x93, - 0xbb, 0x40, 0xc8, 0x51, 0x92, 0xda, 0x19, 0x25, 0xa9, 0x8a, 0x80, 0x11, 0x88, 0x61, 0xf9, 0x49, - 0x92, 0x09, 0xa0, 0xcb, 0x78, 0x85, 0x0a, 0x91, 0x9b, 0x30, 0x84, 0x09, 0x98, 0x8a, 0x8a, 0x46, - 0xc9, 0x18, 0x81, 0x88, 0x01, 0xcd, 0x73, 0xa1, 0x88, 0x89, 0x82, 0x89, 0x12, 0x18, 0xba, 0x18, - 0xb0, 0x72, 0xb8, 0x1d, 0x86, 0x0a, 0x11, 0x88, 0xba, 0x01, 0x7a, 0xa7, 0x0b, 0x02, 0x10, 0xbd, - 0x53, 0x90, 0x9b, 0x31, 0x98, 0x14, 0x9e, 0x32, 0xa9, 0x88, 0x23, 0xbf, 0x33, 0xb9, 0x72, 0xa1, - 0xac, 0x30, 0xb3, 0x2b, 0x04, 0xb9, 0x50, 0x80, 0xc9, 0x1c, 0x14, 0x90, 0x8a, 0x22, 0xd9, 0x09, - 0x55, 0xc8, 0x1a, 0x92, 0x58, 0xb1, 0x8c, 0x31, 0x02, 0xc9, 0x8a, 0x12, 0xda, 0x50, 0x03, 0xa9, - 0x1a, 0xa2, 0x1c, 0x89, 0x27, 0x08, 0xd9, 0x09, 0x91, 0x19, 0x55, 0xb1, 0x9e, 0x81, 0x28, 0x05, - 0xba, 0x31, 0xc1, 0x0b, 0x41, 0xb0, 0x38, 0xa3, 0x59, 0xfa, 0x3a, 0x03, 0x01, 0xab, 0x91, 0x8c, - 0x23, 0x18, 0x98, 0x01, 0x9f, 0x24, 0xc9, 0x19, 0xa0, 0x79, 0x83, 0x8a, 0xa0, 0xad, 0x54, 0xa1, - 0x8a, 0x82, 0x29, 0xa2, 0x0c, 0x02, 0xa9, 0x71, 0xb1, 0x1a, 0xa8, 0x9a, 0x56, 0xb1, 0x1c, 0xa1, - 0x20, 0x0b, 0x07, 0x1a, 0xb1, 0x0b, 0xb2, 0x3c, 0x07, 0x18, 0xbc, 0x41, 0xb2, 0x0f, 0x83, 0x2a, - 0x04, 0xba, 0x20, 0x91, 0x8b, 0x91, 0x59, 0xb3, 0x1d, 0x23, 0xa8, 0xbf, 0x44, 0x88, 0x90, 0x88, - 0xab, 0x73, 0xb1, 0x48, 0xa1, 0xad, 0x20, 0x80, 0x30, 0x82, 0xaa, 0x1c, 0x15, 0xb9, 0xab, 0x74, - 0xa1, 0x89, 0x98, 0x1a, 0x17, 0xaa, 0x32, 0xc9, 0xaa, 0x62, 0x13, 0xda, 0x1a, 0x01, 0x24, 0xbc, - 0x11, 0x8a, 0x82, 0x60, 0xe8, 0x18, 0x91, 0x28, 0x91, 0x90, 0x9c, 0x32, 0x07, 0xab, 0xb8, 0x4b, - 0x17, 0x99, 0x99, 0x38, 0xb3, 0x9b, 0x70, 0x93, 0x8a, 0x80, 0xa8, 0x50, 0x01, 0x88, 0x91, 0xdf, - 0x30, 0x83, 0x8c, 0x01, 0x01, 0x0c, 0x15, 0xac, 0x30, 0xb2, 0x49, 0xb3, 0xcf, 0x51, 0x81, 0xa9, - 0x19, 0x83, 0x9a, 0x60, 0xb1, 0x8d, 0x23, 0x00, 0x00, 0xfa, 0x09, 0x23, 0x01, 0xb9, 0x89, 0x19, - 0x42, 0x03, 0xfb, 0x0c, 0x23, 0x01, 0xeb, 0x28, 0x80, 0x52, 0xb0, 0xac, 0x1a, 0x27, 0x98, 0xb8, - 0x0b, 0x63, 0x01, 0xa1, 0xcd, 0x38, 0x13, 0x90, 0x9a, 0x99, 0x49, 0x17, 0xba, 0x19, 0x11, 0x02, - 0x9b, 0xb2, 0x8f, 0x14, 0x52, 0xc0, 0xac, 0x30, 0x04, 0xa8, 0x9c, 0x31, 0x83, 0x98, 0xbd, 0x00, - 0x73, 0x91, 0x99, 0x9a, 0x19, 0x64, 0x91, 0x08, 0xeb, 0x18, 0x31, 0xb2, 0x9c, 0x21, 0x01, 0x04, - 0xbe, 0x28, 0x33, 0xb1, 0x9d, 0x88, 0x73, 0xb0, 0x09, 0x01, 0x9c, 0x31, 0x92, 0x08, 0xbe, 0x61, - 0x01, 0x80, 0xbc, 0x48, 0x12, 0xaa, 0x08, 0x20, 0x04, 0xdb, 0x1b, 0x03, 0x55, 0xc8, 0x0b, 0x82, - 0x0c, 0x44, 0x90, 0xe8, 0x1c, 0x14, 0x80, 0xa9, 0x8a, 0x50, 0x03, 0xba, 0x9a, 0x32, 0x01, 0x12, - 0xcc, 0x8c, 0x44, 0xa1, 0x89, 0xb9, 0x58, 0x12, 0x81, 0xcd, 0x88, 0x58, 0x24, 0xca, 0xaa, 0x31, - 0x24, 0xe0, 0x1b, 0x02, 0x10, 0xa0, 0x0a, 0xb9, 0x61, 0x11, 0x82, 0xaf, 0x18, 0x22, 0xb0, 0x1b, - 0xc2, 0x70, 0x82, 0xda, 0x8a, 0x43, 0x13, 0xea, 0x8a, 0x18, 0x34, 0x00, 0xbb, 0x8a, 0x20, 0x33, - 0x10, 0xfb, 0x1f, 0x13, 0x09, 0xc8, 0x2a, 0xa3, 0x62, 0xc8, 0x8b, 0x41, 0x14, 0xab, 0x08, 0x99, - 0x31, 0x04, 0xcd, 0x20, 0x80, 0x28, 0x13, 0xcd, 0x0a, 0x51, 0x04, 0xcb, 0x89, 0x43, 0x91, 0x99, - 0x88, 0x09, 0x82, 0xaa, 0x63, 0xa2, 0x5a, 0xd2, 0x8e, 0x21, 0x21, 0x81, 0xea, 0x8b, 0x23, 0x20, - 0x92, 0xcc, 0x2a, 0x25, 0x98, 0x9b, 0x30, 0x24, 0xe9, 0x1b, 0xb2, 0x6a, 0x05, 0x98, 0xdb, 0x28, - 0x13, 0x11, 0xbd, 0x28, 0x28, 0x13, 0x80, 0xfb, 0x2b, 0x11, 0x63, 0xd0, 0x9c, 0x23, 0x01, 0x09, - 0xa8, 0x8d, 0x14, 0x80, 0x88, 0x9a, 0x21, 0x20, 0xa1, 0xba, 0x9a, 0x78, 0x97, 0x8b, 0x01, 0x00, - 0x10, 0x04, 0xff, 0x40, 0x81, 0x8a, 0x80, 0x08, 0x11, 0x98, 0x18, 0x98, 0x10, 0x9a, 0x34, 0xfb, - 0x39, 0x24, 0xd0, 0x8e, 0x11, 0x12, 0x01, 0xdc, 0x19, 0x33, 0xa1, 0xaa, 0x99, 0x60, 0x91, 0x30, - 0xf9, 0x1b, 0x22, 0x22, 0x89, 0xfb, 0x0a, 0x44, 0xa0, 0x1a, 0x98, 0x29, 0x05, 0xdc, 0x49, 0x04, - 0x0a, 0x99, 0x08, 0x09, 0x22, 0x12, 0xb1, 0xcf, 0x30, 0x03, 0xa8, 0x99, 0x30, 0xa1, 0xcb, 0x79, - 0x82, 0x09, 0x98, 0x00, 0xbe, 0x44, 0x80, 0x9b, 0x12, 0x9a, 0x63, 0xb0, 0xab, 0x38, 0x14, 0x21, - 0xe9, 0xcc, 0x71, 0x83, 0xbb, 0x29, 0x91, 0x38, 0x84, 0xaa, 0x98, 0x31, 0x10, 0x04, 0xdf, 0x10, - 0x21, 0x93, 0x9e, 0x10, 0x80, 0x41, 0xb1, 0xbe, 0x39, 0x27, 0xc8, 0x08, 0x88, 0x80, 0x30, 0xa2, - 0x9b, 0xc8, 0x71, 0x83, 0xaa, 0x00, 0x88, 0x90, 0x34, 0xbd, 0x32, 0xf9, 0x39, 0x84, 0x8a, 0x10, - 0xaa, 0x08, 0x51, 0x04, 0xbb, 0x80, 0xcb, 0x72, 0xb3, 0x1b, 0xb8, 0x73, 0xb1, 0x1b, 0xb0, 0x61, - 0x02, 0xd9, 0x1a, 0xa1, 0x60, 0x82, 0xab, 0xab, 0x62, 0x12, 0x90, 0xbb, 0x1c, 0x26, 0xa8, 0x20, - 0xca, 0x8a, 0x73, 0x91, 0xaa, 0x30, 0xb1, 0x2a, 0xc1, 0x8a, 0x52, 0x24, 0xea, 0x89, 0x80, 0x40, - 0x13, 0xbb, 0x8a, 0x83, 0x0d, 0x04, 0x23, 0xba, 0xac, 0x00, 0x00, 0x0b, 0x37, 0x83, 0x9b, 0xfa, - 0x0c, 0x24, 0x20, 0xb9, 0x23, 0xae, 0x91, 0x39, 0x14, 0xa8, 0x9e, 0x00, 0x18, 0x33, 0xd8, 0x30, - 0xd2, 0x1b, 0x13, 0xe9, 0x0c, 0x24, 0x02, 0xb9, 0xaa, 0x1a, 0x36, 0xb9, 0x11, 0x13, 0xbc, 0x09, - 0x04, 0xac, 0x60, 0xa0, 0x44, 0xfb, 0x09, 0x21, 0x84, 0x1a, 0xc0, 0x0a, 0x11, 0x82, 0x0a, 0x04, - 0xcb, 0x00, 0xdb, 0x51, 0x82, 0x88, 0x28, 0xb2, 0x0e, 0x98, 0x72, 0xa1, 0x8a, 0x30, 0x01, 0xca, - 0x18, 0xab, 0x57, 0xb9, 0x39, 0xb1, 0x4a, 0x81, 0x09, 0x98, 0x00, 0x8e, 0x14, 0x9c, 0x12, 0x22, - 0x92, 0xed, 0x0a, 0x22, 0x03, 0xeb, 0x61, 0xa0, 0x08, 0x9b, 0x42, 0x02, 0x09, 0xc9, 0x0c, 0x85, - 0x8a, 0x26, 0xb9, 0x9a, 0x31, 0x01, 0x91, 0xbf, 0x43, 0x00, 0xa0, 0x0c, 0x90, 0x51, 0x93, 0xad, - 0x08, 0x03, 0x1b, 0x84, 0x8b, 0x91, 0x2c, 0x27, 0x9a, 0xca, 0x39, 0x25, 0x81, 0xac, 0x89, 0x16, - 0x9b, 0x81, 0x38, 0x83, 0x9c, 0x90, 0x68, 0xd2, 0x29, 0x22, 0xc1, 0xaf, 0x23, 0x89, 0x00, 0x08, - 0x88, 0x34, 0xdc, 0x18, 0x28, 0x83, 0xaa, 0x2a, 0x02, 0x22, 0xbe, 0x51, 0xa1, 0x9c, 0x01, 0x60, - 0xd1, 0x8a, 0x62, 0x82, 0xac, 0x11, 0x90, 0xa9, 0x20, 0x33, 0xb2, 0x8d, 0xa3, 0x0e, 0x92, 0x40, - 0x93, 0xcb, 0x8b, 0x42, 0x13, 0x88, 0xf1, 0x8d, 0x20, 0x23, 0xb9, 0x0e, 0x24, 0x80, 0xcb, 0x88, - 0x33, 0x08, 0xa9, 0x43, 0xbd, 0x22, 0x62, 0xf1, 0x0b, 0x12, 0x81, 0x8a, 0x92, 0x0c, 0x93, 0x3d, - 0x87, 0x8a, 0x98, 0x23, 0xa0, 0xbc, 0x70, 0x83, 0xba, 0x19, 0xa2, 0x4b, 0x84, 0x8b, 0x80, 0x18, - 0xa3, 0x8c, 0x06, 0x19, 0x13, 0xdb, 0x0a, 0x81, 0x2c, 0x47, 0xa8, 0xda, 0x38, 0x10, 0x92, 0x8b, - 0x82, 0x1e, 0x05, 0x8b, 0x81, 0x1a, 0x88, 0x43, 0xb8, 0xbe, 0x61, 0xa3, 0x09, 0xb8, 0x20, 0x24, - 0xb8, 0x9f, 0x11, 0x22, 0x99, 0x91, 0x9c, 0x9a, 0x73, 0xa5, 0x18, 0xfa, 0x38, 0x01, 0x20, 0xd8, - 0x2b, 0x13, 0x90, 0xad, 0x21, 0x01, 0x80, 0x9d, 0x32, 0x02, 0xdd, 0x40, 0x91, 0xaa, 0x31, 0x91, - 0x81, 0xdb, 0x50, 0x82, 0x99, 0x09, 0xb8, 0x21, 0x4b, 0x27, 0x0d, 0xa1, 0x1b, 0xb0, 0x70, 0x04, - 0xaa, 0x8a, 0x02, 0x08, 0x18, 0x13, 0xcc, 0x90, 0x69, 0x84, 0xba, 0x1a, 0x24, 0x81, 0xcd, 0x48, - 0xb1, 0x49, 0x03, 0xfa, 0x29, 0xb1, 0x38, 0x13, 0xa0, 0xab, 0x60, 0xa3, 0x9f, 0x04, 0x18, 0x92, - 0x8c, 0xa8, 0x58, 0x82, 0x99, 0x40, 0xf8, 0x29, 0x81, 0x88, 0x28, 0xa4, 0x0d, 0x03, 0xba, 0x40, - 0xb0, 0x30, 0xa3, 0x0b, 0xfb, 0x63, 0xb9, 0x38, 0x83, 0x89, 0xc8, 0x9d, 0x52, 0x13, 0x09, 0xf8, - 0x0a, 0x82, 0x20, 0x83, 0x9c, 0x11, 0xa0, 0x0d, 0xa2, 0x59, 0x92, 0x30, 0xc9, 0xbd, 0x41, 0x43, - 0xe9, 0x18, 0x98, 0x28, 0x02, 0x8a, 0xa0, 0x79, 0x13, 0xc9, 0xac, 0x59, 0x84, 0x08, 0x80, 0xba, - 0x1b, 0x20, 0x37, 0xd9, 0x39, 0xa2, 0x0c, 0x01, 0xa8, 0x50, 0x83, 0xcb, 0x28, 0xa0, 0x19, 0x34, - 0xe9, 0x28, 0xb3, 0x3a, 0xc3, 0x0e, 0x13, 0x92, 0xac, 0x99, 0x50, 0x02, 0x01, 0xaa, 0xeb, 0x51, - 0x92, 0x9d, 0x32, 0xa2, 0x29, 0xf2, 0x1a, 0x01, 0x19, 0x03, 0xd0, 0x9e, 0x14, 0x08, 0x04, 0xea, - 0x19, 0x82, 0x18, 0x92, 0xbb, 0x63, 0xb0, 0x08, 0x90, 0x29, 0xf0, 0x59, 0x82, 0x0a, 0x98, 0x31, - 0xa1, 0xaa, 0x80, 0xab, 0x55, 0xca, 0x75, 0xc0, 0x0a, 0x01, 0x19, 0x02, 0xa9, 0x09, 0x13, 0xba, - 0x52, 0xa8, 0x99, 0x32, 0x81, 0xfd, 0x1a, 0x16, 0x18, 0xa0, 0xb9, 0x9d, 0x34, 0x82, 0x99, 0x09, - 0xcb, 0x74, 0xa0, 0x09, 0x90, 0x19, 0x26, 0xea, 0x2a, 0x82, 0x30, 0xb2, 0xac, 0x38, 0xa1, 0x41, - 0xb1, 0x8c, 0x12, 0x41, 0xd2, 0xae, 0x28, 0x05, 0x00, 0xaa, 0x9a, 0x43, 0x18, 0x01, 0xaa, 0x0e, - 0x23, 0x88, 0xac, 0x42, 0x98, 0x43, 0xd9, 0x9c, 0x41, 0x82, 0x21, 0xd8, 0x9b, 0x39, 0x07, 0x9a, - 0x21, 0x90, 0x1b, 0xa2, 0x8f, 0x84, 0x18, 0x00, 0x82, 0xae, 0x0a, 0x35, 0xa0, 0x9b, 0x11, 0x21, - 0xeb, 0x32, 0xa9, 0x71, 0xc1, 0x1a, 0xa0, 0x91, 0x78, 0xa2, 0x19, 0x80, 0xaa, 0x89, 0x12, 0x60, - 0x93, 0x1c, 0xf2, 0x2b, 0x93, 0x80, 0x08, 0xb0, 0x21, 0x9a, 0x19, 0x64, 0x92, 0x9d, 0x41, 0xe9, - 0x1a, 0x53, 0xa0, 0x09, 0xda, 0x48, 0x83, 0x1a, 0xa0, 0x0a, 0x22, 0x89, 0x37, 0xec, 0x39, 0x13, - 0xba, 0x0a, 0x21, 0x80, 0x42, 0xb9, 0xca, 0x2b, 0x47, 0xa1, 0xad, 0x28, 0x14, 0x8a, 0x80, 0xbb, - 0x50, 0x82, 0x39, 0xc9, 0x8b, 0x64, 0x91, 0x9a, 0x09, 0x02, 0xb8, 0x70, 0xa8, 0x18, 0x04, 0xbc, - 0x28, 0x21, 0x82, 0x10, 0x8a, 0xc8, 0x31, 0xbf, 0x64, 0x81, 0xbd, 0x38, 0x82, 0x8b, 0x25, 0x98, - 0x91, 0xdf, 0x21, 0x02, 0xa8, 0x10, 0x9a, 0x12, 0x8b, 0x07, 0x9a, 0x11, 0x88, 0x88, 0x48, 0xe0, - 0x39, 0x05, 0x99, 0x99, 0xc8, 0x6a, 0x05, 0xaa, 0x28, 0xa2, 0x39, 0xe0, 0x28, 0xb1, 0x0d, 0x24, - 0xa0, 0x9c, 0x02, 0x29, 0x85, 0x90, 0x9d, 0x31, 0xb1, 0x8a, 0x53, 0x92, 0xab, 0x18, 0x01, 0xbe, - 0x73, 0xa1, 0x58, 0xc1, 0x9b, 0x33, 0xb0, 0x43, 0xda, 0x89, 0x00, 0xbb, 0x75, 0x81, 0xaa, 0x1a, - 0x82, 0x48, 0xd1, 0x29, 0x82, 0x80, 0xca, 0x20, 0x02, 0x81, 0x8f, 0x83, 0xad, 0x62, 0x91, 0x09, - 0x92, 0x9d, 0x34, 0xb9, 0x18, 0xb0, 0x1b, 0x57, 0xa9, 0x09, 0x80, 0x18, 0xb0, 0x30, 0x84, 0xbd, - 0x30, 0x22, 0xa3, 0x9f, 0x90, 0x30, 0xc1, 0x2a, 0x85, 0x09, 0x08, 0xb3, 0x1c, 0xe1, 0x29, 0x15, - 0xa1, 0xad, 0x22, 0x4b, 0x07, 0xab, 0x98, 0x11, 0x11, 0x10, 0x98, 0xca, 0x1b, 0x37, 0x88, 0xba, - 0x9a, 0x61, 0x84, 0xba, 0x0a, 0x33, 0x98, 0x41, 0xfb, 0x1b, 0x22, 0x21, 0x93, 0xad, 0x0c, 0x25, - 0x89, 0x82, 0xba, 0x9b, 0x47, 0x99, 0x90, 0x2b, 0x07, 0x8c, 0x00, 0x02, 0x8c, 0x13, 0x09, 0xa0, - 0x1c, 0x03, 0x80, 0xad, 0x22, 0xc9, 0x51, 0x88, 0x98, 0x39, 0xfb, 0x51, 0x00, 0x90, 0x0a, 0xd9, - 0x28, 0x00, 0x47, 0xaa, 0xba, 0x68, 0x82, 0x08, 0x80, 0xba, 0x58, 0x80, 0x88, 0x21, 0x29, 0xf3, - 0x8c, 0x82, 0x2b, 0x06, 0x89, 0x98, 0x88, 0x8a, 0x37, 0xb0, 0xbd, 0x38, 0x17, 0xa0, 0x8b, 0x11, - 0x0a, 0x04, 0x1a, 0xc1, 0x0a, 0x01, 0x30, 0x93, 0xcc, 0x61, 0xa0, 0x08, 0xaa, 0x42, 0x29, 0x97, - 0x0c, 0xb0, 0x78, 0xc2, 0x1a, 0x02, 0x89, 0x0a, 0x81, 0x59, 0xb2, 0x2b, 0x13, 0xc9, 0xac, 0x71, - 0x83, 0xba, 0xab, 0x74, 0x90, 0x80, 0x9a, 0x22, 0x08, 0x98, 0x99, 0x38, 0x16, 0xa8, 0xce, 0x48, - 0x92, 0x30, 0x90, 0xeb, 0x19, 0x11, 0x45, 0xc0, 0x8c, 0x08, 0x24, 0xa8, 0xba, 0x71, 0xb1, 0x09, - 0x81, 0x10, 0x88, 0x11, 0xc8, 0xab, 0x22, 0x51, 0x05, 0xad, 0x89, 0x50, 0x02, 0xcb, 0x28, 0x91, - 0x40, 0xa1, 0xa8, 0x1b, 0x86, 0x9b, 0x25, 0xaa, 0x99, 0x54, 0xa8, 0x88, 0x09, 0x2a, 0x37, 0xbf, - 0x11, 0x31, 0xd1, 0x19, 0x88, 0x82, 0x0b, 0x04, 0x9a, 0x18, 0x22, 0x9a, 0xa2, 0x9f, 0x17, 0x9b, - 0x11, 0x80, 0xa9, 0x30, 0x14, 0xdc, 0x30, 0x9a, 0x46, 0xea, 0x10, 0x81, 0x81, 0x9a, 0x80, 0x19, - 0x04, 0x18, 0xd1, 0x8d, 0x32, 0x91, 0x88, 0xdb, 0x49, 0x07, 0x9a, 0x00, 0x09, 0x88, 0x42, 0xc8, - 0x31, 0xcd, 0x43, 0x90, 0xc9, 0x49, 0x82, 0x98, 0x89, 0xb9, 0x71, 0x95, 0x8a, 0xb8, 0x40, 0x80, - 0x11, 0x81, 0xcc, 0x39, 0x03, 0x88, 0xab, 0x10, 0x62, 0xe1, 0x0b, 0x14, 0x00, 0x90, 0xab, 0x08, - 0x81, 0x62, 0x02, 0xfb, 0x2a, 0x13, 0x08, 0xb1, 0x9f, 0x61, 0x92, 0x9a, 0x98, 0x28, 0x22, 0x90, - 0x9d, 0x92, 0x5b, 0xa3, 0x9e, 0x33, 0xa8, 0x38, 0xb3, 0x9c, 0x0b, 0x14, 0x78, 0x86, 0xaf, 0x31, - 0x81, 0x9a, 0x01, 0x0a, 0x22, 0xa0, 0x9b, 0x30, 0x98, 0x43, 0x08, 0xd1, 0x9f, 0x12, 0x31, 0x83, - 0xbf, 0x39, 0x04, 0xa8, 0xaa, 0x63, 0xb1, 0x0a, 0x08, 0x24, 0xcb, 0x0a, 0x44, 0xb0, 0x8d, 0x23, - 0x98, 0x80, 0xac, 0x62, 0x92, 0x9b, 0x00, 0x42, 0xe0, 0x0c, 0x13, 0x30, 0xc9, 0x09, 0x8b, 0x44, - 0x82, 0xc9, 0x0a, 0x90, 0x71, 0xa2, 0x99, 0x29, 0xf9, 0x78, 0xa2, 0x9b, 0x28, 0x23, 0x91, 0xbb, - 0xac, 0x71, 0xa3, 0x1c, 0x93, 0x8b, 0x21, 0x12, 0xca, 0x9a, 0x68, 0x84, 0x89, 0xc9, 0x28, 0x10, - 0x17, 0xbb, 0x29, 0x80, 0x10, 0x13, 0x9e, 0x11, 0x3a, 0xa4, 0x89, 0xcd, 0x31, 0x20, 0x05, 0xdb, - 0x09, 0x10, 0x21, 0x00, 0xba, 0x80, 0x31, 0xda, 0x08, 0x10, 0x61, 0x83, 0xaa, 0xce, 0x68, 0xa2, - 0x6b, 0xa3, 0x0b, 0xab, 0x17, 0x99, 0x10, 0x11, 0xb9, 0x0b, 0xa8, 0x62, 0x31, 0xe9, 0x39, 0xa1, - 0x99, 0x0b, 0x22, 0x36, 0xb8, 0x9b, 0xd9, 0x69, 0x81, 0x24, 0xbb, 0xc9, 0x3a, 0x17, 0xa8, 0x89, - 0x20, 0x81, 0x21, 0xfc, 0x30, 0xd1, 0x58, 0xa2, 0x8d, 0x01, 0x00, 0x19, 0x02, 0x8b, 0xa9, 0x52, - 0xa9, 0x91, 0x3b, 0x07, 0x9a, 0x93, 0x2d, 0xb2, 0x4b, 0x82, 0x80, 0x11, 0xbf, 0x33, 0x9b, 0x14, - 0x1a, 0xc3, 0x0d, 0x11, 0x12, 0xbc, 0x33, 0x9c, 0x24, 0xd9, 0x8b, 0x73, 0xa1, 0x29, 0xa0, 0xaa, - 0x08, 0x45, 0xb8, 0x28, 0xf0, 0x29, 0x80, 0x04, 0xac, 0x21, 0x01, 0x89, 0x91, 0xac, 0x42, 0x03, - 0x9b, 0x27, 0xbf, 0x41, 0x91, 0x89, 0x00, 0x8b, 0x26, 0xca, 0x10, 0x81, 0x80, 0x38, 0xf2, 0x1d, - 0x82, 0x18, 0x21, 0xd9, 0x1b, 0x02, 0x21, 0xd0, 0x1a, 0x12, 0xd0, 0x49, 0x92, 0x09, 0xa8, 0x8a, - 0x25, 0x98, 0x89, 0x91, 0x0a, 0x47, 0xc0, 0x0a, 0x11, 0xba, 0x73, 0xa9, 0x00, 0x9b, 0x36, 0x80, - 0xfa, 0x2a, 0x85, 0x29, 0xd8, 0x18, 0x10, 0x80, 0x20, 0xf2, 0x0c, 0x03, 0x00, 0x19, 0xe0, 0x2c, - 0x15, 0x98, 0x99, 0x10, 0x9a, 0x34, 0x8a, 0xa8, 0x11, 0x8a, 0x32, 0xb9, 0x34, 0xff, 0x21, 0x01, - 0xa8, 0x8a, 0x31, 0x84, 0xb8, 0x9e, 0x23, 0x98, 0x08, 0x18, 0x13, 0xcf, 0x50, 0x81, 0xaa, 0x09, - 0x35, 0xa8, 0xb8, 0x2b, 0xa0, 0x67, 0xb0, 0x9b, 0x21, 0x93, 0x0b, 0x14, 0x99, 0xfa, 0x30, 0x80, - 0x13, 0xbc, 0x81, 0x43, 0xcd, 0x21, 0x11, 0xa2, 0x9f, 0x02, 0x21, 0xe9, 0x28, 0x82, 0x98, 0x8a, - 0x10, 0x33, 0xb0, 0x0b, 0xfa, 0x20, 0x18, 0x16, 0xab, 0x99, 0x29, 0x13, 0x52, 0xc8, 0xda, 0x6b, - 0x16, 0xca, 0x28, 0x91, 0x00, 0x09, 0x90, 0x0a, 0x03, 0x8a, 0x34, 0xd8, 0x8d, 0x22, 0x21, 0xe9, - 0x30, 0xa8, 0x98, 0x29, 0xa4, 0x4a, 0xd0, 0x40, 0xd9, 0x31, 0xa0, 0x08, 0x10, 0xa1, 0x0a, 0x38, - 0x27, 0xaf, 0x22, 0xaa, 0x30, 0xb3, 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x11, 0xcb, 0x99, 0x53, 0x98, - 0xa2, 0x69, 0xda, 0x20, 0x80, 0x32, 0xf9, 0x1a, 0x01, 0x02, 0x89, 0x92, 0x9b, 0x68, 0xc1, 0x22, - 0xaf, 0x32, 0x01, 0xbb, 0x01, 0x28, 0x25, 0xfa, 0x0a, 0x11, 0x43, 0xa9, 0x88, 0xfb, 0x58, 0x12, - 0xb0, 0x8e, 0x02, 0x8b, 0x34, 0x9a, 0xa0, 0x30, 0xc2, 0x0c, 0x90, 0x72, 0x80, 0x90, 0x9a, 0x09, - 0x34, 0x90, 0xdb, 0x38, 0x82, 0x19, 0xb3, 0xbf, 0x54, 0x82, 0xba, 0x0b, 0x23, 0x8d, 0x25, 0xa8, - 0xaa, 0x18, 0x92, 0x00, 0x5b, 0xd1, 0x58, 0xa1, 0xab, 0x40, 0x93, 0x3c, 0xa3, 0xb9, 0x9f, 0x16, - 0x19, 0xb0, 0x38, 0xc0, 0x51, 0xb8, 0x08, 0x90, 0x21, 0xa8, 0x01, 0x98, 0x0d, 0xa1, 0x64, 0xb9, - 0x09, 0xaa, 0x33, 0x59, 0x87, 0x0c, 0x93, 0x9e, 0x20, 0x13, 0x88, 0xbc, 0x28, 0x03, 0x41, 0xe1, - 0x8b, 0x10, 0x22, 0x91, 0x8a, 0x88, 0x01, 0x8a, 0x83, 0xbb, 0x79, 0xa4, 0x61, 0xfb, 0x29, 0x34, - 0xa0, 0xdc, 0x09, 0x33, 0x01, 0xa9, 0x81, 0x9e, 0x32, 0x00, 0xa9, 0x29, 0xc8, 0x27, 0x9a, 0xf9, - 0x69, 0x93, 0x8b, 0x89, 0x21, 0x81, 0x12, 0xba, 0xba, 0x73, 0xc1, 0x29, 0xb1, 0x88, 0x18, 0x26, - 0xa9, 0xcc, 0x61, 0x82, 0xa9, 0x88, 0x0a, 0x25, 0x98, 0x09, 0xa9, 0xcb, 0x70, 0x83, 0xab, 0x29, - 0x04, 0x9a, 0x42, 0xb1, 0x0d, 0x22, 0xb9, 0x99, 0x48, 0x86, 0x2a, 0xb0, 0xaa, 0x78, 0xa3, 0x19, - 0x8a, 0x07, 0xab, 0x10, 0x03, 0xad, 0x32, 0xc1, 0x0a, 0x1a, 0x36, 0xa0, 0xab, 0x0c, 0x07, 0x19, - 0xd1, 0x1b, 0x24, 0x90, 0x99, 0x90, 0x9e, 0x43, 0x83, 0x19, 0xf9, 0x4a, 0x90, 0x11, 0x89, 0xa0, - 0x29, 0x05, 0xcc, 0x50, 0x81, 0x9b, 0x23, 0xba, 0x80, 0x71, 0xc1, 0x08, 0xa9, 0x32, 0xa2, 0x0c, - 0xb3, 0x6a, 0x92, 0x8d, 0x12, 0x08, 0xb8, 0x28, 0x91, 0x8c, 0x17, 0x8c, 0x92, 0x4a, 0x91, 0x31, - 0xbc, 0x21, 0x19, 0x84, 0x8f, 0x02, 0x9a, 0x48, 0x85, 0xbc, 0x38, 0x82, 0x20, 0xaa, 0x81, 0xac, - 0x27, 0xba, 0x53, 0xca, 0x00, 0x39, 0x93, 0xcd, 0x68, 0x83, 0xab, 0x32, 0xda, 0x30, 0x83, 0xbd, - 0x52, 0xb8, 0x18, 0x02, 0x89, 0x98, 0xa8, 0x79, 0x94, 0xad, 0x50, 0x92, 0x89, 0xa0, 0x10, 0xa9, - 0x81, 0x5b, 0x05, 0x8a, 0x89, 0x11, 0x92, 0x8f, 0x14, 0x98, 0xbb, 0x33, 0x80, 0x17, 0xad, 0x21, - 0x80, 0xba, 0x51, 0x90, 0x20, 0xb9, 0x18, 0xa1, 0x1d, 0x85, 0x88, 0x8b, 0x10, 0x32, 0xad, 0x37, - 0xbb, 0x89, 0x44, 0xb1, 0x9d, 0x42, 0x90, 0x9a, 0x80, 0x38, 0x26, 0xd9, 0x9c, 0x32, 0x89, 0x24, - 0x98, 0xb9, 0x89, 0x19, 0x21, 0x27, 0xaf, 0x22, 0x81, 0xdb, 0x28, 0x82, 0x63, 0xd9, 0x09, 0x10, - 0x00, 0x01, 0x09, 0x80, 0xfa, 0x5a, 0x83, 0x99, 0x9b, 0x44, 0xb0, 0xa9, 0x38, 0x84, 0xa9, 0x41, - 0xb1, 0x19, 0xec, 0x38, 0x04, 0x08, 0xb1, 0x8a, 0xaa, 0x71, 0x95, 0x1b, 0x81, 0xbb, 0x30, 0x72, - 0xc0, 0x89, 0x28, 0x04, 0xa9, 0x88, 0xaa, 0x72, 0x95, 0x0a, 0xca, 0x51, 0x91, 0x89, 0x00, 0xb1, - 0x1b, 0x25, 0xc2, 0x8f, 0x10, 0x31, 0x81, 0xbc, 0x9a, 0x73, 0x91, 0x8a, 0x94, 0x8c, 0x33, 0x99, - 0xa1, 0x9c, 0x51, 0x93, 0x08, 0xdb, 0x10, 0x42, 0xb1, 0x89, 0x8a, 0xc8, 0x71, 0x98, 0x20, 0xb1, - 0x0b, 0x83, 0xeb, 0x4a, 0x06, 0x8b, 0x32, 0xfa, 0x19, 0x22, 0xa9, 0x48, 0xa1, 0x0b, 0x18, 0x14, - 0xa2, 0x8f, 0x05, 0xcb, 0x51, 0xa0, 0x09, 0x80, 0x80, 0x53, 0xd0, 0x9b, 0x33, 0xa0, 0x28, 0xb3, - 0x8f, 0x81, 0x2a, 0x06, 0x99, 0x88, 0xa0, 0x30, 0xa4, 0xaf, 0x23, 0x13, 0xaa, 0xa1, 0x9d, 0x53, - 0xb8, 0x10, 0x90, 0x9a, 0x36, 0x9a, 0x83, 0xea, 0x3b, 0x06, 0x9a, 0x01, 0xd9, 0x50, 0x81, 0xa8, - 0x1a, 0x90, 0x10, 0x81, 0x71, 0xe3, 0x0b, 0x11, 0x11, 0xa9, 0x9a, 0x45, 0xd8, 0x08, 0x08, 0x04, - 0x8a, 0x92, 0x9b, 0x36, 0xea, 0x09, 0x23, 0xa9, 0x11, 0x09, 0xa8, 0x1a, 0xa0, 0x65, 0x90, 0xa0, - 0x9e, 0x33, 0x81, 0xab, 0x51, 0xc2, 0x9c, 0x28, 0x24, 0x12, 0xfd, 0x28, 0x92, 0x19, 0x99, 0x31, - 0xaa, 0x13, 0x8b, 0x98, 0x20, 0x44, 0xfb, 0x59, 0x81, 0xab, 0x42, 0x80, 0xb9, 0x0b, 0x24, 0x44, - 0xec, 0x28, 0x02, 0xa0, 0xaa, 0x32, 0x01, 0xbf, 0x45, 0xa9, 0x09, 0x80, 0x88, 0x41, 0xa1, 0xaa, - 0x10, 0xc1, 0x48, 0x04, 0xaa, 0x19, 0xb9, 0x4a, 0x37, 0xaa, 0xb9, 0x40, 0x14, 0xac, 0x20, 0x32, - 0xf9, 0x0b, 0x21, 0x02, 0x98, 0x8b, 0x06, 0xcb, 0x38, 0x22, 0xa2, 0xcc, 0x1a, 0x44, 0xc0, 0x89, - 0x1a, 0x35, 0xa9, 0x98, 0xad, 0x43, 0x12, 0xb8, 0x4a, 0x93, 0xab, 0x8d, 0x17, 0xaa, 0x18, 0x11, - 0x33, 0xbf, 0x28, 0x12, 0x88, 0xb9, 0xac, 0x72, 0x93, 0x0b, 0x94, 0xad, 0x51, 0xa1, 0x09, 0x88, - 0x80, 0x21, 0x41, 0xd1, 0x8c, 0x80, 0x29, 0x15, 0x89, 0x9b, 0x25, 0xad, 0x20, 0x62, 0xc0, 0x9b, - 0x33, 0x98, 0x89, 0x14, 0x00, 0xcd, 0x00, 0x41, 0xa1, 0xac, 0x50, 0x82, 0xab, 0x10, 0x12, 0xa8, - 0x39, 0xc3, 0x0c, 0x13, 0x0c, 0x07, 0x9c, 0x33, 0x99, 0xa8, 0x90, 0x0f, 0x12, 0x24, 0xaa, 0xb9, - 0x8e, 0x23, 0x23, 0xda, 0x18, 0xa0, 0x29, 0x05, 0x8b, 0x94, 0x8c, 0x33, 0xfb, 0x5b, 0x13, 0x8a, - 0x88, 0x0a, 0x00, 0xd9, 0x71, 0xb3, 0x8c, 0x11, 0x81, 0x99, 0x9b, 0x72, 0x92, 0x1b, 0x91, 0x89, - 0x9e, 0x44, 0x81, 0xac, 0x20, 0x01, 0xc9, 0x58, 0xa2, 0x0c, 0x81, 0x22, 0xaa, 0x81, 0x3b, 0x17, - 0xbf, 0x32, 0x82, 0xb9, 0x0a, 0x22, 0x32, 0xf0, 0x3d, 0xa2, 0x8c, 0x42, 0x92, 0xab, 0xa8, 0x71, - 0x91, 0xaa, 0x1a, 0x43, 0x01, 0xa8, 0x8d, 0x01, 0x51, 0xb8, 0x18, 0x0a, 0x85, 0x2a, 0x86, 0xac, - 0x9b, 0x64, 0x92, 0xbb, 0x10, 0x20, 0x05, 0xac, 0x10, 0x80, 0x99, 0x28, 0x36, 0xea, 0x19, 0x13, - 0xda, 0x28, 0x92, 0x30, 0xd8, 0x8b, 0x53, 0x80, 0x88, 0xb1, 0x8f, 0x24, 0x98, 0x8b, 0x33, 0x8b, - 0x11, 0xc1, 0x0c, 0x14, 0xac, 0x33, 0xa0, 0xbd, 0x70, 0x82, 0x99, 0xbc, 0x62, 0x92, 0x89, 0xa8, - 0x38, 0x14, 0xac, 0x11, 0x10, 0xc9, 0x40, 0x81, 0xc8, 0x0d, 0x34, 0x90, 0xc8, 0x9a, 0x50, 0xa2, - 0x21, 0xbc, 0x11, 0x08, 0x90, 0x18, 0x90, 0x9a, 0x66, 0x90, 0xbc, 0x58, 0x12, 0xa9, 0x00, 0xaf, - 0x53, 0x91, 0x99, 0x88, 0xa9, 0x52, 0xa8, 0x22, 0x89, 0xc9, 0x50, 0xc1, 0x3a, 0x02, 0x00, 0xeb, - 0x30, 0xa9, 0x44, 0xb9, 0x1a, 0xa1, 0x30, 0x26, 0xeb, 0xab, 0x46, 0x91, 0xba, 0x29, 0x22, 0x90, - 0x10, 0xe0, 0x0d, 0x22, 0x11, 0xb0, 0x8e, 0x00, 0x42, 0xb1, 0x9d, 0x21, 0x81, 0x31, 0xe9, 0x99, - 0x29, 0x15, 0x01, 0xca, 0x0c, 0x03, 0x11, 0x89, 0x94, 0x0e, 0x83, 0x89, 0xa9, 0x32, 0xca, 0x53, - 0x88, 0xc8, 0x39, 0xb2, 0x2d, 0x06, 0x8c, 0x04, 0x9d, 0x11, 0x12, 0x8a, 0xc0, 0x1c, 0x14, 0x8a, - 0x81, 0x00, 0x9a, 0x24, 0x10, 0xd9, 0xab, 0x58, 0x16, 0xa9, 0x8a, 0x30, 0xb2, 0x61, 0xf9, 0x08, - 0x19, 0x33, 0x98, 0xda, 0x2b, 0x16, 0x08, 0xa9, 0x9a, 0x11, 0x44, 0xb2, 0x9e, 0x08, 0x12, 0x52, - 0xf9, 0x1a, 0x12, 0x00, 0x80, 0xbb, 0x00, 0x30, 0x27, 0xab, 0xcb, 0x31, 0x12, 0x81, 0xda, 0x1b, - 0x15, 0x21, 0xfb, 0x09, 0x31, 0x92, 0x9b, 0x12, 0x09, 0xd9, 0x61, 0x98, 0x83, 0x8f, 0x81, 0x38, - 0xb1, 0x5a, 0xb2, 0x09, 0x8a, 0x16, 0xba, 0x2c, 0x05, 0x1a, 0x92, 0x9b, 0x09, 0x35, 0x9a, 0x02, - 0xdc, 0x2a, 0x37, 0xb9, 0x1a, 0xa0, 0x21, 0x12, 0xb9, 0xaa, 0x9b, 0x14, 0x65, 0xe9, 0x18, 0x80, - 0x12, 0x9b, 0x10, 0x01, 0x99, 0x72, 0xf0, 0x28, 0x88, 0x80, 0x51, 0xe8, 0x19, 0x01, 0x18, 0x82, - 0xca, 0x39, 0x84, 0xab, 0x20, 0xb1, 0x61, 0xa8, 0x18, 0xbb, 0x23, 0x90, 0x71, 0x83, 0xbe, 0x20, - 0x82, 0x3a, 0x96, 0x9c, 0x11, 0x80, 0xaa, 0x33, 0xb8, 0x0b, 0x02, 0x98, 0x71, 0xf4, 0x4b, 0x83, - 0x8a, 0x80, 0xb9, 0x71, 0xa1, 0x09, 0x89, 0x03, 0x9a, 0x10, 0x96, 0x9f, 0x33, 0x81, 0x99, 0xcc, - 0x50, 0x02, 0xa8, 0x8b, 0x00, 0x12, 0x9b, 0x57, 0xcb, 0x11, 0x09, 0x02, 0x81, 0xae, 0x43, 0x99, - 0x18, 0x80, 0xa0, 0x3a, 0x92, 0x98, 0x59, 0xb1, 0x0c, 0x01, 0x12, 0x2b, 0x07, 0x8f, 0x12, 0xb9, - 0x9d, 0x44, 0x92, 0x9b, 0xa3, 0x9d, 0x22, 0x11, 0xa1, 0x18, 0xae, 0x35, 0xb9, 0x00, 0x13, 0x9d, - 0x01, 0x00, 0xb9, 0x32, 0x9b, 0x25, 0xbc, 0x51, 0xc0, 0x3b, 0xa1, 0x73, 0xc0, 0x1c, 0x04, 0xaa, - 0x39, 0x95, 0x9b, 0x12, 0x18, 0x91, 0x9a, 0x2a, 0x57, 0xc8, 0x0b, 0x13, 0x80, 0x29, 0xc3, 0x0f, - 0x11, 0x10, 0xa0, 0xab, 0x12, 0x39, 0x37, 0xfb, 0x28, 0x90, 0x01, 0x39, 0xe1, 0x1c, 0x04, 0x0a, - 0x01, 0x9a, 0x00, 0x00, 0x11, 0x91, 0x9a, 0x4a, 0x15, 0xea, 0x10, 0x21, 0xcb, 0x42, 0xd9, 0x29, - 0x83, 0x2b, 0xa2, 0x9d, 0x33, 0xaa, 0x14, 0x61, 0xe9, 0x89, 0x3a, 0x85, 0x89, 0x01, 0x89, 0xba, - 0x53, 0x09, 0x93, 0xcb, 0x39, 0x06, 0x09, 0xb0, 0x2a, 0xd9, 0x72, 0xb0, 0x10, 0xbb, 0x41, 0x92, - 0x1a, 0xd1, 0x0c, 0x36, 0xc8, 0x1a, 0xa1, 0x69, 0x83, 0x9d, 0x80, 0x10, 0x02, 0x01, 0xbb, 0x99, - 0x43, 0x28, 0xd2, 0x0e, 0x21, 0x80, 0x3a, 0xf3, 0x1c, 0x14, 0x99, 0x88, 0x99, 0x39, 0x03, 0x20, - 0xcc, 0x29, 0x93, 0x9b, 0xb2, 0x32, 0x1b, 0x17, 0xac, 0x10, 0x10, 0x01, 0x98, 0x9b, 0x00, 0x29, - 0x12, 0x99, 0x29, 0x11, 0xb1, 0xab, 0x31, 0x91, 0x51, 0xc1, 0x3a, 0xf0, 0x38, 0xa2, 0x0a, 0x10, - 0x02, 0x99, 0xab, 0x31, 0xa9, 0x33, 0x91, 0x9c, 0x99, 0x53, 0x81, 0x09, 0xdb, 0x31, 0x99, 0x11, - 0x33, 0xa9, 0xb9, 0x31, 0xb1, 0x2c, 0x03, 0x9b, 0x01, 0x9a, 0x29, 0x91, 0x31, 0xa1, 0x9b, 0x30, - 0x21, 0xa0, 0x9b, 0x31, 0xa1, 0x19, 0x99, 0x92, 0x99, 0x31, 0xb1, 0x1b, 0x21, 0x11, 0xaa, 0x29, - 0x11, 0x00, 0x11, 0xa9, 0x1b, 0x12, 0x00, 0x92, 0xaa, 0x29, 0x13, 0xa9, 0x10, 0x99, 0x11, 0x01, - 0x90, 0xa9, 0x21, 0x11, 0x90, 0xa9, 0x19, 0x21, 0x90, 0x99, 0x11, 0x90, 0x19, 0x01, 0x09, 0x19, - 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x70, 0xff, 0x71, 0x77, 0xb1, 0x22, 0xbc, 0xe9, - 0x39, 0x13, 0x18, 0xfc, 0x1a, 0x98, 0x42, 0x14, 0x99, 0xc9, 0x39, 0x21, 0x92, 0x37, 0xcb, 0xba, - 0x20, 0x28, 0xd4, 0x49, 0xa1, 0x09, 0x99, 0x42, 0x01, 0xc9, 0x59, 0x83, 0x9a, 0x19, 0xbb, 0x12, - 0x20, 0x9c, 0x01, 0x27, 0x8f, 0xb2, 0x31, 0xba, 0xb2, 0x79, 0x84, 0x2a, 0xb2, 0x9e, 0x20, 0x00, - 0x02, 0xcb, 0x21, 0xb9, 0x29, 0x37, 0x8b, 0xb0, 0x98, 0x70, 0x90, 0x93, 0x0e, 0x10, 0x83, 0x48, - 0xc2, 0x9c, 0xbb, 0x20, 0x25, 0xa0, 0x1b, 0xf8, 0x60, 0x82, 0x0a, 0x90, 0x31, 0x8a, 0xe3, 0x3a, - 0xeb, 0x20, 0x23, 0x98, 0x90, 0x09, 0x88, 0xab, 0xc2, 0x0b, 0x88, 0x77, 0x91, 0xa0, 0x51, 0xd9, - 0x1a, 0x82, 0x29, 0xb1, 0x30, 0x22, 0xf8, 0x29, 0xa9, 0x90, 0x09, 0x89, 0x04, 0xaf, 0x73, 0x92, - 0x28, 0x88, 0xb0, 0x0d, 0x00, 0x02, 0x0c, 0x34, 0xa8, 0xeb, 0x11, 0x0d, 0xc2, 0x19, 0x39, 0x87, - 0x00, 0x88, 0x90, 0x32, 0x90, 0xec, 0x19, 0x01, 0x9a, 0x80, 0x08, 0x73, 0x81, 0x18, 0x82, 0x29, - 0xf2, 0x8f, 0xa1, 0x39, 0x12, 0x90, 0x41, 0x90, 0xfa, 0x00, 0x38, 0x95, 0x09, 0xc0, 0x0c, 0x92, - 0x18, 0x01, 0x01, 0x3a, 0xa5, 0x4a, 0xb8, 0x28, 0x32, 0x28, 0xfc, 0x9b, 0x1b, 0x45, 0x91, 0x08, - 0xba, 0x38, 0xa8, 0x37, 0xaa, 0x21, 0x81, 0x0d, 0xf8, 0x4c, 0x08, 0x04, 0x89, 0xa8, 0x8a, 0x11, - 0x42, 0x51, 0xb0, 0xab, 0x12, 0x0e, 0xb8, 0x60, 0x88, 0x00, 0x2b, 0xa3, 0x0d, 0x24, 0x9b, 0x10, - 0x03, 0x9c, 0x21, 0xf9, 0x20, 0xac, 0x27, 0x1b, 0xa2, 0xa9, 0x98, 0x4b, 0x05, 0x32, 0xbd, 0x03, - 0xca, 0x9a, 0x61, 0x81, 0x00, 0x9b, 0x21, 0xb0, 0x63, 0xaa, 0xa1, 0x73, 0xd8, 0x11, 0x8b, 0x32, - 0xf8, 0x2a, 0x91, 0xab, 0x26, 0x89, 0x62, 0xc8, 0x20, 0xba, 0x31, 0x81, 0x88, 0x10, 0xde, 0x41, - 0xa9, 0x12, 0x9a, 0x10, 0x01, 0x9a, 0x93, 0x4c, 0x34, 0xfc, 0x32, 0xab, 0x91, 0x42, 0x89, 0xa0, - 0x31, 0xba, 0xac, 0x81, 0x29, 0x11, 0x88, 0x27, 0x0c, 0xab, 0x17, 0x22, 0xaa, 0x38, 0xb6, 0x1f, - 0xa2, 0x89, 0x98, 0x19, 0x25, 0xc9, 0x59, 0xb8, 0x18, 0x45, 0x89, 0xb1, 0x2c, 0x01, 0xd9, 0x3b, - 0x03, 0x29, 0xf0, 0x2a, 0x12, 0x90, 0x31, 0xb1, 0xad, 0x11, 0x24, 0xc9, 0x4a, 0xf3, 0x2b, 0x80, - 0x84, 0x3d, 0xb2, 0x18, 0xb8, 0x18, 0x20, 0x21, 0x88, 0x29, 0xa4, 0xfa, 0x2f, 0xa3, 0x20, 0x18, - 0xf2, 0x1c, 0x82, 0x19, 0x81, 0x09, 0x31, 0xf0, 0x3a, 0x03, 0xcb, 0x62, 0xa8, 0x98, 0x00, 0x08, - 0xa0, 0x0e, 0x06, 0x9a, 0x31, 0xd3, 0x2a, 0x82, 0x9a, 0x14, 0x9f, 0x12, 0x10, 0x0c, 0x83, 0xb8, - 0x2a, 0x88, 0x86, 0x1a, 0x8c, 0x85, 0x1c, 0x03, 0x88, 0xa9, 0x30, 0xa9, 0x42, 0xf8, 0x50, 0xba, - 0x11, 0x41, 0xca, 0x01, 0x80, 0x1d, 0xb3, 0x71, 0xb8, 0x01, 0x3a, 0xc1, 0x19, 0xd3, 0x59, 0xa8, - 0x12, 0x00, 0xbc, 0x29, 0x96, 0x3c, 0x93, 0x8a, 0x81, 0x98, 0x60, 0xd0, 0x10, 0x18, 0xc8, 0x33, - 0xaf, 0x11, 0x88, 0x20, 0x80, 0x8c, 0x17, 0x09, 0x90, 0x89, 0x09, 0x83, 0x8d, 0x12, 0x0a, 0x84, - 0x88, 0x8b, 0xba, 0x14, 0x54, 0xba, 0x16, 0x8e, 0xa8, 0x23, 0x28, 0x81, 0xa9, 0x13, 0xab, 0x9f, - 0x17, 0x99, 0x0a, 0x92, 0x80, 0x09, 0x80, 0x81, 0xad, 0x63, 0x00, 0x33, 0xd9, 0x31, 0xbb, 0x08, - 0xab, 0xbd, 0x20, 0x15, 0x19, 0x8d, 0x06, 0x10, 0x8a, 0x91, 0x72, 0xc8, 0x20, 0xd9, 0x1a, 0x03, - 0x2b, 0xa5, 0x89, 0x30, 0xfa, 0x20, 0x01, 0x2c, 0x87, 0x8a, 0x12, 0xad, 0x83, 0x39, 0xb9, 0x95, - 0x1a, 0xa2, 0x10, 0xad, 0x14, 0x28, 0x19, 0xc3, 0x59, 0xb9, 0x10, 0x02, 0xad, 0x26, 0xbc, 0x23, - 0x9c, 0x10, 0xc4, 0x4b, 0x93, 0x1a, 0x58, 0xf2, 0x38, 0xc8, 0x10, 0x80, 0x09, 0x10, 0xc1, 0x59, - 0xb8, 0x10, 0x93, 0x2a, 0x9a, 0xd3, 0x70, 0x98, 0x80, 0x22, 0xad, 0x00, 0x81, 0x00, 0x10, 0xad, - 0x85, 0x2c, 0xa3, 0x80, 0x1b, 0x14, 0x81, 0xac, 0x29, 0x86, 0x0c, 0x92, 0x30, 0xe9, 0x10, 0x9b, - 0x05, 0x59, 0xc8, 0x93, 0x1d, 0x21, 0xc3, 0x09, 0x31, 0xcc, 0x12, 0xaa, 0x48, 0xd1, 0x31, 0x90, - 0x99, 0x00, 0xad, 0x26, 0x08, 0x0b, 0x86, 0x1c, 0xa2, 0x00, 0x8b, 0x90, 0x68, 0xa2, 0x1b, 0x99, - 0x85, 0x1e, 0x94, 0x98, 0x20, 0x92, 0x18, 0xfb, 0x30, 0xb3, 0x4c, 0xd1, 0x18, 0x18, 0xb0, 0x40, - 0xd2, 0x4b, 0xb1, 0x01, 0x3a, 0x94, 0x39, 0xfb, 0x41, 0xc0, 0x29, 0xa0, 0x20, 0x8a, 0x91, 0x72, - 0xb8, 0x9a, 0x15, 0x0a, 0xa2, 0x22, 0xc9, 0x5b, 0xb8, 0x02, 0x0f, 0x96, 0x39, 0xd0, 0x10, 0x8a, - 0x03, 0x0a, 0x84, 0x1d, 0xa1, 0x22, 0xab, 0x02, 0x9c, 0x14, 0x29, 0xf1, 0x08, 0x10, 0x88, 0x22, - 0xcb, 0x21, 0x3a, 0xf3, 0x5a, 0xa1, 0x89, 0x99, 0x05, 0x0d, 0x86, 0x1a, 0x90, 0x82, 0x9b, 0x05, - 0x0d, 0xb3, 0x59, 0x90, 0x80, 0x29, 0xf0, 0x38, 0x81, 0x89, 0x93, 0x0d, 0x38, 0xc1, 0x30, 0x98, - 0x89, 0x0a, 0xa4, 0x4a, 0xd0, 0x73, 0xa9, 0xa2, 0x59, 0xc0, 0x22, 0x9c, 0x92, 0x20, 0xac, 0x05, - 0x9a, 0x30, 0xa0, 0xa2, 0x7a, 0xb0, 0x31, 0xbc, 0x26, 0x9a, 0x91, 0x19, 0xaa, 0x16, 0x8d, 0x04, - 0x8b, 0x28, 0x82, 0x0b, 0x23, 0xab, 0x05, 0x1e, 0x92, 0x08, 0x09, 0xb1, 0x08, 0x9e, 0x44, 0x08, - 0xf1, 0x29, 0x98, 0x12, 0x4b, 0x96, 0x8c, 0x01, 0x01, 0x8b, 0x92, 0x0c, 0x86, 0x8b, 0x04, 0x09, - 0x98, 0x15, 0x8d, 0xa3, 0x3b, 0xa3, 0x1c, 0x81, 0x94, 0x2b, 0xb2, 0x38, 0xa8, 0xbd, 0x43, 0x22, - 0xaf, 0x24, 0x0a, 0xa8, 0x92, 0x3b, 0xfa, 0x61, 0x10, 0xc9, 0x40, 0xb9, 0x30, 0xb9, 0x03, 0x38, - 0xed, 0x42, 0xa9, 0x10, 0x82, 0x0c, 0x83, 0x89, 0x40, 0xea, 0x21, 0x88, 0x99, 0x12, 0x8a, 0x50, - 0xc1, 0x19, 0x10, 0xbe, 0x44, 0x9a, 0x02, 0x10, 0x9a, 0x10, 0xf8, 0x50, 0xa8, 0x12, 0x8b, 0xb1, - 0x49, 0xa9, 0x17, 0xbb, 0x52, 0x8b, 0xa1, 0x53, 0xac, 0x14, 0xa9, 0x28, 0xa1, 0x09, 0x00, 0xb8, - 0x55, 0xac, 0x93, 0x20, 0x0c, 0x86, 0x8b, 0x12, 0xab, 0x21, 0x96, 0x0f, 0x13, 0x9a, 0x28, 0xa1, - 0x19, 0x18, 0xc9, 0x22, 0x2f, 0xa3, 0x18, 0x8d, 0xa3, 0x79, 0xa0, 0x81, 0x89, 0x00, 0x0a, 0x96, - 0x5a, 0xc9, 0x21, 0x09, 0x93, 0xaa, 0x01, 0x1b, 0xb3, 0x74, 0xaa, 0x93, 0x3c, 0xd2, 0x20, 0x80, - 0x8e, 0x21, 0xc1, 0x48, 0xa0, 0x90, 0x58, 0xda, 0x12, 0x10, 0x80, 0x08, 0xf0, 0x3a, 0xb2, 0x31, - 0xab, 0x87, 0x1c, 0xb0, 0x23, 0xab, 0x24, 0x02, 0xca, 0x59, 0xe0, 0x18, 0x08, 0x91, 0x21, 0x9c, - 0x23, 0xca, 0x38, 0x14, 0x99, 0x90, 0xbb, 0x27, 0xaf, 0x84, 0x19, 0x00, 0x00, 0x89, 0x15, 0xac, - 0x02, 0x09, 0x90, 0x35, 0xcd, 0x11, 0x08, 0x89, 0x28, 0xb2, 0x34, 0xbf, 0x86, 0x0a, 0x40, 0xd1, - 0x39, 0x90, 0xa9, 0x24, 0xba, 0x30, 0xa8, 0x50, 0xa8, 0x81, 0xaa, 0x81, 0x78, 0xc2, 0x31, 0xea, - 0x20, 0x09, 0xe2, 0x58, 0x98, 0x08, 0x00, 0x08, 0x1a, 0x82, 0x8f, 0x15, 0x8b, 0x82, 0x89, 0x18, - 0xc0, 0x49, 0xc4, 0x4b, 0xa4, 0x8a, 0x03, 0xaa, 0x42, 0xb1, 0x2c, 0xa5, 0x0b, 0x81, 0x81, 0x98, - 0x20, 0x3a, 0xf9, 0x21, 0x8a, 0x12, 0x10, 0x22, 0xab, 0x87, 0xaf, 0x28, 0x95, 0x0d, 0x86, 0x8b, - 0x12, 0x80, 0x1b, 0xb5, 0x29, 0x00, 0xb8, 0x52, 0xbc, 0x15, 0xab, 0x41, 0xb8, 0x3a, 0x85, 0x9c, - 0x14, 0xa9, 0x31, 0xc0, 0x08, 0x89, 0x14, 0xc0, 0x4a, 0xb1, 0x1a, 0x12, 0x9a, 0x94, 0x1d, 0x80, - 0x23, 0xa9, 0xaa, 0x47, 0xf8, 0x58, 0xa1, 0x9a, 0x21, 0xc8, 0x31, 0x8b, 0x93, 0x20, 0x9e, 0x82, - 0x40, 0x8a, 0x81, 0x11, 0xfc, 0x41, 0xa8, 0x28, 0x90, 0x92, 0x2d, 0x29, 0xb3, 0x1a, 0x87, 0x8d, - 0x84, 0x0c, 0x82, 0x91, 0x0b, 0x86, 0x1b, 0x92, 0x21, 0xb8, 0x2e, 0x95, 0x0a, 0x00, 0xa0, 0x1c, - 0xa4, 0x3a, 0x82, 0xb0, 0x5a, 0x94, 0x0b, 0x10, 0xc3, 0x5b, 0xa0, 0xb2, 0x1e, 0x10, 0x06, 0x8d, - 0x02, 0x8a, 0x91, 0x31, 0x9c, 0x04, 0x0a, 0x11, 0xdb, 0x00, 0x61, 0xd0, 0x39, 0xa2, 0x90, 0x3d, - 0xa5, 0x3b, 0x98, 0x11, 0xa8, 0x39, 0x10, 0xc5, 0x2d, 0xb1, 0x31, 0xb9, 0x59, 0xc4, 0x1a, 0x21, - 0xc1, 0x1a, 0x88, 0x02, 0x90, 0x7c, 0xa4, 0x9a, 0x28, 0x8b, 0x86, 0x99, 0x41, 0xb8, 0x0a, 0x17, - 0x8b, 0x80, 0x11, 0xba, 0x4a, 0xb3, 0x3a, 0x18, 0xc3, 0x41, 0xa8, 0x49, 0xf2, 0x2c, 0x84, 0x9a, - 0x91, 0x2c, 0x41, 0xe2, 0x58, 0xb8, 0x19, 0x01, 0x90, 0x91, 0x4c, 0x91, 0xb1, 0x5a, 0xa0, 0x20, - 0xc3, 0x5b, 0xb8, 0x18, 0x21, 0xac, 0x02, 0x90, 0x54, 0xbc, 0x15, 0xba, 0x39, 0xb1, 0x16, 0x1a, - 0xbb, 0x17, 0xab, 0x34, 0xac, 0x10, 0x00, 0x38, 0xf8, 0x19, 0x32, 0xca, 0x32, 0xe9, 0x20, 0xa2, - 0x1b, 0xa2, 0x19, 0x53, 0xc9, 0x81, 0x1c, 0x10, 0x90, 0x16, 0x9d, 0x81, 0x88, 0x08, 0x11, 0x08, - 0x85, 0x4a, 0xc3, 0x9e, 0x22, 0xaa, 0x34, 0xa8, 0x0a, 0xb9, 0x28, 0x95, 0x2c, 0x24, 0xd8, 0x48, - 0xcb, 0x15, 0x1b, 0x91, 0x80, 0xb9, 0x78, 0xb1, 0x01, 0x18, 0xc1, 0x2c, 0xc2, 0x11, 0x1c, 0xa2, - 0x71, 0xd0, 0x40, 0xa9, 0x80, 0x11, 0x0c, 0x12, 0xd9, 0x41, 0xba, 0x11, 0x01, 0x1b, 0xa6, 0x29, - 0x81, 0x9f, 0x13, 0x00, 0x09, 0xa3, 0x0c, 0xf1, 0x48, 0x08, 0xa8, 0x21, 0xab, 0x22, 0xc8, 0x33, - 0x9b, 0x21, 0x3a, 0x97, 0x5b, 0xc0, 0x08, 0x0d, 0x05, 0x1e, 0xa2, 0x20, 0x0b, 0xc3, 0x3a, 0xa1, - 0x20, 0x02, 0x90, 0x5d, 0xc1, 0x00, 0x8a, 0x28, 0xf3, 0x2a, 0x11, 0x90, 0x88, 0x8d, 0x04, 0x08, - 0x12, 0x0a, 0x80, 0xd1, 0x50, 0xea, 0x38, 0xa2, 0x10, 0x8c, 0xa2, 0x50, 0xbb, 0x36, 0xbc, 0x14, - 0x8c, 0x12, 0x01, 0xdb, 0x42, 0xad, 0x05, 0x09, 0x80, 0x90, 0x3a, 0xc3, 0x3b, 0xb3, 0x10, 0x10, - 0xda, 0x11, 0xba, 0x73, 0xb8, 0x01, 0x19, 0x89, 0x07, 0x0b, 0x21, 0xda, 0x86, 0x0c, 0x00, 0x02, - 0x8a, 0x01, 0xb9, 0x80, 0x7a, 0xc2, 0x2a, 0x02, 0x10, 0xb8, 0x90, 0x60, 0xfb, 0x53, 0xba, 0x11, - 0x09, 0x09, 0xa6, 0x3b, 0xa3, 0x9c, 0x43, 0x90, 0x39, 0xf1, 0x4b, 0x80, 0x18, 0xa3, 0x0c, 0x29, - 0xf0, 0x28, 0x91, 0x48, 0xc3, 0x29, 0x0b, 0xa4, 0x18, 0x89, 0x83, 0x0f, 0x23, 0xe9, 0x20, 0xa9, - 0x14, 0x9c, 0x91, 0x60, 0xa9, 0x32, 0xbb, 0x02, 0x08, 0x61, 0xe1, 0x1a, 0x01, 0x98, 0x42, 0xb9, - 0x80, 0x0e, 0x81, 0x13, 0x8d, 0x02, 0x00, 0x10, 0x88, 0x90, 0xcb, 0x33, 0x5e, 0xf2, 0x29, 0x3a, - 0xd2, 0x41, 0xaa, 0x00, 0x80, 0x29, 0x91, 0xd8, 0x79, 0xa0, 0x3a, 0xa1, 0x31, 0xa0, 0x9c, 0x63, - 0xb8, 0x5a, 0xf1, 0x38, 0xa8, 0x10, 0x80, 0x08, 0x82, 0x9a, 0x6a, 0xd9, 0x24, 0x99, 0x08, 0x92, - 0x1a, 0x0b, 0x86, 0x88, 0x0b, 0x84, 0xc8, 0x70, 0xb9, 0x85, 0x0a, 0x10, 0x98, 0x80, 0x63, 0xbd, - 0x04, 0x1c, 0x83, 0x1a, 0x81, 0x09, 0x99, 0x12, 0x1e, 0xc3, 0x39, 0x80, 0x08, 0xa2, 0x8d, 0x04, - 0x99, 0x50, 0xe2, 0x3b, 0xa6, 0x2a, 0x91, 0xa9, 0x22, 0x2b, 0x94, 0xb0, 0x1e, 0x94, 0x1b, 0x86, - 0x8c, 0x83, 0x18, 0x08, 0x91, 0x1a, 0xa1, 0x3a, 0xf3, 0x49, 0xb8, 0x00, 0x11, 0xd3, 0x09, 0x3b, - 0x84, 0xb9, 0x71, 0xe3, 0x29, 0xa1, 0x38, 0xc9, 0x30, 0x81, 0xfa, 0x69, 0xb0, 0x19, 0x01, 0x50, - 0x99, 0x92, 0x2c, 0xa1, 0x21, 0x9c, 0x21, 0xf1, 0x38, 0x98, 0xb1, 0x7b, 0xa0, 0x81, 0x39, 0xa1, - 0x8a, 0x68, 0xc1, 0x11, 0x2c, 0x81, 0x95, 0x0d, 0x81, 0x89, 0x21, 0xab, 0x25, 0xad, 0x41, 0x98, - 0x99, 0x23, 0x0a, 0x06, 0x0e, 0x81, 0x01, 0x89, 0x02, 0xba, 0x98, 0x2e, 0xa7, 0x2a, 0x80, 0x00, - 0x80, 0x10, 0x9b, 0x96, 0x4b, 0x93, 0x89, 0xd3, 0x2d, 0x85, 0x0b, 0x00, 0x91, 0x1c, 0xc2, 0x21, - 0xbb, 0x40, 0x96, 0x0a, 0x68, 0xc0, 0x31, 0xdb, 0x22, 0xa0, 0x2b, 0xc2, 0x01, 0x3e, 0xc4, 0x38, - 0xcb, 0x13, 0x19, 0x81, 0x18, 0xa3, 0x3c, 0xe1, 0x20, 0xab, 0x33, 0x0e, 0xb5, 0x3b, 0xb1, 0x18, - 0x38, 0x95, 0x09, 0x02, 0x9f, 0x85, 0x2b, 0xa3, 0x0a, 0x81, 0x10, 0x9f, 0x05, 0x0e, 0x84, 0x89, - 0x20, 0xa8, 0x09, 0x41, 0xd9, 0x22, 0x8b, 0xa4, 0x3a, 0xb8, 0x25, 0xbb, 0x30, 0x98, 0xf0, 0x52, - 0xba, 0x13, 0x9c, 0x33, 0xd1, 0x2a, 0x93, 0x9b, 0x32, 0xaa, 0x32, 0xe1, 0x58, 0xe8, 0x28, 0x80, - 0x92, 0x19, 0xca, 0x33, 0xc9, 0x69, 0xb3, 0x09, 0x31, 0xda, 0x3b, 0x95, 0x2b, 0xe3, 0x30, 0x8c, - 0x95, 0x3b, 0xb1, 0x2a, 0x21, 0xb0, 0x10, 0x02, 0x0f, 0x93, 0xc9, 0x73, 0xbb, 0x04, 0x2a, 0xc8, - 0x10, 0x00, 0x18, 0xb2, 0x59, 0x3a, 0xd6, 0x5b, 0xb1, 0x18, 0x19, 0xa0, 0x29, 0x81, 0x2c, 0xc4, - 0x58, 0xa8, 0x11, 0x19, 0xc8, 0x40, 0xa8, 0x9b, 0x24, 0xa9, 0x40, 0xa1, 0x81, 0x0d, 0xb8, 0x15, - 0x80, 0x39, 0xf3, 0x30, 0x8c, 0x9a, 0x17, 0x0c, 0x11, 0xd0, 0x29, 0x81, 0xa8, 0x71, 0xb9, 0x15, - 0x8c, 0x91, 0x12, 0x8c, 0x02, 0x8a, 0x92, 0x28, 0xa0, 0x08, 0x2b, 0x16, 0xd8, 0x48, 0xa8, 0x98, - 0x51, 0xa0, 0x29, 0xcc, 0x14, 0x20, 0xcc, 0x24, 0x8c, 0x80, 0x04, 0x2b, 0xd0, 0x21, 0xa9, 0x91, - 0x79, 0xd1, 0x38, 0x99, 0x10, 0xc0, 0x21, 0x3a, 0xf3, 0x39, 0xb1, 0x0a, 0x02, 0x12, 0x9d, 0x02, - 0x3c, 0xd4, 0x49, 0xa8, 0x83, 0x0c, 0x04, 0x8b, 0x92, 0x2c, 0xb3, 0x3a, 0x80, 0x95, 0x0e, 0x32, - 0xd1, 0x19, 0x00, 0xb2, 0x1d, 0x80, 0x30, 0xf2, 0x58, 0xb9, 0x81, 0x69, 0x90, 0x80, 0x98, 0x48, - 0xc0, 0x28, 0x98, 0x12, 0x8f, 0x84, 0x19, 0xb9, 0x42, 0xa9, 0x03, 0x39, 0xf8, 0x10, 0x28, 0xb8, - 0xa9, 0x62, 0xaa, 0x24, 0xba, 0x40, 0x9a, 0x17, 0x8b, 0xa8, 0x21, 0x9a, 0x86, 0x0b, 0x41, 0xe8, - 0x20, 0x2a, 0xd0, 0x23, 0x0d, 0x83, 0x0a, 0x92, 0x2c, 0xd8, 0x21, 0x19, 0xa3, 0x9a, 0x12, 0x1f, - 0xb5, 0x38, 0x2a, 0xe3, 0x28, 0xb9, 0x30, 0xc1, 0x01, 0x82, 0x2c, 0xa0, 0x91, 0x3a, 0xa2, 0x8e, - 0x23, 0xab, 0x27, 0x9b, 0x02, 0x09, 0xb0, 0x39, 0xfb, 0x16, 0x2e, 0xc3, 0x28, 0x0c, 0xa4, 0x29, - 0x0a, 0x94, 0x98, 0x60, 0xc9, 0x03, 0x9b, 0x31, 0x82, 0xb8, 0x41, 0xcd, 0x31, 0xb8, 0x01, 0x11, - 0x8d, 0x96, 0x1b, 0x11, 0xb0, 0x52, 0xc9, 0x38, 0xd1, 0x20, 0x19, 0xe3, 0x3a, 0xa9, 0x03, 0x3b, - 0x03, 0xf9, 0x41, 0x0b, 0xc4, 0x29, 0x08, 0xa1, 0x48, 0xa1, 0x0d, 0x87, 0x1d, 0x91, 0xa1, 0x58, - 0xa9, 0x01, 0x00, 0x1b, 0x93, 0x9a, 0x54, 0xc9, 0x40, 0xba, 0x01, 0x49, 0x00, 0xb1, 0x2a, 0xa4, - 0x1c, 0xaa, 0x33, 0x18, 0x30, 0xa9, 0xea, 0x13, 0x39, 0x1c, 0xf4, 0x28, 0x98, 0xa1, 0x68, 0xaa, - 0x87, 0x2c, 0x82, 0xb9, 0x43, 0x9c, 0x90, 0x13, 0x2d, 0x82, 0x9a, 0x20, 0xca, 0x63, 0xba, 0x24, - 0xd9, 0x38, 0xa1, 0x81, 0x6a, 0xb9, 0x13, 0x8e, 0x92, 0x20, 0x8b, 0x83, 0x90, 0x59, 0xd9, 0x34, - 0x8c, 0x83, 0x2b, 0xf8, 0x60, 0xb9, 0x11, 0x3a, 0xe1, 0x21, 0x1b, 0x90, 0x91, 0x6a, 0x90, 0x18, - 0xa0, 0x30, 0x9d, 0x94, 0x4b, 0xa1, 0x08, 0x90, 0x2a, 0x85, 0x3c, 0xf2, 0x20, 0x0b, 0xa4, 0x48, - 0xaa, 0x83, 0x8c, 0x23, 0x08, 0xf9, 0x41, 0xba, 0x32, 0xba, 0x84, 0x1b, 0x22, 0xa4, 0x0d, 0x00, - 0x0b, 0x97, 0x89, 0x5b, 0xa4, 0x89, 0x28, 0x90, 0x0b, 0x94, 0x39, 0x18, 0xb0, 0x85, 0x0f, 0xa2, - 0x32, 0x9f, 0x84, 0x2b, 0x81, 0x00, 0x8a, 0xa6, 0x3e, 0xc2, 0x10, 0x08, 0xb1, 0x5a, 0xb0, 0x28, - 0xa8, 0x13, 0x2a, 0xb3, 0x09, 0x0e, 0x95, 0x11, 0x1f, 0xa1, 0xa2, 0x5b, 0x90, 0xb1, 0x7a, 0x98, - 0x90, 0x12, 0x0a, 0x04, 0xb9, 0x50, 0xf9, 0x48, 0x98, 0x01, 0x0a, 0xa2, 0x11, 0xae, 0x43, 0xaa, - 0x22, 0x39, 0xe8, 0x00, 0x29, 0x30, 0xd9, 0x13, 0x0c, 0xc0, 0x59, 0xa2, 0x9a, 0x40, 0x80, 0xb8, - 0x21, 0x3a, 0xd8, 0x22, 0x07, 0x8f, 0x82, 0x8a, 0x03, 0x09, 0x98, 0x06, 0x0e, 0x92, 0x0a, 0x91, - 0x40, 0x81, 0x99, 0x48, 0xd1, 0x08, 0x08, 0x09, 0xa5, 0x38, 0xcb, 0x01, 0x82, 0x4d, 0xa4, 0x0c, - 0x12, 0xa9, 0x5a, 0x92, 0x0c, 0x84, 0x3b, 0xf2, 0x00, 0x2a, 0xc1, 0x41, 0xc9, 0x40, 0x99, 0x10, - 0x10, 0xc2, 0x59, 0xc0, 0x19, 0x98, 0x13, 0xab, 0x32, 0xb9, 0x2a, 0x14, 0x9d, 0x15, 0x99, 0x4a, - 0xa0, 0x05, 0x0c, 0xaa, 0x15, 0x39, 0xb8, 0x1b, 0xa0, 0xc0, 0x72, 0x98, 0x01, 0x19, 0xb3, 0x6c, - 0xc2, 0x19, 0x19, 0xc0, 0x18, 0x21, 0xf8, 0x68, 0x88, 0xa8, 0x20, 0x98, 0x20, 0x19, 0xa5, 0x1b, - 0x30, 0xfb, 0x32, 0xab, 0x02, 0x08, 0xf9, 0x78, 0xa8, 0x01, 0x19, 0x11, 0xa8, 0x41, 0xda, 0x09, - 0x03, 0x1a, 0x82, 0x8d, 0x05, 0x0c, 0xa1, 0x21, 0x1d, 0xa3, 0x98, 0x33, 0x0f, 0xa2, 0xa8, 0x70, - 0xc1, 0x49, 0x91, 0xb9, 0x48, 0x91, 0x0c, 0x85, 0x18, 0x8c, 0x91, 0x02, 0x2c, 0x91, 0x18, 0x18, - 0x12, 0xbf, 0x16, 0x8b, 0x13, 0xba, 0x3c, 0xa3, 0x28, 0x0b, 0xa9, 0x87, 0x2e, 0x03, 0x1a, 0xba, - 0x16, 0x0d, 0x95, 0x1c, 0xa2, 0x28, 0x08, 0xb1, 0x88, 0x1c, 0x17, 0xbb, 0x04, 0x19, 0x88, 0xa4, - 0x1d, 0x92, 0x09, 0x02, 0x88, 0x29, 0xbb, 0x36, 0xe8, 0x19, 0x03, 0x1c, 0xc1, 0x82, 0x3c, 0x90, - 0x25, 0xbb, 0x82, 0x0d, 0x04, 0x1b, 0x90, 0x44, 0x9f, 0x84, 0x1c, 0x81, 0x18, 0x80, 0x90, 0x4c, - 0xd2, 0x49, 0x90, 0x08, 0x81, 0xa9, 0x31, 0xb8, 0x2c, 0xc4, 0x4a, 0x92, 0x08, 0x02, 0x9c, 0x12, - 0x8b, 0x01, 0x18, 0x82, 0x60, 0xbe, 0x05, 0x1b, 0xc1, 0x12, 0x89, 0x89, 0x53, 0xf8, 0x59, 0xa0, - 0x20, 0x9a, 0x82, 0x49, 0xea, 0x32, 0xc9, 0x10, 0x11, 0x88, 0x08, 0x9d, 0x24, 0x9d, 0x14, 0x8a, - 0x08, 0x83, 0x1c, 0xc2, 0x2a, 0x23, 0xca, 0x81, 0x08, 0x5a, 0xf1, 0x30, 0x9b, 0x04, 0xa8, 0x04, - 0x0e, 0x93, 0x00, 0x0a, 0xb1, 0x5b, 0xa2, 0x2a, 0x81, 0x91, 0x8e, 0x05, 0x1d, 0x93, 0x2a, 0xc1, - 0x38, 0x81, 0xaa, 0x49, 0xb5, 0x1a, 0xb0, 0x1a, 0x84, 0x79, 0xb2, 0x1b, 0xa8, 0x25, 0x2c, 0xd4, - 0x28, 0x98, 0x88, 0xb3, 0x20, 0x1f, 0x94, 0x98, 0x9a, 0x21, 0xa2, 0x79, 0xc0, 0x22, 0x9c, 0x04, - 0x89, 0xa8, 0x48, 0xa4, 0x19, 0x8d, 0x93, 0x1a, 0x88, 0x14, 0xa0, 0x0f, 0x86, 0x09, 0x08, 0x90, - 0x01, 0xb8, 0x60, 0xb8, 0x8b, 0x07, 0x19, 0xa8, 0x08, 0x81, 0x38, 0x0c, 0x87, 0x1b, 0xa1, 0x20, - 0xe8, 0x48, 0x89, 0x03, 0x9c, 0x13, 0xaa, 0x4b, 0x14, 0xe8, 0x59, 0xb0, 0x00, 0x88, 0x31, 0xa8, - 0x1c, 0x02, 0xc0, 0x34, 0xaf, 0x03, 0x09, 0x00, 0x80, 0xc0, 0x6b, 0xb2, 0x3a, 0xe1, 0x42, 0x0b, - 0xa2, 0x0a, 0xa2, 0x7b, 0xa1, 0x01, 0x2b, 0xf0, 0x28, 0x81, 0x2b, 0x95, 0x0a, 0x88, 0x20, 0xb8, - 0x15, 0x8f, 0x04, 0x8a, 0x82, 0x1a, 0x99, 0x12, 0xb0, 0x58, 0xcb, 0x05, 0x2c, 0x08, 0x83, 0xca, - 0x61, 0xa9, 0x14, 0xab, 0x02, 0x09, 0xae, 0x16, 0x9a, 0x13, 0x8c, 0x83, 0x19, 0x1a, 0xa1, 0x2c, - 0x05, 0x98, 0x29, 0xcb, 0x43, 0x8a, 0xe8, 0x41, 0xa0, 0x49, 0xa2, 0xab, 0x28, 0xa4, 0x6d, 0xc1, - 0x31, 0x0c, 0x81, 0x8a, 0x84, 0x0c, 0x01, 0x80, 0xc8, 0x31, 0x8b, 0x97, 0x1b, 0x15, 0x9a, 0x80, - 0x10, 0xac, 0x15, 0x0b, 0xa3, 0x0d, 0x22, 0xd8, 0x10, 0x09, 0x20, 0x09, 0xa1, 0x27, 0x9c, 0x12, - 0xba, 0xa4, 0x2d, 0x93, 0x29, 0xf9, 0x78, 0x99, 0x81, 0x01, 0xa8, 0x5a, 0xb3, 0x3b, 0x89, 0x91, - 0x60, 0xd0, 0x48, 0xaa, 0x12, 0xa8, 0x1a, 0x15, 0x9c, 0x14, 0xb9, 0x38, 0xa8, 0x10, 0xa4, 0x48, - 0xc8, 0x2b, 0xc4, 0x38, 0x21, 0xda, 0x11, 0xaa, 0x3a, 0xb4, 0x51, 0x99, 0xa2, 0x1b, 0x21, 0x06, - 0x8f, 0x84, 0x1a, 0x92, 0x3c, 0xd9, 0x82, 0x4c, 0xb3, 0x4b, 0xc2, 0x29, 0x08, 0x88, 0x50, 0xc1, - 0x10, 0x1a, 0xd2, 0x00, 0x0b, 0x83, 0x80, 0xb1, 0x3c, 0xba, 0x91, 0x77, 0x98, 0x2a, 0xa2, 0x8a, - 0x15, 0x1d, 0xc1, 0x00, 0x30, 0xca, 0x20, 0xc2, 0x5a, 0xc0, 0x38, 0x93, 0xda, 0x68, 0xa0, 0x11, - 0x08, 0x98, 0xaa, 0x22, 0x83, 0x0f, 0x91, 0x88, 0x81, 0x48, 0xcc, 0x42, 0x80, 0x91, 0x5a, 0xeb, - 0x15, 0x99, 0x19, 0x82, 0xc9, 0x51, 0xaa, 0x03, 0x0e, 0x13, 0xaa, 0x20, 0x90, 0x29, 0x12, 0xae, - 0x05, 0xa9, 0x7a, 0xa1, 0x88, 0x18, 0x29, 0xc2, 0x38, 0xc1, 0x0c, 0x10, 0x83, 0x08, 0xdb, 0x51, - 0x88, 0xb3, 0x78, 0xac, 0x13, 0x0a, 0x93, 0x0d, 0x03, 0x91, 0x2f, 0xc1, 0x18, 0x03, 0x0c, 0x80, - 0x98, 0x51, 0xb0, 0x49, 0xc9, 0x42, 0xa9, 0x28, 0x99, 0xc4, 0x78, 0xa8, 0x09, 0x94, 0x08, 0x1a, - 0xa4, 0x29, 0xc8, 0x32, 0x8e, 0x94, 0x89, 0x21, 0xaa, 0x01, 0x33, 0x1b, 0xe8, 0x91, 0x00, 0x8f, - 0x35, 0xe9, 0x20, 0xb9, 0x40, 0xa1, 0x08, 0x22, 0xcd, 0x23, 0x8a, 0x04, 0x9b, 0x12, 0xc9, 0x29, - 0x93, 0x1f, 0xa5, 0x19, 0x90, 0x1a, 0x92, 0x07, 0x1c, 0x90, 0x82, 0x90, 0x0a, 0x00, 0xc1, 0x21, - 0x8b, 0x8b, 0x12, 0x27, 0xca, 0x5b, 0xb0, 0x33, 0x10, 0xbf, 0x06, 0x2b, 0x82, 0xa9, 0x38, 0xf8, - 0x29, 0x91, 0x69, 0xb0, 0x82, 0x2c, 0xb0, 0x35, 0xab, 0x48, 0xc8, 0x31, 0x08, 0x9a, 0x98, 0x02, - 0x97, 0x1e, 0xb2, 0x19, 0x81, 0x89, 0x33, 0xb2, 0x2c, 0xc9, 0x70, 0xc2, 0x28, 0x99, 0xc2, 0x70, - 0xc0, 0x39, 0xa8, 0x92, 0x49, 0xb1, 0x39, 0xab, 0x94, 0x51, 0x8a, 0x00, 0xb0, 0x11, 0x4c, 0x98, - 0x86, 0x9c, 0x33, 0xdb, 0x30, 0x88, 0x90, 0x99, 0xa0, 0x27, 0x8c, 0x20, 0xa2, 0x1b, 0x17, 0x8e, - 0x93, 0x19, 0x81, 0xc0, 0x49, 0xf3, 0x2a, 0x81, 0x80, 0x81, 0x88, 0x6b, 0xe2, 0x28, 0xa1, 0x20, - 0x89, 0xa5, 0x2b, 0xa9, 0x22, 0x99, 0x98, 0x2d, 0x01, 0xa6, 0x11, 0x1d, 0xb1, 0x04, 0x2a, 0x9a, - 0x13, 0xb8, 0x93, 0x4e, 0xe8, 0x38, 0xa8, 0x12, 0x5b, 0xe1, 0x20, 0x0c, 0x04, 0x8a, 0x91, 0x48, - 0xaa, 0x06, 0x8c, 0x82, 0x1a, 0x80, 0x82, 0xb2, 0x3e, 0x98, 0xe3, 0x58, 0x98, 0x11, 0xb0, 0x28, - 0x1b, 0xda, 0x27, 0xaa, 0x11, 0x9a, 0x81, 0x02, 0x0d, 0x04, 0xaa, 0x85, 0x1c, 0x91, 0x11, 0x8a, - 0x96, 0x2c, 0xa1, 0x91, 0x38, 0x99, 0x10, 0xd9, 0x52, 0x1b, 0x82, 0xc0, 0x19, 0x3e, 0xd3, 0x01, - 0x99, 0x20, 0x8c, 0x07, 0x1b, 0x91, 0x80, 0x09, 0x95, 0x2e, 0x93, 0x0a, 0x01, 0xda, 0x48, 0xb0, - 0x30, 0x90, 0x1a, 0x13, 0xad, 0x27, 0x9b, 0x38, 0xb3, 0x89, 0x2f, 0xe1, 0x21, 0x98, 0x20, 0xb9, - 0x88, 0x40, 0x80, 0x41, 0xf8, 0x28, 0x99, 0x02, 0x05, 0xbb, 0x50, 0xa9, 0xa1, 0x5a, 0x9a, 0x06, - 0x0a, 0x13, 0xbc, 0x28, 0x12, 0x0b, 0x86, 0x8a, 0x82, 0xdc, 0x51, 0x89, 0xa0, 0x22, 0x1a, 0x81, - 0x9f, 0x05, 0x2a, 0xb9, 0x23, 0x80, 0x0c, 0x22, 0xcd, 0x82, 0x59, 0x90, 0x10, 0xa8, 0x80, 0x1f, - 0x95, 0x10, 0x08, 0xba, 0x02, 0x0b, 0x28, 0xa3, 0x5a, 0xb2, 0x92, 0x8f, 0x10, 0x12, 0x84, 0x2f, - 0xb9, 0x84, 0x2b, 0x80, 0x00, 0xaa, 0x87, 0x4e, 0xb1, 0x29, 0xa3, 0x1b, 0x32, 0xe0, 0x39, 0xc1, - 0x3a, 0xd3, 0x1c, 0x23, 0xb9, 0x21, 0xea, 0x30, 0x80, 0x38, 0x95, 0x9c, 0x40, 0xb8, 0x00, 0x99, - 0x34, 0x9d, 0xa2, 0x03, 0x2e, 0xe1, 0x50, 0xb9, 0x21, 0x10, 0xc1, 0x39, 0xc9, 0x22, 0xab, 0x05, - 0x29, 0xab, 0xa4, 0x2a, 0x52, 0xbb, 0x24, 0xe8, 0x4a, 0x80, 0x90, 0x11, 0xe8, 0x50, 0xa9, 0x84, - 0x88, 0x89, 0x91, 0x98, 0x22, 0x38, 0x8d, 0xa6, 0x2c, 0xa4, 0x2b, 0x81, 0x04, 0x8f, 0x11, 0xa8, - 0x11, 0x18, 0xb8, 0x09, 0x18, 0x17, 0x8c, 0x20, 0xe0, 0x20, 0x88, 0x18, 0xa2, 0x1c, 0x23, 0xaf, - 0x32, 0x90, 0x89, 0xf2, 0x4b, 0x92, 0x18, 0x13, 0xfb, 0x41, 0xc9, 0x20, 0xa8, 0x10, 0x12, 0x9d, - 0x14, 0x9b, 0x20, 0xc0, 0x08, 0x22, 0x0a, 0x05, 0x0d, 0xb3, 0x0a, 0x8a, 0x07, 0x19, 0xa1, 0x3c, - 0xf1, 0x30, 0x89, 0x13, 0x8c, 0x91, 0x09, 0x98, 0x53, 0xab, 0x86, 0x1d, 0x98, 0x11, 0x10, 0x88, - 0x11, 0xe8, 0x68, 0xb0, 0x89, 0x20, 0xa1, 0x11, 0x80, 0xd8, 0x1d, 0x31, 0xf8, 0x21, 0x30, 0xaa, - 0x83, 0x9f, 0x13, 0x3a, 0xb0, 0x22, 0xaf, 0x92, 0x28, 0x99, 0x06, 0x1b, 0xa6, 0x2c, 0xa2, 0x19, - 0x00, 0x91, 0x3b, 0xc3, 0x3a, 0x92, 0xf0, 0x7a, 0x98, 0x10, 0x92, 0x8d, 0x92, 0x40, 0xab, 0x86, - 0x3a, 0xd9, 0x12, 0x89, 0xa1, 0x78, 0xd0, 0x20, 0x88, 0x92, 0x3a, 0xc0, 0x21, 0xba, 0x00, 0x18, - 0x93, 0x3c, 0xf1, 0x28, 0x2a, 0x85, 0x28, 0xfc, 0x43, 0xba, 0x82, 0x28, 0x00, 0xa0, 0x9f, 0x83, - 0x88, 0x60, 0x98, 0xb0, 0x58, 0xb1, 0x10, 0x1b, 0x84, 0x09, 0xa1, 0x10, 0xbf, 0x05, 0x1a, 0xa8, - 0x05, 0x2c, 0xa3, 0x1c, 0x81, 0x18, 0x0c, 0x06, 0x29, 0xe8, 0x28, 0xa8, 0x28, 0x82, 0x88, 0x9a, - 0x90, 0x14, 0x00, 0x8d, 0x05, 0x19, 0x0a, 0xa5, 0x8b, 0x51, 0xa0, 0xb1, 0x1c, 0x94, 0x0a, 0x38, - 0xb8, 0x53, 0xb0, 0x8f, 0x85, 0x1a, 0x82, 0x30, 0xfb, 0x48, 0xa2, 0x8b, 0x49, 0xc3, 0x2a, 0x38, - 0xc1, 0x3a, 0xe1, 0x20, 0x9a, 0x03, 0x08, 0x12, 0xba, 0x11, 0x95, 0x0f, 0x22, 0xf3, 0x4b, 0xa1, - 0x89, 0x21, 0xbc, 0x25, 0x8b, 0x10, 0x92, 0x3b, 0x21, 0xd2, 0x19, 0x9d, 0x07, 0x9a, 0x19, 0x85, - 0xaa, 0x62, 0xb8, 0x09, 0x11, 0x8b, 0x06, 0x9a, 0x11, 0xa8, 0x41, 0xaa, 0x24, 0xea, 0x21, 0x9b, - 0x93, 0x49, 0x89, 0x88, 0x27, 0xbb, 0x1a, 0x21, 0x09, 0x07, 0x0e, 0x88, 0x92, 0x29, 0x13, 0x8a, - 0x96, 0x8c, 0x09, 0x08, 0xa1, 0x61, 0xc9, 0x25, 0x9b, 0x13, 0xdb, 0x49, 0x95, 0xaa, 0x41, 0xd9, - 0x21, 0xa0, 0x0a, 0x24, 0x19, 0x99, 0xd1, 0x3a, 0xa8, 0x50, 0x95, 0x8b, 0x13, 0xf9, 0x49, 0xa0, - 0x20, 0xa1, 0x0b, 0x01, 0xaa, 0x65, 0xa8, 0x18, 0xb8, 0x32, 0xac, 0x28, 0x82, 0xc8, 0x3b, 0x07, - 0x22, 0x9f, 0x01, 0x8a, 0x01, 0x42, 0xc0, 0x8b, 0x38, 0xc5, 0x19, 0x01, 0x81, 0x29, 0xbd, 0x92, - 0x61, 0x00, 0x98, 0x81, 0x8c, 0x11, 0x90, 0x28, 0x9b, 0xa1, 0x20, 0x1d, 0x07, 0x8d, 0x14, 0x8e, - 0x94, 0x38, 0xa9, 0xa5, 0x1c, 0x02, 0xba, 0x15, 0x1a, 0x88, 0xc4, 0x2c, 0x92, 0x19, 0x01, 0xb9, - 0x53, 0x89, 0x19, 0xc3, 0x3a, 0x93, 0xbf, 0x15, 0x08, 0x9a, 0xc2, 0x59, 0x81, 0x18, 0xa0, 0x98, - 0x6b, 0xb8, 0x21, 0xa9, 0x81, 0x71, 0xc1, 0x18, 0x90, 0x8a, 0x24, 0xb8, 0x30, 0xac, 0x96, 0x4a, - 0xec, 0x33, 0x8b, 0x04, 0x89, 0x88, 0x09, 0xa8, 0x46, 0xaa, 0x21, 0xcb, 0x28, 0x81, 0x1c, 0x86, - 0xa9, 0x33, 0x8d, 0x80, 0x82, 0x1a, 0xa2, 0x3b, 0xc2, 0x51, 0xd9, 0x21, 0x0b, 0xc4, 0x4a, 0x10, - 0xc3, 0x0e, 0x13, 0xab, 0x22, 0x00, 0xd0, 0x58, 0x8b, 0xa6, 0x1b, 0x22, 0xd9, 0x20, 0x92, 0x3c, - 0xc1, 0x38, 0x90, 0xaa, 0x6a, 0xb4, 0x39, 0x80, 0x08, 0xc1, 0x19, 0x58, 0xf8, 0x11, 0x1a, 0xa1, - 0x18, 0xa4, 0x2a, 0xb1, 0x63, 0xcb, 0x90, 0x22, 0x39, 0x9a, 0x87, 0x1f, 0x00, 0xa0, 0x10, 0x01, - 0x8d, 0x23, 0xc9, 0x5a, 0xb1, 0x49, 0x80, 0xa0, 0x59, 0xfa, 0x52, 0x9b, 0x13, 0x98, 0x8a, 0x22, - 0xbd, 0x25, 0x9b, 0x11, 0x91, 0x19, 0x0a, 0xc2, 0x60, 0xb8, 0x41, 0xc9, 0x20, 0x90, 0x1a, 0x18, - 0xb3, 0x3a, 0x38, 0xfa, 0x70, 0xb8, 0x28, 0xa4, 0x3c, 0xa2, 0xae, 0x34, 0x9a, 0x28, 0xb3, 0x0c, - 0x85, 0x1d, 0x02, 0x89, 0x22, 0x9c, 0x1b, 0xa5, 0x2a, 0x02, 0xd9, 0x50, 0x98, 0x88, 0x12, 0x9b, - 0x92, 0x60, 0xc9, 0x04, 0x1a, 0x80, 0x0b, 0xa0, 0x86, 0x2e, 0x80, 0x81, 0x00, 0xca, 0x78, 0xb1, - 0x10, 0x82, 0xad, 0x30, 0xc1, 0x70, 0xa8, 0x08, 0xa1, 0x38, 0xa1, 0x1a, 0x31, 0xf1, 0x6b, 0xc0, - 0x48, 0x98, 0x81, 0x3a, 0xd1, 0x10, 0x89, 0x12, 0xba, 0x15, 0x99, 0x2c, 0xb1, 0x20, 0x14, 0xac, - 0x28, 0xb0, 0x26, 0x8d, 0x02, 0x90, 0x8c, 0x12, 0x0c, 0x07, 0x98, 0x19, 0xe0, 0x40, 0x98, 0x91, - 0x19, 0xa1, 0x31, 0x9f, 0x24, 0xab, 0x03, 0x0a, 0x11, 0x99, 0xc0, 0x3a, 0x09, 0x07, 0x80, 0xca, - 0x40, 0x01, 0x9b, 0x96, 0x2d, 0x91, 0x82, 0x2c, 0xd0, 0x40, 0xa1, 0x4a, 0xc1, 0x89, 0x12, 0x8a, - 0x12, 0xd0, 0x4b, 0x95, 0x1b, 0x81, 0x89, 0x11, 0x00, 0x1a, 0xe6, 0x6a, 0x98, 0x88, 0x21, 0xaa, - 0x30, 0x90, 0x0a, 0x34, 0xbf, 0x22, 0xa2, 0x0c, 0x24, 0xbb, 0x85, 0x90, 0x2a, 0xd0, 0x58, 0xa1, - 0x0a, 0x22, 0xfa, 0x31, 0xc9, 0x30, 0x82, 0x9a, 0x71, 0xd9, 0x10, 0x08, 0x80, 0x11, 0x8a, 0xb5, - 0x2d, 0x08, 0xa3, 0x2a, 0x22, 0x9d, 0x93, 0x89, 0x62, 0xd8, 0x1a, 0x24, 0xf9, 0x21, 0x8b, 0x81, - 0x02, 0x0d, 0x14, 0xb9, 0x31, 0xab, 0x18, 0x98, 0x12, 0x05, 0x9f, 0x83, 0xa0, 0x5a, 0xa2, 0x8a, - 0x06, 0x0c, 0x20, 0xc4, 0x1b, 0x02, 0x8c, 0x20, 0x11, 0xd9, 0x22, 0x0a, 0xb2, 0x1d, 0x84, 0x2b, - 0x92, 0xb2, 0x5c, 0xb0, 0x0a, 0x14, 0xa9, 0x3a, 0x87, 0xaa, 0x39, 0x90, 0x21, 0xa6, 0x3c, 0x90, - 0xf2, 0x31, 0x9c, 0x84, 0x89, 0x19, 0x90, 0x09, 0x17, 0xbb, 0x13, 0x91, 0x1f, 0x94, 0x09, 0x02, - 0xab, 0x22, 0xba, 0x11, 0x4c, 0xa7, 0x0a, 0x80, 0xb2, 0x5b, 0xb5, 0x3a, 0xb1, 0x18, 0x05, 0x8d, - 0x03, 0xcb, 0x51, 0xb8, 0x58, 0xb3, 0x2e, 0xa2, 0x0b, 0x12, 0xb0, 0x58, 0xc0, 0x20, 0xb0, 0x4a, - 0xb4, 0x4b, 0x91, 0xa9, 0x78, 0xb1, 0x28, 0xc0, 0x4a, 0xc0, 0x12, 0x90, 0x39, 0xd2, 0x0a, 0x14, - 0xca, 0x50, 0xc1, 0x49, 0xc0, 0x30, 0xa9, 0x20, 0x98, 0x98, 0x14, 0xac, 0x34, 0xeb, 0x32, 0xc9, - 0x20, 0x80, 0x00, 0x80, 0x0d, 0x13, 0xaf, 0x25, 0xab, 0x23, 0xbb, 0x31, 0xa3, 0x1e, 0x83, 0xaa, - 0x31, 0xaa, 0x17, 0xdb, 0x22, 0xab, 0x12, 0x22, 0x8e, 0x04, 0x9b, 0x84, 0x2c, 0x81, 0xa0, 0x20, - 0xe8, 0x58, 0xa0, 0x18, 0xb3, 0x8e, 0x12, 0x99, 0x13, 0x00, 0x1c, 0xb2, 0x7a, 0xc0, 0x49, 0xa1, - 0x0b, 0x33, 0x9e, 0x22, 0x99, 0x30, 0x9a, 0xb9, 0x20, 0x65, 0xba, 0x21, 0x98, 0xb8, 0x71, 0xf0, - 0x11, 0x98, 0x18, 0xa8, 0x31, 0xa1, 0x4b, 0x02, 0xf9, 0x30, 0xd0, 0x39, 0xa1, 0xa9, 0x36, 0x9c, - 0x94, 0x19, 0x99, 0x91, 0x41, 0x88, 0x98, 0x2c, 0xb3, 0xa0, 0x78, 0xb2, 0x9b, 0x15, 0x8a, 0x83, - 0x8f, 0x14, 0x9a, 0x31, 0xf8, 0x4a, 0x91, 0x8a, 0x14, 0xac, 0x32, 0x91, 0x8a, 0x94, 0x2a, 0x98, - 0x2b, 0x87, 0xaa, 0x41, 0xa0, 0x0c, 0x03, 0x0c, 0x31, 0xf1, 0x19, 0x00, 0xc1, 0x70, 0xc1, 0x28, - 0x98, 0x80, 0x21, 0xc9, 0x10, 0xbb, 0x21, 0x04, 0x2f, 0xa4, 0x2a, 0x11, 0xda, 0x41, 0xe0, 0x28, - 0x90, 0x00, 0x10, 0x98, 0x89, 0x89, 0x93, 0x2a, 0x40, 0xe1, 0x41, 0xaa, 0x18, 0x04, 0x10, 0x9f, - 0x20, 0xa1, 0x1d, 0x84, 0x8b, 0x31, 0xe2, 0x2a, 0x94, 0x4b, 0xb2, 0x0a, 0x10, 0xaa, 0x24, 0xba, - 0x24, 0x2a, 0xf0, 0x78, 0xaa, 0x22, 0xc9, 0x20, 0x92, 0x1b, 0xa6, 0x09, 0x0a, 0x86, 0x8a, 0x21, - 0xc8, 0x38, 0xa0, 0x18, 0x30, 0x1c, 0x87, 0xad, 0x13, 0xab, 0x43, 0xa8, 0x2d, 0x85, 0x2b, 0xb3, - 0x1c, 0x91, 0x10, 0xa0, 0xa2, 0x5e, 0xb1, 0x4a, 0xb2, 0x1a, 0x80, 0x21, 0xe8, 0x69, 0xb2, 0x0a, - 0x01, 0x1a, 0x02, 0xd0, 0x58, 0xb0, 0x18, 0x20, 0xad, 0x93, 0x7a, 0x00, 0xd0, 0x49, 0xd1, 0x28, - 0x80, 0x92, 0x5a, 0xb9, 0x04, 0x9c, 0x41, 0xa8, 0x10, 0xa0, 0x4c, 0xc1, 0x21, 0xa1, 0x0a, 0x08, - 0xa0, 0x51, 0xa8, 0x03, 0xb9, 0x59, 0xf3, 0x3b, 0xa2, 0x30, 0x94, 0x9d, 0x10, 0xba, 0x15, 0x3b, - 0xa2, 0x94, 0x2d, 0xa3, 0x0e, 0x82, 0x88, 0x20, 0xc2, 0x58, 0xe9, 0x28, 0x81, 0x88, 0x08, 0x02, - 0x0a, 0xab, 0x64, 0xba, 0x12, 0x20, 0x1c, 0xf0, 0x58, 0x91, 0x0b, 0x93, 0xab, 0x53, 0x99, 0x22, - 0xfa, 0x20, 0x93, 0x0d, 0x12, 0xbb, 0x06, 0x9b, 0x13, 0x8b, 0x22, 0x98, 0xaa, 0x95, 0x48, 0x00, - 0xa8, 0x01, 0x81, 0xfe, 0x38, 0x01, 0xa0, 0x51, 0xda, 0x80, 0x01, 0x20, 0x01, 0x80, 0x91, 0xec, - 0x78, 0xb8, 0x29, 0x82, 0x0d, 0x24, 0x8b, 0x82, 0x8c, 0x19, 0xa7, 0x4a, 0x81, 0x00, 0xa9, 0xb1, - 0x3d, 0xa8, 0x14, 0x29, 0xb0, 0x3b, 0x95, 0x8a, 0x4b, 0xa1, 0x87, 0x0a, 0x83, 0xb9, 0x2f, 0xa7, - 0x19, 0x98, 0x18, 0x11, 0xa9, 0x30, 0xc8, 0x82, 0x78, 0xb8, 0x31, 0xda, 0x12, 0x18, 0xbd, 0x44, - 0xca, 0x41, 0x89, 0x90, 0x01, 0x8b, 0x12, 0xca, 0x53, 0xa0, 0x28, 0xa9, 0xa1, 0x38, 0xcb, 0x60, - 0xd2, 0x38, 0x11, 0xc8, 0x09, 0x81, 0x1a, 0xba, 0x42, 0x07, 0x0f, 0x81, 0x08, 0x90, 0x32, 0x0c, - 0x93, 0x0e, 0xa2, 0x0a, 0x12, 0xa4, 0x3e, 0xb2, 0x90, 0x21, 0xaa, 0x7c, 0xb0, 0xa2, 0x4a, 0x98, - 0x16, 0x99, 0x1a, 0xb1, 0xb1, 0x71, 0xe1, 0x28, 0xa0, 0x4a, 0xb5, 0x1b, 0x03, 0xaa, 0x60, 0xc1, - 0x39, 0xc1, 0x28, 0x92, 0xab, 0x06, 0x0b, 0x02, 0xa8, 0x1b, 0xa3, 0x78, 0x92, 0x9b, 0x98, 0x34, - 0x1a, 0xd2, 0x2b, 0xa9, 0x02, 0x17, 0x1a, 0xad, 0x24, 0xa9, 0x18, 0x0b, 0x22, 0x87, 0x0e, 0x03, - 0xbb, 0x41, 0xc2, 0x2a, 0xb2, 0x3a, 0xa3, 0x98, 0x7a, 0xf2, 0x58, 0xa8, 0x18, 0x88, 0x08, 0x01, - 0x09, 0xa2, 0x20, 0x9f, 0x22, 0x92, 0xae, 0x53, 0x99, 0x18, 0xa2, 0x2a, 0xa8, 0x93, 0x01, 0x9f, - 0x05, 0xb9, 0x30, 0xb9, 0x25, 0x0a, 0xe3, 0x68, 0xc9, 0x41, 0xa9, 0x01, 0x09, 0xa1, 0x08, 0xa8, - 0x71, 0xa8, 0x92, 0xb0, 0x79, 0x90, 0x20, 0x98, 0xd2, 0x4c, 0xb2, 0x00, 0x0b, 0x04, 0x8b, 0x87, - 0x8c, 0x81, 0x18, 0x21, 0x80, 0x9b, 0x07, 0x8c, 0x94, 0x2c, 0xb3, 0x00, 0x8a, 0x82, 0x4b, 0xd3, - 0x38, 0xb9, 0x12, 0x2e, 0x92, 0x01, 0x1f, 0xa3, 0x09, 0x2a, 0x94, 0x18, 0xe8, 0x38, 0xb8, 0x82, - 0x3d, 0x14, 0xba, 0x28, 0x92, 0x99, 0x7a, 0xc3, 0x8a, 0x11, 0x01, 0x9d, 0x12, 0x00, 0x81, 0x98, - 0x3f, 0xc5, 0x39, 0x9a, 0x14, 0x9e, 0x84, 0x38, 0xca, 0x21, 0x88, 0x8a, 0x15, 0xaa, 0x10, 0x09, - 0x03, 0x90, 0x0b, 0x89, 0x87, 0xba, 0x28, 0x9a, 0x33, 0x77, 0xdb, 0x11, 0x09, 0x23, 0xba, 0x21, - 0xbc, 0x23, 0xaa, 0x86, 0x1a, 0xdb, 0x26, 0xbb, 0x32, 0x9b, 0x07, 0x1a, 0x80, 0xc8, 0x30, 0x81, - 0xaa, 0x22, 0xf8, 0x7a, 0x98, 0x00, 0x28, 0xb9, 0x53, 0xca, 0x21, 0x99, 0x00, 0x82, 0x39, 0xe9, - 0x11, 0x3c, 0xf1, 0x48, 0xa8, 0x21, 0xb9, 0x04, 0x9b, 0x15, 0xb9, 0x02, 0x4b, 0xe9, 0x32, 0x9c, - 0x33, 0xca, 0x12, 0x8a, 0x81, 0x89, 0x63, 0xa8, 0x8b, 0x05, 0x8e, 0x13, 0xaa, 0x30, 0xa2, 0x0b, - 0x23, 0xdf, 0x73, 0x99, 0x11, 0xab, 0x22, 0xa9, 0x80, 0x78, 0xba, 0x33, 0xaa, 0x82, 0x1c, 0x80, - 0x22, 0x21, 0xad, 0x07, 0x9c, 0x31, 0xb0, 0x1a, 0x91, 0x3c, 0xa4, 0x9c, 0x25, 0x9c, 0x14, 0xa9, - 0x10, 0x00, 0x1d, 0x87, 0x8c, 0x03, 0x0b, 0x91, 0x08, 0x29, 0xb6, 0x3b, 0xa3, 0x1a, 0x93, 0x1a, - 0x83, 0xcc, 0x5a, 0xb4, 0x28, 0x3b, 0xa5, 0x0b, 0x9a, 0x53, 0x1a, 0xa7, 0x1d, 0x91, 0x08, 0x38, - 0xb1, 0x2b, 0x14, 0x8c, 0xc2, 0x38, 0x92, 0x2c, 0x93, 0xe3, 0x3d, 0xa1, 0x18, 0xb1, 0x6a, 0xa9, - 0x04, 0x20, 0x8d, 0xd3, 0x29, 0x80, 0x22, 0x1a, 0xf2, 0x3b, 0xa4, 0x3a, 0x99, 0x83, 0x1a, 0xa2, - 0x20, 0xdf, 0x43, 0x89, 0x92, 0xab, 0x94, 0x58, 0x9a, 0x81, 0xb8, 0x54, 0x8a, 0x94, 0x8b, 0x39, - 0xd3, 0x2a, 0x96, 0x2c, 0xb8, 0x12, 0x39, 0xc2, 0x20, 0xa2, 0x2e, 0xa8, 0x00, 0x01, 0x0c, 0x07, - 0xaa, 0x01, 0x99, 0x12, 0x4a, 0x1a, 0xf3, 0x20, 0x09, 0x00, 0xb1, 0x2f, 0x05, 0x9a, 0x29, 0xd2, - 0x4b, 0xc1, 0x31, 0x99, 0x11, 0x0b, 0xb0, 0x01, 0x2a, 0x35, 0xa9, 0x20, 0xbe, 0xa1, 0x34, 0x78, - 0xf3, 0x18, 0xaa, 0x89, 0x25, 0xa8, 0x41, 0xba, 0x11, 0x8a, 0x19, 0xa6, 0x38, 0x49, 0xf1, 0x28, - 0xba, 0x42, 0xb8, 0x30, 0x08, 0xbb, 0x17, 0xac, 0x22, 0x81, 0x19, 0xa2, 0x09, 0xbc, 0x53, 0x01, - 0xca, 0x71, 0xc9, 0x11, 0x08, 0xab, 0x64, 0xa0, 0x0a, 0xa1, 0x8a, 0x33, 0x91, 0x88, 0x00, 0x1e, - 0xa7, 0x3a, 0x98, 0x91, 0x21, 0x09, 0xba, 0xf0, 0x6a, 0x20, 0xb8, 0x20, 0x08, 0xab, 0x87, 0x0c, - 0x11, 0x08, 0x05, 0x8b, 0xd0, 0x41, 0x99, 0xc8, 0x40, 0xa2, 0x3b, 0xb3, 0xaa, 0x41, 0x59, 0xf1, - 0x20, 0x9a, 0x93, 0x49, 0xc1, 0x19, 0xa2, 0x18, 0x2c, 0xa5, 0x2b, 0x82, 0xba, 0x15, 0x29, 0x9f, - 0x94, 0x39, 0xa1, 0x3a, 0xc4, 0x4b, 0xb2, 0x0a, 0x3a, 0x97, 0x3a, 0x89, 0xb9, 0x40, 0x83, 0x0f, - 0x83, 0x09, 0x12, 0xbb, 0x29, 0x87, 0xbb, 0x32, 0xb0, 0x14, 0x0e, 0xb4, 0x2c, 0xa2, 0x42, 0xbc, - 0x63, 0xb9, 0x91, 0x51, 0x9c, 0x03, 0x98, 0x5b, 0xc0, 0x21, 0x89, 0x91, 0x20, 0xdb, 0x33, 0xca, - 0x63, 0xba, 0x81, 0x20, 0x9b, 0x16, 0xd0, 0x5b, 0xa2, 0x1a, 0x92, 0x99, 0x40, 0xc0, 0x30, 0xe0, - 0x28, 0x81, 0x09, 0x91, 0x9c, 0x42, 0xb3, 0x2a, 0xa2, 0x0f, 0x91, 0x13, 0x2d, 0xc2, 0x19, 0x02, - 0x8a, 0xa9, 0x06, 0x0a, 0x08, 0x2a, 0xf3, 0x38, 0x01, 0xb1, 0x2c, 0x84, 0x99, 0x01, 0xbe, 0x13, - 0x90, 0x4e, 0x85, 0x9b, 0x28, 0x89, 0x82, 0x08, 0x63, 0xe8, 0x29, 0xa2, 0x89, 0x12, 0x10, 0x9a, - 0xf4, 0x3b, 0x19, 0xb7, 0x18, 0x30, 0xca, 0x12, 0x09, 0x10, 0xc0, 0x1b, 0x23, 0x9e, 0x25, 0xaa, - 0x89, 0x08, 0x44, 0xb9, 0xb8, 0x70, 0xe8, 0x12, 0x10, 0xc0, 0x28, 0x88, 0x89, 0x81, 0x1a, 0x03, - 0xcb, 0x74, 0xb9, 0x99, 0x04, 0x20, 0xa2, 0x9d, 0x31, 0xf9, 0x51, 0xa8, 0x18, 0x28, 0x9c, 0x05, - 0xac, 0x24, 0x8b, 0x84, 0x0a, 0x19, 0xb3, 0x1c, 0x04, 0xdb, 0x43, 0x9a, 0x92, 0x1a, 0x84, 0x1b, - 0xc3, 0x68, 0xb9, 0x20, 0x8c, 0x96, 0x4a, 0xb0, 0x18, 0x81, 0x88, 0x29, 0xb2, 0x49, 0xa6, 0x2f, - 0xc2, 0x28, 0x00, 0x88, 0x1b, 0xa4, 0x2a, 0xb2, 0x8b, 0x23, 0x2b, 0x97, 0x19, 0x11, 0xbc, 0x51, - 0xc0, 0x1a, 0x86, 0x2a, 0xd2, 0x29, 0xb8, 0x80, 0x73, 0xc9, 0x21, 0xa8, 0x49, 0xe2, 0x38, 0x90, - 0x88, 0x20, 0xd9, 0x31, 0xc9, 0x50, 0xc8, 0x10, 0x81, 0x8b, 0x86, 0x0a, 0x12, 0xaa, 0x10, 0x83, - 0x2c, 0xd1, 0x48, 0x99, 0x91, 0x38, 0xce, 0x17, 0x8a, 0x81, 0x8a, 0x03, 0x08, 0x09, 0xc1, 0x2a, - 0x06, 0x8c, 0x04, 0xac, 0x33, 0xba, 0x18, 0x13, 0x1e, 0xa5, 0x3c, 0xb1, 0x29, 0x22, 0xab, 0x12, - 0xe8, 0x3a, 0x01, 0x0a, 0x13, 0x8f, 0x87, 0x1c, 0x91, 0x29, 0x90, 0x21, 0x9b, 0xb3, 0x7a, 0xb0, - 0x18, 0x92, 0x1c, 0x92, 0x00, 0x32, 0xbe, 0x21, 0xd4, 0x6c, 0xa1, 0x2a, 0x81, 0x0a, 0x21, 0xc0, - 0x0c, 0x01, 0x10, 0x90, 0x78, 0xc2, 0x2a, 0x90, 0x90, 0x19, 0x81, 0x03, 0x9c, 0x33, 0xcf, 0x84, - 0x3b, 0x93, 0x93, 0x1f, 0xd3, 0x29, 0x91, 0x89, 0x13, 0x0c, 0x43, 0xd9, 0x0a, 0x84, 0x2d, 0x83, - 0x9b, 0x04, 0xaa, 0x58, 0xd3, 0x2b, 0x12, 0xaa, 0x24, 0xab, 0x91, 0x4a, 0x83, 0x90, 0xaf, 0x15, - 0x2a, 0xe2, 0x28, 0xba, 0x23, 0x00, 0x88, 0x99, 0x39, 0x07, 0xb8, 0x2b, 0xa2, 0x3a, 0xf1, 0x70, - 0xb8, 0x30, 0x82, 0x9e, 0x88, 0x21, 0x90, 0x50, 0x98, 0xf1, 0x30, 0xa8, 0x00, 0x08, 0x30, 0xca, - 0x84, 0x2b, 0xaa, 0x84, 0x2a, 0x14, 0xdc, 0x41, 0x91, 0x09, 0x88, 0xa0, 0x6a, 0xc2, 0x60, 0xd9, - 0x28, 0x88, 0xa3, 0x18, 0x08, 0xa8, 0x10, 0x23, 0x9d, 0x01, 0xa1, 0x03, 0xff, 0x05, 0x88, 0x18, - 0xb0, 0x2c, 0x94, 0x2a, 0x91, 0x8a, 0x24, 0xac, 0x84, 0x8c, 0x13, 0x01, 0x9b, 0x96, 0x1e, 0x82, - 0x08, 0x88, 0x80, 0x01, 0x98, 0x28, 0xe9, 0x29, 0x43, 0xca, 0xa1, 0x59, 0x01, 0xc0, 0x49, 0xb0, - 0x41, 0x9d, 0x85, 0x89, 0x3a, 0xa4, 0x9a, 0x14, 0x0d, 0xa1, 0x81, 0x78, 0xb0, 0x09, 0x82, 0x38, - 0xc9, 0x28, 0x04, 0x9d, 0x24, 0xbd, 0x30, 0x01, 0x08, 0xb1, 0x2a, 0x85, 0x8c, 0x03, 0x8d, 0x13, - 0xc1, 0x69, 0xb8, 0x8a, 0x15, 0x99, 0x80, 0xa2, 0x3a, 0xa0, 0x62, 0xe2, 0x3a, 0x80, 0x90, 0x88, - 0x90, 0x6a, 0xb2, 0x18, 0xab, 0x85, 0x4b, 0x94, 0x8b, 0x22, 0x8b, 0xa0, 0x07, 0x8e, 0x14, 0x8c, - 0x93, 0x0b, 0x12, 0xa8, 0x4b, 0xa4, 0x2b, 0x83, 0x00, 0x85, 0xaf, 0x04, 0x90, 0x8c, 0x13, 0x89, - 0xc1, 0x7a, 0xb1, 0x18, 0x21, 0x08, 0x8c, 0xc1, 0x50, 0x99, 0x90, 0x43, 0x9d, 0xb1, 0x40, 0x90, - 0x98, 0x52, 0xc0, 0x3a, 0xb2, 0x22, 0xad, 0x04, 0x0a, 0x98, 0x01, 0x40, 0x9c, 0xf2, 0x61, 0xa9, - 0x00, 0x81, 0x18, 0x2a, 0xa4, 0x01, 0xaf, 0x83, 0x88, 0x28, 0xb3, 0x3d, 0xb3, 0x0a, 0x63, 0xea, - 0x30, 0x81, 0x9b, 0x82, 0x11, 0x9a, 0x98, 0x42, 0x88, 0x2d, 0xc7, 0x59, 0xc9, 0x22, 0x8a, 0x92, - 0x19, 0x02, 0xa9, 0x5b, 0xb3, 0x0b, 0x23, 0xe8, 0x3c, 0xb0, 0x36, 0xaa, 0x08, 0xa0, 0x28, 0x18, - 0x00, 0x17, 0xbf, 0x42, 0x98, 0x99, 0x33, 0xa9, 0x94, 0x0e, 0x01, 0xc8, 0x51, 0x99, 0xa2, 0x10, - 0x18, 0xb3, 0x8f, 0x85, 0x1b, 0xa0, 0x03, 0x7b, 0xd2, 0x39, 0xa9, 0x13, 0x8b, 0x1a, 0x94, 0x89, - 0x24, 0x8b, 0xba, 0x36, 0x0b, 0xe9, 0x51, 0xa0, 0x10, 0x8b, 0xa0, 0x21, 0x81, 0x79, 0xf1, 0x28, - 0x90, 0x11, 0xac, 0x83, 0x48, 0xc8, 0x40, 0xba, 0x14, 0x1c, 0x12, 0xaa, 0x10, 0x18, 0x9c, 0x17, - 0x8d, 0x82, 0x89, 0x30, 0xc1, 0x58, 0xc9, 0x20, 0x83, 0x9d, 0x20, 0xa0, 0x40, 0x90, 0x00, 0xcb, - 0x20, 0x83, 0x3a, 0xc1, 0x0a, 0x06, 0x0d, 0x91, 0x11, 0x9d, 0x05, 0x09, 0xc1, 0x40, 0x80, 0xcb, - 0x18, 0x85, 0x28, 0xbb, 0x17, 0x8b, 0x01, 0x08, 0xb8, 0x00, 0x30, 0x13, 0xdf, 0x14, 0x9a, 0x18, - 0x08, 0x12, 0xa0, 0x1f, 0x94, 0x8b, 0x40, 0x83, 0xad, 0x11, 0x10, 0xc9, 0x41, 0x98, 0x98, 0x3a, - 0x42, 0xf0, 0x59, 0x98, 0x09, 0xc2, 0x48, 0x00, 0xc9, 0x33, 0xbb, 0x41, 0xc8, 0x20, 0xb2, 0x0e, - 0x03, 0x9a, 0x04, 0x1a, 0x30, 0xf9, 0x58, 0x09, 0x98, 0x10, 0x99, 0x1b, 0x10, 0xc2, 0x71, 0xa1, - 0x19, 0x10, 0xdc, 0x25, 0x8c, 0x80, 0x81, 0x3a, 0xb2, 0x19, 0xa0, 0x81, 0x79, 0xf1, 0x30, 0x98, - 0x08, 0x80, 0xd9, 0x30, 0x59, 0xc3, 0x8a, 0x02, 0x9a, 0x40, 0xc8, 0x23, 0x9d, 0x31, 0x85, 0xae, - 0x23, 0x0c, 0x01, 0x98, 0x30, 0xea, 0x50, 0xa1, 0x89, 0x21, 0xca, 0x22, 0xaa, 0x52, 0xba, 0x83, - 0x4a, 0xc0, 0x48, 0xa8, 0x84, 0x2f, 0xc3, 0x10, 0x99, 0x01, 0x98, 0x88, 0x14, 0xba, 0x63, 0xca, - 0x28, 0x96, 0x0b, 0x11, 0xa9, 0x68, 0xc2, 0x39, 0xd0, 0x29, 0x01, 0xa9, 0x52, 0xaa, 0x23, 0xba, - 0x48, 0xf2, 0x5b, 0x91, 0x08, 0x08, 0x81, 0x89, 0xca, 0x27, 0x0d, 0x83, 0x9a, 0x10, 0x88, 0x88, - 0x11, 0x0b, 0x87, 0x1a, 0x01, 0xbb, 0x14, 0x8c, 0x22, 0xf2, 0x4a, 0xa2, 0x0c, 0x84, 0x8a, 0x20, - 0xb0, 0x23, 0xbd, 0x71, 0xa8, 0x20, 0x93, 0x8f, 0x93, 0x89, 0x04, 0x8c, 0x10, 0xb1, 0x50, 0xc0, - 0x19, 0x82, 0x0a, 0x53, 0xbc, 0x04, 0x8b, 0x21, 0x92, 0x0c, 0xa2, 0x28, 0x08, 0x91, 0xe8, 0x2c, - 0x07, 0x2b, 0xc1, 0x18, 0x39, 0xd1, 0x30, 0xc0, 0x3a, 0x84, 0x0a, 0xb8, 0x0a, 0x73, 0xc0, 0x38, - 0xa1, 0x0e, 0x93, 0x1a, 0x01, 0x2a, 0xa5, 0x00, 0x4b, 0xc9, 0x32, 0xb0, 0x3c, 0xc1, 0x8c, 0x25, - 0x9b, 0x14, 0xba, 0x42, 0xc0, 0x59, 0xc0, 0x29, 0x02, 0x9b, 0x24, 0xfb, 0x40, 0x89, 0x80, 0x81, - 0x1c, 0x93, 0x0b, 0x13, 0x90, 0x7a, 0xb8, 0x10, 0x98, 0x8a, 0x49, 0xf3, 0x50, 0x80, 0xc1, 0x2a, - 0xb1, 0x5b, 0xa3, 0x8a, 0x52, 0xc8, 0x20, 0xc8, 0x1a, 0x05, 0x0c, 0x86, 0x8b, 0x11, 0xa0, 0x3a, - 0xb4, 0x2a, 0x80, 0x88, 0x17, 0x9c, 0x19, 0x81, 0x98, 0x42, 0x0b, 0xa3, 0x30, 0xca, 0x00, 0x8c, - 0x27, 0x9b, 0x81, 0x29, 0xc0, 0x92, 0x0f, 0x12, 0xa2, 0x7a, 0xa0, 0x8a, 0x11, 0x88, 0x31, 0xe2, - 0x4b, 0xb1, 0x09, 0x30, 0xba, 0x94, 0x2a, 0x31, 0xa1, 0xbf, 0x47, 0xbb, 0x13, 0x08, 0x8c, 0x83, - 0x20, 0xf8, 0x1a, 0x20, 0xc1, 0x38, 0x92, 0xc2, 0x5d, 0xb1, 0x82, 0x0d, 0x83, 0x2a, 0xb0, 0x68, - 0xa8, 0x01, 0x28, 0xea, 0x18, 0x11, 0x28, 0xd4, 0x3b, 0x94, 0x19, 0x9a, 0x90, 0x21, 0xf3, 0x59, - 0xaa, 0x02, 0x11, 0xa9, 0x81, 0x68, 0xd9, 0x12, 0x0b, 0x94, 0x4b, 0xf0, 0x51, 0xa8, 0x10, 0xa8, - 0x19, 0xa8, 0x29, 0x17, 0x9d, 0x23, 0x99, 0x88, 0x08, 0x10, 0x00, 0xaa, 0x16, 0x0f, 0x82, 0x88, - 0x88, 0x0a, 0x30, 0xb2, 0x03, 0x1e, 0x18, 0xb1, 0x32, 0x20, 0xcf, 0x14, 0x8b, 0x10, 0xb8, 0x11, - 0xc1, 0x3c, 0xc3, 0x20, 0x51, 0xb0, 0x80, 0xab, 0x91, 0x78, 0x90, 0xe1, 0x50, 0xb9, 0x28, 0x18, - 0x08, 0x94, 0x0f, 0x15, 0xaa, 0x22, 0xac, 0x20, 0x84, 0x9e, 0x05, 0x0c, 0x82, 0x19, 0x9a, 0x93, - 0x60, 0xa1, 0x0a, 0x92, 0x8a, 0xa8, 0x14, 0x19, 0x92, 0xb9, 0x84, 0x0f, 0xb2, 0x16, 0x9c, 0x62, - 0xa9, 0x91, 0x29, 0x99, 0x05, 0x0b, 0x12, 0xea, 0x58, 0xa0, 0x39, 0xb9, 0x31, 0x10, 0xd9, 0x71, - 0xc8, 0x01, 0x08, 0xa0, 0x08, 0x82, 0x18, 0xf0, 0x30, 0x89, 0xb3, 0x2d, 0x84, 0x1b, 0xa5, 0x39, - 0x9a, 0xf0, 0x50, 0xa0, 0x80, 0x10, 0xaa, 0x22, 0x1a, 0x96, 0x9c, 0x38, 0x12, 0xbb, 0x60, 0xb1, - 0x1c, 0x10, 0x83, 0x0d, 0x91, 0x52, 0xca, 0x21, 0x99, 0x89, 0x50, 0xc2, 0x59, 0xa8, 0x08, 0x80, - 0x8a, 0x28, 0xb5, 0x5a, 0x80, 0xa0, 0x12, 0x1b, 0xa8, 0x00, 0x04, 0xca, 0x8f, 0x07, 0xaa, 0x20, - 0x84, 0x0b, 0x21, 0x98, 0xd0, 0x38, 0x2a, 0xb6, 0x09, 0x01, 0x0b, 0xc2, 0x58, 0x92, 0x9f, 0x82, - 0x41, 0x0c, 0xa5, 0x29, 0xb9, 0x31, 0xc1, 0x12, 0x8e, 0x23, 0x98, 0x9e, 0x21, 0x00, 0x0a, 0x13, - 0xa0, 0xbe, 0x45, 0x9a, 0xa0, 0x41, 0xc0, 0x28, 0xa9, 0x15, 0x8b, 0x90, 0x21, 0x80, 0x8e, 0x03, - 0x99, 0x21, 0x08, 0xf1, 0x59, 0x0a, 0xb4, 0x5a, 0x91, 0x09, 0xd1, 0x3a, 0x98, 0x03, 0x94, 0x08, - 0x1f, 0xa3, 0x80, 0x0b, 0x38, 0xf8, 0x43, 0x19, 0xfa, 0x21, 0x88, 0x88, 0x01, 0xb9, 0x38, 0x49, - 0xf0, 0x19, 0x33, 0x0b, 0x84, 0x9c, 0x18, 0x90, 0x14, 0x8d, 0x90, 0x81, 0x78, 0xa0, 0x09, 0x95, - 0x2b, 0xb0, 0xb0, 0x79, 0xb2, 0x38, 0x92, 0x0b, 0x91, 0x79, 0xe0, 0x00, 0x3a, 0xc0, 0x18, 0x11, - 0xa0, 0x29, 0x16, 0x0b, 0xa2, 0x2c, 0xb0, 0xa0, 0x6b, 0x86, 0x8b, 0x21, 0xb3, 0x8f, 0x00, 0x88, - 0x85, 0x1b, 0x82, 0xa8, 0x62, 0xaa, 0x90, 0x11, 0x1b, 0x95, 0x1b, 0x90, 0x23, 0x8c, 0x68, 0xf0, - 0x50, 0x99, 0x80, 0x1a, 0xb3, 0x7b, 0xb2, 0x18, 0xaa, 0x86, 0x2a, 0x89, 0x02, 0xaa, 0x62, 0xd8, - 0x38, 0x98, 0x01, 0x12, 0xf9, 0x3c, 0x01, 0xab, 0x24, 0x18, 0x92, 0x0f, 0x92, 0x19, 0x1c, 0x87, - 0x9a, 0x02, 0x99, 0x81, 0x10, 0xa0, 0x16, 0x9f, 0x22, 0x89, 0x88, 0x01, 0xaa, 0x23, 0x2c, 0xa5, - 0x8b, 0x41, 0xa9, 0x11, 0xbc, 0x15, 0x2a, 0xf9, 0x42, 0x89, 0x80, 0x08, 0x98, 0x8d, 0x24, 0x91, - 0x1d, 0x01, 0xa1, 0x3a, 0xab, 0x87, 0x1a, 0xb2, 0x18, 0x99, 0x4b, 0x82, 0xc2, 0x4c, 0x95, 0x29, - 0x09, 0xf0, 0x48, 0x89, 0x81, 0xa1, 0x29, 0xe8, 0x30, 0xc8, 0x40, 0xa1, 0x21, 0x2d, 0xd1, 0x28, - 0xb8, 0x51, 0x98, 0x18, 0x88, 0x19, 0xb2, 0xeb, 0x71, 0xc8, 0x21, 0x88, 0x00, 0x91, 0x8a, 0x43, - 0xea, 0x48, 0xa8, 0x14, 0x9f, 0x12, 0x08, 0xa0, 0x11, 0x88, 0x1c, 0x92, 0x80, 0xc0, 0x79, 0x91, - 0x90, 0x1e, 0xa3, 0x10, 0x0a, 0x14, 0x9d, 0x98, 0x63, 0xa8, 0x39, 0xb8, 0x11, 0x8b, 0x33, 0xcb, - 0xb3, 0x5f, 0x93, 0x8b, 0x19, 0x07, 0x8b, 0x00, 0x88, 0xb2, 0x4c, 0x01, 0xca, 0x50, 0x80, 0xa1, - 0x80, 0x2b, 0x92, 0xb9, 0x73, 0xb0, 0x3a, 0xb2, 0x10, 0xfa, 0x49, 0x83, 0xdb, 0x41, 0xa8, 0x32, - 0x9d, 0x83, 0x21, 0x9c, 0x17, 0xbb, 0x18, 0x88, 0x92, 0x0c, 0x42, 0xb8, 0x14, 0x8a, 0xa0, 0x78, - 0xc9, 0x23, 0x18, 0xaa, 0x18, 0xe2, 0x1d, 0x10, 0xb3, 0x79, 0xb0, 0x21, 0xc9, 0x10, 0xb0, 0x52, - 0x90, 0x0a, 0xa1, 0x99, 0x5e, 0xa4, 0x2c, 0xb2, 0x1a, 0x01, 0xa1, 0x71, 0xc8, 0x18, 0x02, 0x99, - 0x28, 0xd8, 0x38, 0xa9, 0x71, 0xd1, 0x20, 0x89, 0x08, 0x12, 0xda, 0x10, 0xa1, 0x2e, 0x83, 0x28, - 0xac, 0x43, 0xb8, 0xba, 0x54, 0xa8, 0x88, 0x19, 0x13, 0x0a, 0xb2, 0xba, 0x7a, 0x90, 0x23, 0x08, - 0xf1, 0x7c, 0xb8, 0x22, 0x0b, 0x82, 0x92, 0x8f, 0x02, 0x0b, 0x82, 0x09, 0x19, 0x80, 0x72, 0xd9, - 0x41, 0x90, 0x90, 0x29, 0xd9, 0x42, 0xbb, 0x31, 0xca, 0x31, 0xcb, 0x51, 0x84, 0x0d, 0x03, 0xba, - 0x41, 0x89, 0x94, 0x8c, 0x13, 0x90, 0x9e, 0x00, 0x81, 0x20, 0x19, 0xf3, 0x3a, 0x82, 0x98, 0x41, - 0xab, 0x85, 0x2b, 0x91, 0x87, 0x8f, 0x92, 0x3a, 0xa4, 0x09, 0x29, 0xc2, 0x38, 0xa8, 0x38, 0x05, - 0x0d, 0xb1, 0x19, 0x49, 0xd4, 0x29, 0x88, 0x8a, 0x85, 0x08, 0x1a, 0x83, 0xb1, 0x2f, 0x93, 0x19, - 0xa1, 0x48, 0x0a, 0xfc, 0x32, 0xc9, 0x42, 0x99, 0xa1, 0x22, 0xaf, 0x13, 0x9a, 0x12, 0x11, 0xb8, - 0x30, 0xcb, 0x07, 0x8c, 0x11, 0xa9, 0x85, 0x3c, 0xc0, 0x00, 0x28, 0xb1, 0x58, 0xb1, 0x50, 0xd8, - 0x10, 0x88, 0xb9, 0x54, 0xba, 0x21, 0x8a, 0x22, 0x80, 0x8e, 0x04, 0x9d, 0x04, 0x29, 0xa1, 0xa0, - 0x5b, 0xc0, 0x89, 0x33, 0x1a, 0xc2, 0x02, 0xa9, 0x0f, 0x13, 0x23, 0xe8, 0x39, 0xa9, 0xe9, 0x01, - 0x60, 0xb9, 0x04, 0x1b, 0x93, 0x0a, 0x10, 0xa6, 0x2e, 0xb2, 0x1a, 0x81, 0x01, 0x20, 0xf8, 0x29, - 0x02, 0xba, 0x22, 0x8c, 0x14, 0x89, 0x00, 0x00, 0x39, 0x95, 0x8f, 0xa1, 0x00, 0x49, 0xc8, 0x83, - 0x0f, 0x04, 0x18, 0xa8, 0x90, 0x3c, 0x94, 0x0a, 0x91, 0x10, 0x1b, 0xd8, 0x20, 0x8b, 0x07, 0x1a, - 0x09, 0x83, 0x2a, 0xb1, 0x12, 0xf3, 0x4a, 0x1b, 0xf3, 0x28, 0x3c, 0xe2, 0x11, 0x2a, 0xd2, 0x38, - 0xd0, 0x21, 0x0b, 0x93, 0x60, 0xd8, 0x00, 0x8b, 0x12, 0x01, 0x3c, 0xa2, 0xba, 0x78, 0xa0, 0x02, - 0xa9, 0x30, 0x81, 0xa2, 0x3c, 0xd4, 0x2b, 0x90, 0x91, 0xbf, 0x24, 0x41, 0xf9, 0x11, 0x1b, 0x82, - 0x19, 0x82, 0x02, 0xbe, 0x13, 0xab, 0x09, 0x23, 0x2d, 0xc6, 0x49, 0x00, 0xd0, 0x30, 0xb8, 0x40, - 0x91, 0x1a, 0xb2, 0x9d, 0x42, 0xe8, 0x3b, 0x95, 0x3a, 0xd0, 0x30, 0x1a, 0xa5, 0x3a, 0xb1, 0x19, - 0x88, 0x13, 0xbb, 0x81, 0x1f, 0xb6, 0x29, 0x18, 0xa8, 0x03, 0x1c, 0xc9, 0x37, 0x8d, 0x83, 0x1a, - 0x90, 0x18, 0xc8, 0x52, 0xcb, 0x31, 0xa9, 0x52, 0x9a, 0xa0, 0x28, 0xcb, 0x46, 0xaa, 0x13, 0x89, - 0xa8, 0x42, 0xca, 0x51, 0xb9, 0x81, 0x1b, 0x80, 0x15, 0x0c, 0x88, 0x22, 0xba, 0x32, 0x2b, 0x87, - 0xab, 0x98, 0x04, 0x8e, 0x17, 0x8b, 0x81, 0x89, 0x09, 0x05, 0x0e, 0x04, 0x8a, 0x00, 0xb0, 0x29, - 0x92, 0x79, 0xd2, 0x28, 0x98, 0xa8, 0x49, 0xb3, 0x7b, 0xc1, 0x38, 0x99, 0xa2, 0x1c, 0x03, 0x80, - 0x1a, 0x94, 0x9c, 0x33, 0xbc, 0x25, 0xab, 0x21, 0x95, 0x0f, 0x92, 0x19, 0x93, 0x8c, 0x44, 0xea, - 0x38, 0x91, 0x09, 0x12, 0xba, 0x48, 0xb0, 0x28, 0x99, 0x12, 0xad, 0x32, 0xb3, 0x4e, 0x93, 0xaa, - 0x1a, 0x52, 0xe1, 0x3a, 0x83, 0xc9, 0x48, 0xaa, 0x23, 0xd9, 0x59, 0xa2, 0x8c, 0x25, 0xb9, 0x81, - 0x09, 0x41, 0xf8, 0x39, 0x81, 0x9a, 0x24, 0x9d, 0x85, 0x9a, 0x30, 0xb1, 0x0a, 0x22, 0x89, 0xb2, - 0x5a, 0x04, 0x8e, 0x12, 0xaa, 0x22, 0xb9, 0x3e, 0xc5, 0x3a, 0xa0, 0x11, 0x84, 0x2b, 0xa2, 0xcb, - 0x71, 0xc0, 0x49, 0x90, 0x9a, 0x83, 0x2b, 0xa2, 0x21, 0x28, 0x88, 0xb5, 0x0e, 0x31, 0xf3, 0x38, - 0x99, 0x8a, 0x06, 0x8b, 0x81, 0xa9, 0x45, 0xac, 0x13, 0xba, 0x41, 0x02, 0xcb, 0x24, 0x0b, 0x02, - 0xac, 0x18, 0x84, 0x1c, 0xb1, 0x7b, 0xd1, 0x29, 0x91, 0x09, 0x21, 0x85, 0x8a, 0xa2, 0x40, 0xf8, - 0x20, 0x0a, 0x81, 0xa0, 0x3c, 0xd2, 0x0a, 0x23, 0x0a, 0xb3, 0x12, 0x7b, 0xd9, 0x31, 0x88, 0x11, - 0xb9, 0x0b, 0x04, 0xce, 0x52, 0xb0, 0x20, 0x9b, 0x97, 0x8a, 0x32, 0x81, 0xad, 0x25, 0x8c, 0x01, - 0x88, 0x2a, 0xc3, 0x1d, 0x83, 0x8c, 0x11, 0x02, 0x90, 0x8b, 0x42, 0xe2, 0x30, 0x89, 0xc0, 0x19, - 0x01, 0x9b, 0x80, 0x07, 0x1e, 0x94, 0x1d, 0x03, 0x9a, 0x02, 0x00, 0x8e, 0x94, 0x3b, 0xa3, 0x89, - 0x30, 0xf8, 0x48, 0xb1, 0x1a, 0x91, 0x18, 0x62, 0xfa, 0x31, 0x8a, 0x98, 0x11, 0x1b, 0x12, 0xa1, - 0x30, 0x8e, 0xb5, 0x5a, 0xa1, 0x8a, 0x02, 0x9b, 0x21, 0xb4, 0x3f, 0xe4, 0x39, 0xa1, 0x29, 0x12, - 0xb8, 0x78, 0xe8, 0x28, 0x91, 0x89, 0x11, 0xa8, 0x20, 0xb8, 0x41, 0xd8, 0x31, 0x01, 0xab, 0xa1, - 0x22, 0x1c, 0xc9, 0x21, 0x85, 0x1a, 0x90, 0x15, 0xdf, 0x31, 0x99, 0x11, 0x08, 0x90, 0x20, 0xbe, - 0x17, 0x9b, 0x23, 0x99, 0x80, 0x09, 0xac, 0x27, 0x0c, 0x93, 0x09, 0xa8, 0x20, 0xa2, 0x39, 0xcc, - 0x33, 0x89, 0x88, 0x70, 0xc0, 0x19, 0x94, 0x1b, 0x01, 0xab, 0x97, 0x3b, 0x08, 0x95, 0x9b, 0x85, - 0x1e, 0xa4, 0x29, 0x09, 0x92, 0x4a, 0x91, 0x09, 0xc9, 0x31, 0x9b, 0x82, 0x91, 0x2f, 0xb4, 0x38, - 0x2a, 0xb6, 0x29, 0x98, 0x9b, 0x86, 0x3a, 0xa6, 0x2c, 0xb2, 0x2a, 0xc8, 0x04, 0x3c, 0xc5, 0x29, - 0x90, 0x18, 0x98, 0x32, 0x8c, 0xb2, 0x73, 0xba, 0x03, 0xa9, 0x0b, 0x80, 0x42, 0xa2, 0x4b, 0xd4, - 0x19, 0x01, 0xd9, 0x52, 0xc8, 0x38, 0x98, 0x91, 0x83, 0x1c, 0x00, 0x92, 0x3e, 0xe1, 0x18, 0x20, - 0x09, 0x89, 0xd8, 0x50, 0x9b, 0x06, 0x1a, 0x12, 0x8c, 0x81, 0x01, 0x9e, 0x13, 0x9b, 0x85, 0x19, - 0xb1, 0x9f, 0x31, 0x03, 0x1a, 0xa4, 0x9a, 0x48, 0xba, 0x06, 0x1b, 0xa2, 0x0a, 0x91, 0x1c, 0x02, - 0x37, 0x9e, 0x02, 0x9a, 0x93, 0x4c, 0xc3, 0x39, 0xa9, 0x94, 0x4c, 0xb1, 0x38, 0xa0, 0x0c, 0x43, - 0xca, 0x03, 0x8c, 0x10, 0xb3, 0x7b, 0x93, 0xab, 0x05, 0x8c, 0x00, 0x88, 0x32, 0x82, 0xae, 0x02, - 0x9a, 0x91, 0x78, 0xa1, 0x48, 0xa0, 0x80, 0x1e, 0xa3, 0x20, 0xb9, 0x00, 0x0a, 0x63, 0xe8, 0x08, - 0x30, 0xc8, 0x22, 0xab, 0x01, 0x85, 0x8f, 0x22, 0x09, 0x97, 0x0a, 0x89, 0x93, 0x2d, 0xa2, 0x1a, - 0x80, 0x22, 0xc9, 0x03, 0x3c, 0x81, 0x9a, 0x82, 0x44, 0xae, 0x31, 0xf8, 0x33, 0x9e, 0x90, 0x13, - 0x8a, 0x05, 0xb9, 0x30, 0x08, 0xb8, 0xb3, 0x6e, 0xb2, 0x09, 0x28, 0xd8, 0x48, 0xa1, 0x09, 0x92, - 0x2a, 0x63, 0xb0, 0xa9, 0x1a, 0x82, 0x1b, 0x93, 0xa4, 0x0b, 0x53, 0xba, 0xf1, 0x60, 0x9a, 0x84, - 0x88, 0x49, 0xe2, 0x91, 0x6a, 0xa0, 0x08, 0x90, 0x21, 0xad, 0x13, 0x0b, 0xa5, 0x5b, 0xa1, 0x12, - 0x0b, 0x85, 0x8c, 0x98, 0x40, 0xb0, 0x81, 0x50, 0xcb, 0x11, 0x08, 0x20, 0x82, 0x99, 0xa2, 0x18, - 0xbf, 0x32, 0x13, 0xcf, 0x13, 0x89, 0x89, 0x23, 0x9e, 0x85, 0x0b, 0x35, 0xc9, 0x4a, 0xa2, 0x8a, - 0x0a, 0xa1, 0x45, 0xbb, 0x33, 0xeb, 0x38, 0x02, 0xb1, 0x2a, 0xca, 0x64, 0xc0, 0x19, 0x29, 0xc4, - 0x3a, 0x92, 0x8b, 0x89, 0x06, 0x9a, 0x81, 0x58, 0xc0, 0x38, 0xb3, 0x1a, 0x02, 0xaa, 0x14, 0xae, - 0x89, 0x27, 0x9a, 0x81, 0xa9, 0x02, 0x4c, 0x04, 0xd9, 0x19, 0x24, 0x8d, 0xa2, 0x1a, 0x92, 0x4a, - 0x91, 0x05, 0x8f, 0x82, 0x09, 0xa1, 0x60, 0xb0, 0x28, 0x98, 0x8a, 0x31, 0x88, 0x05, 0x9c, 0x0a, - 0x87, 0x2b, 0xb4, 0x2a, 0x92, 0x0a, 0x01, 0xd0, 0x4e, 0xb3, 0x3b, 0xa1, 0x22, 0x9b, 0x96, 0x0c, - 0xa3, 0x58, 0xf2, 0x39, 0xb9, 0x23, 0x0b, 0x91, 0x43, 0xb9, 0x10, 0x8e, 0xa3, 0x29, 0x32, 0xe2, - 0x49, 0xb8, 0xab, 0x23, 0x1a, 0x16, 0xea, 0x28, 0x11, 0x92, 0x0c, 0x81, 0x93, 0x1d, 0x93, 0xf9, - 0x68, 0xa0, 0x80, 0x1a, 0x92, 0x28, 0xb8, 0x22, 0x0d, 0xb5, 0x4a, 0xa1, 0x00, 0x48, 0xc1, 0x09, - 0xa0, 0x3b, 0x96, 0x0c, 0x03, 0x9c, 0x34, 0x8b, 0x01, 0x80, 0x8f, 0x85, 0x0b, 0x13, 0x99, 0x98, - 0x98, 0x60, 0x83, 0x0c, 0xb1, 0x99, 0x19, 0x58, 0xe2, 0x11, 0x1c, 0xa5, 0x2c, 0x83, 0x11, 0x9c, - 0x82, 0x8e, 0x93, 0x2b, 0x03, 0x82, 0x8d, 0xa3, 0x3b, 0x09, 0x07, 0xa9, 0x2a, 0x26, 0xc8, 0x8b, - 0x13, 0xab, 0x01, 0x81, 0x4a, 0xe8, 0x33, 0x28, 0xad, 0x13, 0xa1, 0x3b, 0xac, 0x27, 0xb8, 0x2b, - 0xa2, 0x99, 0x4b, 0xb2, 0x69, 0xa8, 0x33, 0xb1, 0x5a, 0x01, 0xe9, 0x3c, 0x06, 0x99, 0x99, 0x90, - 0x29, 0x1e, 0x86, 0x89, 0x8a, 0x24, 0x99, 0x91, 0x6a, 0xb2, 0x31, 0xbf, 0x04, 0x8b, 0x11, 0x13, - 0xcd, 0x21, 0xa3, 0x29, 0x89, 0xb3, 0x0c, 0x88, 0x23, 0xea, 0x63, 0x99, 0xc0, 0x40, 0xa8, 0x04, - 0x0d, 0x91, 0x02, 0x9a, 0x32, 0xbd, 0x14, 0x09, 0x90, 0x91, 0x1b, 0x15, 0x9b, 0x03, 0x18, 0xc5, - 0x39, 0xbc, 0xc3, 0x0c, 0x62, 0xc2, 0x69, 0x90, 0x99, 0x10, 0x88, 0x10, 0x93, 0x2f, 0xc2, 0x1a, - 0x88, 0x10, 0x39, 0x97, 0x3b, 0xf8, 0x38, 0x99, 0x04, 0x29, 0xe2, 0x19, 0x00, 0x92, 0x3a, 0xf1, - 0x28, 0x98, 0x0a, 0x04, 0x8c, 0x21, 0xa2, 0x2b, 0x82, 0x0a, 0x82, 0x31, 0x73, 0xf0, 0x5c, 0xb9, - 0x12, 0x19, 0xc9, 0x22, 0xaa, 0x14, 0x08, 0xd0, 0x60, 0x98, 0x80, 0x39, 0xf2, 0x29, 0x90, 0x10, - 0xa8, 0x20, 0xb8, 0xaa, 0x74, 0xc8, 0x33, 0xda, 0x28, 0x80, 0x08, 0x22, 0xdb, 0x43, 0xcb, 0x21, - 0x99, 0x01, 0x10, 0xca, 0x11, 0x3a, 0xb4, 0x0a, 0x61, 0xa5, 0x0d, 0x92, 0x11, 0x1d, 0xd3, 0x3a, - 0x80, 0x08, 0x0a, 0x97, 0x0c, 0x14, 0x99, 0xa9, 0x58, 0x92, 0x09, 0x00, 0x94, 0x8f, 0x03, 0x09, - 0x89, 0xa2, 0x3a, 0xc2, 0x1c, 0x85, 0x09, 0x0a, 0x04, 0x12, 0x8f, 0x83, 0x99, 0x19, 0x00, 0xb1, - 0x91, 0x3e, 0xa5, 0x8b, 0x81, 0x7a, 0xa1, 0x39, 0x83, 0xb9, 0x2f, 0xa4, 0x2c, 0x91, 0x08, 0x18, - 0xc1, 0x59, 0xa1, 0x11, 0x8c, 0xa0, 0x12, 0x1e, 0x05, 0x9b, 0x82, 0x49, 0xbc, 0x06, 0x29, 0xa8, - 0x21, 0xa9, 0x29, 0xa0, 0xbb, 0x27, 0x0a, 0x11, 0xb8, 0x2a, 0xaa, 0x73, 0xe8, 0x22, 0x29, 0xc0, - 0x80, 0x0e, 0x04, 0x89, 0x18, 0x99, 0x90, 0x22, 0x60, 0xb8, 0x83, 0x0c, 0xca, 0x33, 0x9b, 0x17, - 0x8d, 0xa2, 0x51, 0x99, 0x98, 0x20, 0xd4, 0x4b, 0xb2, 0x1a, 0x21, 0x19, 0x92, 0xab, 0x7b, 0xb4, - 0x2c, 0xb1, 0x29, 0xb1, 0x32, 0x13, 0xbf, 0x62, 0xc8, 0x11, 0x2a, 0xb0, 0x13, 0x0f, 0xa3, 0x20, - 0xaa, 0xa1, 0x30, 0xa8, 0x52, 0xb9, 0x10, 0x0c, 0xc3, 0x1b, 0x71, 0xa4, 0x4a, 0xc1, 0x0a, 0x23, - 0xbb, 0x33, 0xdc, 0x49, 0x90, 0x18, 0x86, 0x0e, 0x92, 0x18, 0x18, 0xc2, 0x49, 0xd9, 0x21, 0x81, - 0x89, 0x11, 0xc9, 0x58, 0xd9, 0x12, 0x0a, 0xa1, 0x01, 0x1a, 0x13, 0x53, 0xba, 0xc1, 0x3a, 0xd2, - 0x18, 0x3b, 0x87, 0x89, 0x89, 0xa1, 0x2d, 0xa1, 0x70, 0x92, 0x0c, 0x83, 0xa8, 0x50, 0xa1, 0xbb, - 0x11, 0x1f, 0xa6, 0x1a, 0x91, 0x09, 0x92, 0x18, 0x62, 0xb0, 0x41, 0x9a, 0xd0, 0x19, 0x29, 0x95, - 0x0c, 0x84, 0xac, 0x22, 0x90, 0x40, 0xd0, 0x59, 0x91, 0x8a, 0x01, 0x0a, 0x85, 0x0c, 0x11, 0xe8, - 0x4a, 0x92, 0x1b, 0x94, 0x39, 0xa0, 0xb9, 0x63, 0xab, 0x02, 0x08, 0x0b, 0x93, 0x70, 0xb2, 0x18, - 0x90, 0x0a, 0xb2, 0x9f, 0x52, 0xdb, 0x24, 0xa9, 0x30, 0xc8, 0x38, 0xb2, 0x1e, 0x84, 0x0a, 0x38, - 0xf1, 0x29, 0xb1, 0x51, 0xb0, 0x09, 0x02, 0x99, 0x38, 0xb2, 0x50, 0xf8, 0x38, 0xc8, 0x00, 0x29, - 0x01, 0xb8, 0x38, 0x07, 0x9f, 0x14, 0x89, 0x01, 0xa9, 0x28, 0xd8, 0x29, 0x01, 0x89, 0x33, 0xfb, - 0x43, 0xbb, 0x41, 0xa9, 0x09, 0x24, 0x99, 0x02, 0xbd, 0x03, 0x0b, 0x83, 0x92, 0x1f, 0x95, 0x0b, - 0x95, 0x3a, 0xc1, 0x28, 0xb0, 0x3a, 0x09, 0xa3, 0x78, 0xfb, 0x50, 0x98, 0x08, 0x82, 0x1a, 0x93, - 0x0a, 0x84, 0xad, 0x30, 0xd8, 0x40, 0xb8, 0x20, 0x82, 0xad, 0x43, 0xc9, 0x50, 0x91, 0x51, 0xf9, - 0x18, 0x90, 0x08, 0x10, 0x98, 0x28, 0xd0, 0x41, 0xa9, 0x18, 0x13, 0x19, 0xc0, 0x2a, 0xb1, 0xca, - 0x71, 0xb0, 0x40, 0x99, 0x01, 0xaa, 0x52, 0xa2, 0x1a, 0xac, 0x94, 0x60, 0xca, 0x32, 0x9c, 0x83, - 0x1a, 0x91, 0x20, 0xf9, 0x31, 0x9a, 0x21, 0x9a, 0x97, 0x3c, 0xa2, 0xb2, 0x4c, 0x02, 0xda, 0x11, - 0x19, 0xb9, 0x32, 0xd9, 0x2b, 0x16, 0x08, 0x9a, 0x93, 0x0f, 0x23, 0xa0, 0x18, 0xbb, 0x91, 0x5c, - 0x83, 0xb0, 0x0f, 0x04, 0x0d, 0x84, 0x0b, 0x11, 0x83, 0x8b, 0x00, 0x8c, 0x15, 0x89, 0xb9, 0x1a, - 0x04, 0x08, 0x8d, 0x94, 0x19, 0x13, 0x9f, 0x03, 0x19, 0x02, 0x18, 0xfa, 0x3a, 0x02, 0xb9, 0x34, - 0xbb, 0x0d, 0x86, 0x3a, 0xe3, 0x39, 0x81, 0x99, 0x09, 0xb2, 0x5a, 0xba, 0x32, 0x99, 0x91, 0x46, - 0xd8, 0x19, 0x29, 0xd2, 0x30, 0xc1, 0x2a, 0xa2, 0xac, 0x47, 0xb9, 0x10, 0xc1, 0x3b, 0xd2, 0x20, - 0x02, 0xa9, 0x72, 0xc8, 0x2a, 0xa2, 0x38, 0xa3, 0x8e, 0x04, 0x99, 0x0a, 0x94, 0x8a, 0x01, 0x11, - 0xfb, 0x41, 0x01, 0x9a, 0x19, 0x23, 0xa0, 0x2b, 0xe1, 0xac, 0x55, 0xba, 0x10, 0x08, 0x40, 0xa4, - 0x0c, 0x82, 0x99, 0x40, 0xc8, 0x00, 0x90, 0x60, 0xf0, 0x18, 0x90, 0x08, 0x11, 0x01, 0x89, 0x2a, - 0x84, 0xac, 0x25, 0x9b, 0x12, 0x9c, 0x11, 0xb2, 0xbf, 0x05, 0x09, 0x11, 0xc0, 0x20, 0x99, 0x73, - 0xb0, 0x0b, 0x32, 0xaa, 0x10, 0xaa, 0x31, 0xd2, 0x1d, 0x03, 0xb1, 0x3b, 0x99, 0x91, 0x31, 0x25, - 0x39, 0xf1, 0x29, 0x90, 0xbb, 0x31, 0xd1, 0x3c, 0xa5, 0x30, 0xc1, 0x3a, 0x94, 0x9e, 0x21, 0xa0, - 0x30, 0xaa, 0x01, 0x99, 0x5b, 0xa3, 0x9b, 0x44, 0x90, 0x59, 0xb0, 0x3a, 0xf1, 0x0c, 0x11, 0xa0, - 0x70, 0x91, 0x99, 0xa9, 0x38, 0xb2, 0x63, 0x01, 0x90, 0x9b, 0x92, 0x9c, 0xd9, 0x41, 0x9a, 0x33, - 0xbb, 0x93, 0x4b, 0x99, 0x27, 0xbb, 0x12, 0x8c, 0x05, 0x99, 0x09, 0x03, 0xa9, 0x1d, 0xa2, 0xa8, - 0x29, 0x43, 0xbb, 0x35, 0x2a, 0xa0, 0x91, 0x1b, 0xc2, 0x2a, 0x03, 0xac, 0x04, 0x3d, 0xa4, 0x0b, - 0x0b, 0x15, 0x19, 0x94, 0x1d, 0xa2, 0x29, 0x92, 0xb8, 0x2c, 0xb8, 0x30, 0xc0, 0x30, 0x03, 0xbd, - 0x32, 0xb9, 0x30, 0x11, 0x13, 0x30, 0xca, 0x01, 0x0a, 0xd9, 0x30, 0xb3, 0x9d, 0x13, 0xb9, 0x09, - 0x21, 0x32, 0xba, 0x52, 0xb1, 0x9b, 0x04, 0x1a, 0x12, 0x9a, 0x43, 0xca, 0x00, 0x00, 0x10, 0xa3, - 0x1b, 0x93, 0x9a, 0x32, 0xb9, 0x39, 0x01, 0x2a, 0xb2, 0xab, 0x04, 0x0a, 0x11, 0x91, 0x39, 0xa1, - 0x10, 0x9a, 0x01, 0x19, 0x00, 0x92, 0x0c, 0x04, 0x1b, 0x92, 0x9a, 0x10, 0x9b, 0x33, 0xa0, 0x1a, - 0x92, 0x0b, 0x04, 0x0a, 0x12, 0x99, 0x99, 0x90, 0x2a, 0xb0, 0x31, 0x93, 0x09, 0x99, 0xa0, 0x11, - 0x09, 0x23, 0x90, 0xa9, 0x11, 0x9a, 0x91, 0x29, 0x91, 0x99, 0x11, 0xa0, 0x20, 0x01, 0x10, 0x91, - 0x09, 0x90, 0x99, 0x10, 0x99, 0x11, 0x91, 0x10, 0x90, 0x10, 0x09, 0x91, 0x19, 0x91, 0x10, 0x09, - 0x91, 0x09, 0x10, 0x00, 0x00, 0x90, 0x10, 0x90, 0x10, 0x00, 0x09, 0x01, 0x90, 0x10, 0x09, 0x10, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x34, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x77, 0x7f, 0x77, 0x4c, 0xf5, 0x19, 0xb5, 0x2f, - 0x92, 0x10, 0xa8, 0xcc, 0x75, 0xf8, 0x48, 0x81, 0x99, 0x28, 0xa8, 0x69, 0xc0, 0x12, 0x89, 0x99, - 0x82, 0x31, 0x06, 0x9e, 0x31, 0xba, 0x23, 0x9b, 0xa8, 0x52, 0xb8, 0x50, 0xb9, 0x93, 0x1a, 0x4a, - 0xb4, 0x0b, 0x93, 0x28, 0x11, 0xf9, 0x11, 0x3c, 0x94, 0x0c, 0x83, 0x9b, 0x12, 0x80, 0x28, 0x95, - 0x8f, 0x86, 0x8b, 0x12, 0x9b, 0x43, 0xc9, 0x19, 0x93, 0x88, 0x49, 0xb9, 0x84, 0x3d, 0xd1, 0x51, - 0xd9, 0x21, 0xa8, 0x31, 0xf8, 0x30, 0x98, 0x90, 0x20, 0x99, 0xa1, 0x2b, 0x85, 0x5a, 0xc1, 0x0a, - 0x30, 0xa8, 0xc1, 0x50, 0x89, 0xa0, 0x21, 0xd8, 0x7a, 0xa2, 0x10, 0x89, 0xc0, 0x5b, 0xa2, 0x00, - 0x88, 0x28, 0xac, 0x17, 0x8d, 0x04, 0x0c, 0x93, 0x8b, 0x31, 0xb1, 0x4b, 0xd1, 0x59, 0xb1, 0x29, - 0x88, 0x81, 0x98, 0x79, 0xc1, 0x10, 0x1a, 0x28, 0xd3, 0x19, 0x32, 0xbf, 0x13, 0xa1, 0x31, 0x0f, - 0xa3, 0x89, 0x28, 0x00, 0x9c, 0x86, 0x9a, 0x22, 0xca, 0x33, 0x0f, 0x82, 0x1a, 0x82, 0x98, 0x08, - 0x40, 0xa8, 0x1a, 0xc3, 0x59, 0xd1, 0x89, 0x52, 0x99, 0x41, 0xcb, 0x93, 0x1b, 0x42, 0xe1, 0x28, - 0xa8, 0x68, 0xe1, 0x29, 0x93, 0x3b, 0xe3, 0x38, 0xb8, 0x19, 0x82, 0x18, 0x11, 0x9f, 0x13, 0x8b, - 0x92, 0x92, 0x2b, 0x1b, 0x87, 0xcb, 0x51, 0x88, 0x98, 0x87, 0x8c, 0x31, 0xa8, 0x12, 0x89, 0xc8, - 0x28, 0x09, 0x83, 0xcb, 0x34, 0x60, 0xd0, 0x08, 0xcb, 0x34, 0xa8, 0x49, 0xf1, 0x28, 0x90, 0x18, - 0x98, 0x32, 0x8d, 0x02, 0xca, 0x40, 0xb1, 0x28, 0x81, 0xa8, 0x3a, 0x32, 0xf8, 0x0b, 0x34, 0x93, - 0x1b, 0xbc, 0xd2, 0x52, 0x80, 0x29, 0xc8, 0x0c, 0x05, 0x8a, 0x82, 0x19, 0xa8, 0x16, 0xbd, 0x28, - 0x21, 0x01, 0xb9, 0x87, 0x9f, 0x04, 0x88, 0x09, 0x92, 0x11, 0x8b, 0xc2, 0x7b, 0xa2, 0xa8, 0x52, - 0xa0, 0x1c, 0x80, 0x82, 0x09, 0x10, 0x9a, 0x0a, 0x87, 0x0e, 0x03, 0x8b, 0x01, 0x84, 0x9d, 0x29, - 0x85, 0x99, 0x53, 0xca, 0x10, 0x8a, 0x33, 0x0c, 0xc1, 0x61, 0xa9, 0x91, 0x4b, 0xb2, 0x40, 0xaa, - 0x83, 0x0d, 0x01, 0x80, 0x82, 0xca, 0x20, 0x24, 0xcb, 0x11, 0xab, 0x48, 0x86, 0x0a, 0xaa, 0x03, - 0x20, 0x14, 0xbf, 0x22, 0x12, 0x0d, 0xd0, 0x49, 0x85, 0x1b, 0xc1, 0x1a, 0x82, 0x18, 0x24, 0xba, - 0xea, 0x51, 0xb0, 0x4b, 0x92, 0x90, 0x5a, 0xb0, 0x29, 0xa0, 0x71, 0xc1, 0x89, 0x81, 0x08, 0x13, - 0x1b, 0x14, 0xcf, 0x12, 0x80, 0x99, 0x61, 0xb9, 0x31, 0xc0, 0x1b, 0x85, 0x09, 0x88, 0x13, 0x8e, - 0x91, 0x48, 0xc3, 0x3c, 0x89, 0x97, 0x2b, 0x90, 0x10, 0xc0, 0x38, 0x83, 0xcb, 0x08, 0x34, 0x0e, - 0x82, 0x9b, 0x51, 0xd0, 0x38, 0xa0, 0x10, 0x98, 0x60, 0xcb, 0x12, 0xa8, 0x70, 0xc0, 0x30, 0xd8, - 0x20, 0x88, 0x08, 0x80, 0x88, 0x24, 0xbd, 0x01, 0x10, 0x82, 0x20, 0xe9, 0x2a, 0xa3, 0x4b, 0xa2, - 0xf0, 0x61, 0x09, 0xc8, 0x10, 0x0a, 0x05, 0x0b, 0x92, 0x8a, 0x19, 0x83, 0x23, 0xad, 0x30, 0x11, - 0xfa, 0x1c, 0x16, 0xb9, 0x42, 0xda, 0x21, 0x8b, 0x04, 0x00, 0x9b, 0x80, 0x52, 0xe9, 0x38, 0xb0, - 0x48, 0xa1, 0x38, 0xea, 0x30, 0xb1, 0x20, 0x89, 0x89, 0xa8, 0x32, 0x81, 0x9c, 0xa5, 0x7c, 0xc2, - 0x08, 0xa1, 0x49, 0x03, 0xa8, 0x8d, 0x80, 0x00, 0x51, 0xd8, 0x11, 0x09, 0xa0, 0x31, 0xcf, 0x86, - 0x18, 0xa8, 0x00, 0x90, 0x48, 0xb0, 0x30, 0xca, 0x14, 0x08, 0xbb, 0x33, 0xbd, 0x17, 0x3b, 0xc9, - 0x20, 0xa1, 0x5b, 0x02, 0xba, 0x91, 0x6b, 0xb0, 0x20, 0x80, 0x38, 0xf1, 0x10, 0x0f, 0x84, 0x88, - 0x00, 0xa0, 0x19, 0x13, 0x8b, 0x89, 0x07, 0x8d, 0x13, 0x9d, 0x83, 0x19, 0x08, 0xb2, 0x30, 0x8d, - 0x22, 0xb8, 0x02, 0x0d, 0x42, 0xf2, 0x4c, 0xc1, 0x20, 0xb1, 0x69, 0xb8, 0x10, 0xb0, 0x4a, 0x02, - 0x99, 0x90, 0x48, 0xd3, 0x3e, 0xb4, 0x3a, 0xa1, 0x28, 0xc9, 0x00, 0x38, 0x12, 0xf0, 0x28, 0xa9, - 0x21, 0x0c, 0x87, 0x8a, 0x18, 0x13, 0xcb, 0x0a, 0x53, 0xb8, 0x31, 0xfa, 0x22, 0xab, 0x34, 0xd9, - 0x01, 0x19, 0x13, 0xbe, 0x42, 0xb9, 0x43, 0xcb, 0x31, 0xca, 0x31, 0x80, 0x80, 0xad, 0x53, 0xc8, - 0x30, 0x9c, 0x05, 0x89, 0x02, 0x9a, 0x01, 0x98, 0x20, 0xa4, 0x1c, 0x00, 0x42, 0xdd, 0x22, 0x9a, - 0x33, 0xfa, 0x40, 0xa9, 0x00, 0x81, 0x10, 0x9d, 0x05, 0x9a, 0x92, 0x0c, 0x15, 0x99, 0x00, 0x9a, - 0x24, 0xbb, 0x53, 0xa8, 0x10, 0x89, 0x03, 0xc8, 0x4c, 0xc2, 0x41, 0xb8, 0x3a, 0xd3, 0x1c, 0xa2, - 0x38, 0x9a, 0x23, 0xf1, 0x29, 0x98, 0x72, 0xd0, 0x20, 0x9a, 0x20, 0x9a, 0x02, 0x42, 0x1b, 0xfa, - 0x52, 0x8d, 0x02, 0x90, 0x10, 0xba, 0x52, 0x99, 0x90, 0x39, 0x87, 0x9b, 0x03, 0x9b, 0x81, 0x40, - 0x10, 0xfa, 0x21, 0x2b, 0xc8, 0x82, 0x21, 0x09, 0xa3, 0x9f, 0x84, 0x8a, 0x79, 0xb0, 0x18, 0x91, - 0x2b, 0x93, 0x8a, 0x23, 0x34, 0x9c, 0x99, 0xf3, 0x70, 0xa8, 0x10, 0x81, 0x9c, 0x11, 0x82, 0x0f, - 0x83, 0x2b, 0xb4, 0x9c, 0x22, 0xa0, 0x42, 0x0d, 0xa1, 0x88, 0x19, 0x11, 0xa2, 0x4d, 0x92, 0xc0, - 0x5a, 0xb1, 0x31, 0x19, 0xa1, 0xc9, 0x58, 0x02, 0x0a, 0xd9, 0x48, 0xa8, 0x59, 0xb0, 0x2a, 0xf3, - 0x5a, 0x91, 0x99, 0x3a, 0xb4, 0x40, 0xa9, 0x32, 0x8c, 0x13, 0xbe, 0x33, 0xcb, 0x54, 0xca, 0x32, - 0xbb, 0x11, 0x02, 0x8c, 0x84, 0x20, 0xba, 0x0a, 0x33, 0xdb, 0x84, 0x79, 0xb0, 0x00, 0xb9, 0x59, - 0x95, 0x0d, 0x03, 0xb9, 0x20, 0x80, 0x18, 0xc8, 0x34, 0x9f, 0x94, 0x8a, 0x22, 0x00, 0xbb, 0x04, - 0x1d, 0x83, 0xa9, 0x73, 0xab, 0x85, 0x1a, 0x81, 0x8a, 0x05, 0x8b, 0x93, 0x0d, 0x03, 0x8a, 0x14, - 0xbe, 0x42, 0xb8, 0x30, 0xc9, 0x28, 0x12, 0xf8, 0x40, 0x99, 0x92, 0x38, 0xc9, 0x38, 0xc2, 0x61, - 0xa9, 0x88, 0x18, 0xa1, 0x20, 0xc2, 0x4b, 0xa4, 0x8c, 0x01, 0x20, 0xd8, 0x02, 0x3b, 0x92, 0x9f, - 0x04, 0x81, 0x1d, 0x83, 0x9a, 0x81, 0x4b, 0x97, 0x08, 0xb9, 0x21, 0x00, 0x9a, 0x83, 0x19, 0xad, - 0x30, 0x07, 0x9e, 0x21, 0x88, 0x38, 0xd0, 0x38, 0x90, 0xc9, 0x71, 0xc0, 0x20, 0xa1, 0x10, 0xba, - 0x42, 0x98, 0x01, 0xbd, 0x42, 0xa8, 0x18, 0x03, 0x8f, 0xa2, 0x51, 0x9a, 0xab, 0x16, 0x1a, 0xb3, - 0x2c, 0xb2, 0x71, 0x99, 0x00, 0x11, 0x9d, 0x05, 0x89, 0x8b, 0x11, 0x84, 0x9a, 0x10, 0x90, 0x8a, - 0x53, 0xda, 0xa2, 0x59, 0xb0, 0x21, 0xf8, 0x3a, 0x86, 0x09, 0x98, 0x92, 0x4b, 0xb4, 0x38, 0xca, - 0x11, 0xa2, 0x79, 0xd9, 0x11, 0x88, 0x10, 0xa1, 0x3a, 0xe1, 0x1a, 0x03, 0x80, 0xac, 0x63, 0x90, - 0x0a, 0x81, 0x08, 0xc4, 0x7b, 0xd1, 0x08, 0x21, 0x0b, 0x85, 0xbb, 0x51, 0xb0, 0x28, 0x88, 0x93, - 0x8e, 0x05, 0x0b, 0xa1, 0x09, 0x35, 0x9a, 0x80, 0xbb, 0x16, 0x3a, 0xc1, 0x00, 0x89, 0xa0, 0x42, - 0xdb, 0x20, 0x41, 0xc0, 0x89, 0x8a, 0x30, 0x93, 0x72, 0xf0, 0x5b, 0xa1, 0x09, 0x83, 0x1b, 0x13, - 0x9c, 0xb3, 0x3c, 0xb2, 0x70, 0xa1, 0x1b, 0xb1, 0x6a, 0x91, 0x1a, 0x91, 0x99, 0x51, 0xc0, 0xab, - 0x72, 0xa1, 0x28, 0xd8, 0x19, 0x13, 0x0a, 0x96, 0x0c, 0x13, 0x8c, 0x82, 0xaa, 0x73, 0xb8, 0x10, - 0x1b, 0xc3, 0x99, 0x25, 0x1b, 0xd0, 0x18, 0x33, 0xac, 0x90, 0x22, 0xc8, 0x38, 0xa2, 0x9b, 0xc1, - 0x7a, 0x94, 0x89, 0x2a, 0x96, 0x08, 0x0b, 0x93, 0x0b, 0x05, 0x19, 0xb0, 0xae, 0x26, 0x9a, 0x11, - 0xca, 0x41, 0x8a, 0xb5, 0x58, 0x99, 0x81, 0x18, 0x99, 0xa3, 0x5b, 0xa3, 0x9c, 0x93, 0x2d, 0x81, - 0x20, 0xb3, 0x8e, 0x19, 0x12, 0x86, 0x8e, 0x12, 0xa0, 0x98, 0x6b, 0xb2, 0x29, 0x22, 0x9c, 0x86, - 0x0e, 0x13, 0x9a, 0xa1, 0x20, 0xa0, 0x9b, 0x06, 0x1b, 0x93, 0xa9, 0x72, 0xdb, 0x02, 0x1c, 0x04, - 0x9b, 0x30, 0x95, 0x1d, 0x90, 0x22, 0x98, 0x9a, 0x43, 0xca, 0x00, 0x22, 0x0a, 0x0a, 0xa8, 0x07, - 0x0f, 0x91, 0x40, 0xc1, 0x1b, 0x02, 0x09, 0xb2, 0x48, 0xe9, 0x40, 0xb8, 0x13, 0xbc, 0x62, 0x98, - 0x20, 0xb8, 0x48, 0xc1, 0x2d, 0x84, 0x1a, 0xd3, 0x3a, 0xb2, 0x1c, 0x04, 0x1a, 0xb0, 0x20, 0x01, - 0xbd, 0x23, 0x00, 0x9d, 0x06, 0x8b, 0x93, 0x1c, 0x23, 0xb8, 0x20, 0x9f, 0x24, 0xc8, 0x28, 0x0a, - 0xa5, 0x3a, 0xa8, 0x92, 0x81, 0x7b, 0xa0, 0x90, 0x8a, 0x25, 0x08, 0xfa, 0x30, 0x90, 0x11, 0xc8, - 0x5a, 0xd0, 0x22, 0x8a, 0x08, 0xc3, 0x3b, 0x23, 0xdd, 0x02, 0x18, 0x93, 0x8d, 0x11, 0x8a, 0x10, - 0x12, 0xc8, 0x59, 0x90, 0x90, 0x53, 0xbb, 0x23, 0xc9, 0x2a, 0x82, 0xd2, 0x5c, 0xa2, 0x2a, 0xe1, - 0x40, 0xda, 0x31, 0x89, 0x11, 0xe9, 0x18, 0x22, 0x1a, 0xe1, 0x40, 0xa9, 0x00, 0x10, 0x9b, 0x95, - 0x3c, 0x96, 0x1c, 0x91, 0x58, 0xb1, 0x8c, 0x04, 0x8a, 0x12, 0xaa, 0x31, 0xb8, 0x08, 0x2a, 0xa6, - 0x1c, 0x15, 0xba, 0x80, 0x21, 0x10, 0x89, 0xb0, 0x83, 0x2f, 0xf3, 0x18, 0x11, 0x9c, 0x33, 0xba, - 0x2b, 0xa3, 0x4d, 0xa6, 0x4b, 0xb0, 0x38, 0xe3, 0x4b, 0x92, 0x29, 0xb1, 0x29, 0xfa, 0x51, 0x88, - 0x90, 0x80, 0x1c, 0xa4, 0x49, 0xc1, 0x3a, 0xa1, 0x38, 0xa1, 0x0e, 0x09, 0x15, 0x2a, 0xba, 0x20, - 0xaa, 0x52, 0x91, 0x49, 0xd9, 0x40, 0xb1, 0x1c, 0x81, 0x04, 0xc0, 0x2c, 0x02, 0xca, 0x53, 0x9b, - 0x06, 0x9c, 0x11, 0x88, 0x98, 0x33, 0xc8, 0x1a, 0x84, 0x1c, 0x93, 0x09, 0x98, 0x24, 0xbc, 0x1a, - 0x84, 0x20, 0x9a, 0x87, 0x9a, 0x68, 0xb1, 0x98, 0x1c, 0x25, 0x8c, 0x93, 0x8c, 0x03, 0x0b, 0x07, - 0xa9, 0x00, 0x09, 0x82, 0x91, 0x0f, 0x14, 0x9a, 0x91, 0x39, 0x98, 0x15, 0x8d, 0x91, 0x09, 0x09, - 0x10, 0x83, 0x89, 0x5b, 0xa4, 0x0b, 0x91, 0x64, 0xb0, 0x3c, 0xc3, 0x99, 0x30, 0xe8, 0x31, 0x90, - 0x08, 0xb9, 0x38, 0xed, 0x64, 0xb8, 0x29, 0x88, 0xb3, 0x2c, 0x02, 0x30, 0xad, 0x14, 0x9a, 0x09, - 0xb2, 0x70, 0xf2, 0x28, 0x81, 0xaa, 0x41, 0x88, 0x01, 0xab, 0x62, 0xac, 0x83, 0x1a, 0x23, 0xcc, - 0x32, 0xaa, 0xa8, 0x63, 0x18, 0xba, 0x05, 0x8d, 0x12, 0xaa, 0x44, 0xb8, 0x38, 0xab, 0x86, 0x0c, - 0x11, 0x81, 0x8a, 0x80, 0xa9, 0x41, 0x1a, 0x07, 0x0c, 0xa0, 0x39, 0x93, 0xab, 0x1a, 0x27, 0x88, - 0xd9, 0x50, 0xc0, 0x39, 0x94, 0x1c, 0xb2, 0x4a, 0xc2, 0x48, 0xd1, 0x39, 0xb2, 0x2c, 0xa6, 0x1c, - 0x83, 0x89, 0x80, 0x18, 0x81, 0x09, 0x88, 0x88, 0x90, 0x24, 0x2c, 0xf9, 0x41, 0xb8, 0x48, 0xca, - 0x43, 0xb9, 0x39, 0xd3, 0x39, 0x01, 0xb8, 0x28, 0xaa, 0x25, 0xa8, 0x2a, 0x90, 0x27, 0x9f, 0x04, - 0x9c, 0x32, 0xb8, 0x31, 0xf9, 0x49, 0x91, 0x28, 0xb9, 0x10, 0xa1, 0x4b, 0xb2, 0x0a, 0x01, 0x09, - 0x27, 0x9f, 0x12, 0xa8, 0x51, 0xb9, 0x80, 0x20, 0x31, 0xac, 0x93, 0x6a, 0xc8, 0x42, 0xc8, 0x29, - 0x91, 0x90, 0x81, 0x0b, 0x32, 0xe5, 0x2b, 0x20, 0xd8, 0x30, 0x9a, 0x05, 0x8e, 0x12, 0xa9, 0x21, - 0x99, 0x63, 0xf9, 0x30, 0x99, 0x12, 0xb8, 0x0a, 0x84, 0x4c, 0xb2, 0x39, 0xb8, 0x49, 0x05, 0xcb, - 0x21, 0x98, 0xa9, 0x20, 0x51, 0xf8, 0x48, 0x90, 0x8a, 0x02, 0x2b, 0xa4, 0x0a, 0x1d, 0x06, 0x8b, - 0x81, 0x30, 0xc8, 0x39, 0x89, 0x86, 0x0d, 0x22, 0xc9, 0x10, 0x11, 0x89, 0xd0, 0x58, 0x98, 0x22, - 0xfa, 0x58, 0xb0, 0x39, 0xa1, 0x3c, 0xb1, 0x38, 0xb0, 0x4a, 0x90, 0x10, 0x02, 0x0e, 0xa8, 0x20, - 0x04, 0x2c, 0xc3, 0x3b, 0xa8, 0x34, 0xb0, 0x1b, 0x20, 0x22, 0xcf, 0x37, 0xad, 0x32, 0xc9, 0x00, - 0x80, 0x80, 0x09, 0xc1, 0x4d, 0xa3, 0x0a, 0x04, 0x8c, 0x13, 0xbb, 0x16, 0x0b, 0x00, 0xb0, 0x41, - 0x8a, 0x12, 0xd1, 0x59, 0xbb, 0x15, 0x09, 0x38, 0xf9, 0x30, 0xb8, 0x49, 0xc1, 0x48, 0xa8, 0x82, - 0x2b, 0xf1, 0x08, 0x51, 0xb1, 0x9b, 0x41, 0xb8, 0x41, 0x9a, 0x23, 0xba, 0x30, 0xc9, 0x38, 0x98, - 0x22, 0x1a, 0xe9, 0x3b, 0x86, 0x21, 0x8b, 0x81, 0x00, 0xa0, 0xaf, 0x35, 0xca, 0x51, 0xc8, 0x20, - 0xb9, 0x44, 0xad, 0x13, 0x1a, 0xa1, 0x0d, 0x13, 0x9a, 0x32, 0x9b, 0x82, 0x0c, 0x90, 0x06, 0x2e, - 0x93, 0x2a, 0xc8, 0x09, 0x60, 0x98, 0x03, 0xb8, 0x8a, 0x28, 0x14, 0xaa, 0x84, 0x7b, 0xc2, 0x9a, - 0x38, 0xd0, 0x32, 0xaa, 0x09, 0x85, 0x8e, 0x03, 0x3a, 0xf4, 0x38, 0x90, 0xa8, 0x32, 0x8b, 0x12, - 0xb8, 0x80, 0x11, 0x5c, 0xcf, 0x26, 0xaa, 0x08, 0x03, 0x9b, 0x80, 0x51, 0xd2, 0x1b, 0x84, 0x19, - 0x89, 0x91, 0x59, 0xc8, 0x10, 0x18, 0xd1, 0x18, 0x40, 0xb2, 0x1c, 0x84, 0x09, 0x99, 0x29, 0xd4, - 0x5b, 0x91, 0x88, 0xb0, 0x21, 0x02, 0x9f, 0xa7, 0x4a, 0xb2, 0x8a, 0x04, 0x1b, 0xa5, 0x1b, 0x84, - 0x0a, 0x11, 0xb8, 0x08, 0x4a, 0xb1, 0xa0, 0x50, 0xea, 0x52, 0xc8, 0x38, 0x91, 0x89, 0x28, 0x99, - 0x02, 0x9c, 0x27, 0xca, 0x29, 0x92, 0x19, 0x04, 0xa8, 0x0a, 0x00, 0x14, 0x8e, 0xa1, 0x58, 0xb8, - 0x53, 0xf9, 0x28, 0xa0, 0x40, 0xb1, 0x1a, 0xa8, 0x00, 0x25, 0x0a, 0xd2, 0x1b, 0x04, 0x9a, 0x60, - 0xa8, 0x11, 0x0c, 0x12, 0xcc, 0x58, 0x92, 0x09, 0x9a, 0x01, 0x10, 0x80, 0xb9, 0x79, 0xe2, 0x38, - 0x18, 0xc8, 0x49, 0x02, 0x91, 0x8e, 0x12, 0xb8, 0x58, 0xa1, 0x08, 0x9d, 0x32, 0xb4, 0x0c, 0x90, - 0x22, 0x29, 0xe0, 0x00, 0x0e, 0x84, 0x49, 0xb1, 0x0b, 0x01, 0x28, 0xc1, 0x2b, 0x08, 0x04, 0x30, - 0xbd, 0x13, 0x39, 0x07, 0xd9, 0x2b, 0x80, 0x22, 0xd3, 0x0e, 0x12, 0x8a, 0x04, 0xab, 0x12, 0x0d, - 0x07, 0x0b, 0x88, 0x08, 0x04, 0x89, 0xa8, 0x09, 0x33, 0xa9, 0xa0, 0x0e, 0x52, 0xa1, 0x0c, 0xa2, - 0x2c, 0x05, 0x09, 0xb2, 0x2d, 0x84, 0x8b, 0x33, 0xaf, 0x21, 0x91, 0x20, 0x8f, 0x92, 0x21, 0x08, - 0xaa, 0x02, 0x2b, 0x96, 0x0d, 0x93, 0xad, 0x61, 0x90, 0x90, 0x18, 0x0b, 0x84, 0x98, 0x12, 0x0d, - 0x12, 0xc0, 0x3a, 0xb2, 0x73, 0x99, 0x93, 0x9f, 0x02, 0x92, 0x4a, 0xb1, 0x9c, 0x44, 0xd8, 0x28, - 0x00, 0x90, 0x1b, 0x05, 0xcb, 0x18, 0x32, 0xb5, 0x1e, 0xa1, 0x39, 0x85, 0x8b, 0x01, 0x8b, 0x04, - 0x10, 0xd8, 0x18, 0x81, 0x19, 0x20, 0xbb, 0xa4, 0x9c, 0x72, 0xb4, 0x0d, 0x03, 0x88, 0x88, 0x9a, - 0x15, 0x88, 0x09, 0xc3, 0x0d, 0x15, 0x8c, 0x95, 0x0b, 0x81, 0x51, 0xc9, 0x29, 0xa2, 0x3b, 0x95, - 0x2b, 0x91, 0x09, 0x82, 0x59, 0xe8, 0x48, 0x81, 0x9a, 0x91, 0x4a, 0xc3, 0x1c, 0x06, 0x8c, 0x11, - 0xa9, 0x42, 0xc9, 0x31, 0xca, 0x21, 0x99, 0x21, 0x8d, 0x04, 0x1a, 0xc3, 0x3b, 0x80, 0x02, 0xaa, - 0x68, 0xa0, 0x80, 0x21, 0x12, 0xdf, 0x21, 0x81, 0x88, 0xab, 0x02, 0x01, 0x38, 0xe0, 0x79, 0xd1, - 0x39, 0xc3, 0x1a, 0x80, 0x32, 0xcb, 0x08, 0x12, 0x0e, 0x97, 0x2b, 0x93, 0x0c, 0x05, 0x9a, 0x91, - 0x3b, 0x87, 0x8b, 0x92, 0x2a, 0x93, 0x1b, 0x97, 0x8b, 0x11, 0xb0, 0x20, 0xb0, 0x78, 0x80, 0x88, - 0x1a, 0x81, 0x1b, 0xf3, 0x51, 0xab, 0x11, 0xa0, 0x00, 0x19, 0x33, 0x9d, 0x86, 0x9c, 0x32, 0xd0, - 0x31, 0x98, 0x0d, 0x04, 0x9c, 0x85, 0x29, 0xaa, 0x94, 0x0a, 0x38, 0xb3, 0x1d, 0x85, 0x1d, 0xa3, - 0x0d, 0x03, 0x08, 0x91, 0x0c, 0xb2, 0x2b, 0x27, 0x9b, 0xa0, 0x40, 0x92, 0x11, 0xcb, 0x10, 0x4b, - 0x87, 0x8d, 0x82, 0x0a, 0x14, 0xb8, 0x5b, 0xd1, 0x30, 0xb8, 0x20, 0xaa, 0x10, 0x11, 0x02, 0xce, - 0x41, 0xb1, 0x38, 0xd3, 0x2c, 0x92, 0x90, 0x1a, 0x43, 0xd9, 0x50, 0xc0, 0x39, 0xb1, 0x31, 0xa9, - 0x08, 0x91, 0xdb, 0x52, 0xa1, 0x3b, 0xc1, 0x39, 0xf1, 0x58, 0xa8, 0x28, 0xb2, 0x3e, 0xb1, 0x20, - 0x91, 0x2b, 0x82, 0xcc, 0x37, 0xdb, 0x32, 0xba, 0x30, 0xb8, 0x42, 0xca, 0x31, 0x9d, 0x25, 0xc9, - 0x30, 0xb8, 0x01, 0x8c, 0x23, 0x88, 0x11, 0xca, 0x10, 0xa9, 0x26, 0x8c, 0xa0, 0x31, 0xbc, 0x07, - 0x0a, 0x81, 0x8a, 0x14, 0xbb, 0x41, 0xca, 0x40, 0x93, 0x09, 0x99, 0x39, 0xe2, 0x44, 0xbb, 0x59, - 0xb5, 0x2d, 0xa3, 0x1b, 0x85, 0x8a, 0x13, 0xac, 0x82, 0x09, 0x14, 0x9e, 0x02, 0x88, 0x08, 0x08, - 0x14, 0xda, 0x41, 0xa8, 0x08, 0x80, 0x28, 0xc2, 0x08, 0x21, 0x9f, 0x05, 0x9a, 0x10, 0x13, 0xbc, - 0x14, 0x0e, 0xa2, 0x59, 0xb0, 0x40, 0xd9, 0x31, 0xb0, 0x2c, 0xa4, 0x08, 0x21, 0x9e, 0x82, 0x20, - 0xa9, 0x18, 0x05, 0x9c, 0x12, 0x8c, 0x05, 0x0b, 0x81, 0x08, 0x80, 0x9b, 0x54, 0xbc, 0x36, 0xc9, - 0x10, 0x89, 0x91, 0x28, 0x82, 0x0c, 0x99, 0x23, 0xcc, 0x35, 0xac, 0x43, 0xda, 0x39, 0xa1, 0x21, - 0x8b, 0x31, 0xf0, 0x09, 0x04, 0x2a, 0xa1, 0x39, 0xfa, 0x51, 0xb0, 0x3a, 0xb2, 0x59, 0xb1, 0x19, - 0xc3, 0x5b, 0xb4, 0x2b, 0xd3, 0x1a, 0x31, 0xc2, 0x1a, 0x8a, 0x04, 0x19, 0xf1, 0x39, 0xb1, 0x00, - 0x52, 0xc8, 0x2b, 0xa4, 0x38, 0xa1, 0x1d, 0x00, 0x12, 0xad, 0x88, 0x25, 0xb0, 0x3a, 0xa5, 0x0e, - 0x82, 0x18, 0xa9, 0x42, 0xdc, 0x32, 0x90, 0x8a, 0x03, 0x29, 0xb8, 0x82, 0x9e, 0x61, 0xb1, 0x2c, - 0x85, 0x0b, 0xb0, 0x31, 0xa2, 0x2b, 0x12, 0x9c, 0x07, 0x0e, 0x91, 0x88, 0x43, 0xcb, 0x11, 0x29, - 0xb1, 0x70, 0xd8, 0x11, 0x88, 0x99, 0x00, 0x80, 0x30, 0x89, 0xa6, 0x4c, 0x98, 0x93, 0x9c, 0x15, - 0x9a, 0x10, 0x02, 0xcc, 0x12, 0x6b, 0xa2, 0x19, 0xd8, 0x39, 0x80, 0x14, 0xac, 0x21, 0x81, 0x99, - 0xf2, 0x2f, 0x84, 0x0a, 0x93, 0x1b, 0xc9, 0x52, 0x90, 0x88, 0x19, 0x98, 0x05, 0x8b, 0x81, 0x3b, - 0x07, 0x9a, 0x0b, 0x01, 0x33, 0x89, 0x92, 0xc0, 0xcf, 0x31, 0x85, 0x8c, 0x00, 0x12, 0x8a, 0xd0, - 0x48, 0x90, 0x88, 0x33, 0xdc, 0x31, 0xc9, 0x40, 0x99, 0x22, 0xea, 0x32, 0x8b, 0x98, 0x83, 0x32, - 0xac, 0x81, 0xf0, 0x4a, 0x23, 0xad, 0x85, 0x1c, 0x81, 0x00, 0x92, 0x1d, 0x92, 0x88, 0x01, 0x8c, - 0x22, 0x12, 0xa0, 0x8f, 0xb2, 0x2a, 0x08, 0x23, 0xbc, 0x03, 0x79, 0xa1, 0xfa, 0x21, 0x10, 0xc0, - 0x00, 0xa8, 0x7a, 0xa5, 0x29, 0xb9, 0x21, 0x80, 0xd2, 0x69, 0xd0, 0x48, 0xa0, 0x28, 0x9b, 0x01, - 0x43, 0xba, 0xa8, 0x58, 0xa2, 0x68, 0xda, 0x08, 0x40, 0x90, 0x00, 0xb1, 0x0d, 0x31, 0xa2, 0xf2, - 0x3a, 0x00, 0x99, 0x05, 0x0c, 0xa3, 0x60, 0xa9, 0x08, 0x98, 0x11, 0x93, 0x1c, 0xba, 0x80, 0x17, - 0x0a, 0x23, 0xdb, 0x21, 0xdb, 0x04, 0x9b, 0x43, 0xa8, 0xa2, 0x3d, 0xe1, 0x30, 0x18, 0xb1, 0x2b, - 0xf9, 0x24, 0x1a, 0xa0, 0x01, 0xb0, 0x71, 0xaa, 0x82, 0x0c, 0x33, 0xb9, 0x88, 0xa0, 0x48, 0x2b, - 0x87, 0x1b, 0x01, 0xd8, 0x31, 0x9a, 0x8a, 0x07, 0x8c, 0x94, 0x2d, 0x93, 0xca, 0x52, 0x90, 0x8a, - 0x21, 0xb0, 0x3b, 0xd4, 0x78, 0xa0, 0x09, 0x12, 0xad, 0x43, 0xb8, 0x01, 0x9b, 0x25, 0x9e, 0x94, - 0x49, 0x99, 0x02, 0xa9, 0x10, 0x29, 0xe1, 0x31, 0xba, 0x19, 0x22, 0x90, 0x9c, 0x03, 0x60, 0xc2, - 0x2c, 0xc1, 0x59, 0xa0, 0x28, 0x82, 0x99, 0x9d, 0x26, 0xba, 0x20, 0x81, 0x8a, 0x97, 0x2e, 0xa1, - 0x10, 0x80, 0x20, 0xc8, 0x19, 0x98, 0x22, 0x1a, 0xb1, 0x01, 0x8f, 0x02, 0x19, 0x82, 0x33, 0x8d, - 0xc9, 0x80, 0x2a, 0x27, 0x48, 0xdd, 0x22, 0x9a, 0x22, 0x09, 0xd8, 0x32, 0xd8, 0x18, 0x88, 0x88, - 0x45, 0xd8, 0x08, 0x8a, 0x13, 0xab, 0x74, 0xc8, 0x29, 0xc3, 0x28, 0xc0, 0x41, 0xb8, 0x11, 0xb9, - 0x4a, 0x85, 0x9a, 0x25, 0x9d, 0x93, 0x2a, 0x90, 0x18, 0x88, 0x02, 0x9c, 0x84, 0x0e, 0x03, 0x98, - 0x3a, 0xd1, 0x2a, 0x95, 0x00, 0x88, 0x0b, 0x07, 0x9a, 0x1a, 0x54, 0xea, 0x22, 0x99, 0x29, 0xc8, - 0x24, 0x9b, 0x00, 0xa1, 0x19, 0x81, 0x59, 0xf0, 0x40, 0xaa, 0x02, 0xa0, 0x59, 0x90, 0x0b, 0x96, - 0x3a, 0xa1, 0x19, 0xa2, 0x3d, 0x96, 0x1a, 0x80, 0x10, 0xf9, 0x48, 0xb0, 0x29, 0xa3, 0x29, 0x99, - 0x32, 0xf9, 0x40, 0xaa, 0x22, 0xf1, 0x38, 0xa0, 0x11, 0x9b, 0x14, 0xba, 0x29, 0x00, 0x22, 0xd9, - 0x71, 0xb8, 0x30, 0xf9, 0x41, 0xd0, 0x38, 0xb0, 0x3a, 0xa3, 0x1e, 0x94, 0x19, 0xb0, 0x69, 0xc1, - 0x39, 0xa2, 0x19, 0x99, 0x30, 0xa1, 0x2b, 0x97, 0x2b, 0x88, 0x18, 0xf1, 0x40, 0x98, 0x09, 0xa4, - 0x1a, 0x92, 0x01, 0x9f, 0x84, 0x18, 0x00, 0xda, 0x48, 0xc0, 0x20, 0x08, 0x38, 0xc9, 0x21, 0x91, - 0x1b, 0x5b, 0xa4, 0x90, 0x9c, 0x18, 0x62, 0xe1, 0x48, 0xc8, 0x21, 0xa9, 0x12, 0x83, 0x1d, 0xd8, - 0x32, 0xeb, 0x60, 0xa0, 0x89, 0x02, 0x08, 0xb1, 0x29, 0xb1, 0x49, 0x03, 0xcb, 0x41, 0xad, 0x04, - 0x22, 0xbd, 0x10, 0x12, 0xaa, 0x31, 0xa8, 0x8d, 0x27, 0x9a, 0x01, 0xc0, 0x1a, 0x37, 0xbc, 0x82, - 0x30, 0xe9, 0x30, 0x98, 0xa1, 0x30, 0xc8, 0x09, 0x02, 0x0f, 0x04, 0xa0, 0x2b, 0xb8, 0x35, 0xd9, - 0x28, 0x91, 0x19, 0xb3, 0x2a, 0x21, 0xea, 0x53, 0xc9, 0x48, 0xe2, 0x2a, 0x91, 0x02, 0x1a, 0xb2, - 0x3a, 0xd8, 0x11, 0x90, 0x70, 0xb9, 0x08, 0x34, 0xbc, 0x29, 0x15, 0xac, 0x23, 0x9d, 0x22, 0x0b, - 0xa1, 0x63, 0xb1, 0x9f, 0x23, 0xd9, 0x58, 0x91, 0x98, 0x90, 0x00, 0x80, 0x02, 0xa0, 0x8a, 0x54, - 0xab, 0x24, 0xca, 0x08, 0x13, 0x1b, 0xb8, 0x85, 0x1f, 0x06, 0x0c, 0x98, 0x03, 0x0d, 0x82, 0x98, - 0x90, 0x52, 0xba, 0x10, 0x90, 0x15, 0x8c, 0x92, 0x01, 0x8e, 0x25, 0xab, 0xa6, 0x4b, 0x91, 0x09, - 0x91, 0x08, 0x98, 0x40, 0xc1, 0x08, 0x21, 0x9d, 0x32, 0xf0, 0x4a, 0x91, 0x18, 0xa8, 0x92, 0x3c, - 0xc1, 0x33, 0xa9, 0x88, 0x89, 0x95, 0x2b, 0xc4, 0x7a, 0xa0, 0x08, 0x00, 0x9e, 0x33, 0xc2, 0x29, - 0xa9, 0x39, 0xa4, 0x21, 0x98, 0x1d, 0xd2, 0x20, 0x08, 0x0a, 0xf2, 0x70, 0xc8, 0x19, 0x22, 0xc0, - 0x29, 0x90, 0x19, 0xa2, 0x49, 0x94, 0x9d, 0x11, 0x12, 0x8b, 0x95, 0x1c, 0x23, 0xc9, 0x5b, 0xe2, - 0x38, 0x90, 0x19, 0xb8, 0x03, 0x3e, 0x90, 0x83, 0x9b, 0x18, 0x34, 0xd8, 0xb9, 0x53, 0x1c, 0xa3, - 0xaa, 0x59, 0x89, 0x33, 0x90, 0xcb, 0x98, 0x70, 0xb1, 0x04, 0xba, 0x3e, 0x96, 0x88, 0x9a, 0x04, - 0x29, 0xa9, 0x01, 0x8a, 0xa3, 0x3a, 0x47, 0xec, 0x28, 0x11, 0x88, 0xa1, 0x89, 0x4b, 0xa5, 0x09, - 0x3a, 0x86, 0xac, 0x53, 0xc0, 0x19, 0x29, 0xc2, 0x39, 0xc0, 0x29, 0x85, 0x0a, 0x08, 0x8a, 0x03, - 0x1e, 0x84, 0x0a, 0x00, 0xc0, 0x52, 0x89, 0xb8, 0x31, 0xc1, 0x39, 0x89, 0xb0, 0x04, 0x38, 0xaf, - 0x05, 0x19, 0xa9, 0x20, 0xda, 0x34, 0x9d, 0x02, 0x99, 0x48, 0x83, 0xc9, 0x3a, 0xb1, 0x38, 0x83, - 0x22, 0x2d, 0xdb, 0x07, 0x2b, 0xb3, 0x0c, 0x13, 0xaa, 0xd1, 0x7a, 0xb1, 0x29, 0x92, 0xba, 0x51, - 0xb8, 0x32, 0xba, 0x62, 0xd9, 0x31, 0xa9, 0x48, 0x93, 0x8c, 0x48, 0xe3, 0x2b, 0x84, 0x8c, 0x33, - 0x9e, 0x11, 0x90, 0x18, 0x09, 0x92, 0x8a, 0x22, 0xac, 0x86, 0x0d, 0x83, 0x29, 0xa4, 0xbb, 0x34, - 0x9c, 0x93, 0x50, 0xb9, 0x80, 0x21, 0x2c, 0xe4, 0x3a, 0x84, 0x9c, 0x01, 0x80, 0x88, 0x31, 0xa7, - 0x1c, 0x90, 0x00, 0x83, 0x8d, 0x41, 0xaa, 0x85, 0x8a, 0x18, 0xb9, 0x46, 0x99, 0xa0, 0x4c, 0xb1, - 0x21, 0x09, 0x88, 0x81, 0xa9, 0x49, 0x1a, 0xc5, 0x7b, 0x92, 0xab, 0x38, 0x91, 0x82, 0x09, 0x93, - 0x1e, 0x18, 0xf2, 0x40, 0x0a, 0x92, 0x11, 0xd9, 0x09, 0x32, 0xe0, 0x52, 0x9c, 0x83, 0x0a, 0xb1, - 0x71, 0xc9, 0x00, 0x12, 0x9d, 0x04, 0x99, 0x00, 0x08, 0x10, 0x89, 0xf1, 0x59, 0xa2, 0x1b, 0x03, - 0x88, 0xc1, 0x4c, 0x91, 0xb1, 0x30, 0x31, 0xfb, 0x80, 0x11, 0x09, 0x13, 0xbf, 0x17, 0xaa, 0x28, - 0xb8, 0x30, 0x91, 0xb0, 0x79, 0xc8, 0x10, 0x11, 0x98, 0x81, 0x3a, 0xf2, 0x1a, 0x04, 0x1a, 0x90, - 0x14, 0xad, 0x30, 0xd3, 0x40, 0x89, 0x9b, 0x14, 0x9b, 0x38, 0x04, 0xbd, 0x34, 0xab, 0x98, 0x24, - 0x1d, 0xa2, 0x02, 0xad, 0x71, 0xa0, 0x2c, 0x95, 0x0a, 0x08, 0x92, 0x5a, 0xa8, 0x91, 0x3c, 0x87, - 0x8d, 0x02, 0x00, 0x8b, 0x83, 0x19, 0x91, 0x90, 0x4c, 0xa3, 0x8c, 0x11, 0x85, 0x8b, 0x0a, 0x06, - 0x8b, 0x22, 0xa0, 0x89, 0xa0, 0x36, 0x9e, 0xb0, 0x71, 0xb0, 0x18, 0x18, 0xc0, 0x49, 0x09, 0x95, - 0x1d, 0x80, 0x10, 0x20, 0xbc, 0x23, 0x08, 0xd8, 0x68, 0xa0, 0x1a, 0x95, 0x0a, 0x81, 0x08, 0x92, - 0x9b, 0x68, 0xc1, 0x40, 0xdb, 0x32, 0x1a, 0xc1, 0x38, 0x93, 0x8e, 0x00, 0x21, 0x8b, 0xb4, 0x4a, - 0xa2, 0x99, 0x43, 0x98, 0xbb, 0x60, 0x92, 0xda, 0x48, 0xb3, 0x2d, 0x92, 0x48, 0xda, 0x81, 0x40, - 0x98, 0xd1, 0x79, 0xb2, 0x0b, 0x13, 0xa9, 0x30, 0x0b, 0x13, 0xd8, 0x9a, 0x43, 0x10, 0xce, 0x41, - 0x89, 0xa2, 0x2c, 0x01, 0xf3, 0x59, 0xa0, 0x08, 0x98, 0x49, 0x92, 0x09, 0xa8, 0x42, 0xbb, 0x34, - 0xa9, 0x09, 0x13, 0x2e, 0xc5, 0x0b, 0x22, 0x00, 0x1a, 0xf1, 0x28, 0xa8, 0x88, 0x15, 0x0d, 0x03, - 0x89, 0xc8, 0x3a, 0x91, 0x44, 0x9c, 0x81, 0xa0, 0x1a, 0x15, 0x98, 0x18, 0xa9, 0x75, 0xbb, 0x04, - 0x1b, 0x23, 0xcd, 0x32, 0xb9, 0x18, 0xc1, 0x50, 0xa0, 0x2a, 0x93, 0x0c, 0x92, 0x89, 0x27, 0x9e, - 0x20, 0x82, 0x9c, 0x32, 0xa0, 0x5a, 0x90, 0xaa, 0x32, 0x9e, 0x03, 0x00, 0x1c, 0x82, 0x91, 0x9d, - 0x23, 0x18, 0xa3, 0xbb, 0x1c, 0x16, 0x9b, 0x73, 0xf1, 0x20, 0x8a, 0x11, 0xa9, 0x92, 0x08, 0x29, - 0xf3, 0x4b, 0xc1, 0x28, 0x81, 0x10, 0xc8, 0x4c, 0xe3, 0x49, 0x98, 0x01, 0x01, 0x8e, 0x94, 0x28, - 0xa9, 0x32, 0xb9, 0x5b, 0xb3, 0x2d, 0x92, 0x88, 0x18, 0x93, 0x1e, 0xd0, 0x28, 0x11, 0xe0, 0x31, - 0xab, 0x21, 0x11, 0xba, 0x09, 0x78, 0xc4, 0x18, 0x0b, 0x04, 0xda, 0x53, 0xb8, 0x11, 0xac, 0x30, - 0x95, 0x8c, 0x22, 0x09, 0xd0, 0x28, 0x91, 0x58, 0xc0, 0x38, 0xc8, 0x28, 0xa2, 0x5c, 0xb2, 0x0a, - 0x12, 0xc9, 0x40, 0x88, 0xa1, 0x68, 0xc1, 0x0b, 0x82, 0x38, 0x00, 0xaa, 0x09, 0x04, 0x0b, 0x63, - 0xaa, 0x94, 0xcc, 0x70, 0xc1, 0x28, 0x98, 0x18, 0x82, 0x2b, 0xa1, 0x09, 0x11, 0x71, 0xf8, 0x4a, - 0x80, 0x18, 0xca, 0x50, 0x81, 0x0c, 0x93, 0x28, 0xd9, 0x58, 0xa0, 0x18, 0x9a, 0x42, 0xc1, 0x18, - 0x80, 0x2a, 0xa1, 0x8b, 0x26, 0xbb, 0x18, 0x26, 0xac, 0x20, 0xa1, 0x88, 0x2b, 0x44, 0xf1, 0x5a, - 0x09, 0xa3, 0x8d, 0x41, 0x80, 0x98, 0xa9, 0x52, 0xb8, 0x29, 0xa6, 0x1a, 0xa9, 0x23, 0x89, 0xa9, - 0x80, 0x37, 0xad, 0x82, 0x2b, 0x05, 0xaa, 0x34, 0xd9, 0x39, 0x98, 0x04, 0xa8, 0x3d, 0x92, 0x0a, - 0xb0, 0x43, 0x3b, 0xe0, 0x20, 0xb1, 0x1d, 0x51, 0xd0, 0x00, 0x0b, 0x03, 0xa1, 0x1e, 0x95, 0x1b, - 0x81, 0x95, 0x0c, 0x91, 0x11, 0x08, 0xb8, 0x34, 0x8d, 0x01, 0x89, 0x12, 0x9b, 0x6a, 0xe2, 0x21, - 0x9e, 0x13, 0xa9, 0x20, 0xa8, 0x39, 0x83, 0xb1, 0x7c, 0xc3, 0x1b, 0x21, 0xd8, 0x49, 0x90, 0x81, - 0x89, 0x33, 0x9d, 0x90, 0x34, 0x9e, 0x21, 0x88, 0xac, 0x24, 0xa9, 0x01, 0x3b, 0xd3, 0x80, 0x3a, - 0x90, 0xf3, 0x7a, 0xa3, 0x8c, 0x24, 0xbb, 0x62, 0xb9, 0x11, 0x09, 0xa2, 0x1a, 0x88, 0x81, 0x31, - 0xeb, 0x03, 0x8f, 0x23, 0xda, 0x33, 0x9c, 0x02, 0x01, 0x1f, 0xa2, 0x09, 0x68, 0xa1, 0x99, 0x2b, - 0x97, 0x3a, 0x91, 0x9a, 0x32, 0xb9, 0x40, 0xaa, 0x15, 0x0b, 0x09, 0xb5, 0x2d, 0xc2, 0x5a, 0x92, - 0x0a, 0x91, 0x0b, 0x07, 0x0a, 0xa2, 0x0e, 0x05, 0x8c, 0x12, 0x8a, 0x92, 0x19, 0x91, 0x89, 0x4c, - 0xd0, 0x52, 0xa9, 0x20, 0x8a, 0x91, 0x30, 0x2b, 0xa5, 0x29, 0x8a, 0xb2, 0xbc, 0x62, 0x21, 0xc8, - 0x4a, 0xd2, 0x09, 0x20, 0x31, 0xfb, 0x38, 0x00, 0x0b, 0xc6, 0x5c, 0xa2, 0x29, 0xd8, 0x30, 0xa8, - 0x20, 0xb2, 0x4b, 0xc1, 0x09, 0x05, 0x8c, 0x02, 0x80, 0x10, 0xaa, 0x23, 0xdb, 0x69, 0x92, 0x9a, - 0x88, 0x33, 0xab, 0x30, 0xf0, 0x79, 0xb0, 0x18, 0x28, 0xc8, 0x34, 0xda, 0x30, 0x89, 0x11, 0xe0, - 0x3a, 0xc1, 0x30, 0xb1, 0x3c, 0xb2, 0x1c, 0x91, 0x64, 0x9b, 0x80, 0x12, 0x0e, 0x95, 0x1b, 0x94, - 0x09, 0x09, 0x94, 0x8a, 0x19, 0x15, 0x9c, 0x02, 0xac, 0x25, 0xa9, 0x11, 0x8c, 0x06, 0x9c, 0x12, - 0xa1, 0x1a, 0x82, 0x10, 0xab, 0x98, 0x35, 0xa8, 0x12, 0x8e, 0x84, 0x2a, 0x09, 0xf4, 0x28, 0x98, - 0x4b, 0xc2, 0x18, 0x08, 0x20, 0xf1, 0x40, 0xca, 0x32, 0xb1, 0x2d, 0xa3, 0x2a, 0xa4, 0x2e, 0x82, - 0xba, 0x45, 0x8c, 0x82, 0x1a, 0x88, 0x11, 0xc8, 0x28, 0x01, 0xb9, 0x24, 0x0e, 0x91, 0xa8, 0x22, - 0x9a, 0x06, 0xaa, 0x39, 0xa3, 0xac, 0x37, 0x8b, 0xa1, 0x0b, 0x16, 0x2b, 0xc4, 0x28, 0x9a, 0x08, - 0x00, 0x93, 0x4d, 0xf1, 0x3a, 0x93, 0x19, 0x09, 0xb0, 0x80, 0x73, 0xc9, 0x38, 0x98, 0x20, 0xf3, - 0x6b, 0xb8, 0x21, 0x00, 0x9a, 0x11, 0x9a, 0x22, 0x0b, 0xd4, 0x4c, 0x81, 0x82, 0x2a, 0xd8, 0x38, - 0x91, 0x7a, 0xe2, 0x2b, 0x83, 0x90, 0x2b, 0x92, 0x18, 0xc1, 0x1c, 0x16, 0xbc, 0x43, 0x89, 0x98, - 0x81, 0x29, 0x20, 0xf0, 0x5a, 0xa8, 0x40, 0xb8, 0x88, 0x71, 0xb8, 0x92, 0x5a, 0xc0, 0x32, 0xac, - 0x32, 0x9b, 0xb2, 0x41, 0x0d, 0xa4, 0x0a, 0x28, 0x93, 0x8a, 0x94, 0x0e, 0x23, 0x9a, 0x13, 0xbb, - 0xb9, 0x73, 0xa0, 0x21, 0x80, 0xb8, 0x40, 0xae, 0xa3, 0x59, 0x2b, 0xa7, 0x0b, 0x81, 0x89, 0x41, - 0xe3, 0x2a, 0x04, 0xab, 0x48, 0xd1, 0x30, 0xa0, 0x39, 0xc1, 0x89, 0x39, 0xb3, 0x44, 0xfb, 0x39, - 0xb0, 0x83, 0x2c, 0xc2, 0x40, 0x90, 0x88, 0x1c, 0xa1, 0x34, 0x19, 0xf8, 0x5a, 0x98, 0x01, 0x98, - 0x12, 0xb8, 0x28, 0x84, 0xfa, 0x38, 0x38, 0xb1, 0x04, 0xaf, 0x31, 0xc8, 0x20, 0x01, 0x99, 0x80, - 0x1e, 0x84, 0x99, 0x38, 0xa3, 0x1f, 0x92, 0xb9, 0x53, 0x2b, 0xb4, 0x29, 0x1c, 0xc4, 0x30, 0x9a, - 0x22, 0xb0, 0x82, 0x9e, 0x40, 0xd8, 0x30, 0x91, 0x9a, 0x18, 0x81, 0xb9, 0x47, 0x8c, 0x32, 0xf8, - 0x09, 0x20, 0x99, 0x49, 0xb5, 0x29, 0xc8, 0x58, 0xd2, 0x28, 0x88, 0x80, 0x08, 0x9a, 0x23, 0x0b, - 0x12, 0x05, 0xdb, 0x2d, 0x93, 0x13, 0x1c, 0xa2, 0xb0, 0x4d, 0xb0, 0x18, 0x10, 0x22, 0x95, 0xaf, - 0x11, 0x9a, 0x33, 0xf2, 0x29, 0x9a, 0x12, 0x91, 0x38, 0x28, 0xf9, 0x60, 0xd0, 0x28, 0x98, 0x58, - 0xa2, 0x10, 0xab, 0x08, 0x01, 0x10, 0x01, 0x8e, 0x96, 0x0e, 0x82, 0x88, 0x88, 0x32, 0x9a, 0xb5, - 0x1e, 0x83, 0x09, 0x11, 0x88, 0x0b, 0x95, 0x1f, 0x93, 0x8a, 0x01, 0x01, 0x18, 0x9f, 0x82, 0x41, - 0x9b, 0x96, 0x8a, 0x08, 0x18, 0x83, 0x3d, 0xd2, 0xa0, 0x79, 0xb1, 0x19, 0x83, 0x29, 0xd1, 0x19, - 0x10, 0xb8, 0x38, 0xa0, 0x20, 0x19, 0xd5, 0x2a, 0xbc, 0x52, 0x14, 0xad, 0x31, 0xfa, 0x21, 0x98, - 0x11, 0x19, 0xb3, 0x0e, 0xa2, 0x30, 0x2b, 0x97, 0x2b, 0xa1, 0x2b, 0xa2, 0x59, 0x94, 0x8d, 0x03, - 0xca, 0x41, 0xc9, 0x41, 0xb8, 0x29, 0x90, 0x28, 0x89, 0x27, 0xaa, 0x11, 0x9f, 0x84, 0x28, 0xbb, - 0x27, 0x9b, 0x92, 0x29, 0x90, 0x19, 0x8a, 0x16, 0x8a, 0xa8, 0x31, 0xca, 0x52, 0xbb, 0x15, 0x8d, - 0x32, 0xb8, 0x08, 0x05, 0x9d, 0x12, 0x98, 0x0a, 0x33, 0xd0, 0x39, 0xb1, 0x0e, 0x84, 0x2a, 0x81, - 0x8a, 0x42, 0xf0, 0x4b, 0xd2, 0x39, 0x11, 0xc8, 0x20, 0xab, 0x23, 0x00, 0x81, 0x20, 0xfb, 0x40, - 0x9c, 0x04, 0x89, 0x98, 0x03, 0x8f, 0x82, 0x80, 0x88, 0x40, 0xa8, 0x08, 0x8e, 0x03, 0x1c, 0x87, - 0x1a, 0x10, 0x99, 0xa9, 0x79, 0xa3, 0x1d, 0x04, 0xab, 0x02, 0xa0, 0x7b, 0x92, 0x19, 0x89, 0x00, - 0xbb, 0x17, 0x8a, 0x02, 0xbb, 0x30, 0x80, 0x1c, 0x94, 0x49, 0xd3, 0x28, 0x8a, 0xa0, 0x78, 0xb3, - 0x2c, 0x92, 0xca, 0x60, 0x98, 0x81, 0x29, 0xb4, 0x7b, 0xc0, 0x08, 0x01, 0x09, 0x03, 0xca, 0x38, - 0xaa, 0x04, 0x28, 0xc8, 0x88, 0xa2, 0x7d, 0xb1, 0x18, 0x42, 0xac, 0x23, 0xdc, 0x30, 0x08, 0x91, - 0x01, 0x0c, 0xa1, 0x14, 0x8d, 0x12, 0xb8, 0x24, 0x9f, 0x02, 0x88, 0x10, 0x99, 0x42, 0xa8, 0xaa, - 0x78, 0xa1, 0x19, 0x12, 0xcc, 0x42, 0xf8, 0x5a, 0xa1, 0x18, 0x08, 0xa1, 0x09, 0x92, 0x4a, 0xb8, - 0x14, 0x09, 0xa9, 0x62, 0xcb, 0x33, 0x98, 0x91, 0x9e, 0x91, 0x71, 0xa0, 0x80, 0x10, 0xe8, 0x20, - 0x99, 0x11, 0x10, 0xd2, 0x59, 0xb0, 0x1a, 0x82, 0x3b, 0x06, 0xc9, 0x22, 0xbd, 0x24, 0x9a, 0x23, - 0xa9, 0x82, 0xdb, 0x3a, 0x88, 0x47, 0x8c, 0x02, 0xea, 0x30, 0x08, 0x99, 0x13, 0x9b, 0x14, 0x99, - 0xaa, 0x71, 0x80, 0x81, 0x8d, 0x91, 0x30, 0xb0, 0x71, 0xda, 0x13, 0xab, 0x31, 0xc9, 0x40, 0x83, - 0x0e, 0xa2, 0x00, 0x08, 0x48, 0xc9, 0x14, 0xab, 0x81, 0x84, 0x0f, 0x02, 0xa1, 0x19, 0x81, 0x8d, - 0x92, 0x83, 0x2c, 0x32, 0xbc, 0x05, 0x8c, 0x80, 0x30, 0x83, 0xbb, 0x70, 0xd0, 0x08, 0x15, 0xaa, - 0x29, 0xc2, 0x32, 0xbc, 0x02, 0x3d, 0x95, 0x8b, 0x80, 0xd1, 0x58, 0x81, 0x20, 0xbc, 0x14, 0xab, - 0x42, 0x9a, 0x24, 0x98, 0x8a, 0xc1, 0x3a, 0xc9, 0x45, 0x90, 0xab, 0x84, 0x8b, 0x24, 0xa8, 0x90, - 0x2a, 0xd2, 0x3b, 0xf8, 0x22, 0x13, 0xab, 0x19, 0xf1, 0x4b, 0x05, 0x99, 0x11, 0xbb, 0x02, 0x1b, - 0x63, 0xda, 0x24, 0x8c, 0x00, 0x98, 0x11, 0x98, 0x19, 0x9a, 0x16, 0xba, 0x5b, 0xa4, 0x8c, 0x25, - 0x88, 0xa9, 0x92, 0x0f, 0x84, 0x08, 0x10, 0xb9, 0x28, 0xd1, 0x40, 0xb8, 0x38, 0x03, 0xb9, 0x2b, - 0xbb, 0x37, 0x02, 0xcc, 0x18, 0xa3, 0x9e, 0x44, 0xd1, 0x2a, 0xb3, 0x3b, 0xa2, 0x3b, 0x17, 0xaa, - 0x08, 0x91, 0x8d, 0x32, 0x22, 0xf1, 0x3b, 0xb2, 0x29, 0x09, 0x97, 0x9a, 0x34, 0xba, 0x80, 0x80, - 0x2c, 0x17, 0x8b, 0xb1, 0x49, 0xd0, 0x31, 0x8c, 0x05, 0x9a, 0x91, 0x19, 0x99, 0x05, 0x29, 0xb3, - 0x1d, 0x92, 0x98, 0x7b, 0xd2, 0x18, 0x12, 0x9b, 0x08, 0x03, 0xad, 0x23, 0xa9, 0x1a, 0xc3, 0x44, - 0x9f, 0x12, 0x18, 0x98, 0x08, 0x89, 0x08, 0x5b, 0xa4, 0x8a, 0x32, 0x9d, 0xa3, 0x3e, 0x33, 0xfa, - 0x30, 0xb8, 0x10, 0x5b, 0xb4, 0x5b, 0xa1, 0x18, 0x9c, 0x80, 0x42, 0xc0, 0x28, 0xa2, 0x8a, 0x8a, - 0x87, 0x2b, 0x99, 0x85, 0xa9, 0x30, 0x01, 0x02, 0x39, 0xfa, 0x0d, 0x93, 0x3a, 0x06, 0x09, 0x1a, - 0xf2, 0x38, 0x91, 0x0b, 0x90, 0x49, 0x94, 0x8a, 0x8f, 0x02, 0x00, 0x20, 0xa9, 0x0d, 0x85, 0x3b, - 0xa4, 0x2b, 0xb2, 0x58, 0xb8, 0x81, 0x9a, 0x42, 0x00, 0xdc, 0x26, 0xbb, 0x23, 0x9a, 0x04, 0xac, - 0x70, 0xb2, 0x8a, 0xa0, 0x51, 0x99, 0x12, 0x99, 0xa8, 0x60, 0x81, 0xab, 0x89, 0x68, 0xc0, 0x21, - 0xf9, 0x78, 0x90, 0x19, 0x90, 0x88, 0x58, 0xb1, 0x29, 0x99, 0x08, 0x20, 0xd2, 0x39, 0xc0, 0x29, - 0x11, 0xd8, 0x38, 0xc0, 0x25, 0xcc, 0x11, 0x21, 0x98, 0x8a, 0x00, 0x98, 0x91, 0x72, 0x90, 0x9d, - 0x23, 0x9a, 0x35, 0x9d, 0x91, 0x32, 0xcb, 0x15, 0x9b, 0x09, 0x53, 0x90, 0xbd, 0x11, 0x40, 0x91, - 0x0f, 0x93, 0x99, 0x30, 0xa3, 0x0e, 0x83, 0x2c, 0x85, 0xa9, 0x18, 0x82, 0x4a, 0xe0, 0x49, 0xb0, - 0x20, 0x98, 0x91, 0x3a, 0xa3, 0x1a, 0x98, 0xfb, 0x70, 0xc3, 0x8a, 0x83, 0x9d, 0x32, 0xa0, 0x81, - 0x4b, 0xc1, 0x31, 0xb0, 0x99, 0x51, 0xa2, 0x0f, 0xc2, 0x12, 0x2c, 0xb3, 0x8b, 0x81, 0x59, 0x90, - 0x02, 0x9f, 0x20, 0x13, 0xa9, 0x29, 0xd8, 0x50, 0xa2, 0x0a, 0xb1, 0x1f, 0x86, 0x19, 0xa8, 0xa2, - 0x70, 0xb9, 0x38, 0xb2, 0x2a, 0x38, 0xb4, 0x1b, 0x89, 0xa1, 0x54, 0xdb, 0x28, 0x93, 0x9a, 0x71, - 0xa9, 0x28, 0xa4, 0x32, 0x8f, 0xa1, 0x19, 0x85, 0x1a, 0xb8, 0x07, 0x0b, 0x92, 0x01, 0xea, 0x31, - 0xa8, 0x39, 0x91, 0xba, 0x36, 0xda, 0x29, 0xb1, 0x03, 0x1a, 0x00, 0x90, 0x29, 0x06, 0xbd, 0x02, - 0x38, 0x06, 0xb9, 0x10, 0xad, 0x06, 0x4b, 0x82, 0xcb, 0x11, 0x10, 0x9c, 0x82, 0x50, 0x90, 0x9d, - 0xa1, 0x62, 0x98, 0x08, 0x83, 0x9e, 0x30, 0x90, 0x03, 0xad, 0x34, 0xac, 0x22, 0x8c, 0x83, 0x90, - 0x4a, 0x99, 0x11, 0xc1, 0x51, 0xba, 0x24, 0x30, 0x9c, 0xe1, 0x1a, 0x13, 0x99, 0x0d, 0x85, 0x89, - 0x11, 0xca, 0x23, 0x18, 0x18, 0xcc, 0xa1, 0x3f, 0x94, 0x3b, 0xa3, 0x31, 0xaf, 0x13, 0xc8, 0x40, - 0x90, 0x2b, 0xb5, 0x2d, 0x95, 0x1a, 0xa3, 0x1b, 0x01, 0xab, 0x44, 0xa8, 0x10, 0x8c, 0x04, 0x8d, - 0x83, 0x8b, 0x14, 0x9c, 0x02, 0x91, 0x2b, 0xb1, 0x60, 0xa8, 0x13, 0xbd, 0x12, 0x0c, 0xc0, 0x52, - 0x80, 0x98, 0x59, 0xa9, 0x81, 0x83, 0x51, 0xab, 0xf3, 0x40, 0x09, 0xd9, 0x21, 0x1b, 0x93, 0x89, - 0x89, 0x01, 0x40, 0xb2, 0x99, 0x8b, 0x23, 0xdf, 0x07, 0x8c, 0x84, 0x9a, 0x52, 0xc9, 0x01, 0x10, - 0x80, 0x99, 0x01, 0xac, 0x23, 0x19, 0x17, 0xb8, 0x39, 0xc9, 0x13, 0x0c, 0x83, 0x99, 0x24, 0xac, - 0x03, 0xa9, 0x61, 0xb8, 0x29, 0x11, 0xd8, 0x20, 0xfb, 0x09, 0x82, 0x32, 0xd9, 0x2a, 0x35, 0xbd, - 0x23, 0xb2, 0x1b, 0x1c, 0x05, 0xb3, 0x5d, 0xa1, 0x18, 0x89, 0x23, 0xb9, 0xa5, 0x1f, 0x92, 0x0b, - 0x32, 0xe1, 0x49, 0xb9, 0x12, 0xbb, 0x07, 0x08, 0xaa, 0x00, 0x8b, 0x27, 0x1b, 0xa2, 0x08, 0xb9, - 0x50, 0xa0, 0x34, 0xba, 0x09, 0x8f, 0x03, 0xa3, 0x3c, 0xc2, 0x2a, 0xc8, 0x43, 0x0b, 0x82, 0xe8, - 0x40, 0xb9, 0x39, 0xa7, 0x29, 0x99, 0x83, 0x3c, 0xc1, 0x39, 0x14, 0xac, 0x13, 0xe8, 0x72, 0x9a, - 0x00, 0x88, 0x01, 0x39, 0xa8, 0xd1, 0x1a, 0x82, 0x79, 0xd1, 0x48, 0xb9, 0x30, 0xc8, 0x11, 0x20, - 0xd1, 0x38, 0xa1, 0x90, 0x58, 0xb1, 0x8b, 0x83, 0x29, 0x32, 0xac, 0xda, 0x29, 0x47, 0x8b, 0x18, - 0xf0, 0x39, 0xa1, 0x88, 0x80, 0x81, 0x2a, 0x86, 0x89, 0x9a, 0x22, 0x00, 0x07, 0xaf, 0x03, 0x08, - 0x21, 0xa9, 0x0d, 0x05, 0x19, 0xa8, 0x38, 0xf9, 0x22, 0x0d, 0x02, 0xa9, 0x22, 0x9b, 0x18, 0xa5, - 0x3c, 0xa5, 0x0c, 0x02, 0x9a, 0x48, 0xa1, 0x11, 0x2d, 0x84, 0x9a, 0xe1, 0x29, 0x40, 0x02, 0x89, - 0xd1, 0x2a, 0xb8, 0x49, 0x25, 0xbc, 0x23, 0x8d, 0x93, 0x18, 0x8a, 0x72, 0xc1, 0x08, 0x90, 0x98, - 0x48, 0xb9, 0x73, 0xb9, 0x28, 0x18, 0x91, 0x42, 0xbd, 0x05, 0x8c, 0x83, 0x2a, 0xb2, 0x49, 0xab, - 0x04, 0xb8, 0x89, 0x36, 0x9e, 0x43, 0x9b, 0x01, 0xb1, 0x0c, 0x28, 0x01, 0x24, 0xbc, 0x19, 0x07, - 0x9b, 0x21, 0x90, 0x90, 0xb4, 0x3e, 0xb1, 0x88, 0x21, 0x91, 0xa9, 0xbf, 0x47, 0xb8, 0x19, 0x80, - 0x08, 0x21, 0xbc, 0x83, 0x59, 0x84, 0x19, 0xfa, 0x1a, 0x01, 0x20, 0x88, 0x90, 0x59, 0xb0, 0x91, - 0x8b, 0x32, 0x17, 0xcd, 0x40, 0xa0, 0x08, 0x21, 0xb9, 0x02, 0x0c, 0x38, 0x97, 0xab, 0x14, 0x1b, - 0x82, 0x89, 0x80, 0x20, 0x31, 0xfa, 0x7a, 0xb8, 0x51, 0xa8, 0x20, 0xa9, 0x8a, 0x27, 0x0a, 0xfa, - 0x40, 0x88, 0x08, 0x81, 0xbb, 0x48, 0x91, 0x11, 0x89, 0x08, 0x38, 0x17, 0x8f, 0x01, 0x89, 0x41, - 0xb8, 0x30, 0xbc, 0x25, 0xa9, 0x18, 0x00, 0xe0, 0x11, 0x38, 0xe2, 0x18, 0xba, 0x42, 0x1c, 0xd3, - 0x29, 0x88, 0x80, 0x89, 0x23, 0xe8, 0x29, 0x20, 0xc0, 0x72, 0x98, 0xb8, 0x5b, 0x92, 0x21, 0xa1, - 0xce, 0x28, 0x02, 0x10, 0xbb, 0x84, 0x0a, 0x24, 0x9b, 0x17, 0xbc, 0x20, 0x20, 0x89, 0x0a, 0x47, - 0xac, 0x21, 0x91, 0x8b, 0x32, 0xb8, 0xab, 0x21, 0x43, 0xdb, 0x02, 0x0d, 0xa1, 0x71, 0x81, 0xb8, - 0x8b, 0x42, 0x20, 0xa9, 0xa9, 0x87, 0x2c, 0x21, 0xe3, 0x5b, 0x80, 0x01, 0xa9, 0x0b, 0x32, 0x0a, - 0x86, 0x9b, 0x89, 0x31, 0xf2, 0x31, 0x9d, 0xb2, 0x69, 0x84, 0xbb, 0x20, 0x91, 0x39, 0xfa, 0x48, - 0xc2, 0x20, 0xb8, 0x79, 0xb8, 0x30, 0xa2, 0xb8, 0x48, 0x29, 0xb3, 0x68, 0xc9, 0x1a, 0x81, 0x01, - 0x90, 0x7b, 0xc0, 0x81, 0x8c, 0x08, 0x33, 0x99, 0x14, 0x1a, 0xf2, 0x2b, 0x22, 0xc4, 0x1c, 0x95, - 0x0c, 0x81, 0x80, 0x48, 0xa9, 0x51, 0xb1, 0x38, 0xcc, 0x41, 0x98, 0x98, 0x20, 0xc1, 0x2a, 0x08, - 0x02, 0x09, 0x31, 0x12, 0xff, 0x30, 0x0b, 0x25, 0xc9, 0x38, 0xb9, 0x10, 0x82, 0x20, 0xf9, 0x60, - 0xb1, 0x9b, 0x14, 0x0b, 0x13, 0x3a, 0xea, 0x01, 0x20, 0x98, 0xa2, 0x20, 0x20, 0xc1, 0xb9, 0xff, - 0x51, 0x80, 0x10, 0xcb, 0x18, 0x10, 0x91, 0x30, 0xfb, 0x30, 0x00, 0xc0, 0x18, 0x59, 0xa0, 0x11, - 0x9c, 0x50, 0xc0, 0x09, 0x22, 0xa9, 0x19, 0x82, 0xb8, 0x4c, 0x89, 0x55, 0xc8, 0x49, 0xa8, 0x90, - 0x1c, 0xa2, 0x31, 0x9e, 0x14, 0x9d, 0x12, 0x09, 0x23, 0x08, 0xaa, 0x40, 0xf9, 0x88, 0x52, 0x98, - 0xa0, 0x49, 0xd9, 0x10, 0x22, 0x98, 0x2b, 0x94, 0x8c, 0x12, 0x8c, 0x33, 0xf0, 0x48, 0xb8, 0x08, - 0x10, 0x25, 0x9f, 0x01, 0x00, 0x1c, 0xa2, 0x39, 0x92, 0x3a, 0xe2, 0x5b, 0x81, 0x08, 0x80, 0x89, - 0xb9, 0x20, 0xa0, 0x75, 0xb8, 0x68, 0xa0, 0xbb, 0x62, 0x98, 0x11, 0xaa, 0x18, 0x01, 0x90, 0x35, - 0xdc, 0x08, 0x48, 0x84, 0x8c, 0x01, 0x98, 0x11, 0x8a, 0x11, 0xe0, 0x29, 0x08, 0x84, 0xfc, 0x40, - 0x82, 0x0c, 0x91, 0x28, 0xa9, 0x20, 0x89, 0x99, 0x98, 0x61, 0xa1, 0x0e, 0x85, 0x1a, 0x91, 0x9c, - 0x16, 0x89, 0x20, 0xa1, 0x9c, 0x32, 0x9a, 0x08, 0x87, 0x09, 0x10, 0xbc, 0x73, 0xc8, 0x30, 0xb8, - 0x19, 0x99, 0x4b, 0x07, 0x99, 0x01, 0x8b, 0x82, 0x98, 0x01, 0x23, 0xcb, 0x0b, 0x17, 0x99, 0x22, - 0xa0, 0x78, 0xe9, 0x29, 0x23, 0xa8, 0x00, 0x80, 0xae, 0x21, 0x93, 0x2a, 0xe3, 0x3a, 0x94, 0xbc, - 0x33, 0x9b, 0x05, 0x2a, 0x05, 0xaf, 0x11, 0x10, 0x91, 0x99, 0x38, 0x90, 0xb9, 0x19, 0x86, 0x0e, - 0x15, 0xbb, 0x81, 0x3c, 0x05, 0x90, 0x99, 0x29, 0x91, 0xa3, 0xaf, 0x42, 0x8a, 0x23, 0xbb, 0x92, - 0x99, 0x79, 0x12, 0x89, 0xa0, 0x78, 0xc1, 0x0a, 0x30, 0xa9, 0x43, 0xfb, 0x3b, 0x04, 0x11, 0xae, - 0x11, 0x01, 0x0c, 0x04, 0x9c, 0x21, 0x80, 0x23, 0xa2, 0xdf, 0x11, 0x00, 0x81, 0x08, 0x1b, 0x81, - 0xc3, 0x0b, 0x59, 0xd2, 0x18, 0x42, 0xa8, 0x9c, 0x51, 0xa3, 0x8e, 0x02, 0x8a, 0x13, 0x09, 0x24, - 0xcc, 0x8a, 0x33, 0x38, 0xb4, 0x9d, 0x32, 0xc9, 0x0a, 0x98, 0x07, 0x1d, 0x94, 0x99, 0x29, 0x91, - 0x32, 0xe9, 0x11, 0x0a, 0x02, 0xa8, 0x5a, 0xd2, 0x39, 0xb2, 0x9a, 0x3b, 0x27, 0xb8, 0x1d, 0xc1, - 0x31, 0xa1, 0x39, 0xca, 0x10, 0xd1, 0x51, 0xb8, 0xba, 0x71, 0xa3, 0x0c, 0x83, 0x09, 0x18, 0xb0, - 0x6a, 0xd1, 0x49, 0x88, 0x90, 0x08, 0x23, 0x0c, 0xe2, 0x39, 0x90, 0x21, 0xb1, 0x8f, 0x84, 0x39, - 0xa4, 0xba, 0x9d, 0x44, 0x80, 0x99, 0x00, 0xa9, 0x40, 0x38, 0xa6, 0x9d, 0x02, 0x4a, 0xb2, 0x30, - 0x8a, 0xb0, 0x0e, 0x11, 0x05, 0x0a, 0x91, 0x9c, 0x23, 0x98, 0x02, 0x08, 0x9f, 0x12, 0x29, 0xeb, - 0x30, 0x84, 0x1a, 0xba, 0xb2, 0x25, 0x1e, 0x85, 0xa9, 0x48, 0xb1, 0x3c, 0xb4, 0x38, 0x90, 0xba, - 0x12, 0x89, 0x43, 0xdb, 0x2a, 0xc4, 0x8d, 0x02, 0x99, 0x93, 0x73, 0xb0, 0xa9, 0x30, 0xb0, 0x59, - 0x93, 0x2c, 0xa7, 0x0a, 0x90, 0x20, 0x54, 0xf0, 0x08, 0x81, 0x98, 0x88, 0x11, 0x90, 0x18, 0x9c, - 0xb1, 0x70, 0x91, 0x08, 0xb0, 0x1a, 0x99, 0x59, 0xc2, 0x5a, 0x91, 0x33, 0x21, 0xcf, 0x02, 0x18, - 0x08, 0x31, 0xf3, 0x3d, 0xb2, 0x4b, 0xb2, 0x1c, 0x12, 0x88, 0xb2, 0x8f, 0x31, 0xc8, 0x41, 0xa0, - 0x88, 0x9a, 0x32, 0x94, 0x2b, 0xb0, 0x61, 0x0a, 0x87, 0x0a, 0x00, 0xc9, 0x29, 0x43, 0xd8, 0x2b, - 0x83, 0x89, 0x30, 0xca, 0xa5, 0x4b, 0x81, 0x80, 0xb8, 0x0c, 0x99, 0x68, 0x93, 0x3a, 0xb5, 0x4a, - 0x80, 0xba, 0x37, 0xac, 0x88, 0x10, 0x81, 0x51, 0xd0, 0x8b, 0x92, 0x3b, 0x87, 0x0a, 0x30, 0xe8, - 0x18, 0x90, 0x72, 0xd0, 0x18, 0x80, 0x08, 0x90, 0x02, 0x39, 0xd4, 0x1a, 0x11, 0xa8, 0x9d, 0x24, - 0x08, 0x01, 0xae, 0x38, 0xa3, 0x2c, 0x00, 0x18, 0xd0, 0x60, 0xa1, 0x0d, 0x38, 0x84, 0x80, 0x99, - 0x9b, 0x20, 0x43, 0x9a, 0x04, 0xbf, 0x23, 0xa0, 0x29, 0x98, 0x91, 0x41, 0xa0, 0xbd, 0x27, 0xba, - 0x21, 0x82, 0x08, 0xdf, 0x40, 0x92, 0x89, 0x30, 0xa8, 0xa1, 0x3a, 0x80, 0x41, 0xc1, 0x20, 0xec, - 0x29, 0x23, 0x2a, 0xf4, 0x8b, 0x81, 0x53, 0xb8, 0x20, 0xba, 0x51, 0xa0, 0xb0, 0x8f, 0x13, 0x12, - 0xc0, 0x09, 0x0c, 0x88, 0x17, 0x8a, 0xb8, 0x8b, 0x47, 0xa8, 0x09, 0x81, 0x01, 0x88, 0xb1, 0x0a, - 0x62, 0x99, 0x13, 0xae, 0x20, 0x03, 0x89, 0xfb, 0x69, 0xb0, 0x12, 0xcb, 0x32, 0xb9, 0x43, 0x90, - 0xc9, 0x2a, 0x05, 0x09, 0x19, 0x08, 0xc3, 0x6b, 0x01, 0xcb, 0x25, 0x9b, 0x23, 0xac, 0x20, 0x22, - 0xa9, 0x99, 0xa8, 0xcb, 0x7a, 0xc4, 0x38, 0xa0, 0x0d, 0x84, 0x0a, 0x3a, 0x04, 0x98, 0xb2, 0x3f, - 0xa5, 0x1a, 0x23, 0xcc, 0x20, 0x81, 0x09, 0x34, 0xbc, 0x1a, 0xa4, 0x0c, 0x34, 0xbb, 0x41, 0xaa, - 0x93, 0x0e, 0x30, 0xe3, 0x1a, 0x80, 0x02, 0x2b, 0x11, 0xa9, 0x08, 0xb0, 0x77, 0xc0, 0x10, 0xba, - 0x41, 0x21, 0xd0, 0x1b, 0xa2, 0x8c, 0x83, 0x8c, 0x33, 0x01, 0xd9, 0x10, 0xab, 0x62, 0x05, 0xbc, - 0x04, 0x0b, 0xa3, 0x59, 0x91, 0x1b, 0x96, 0x8b, 0x10, 0xa1, 0x31, 0xb8, 0x9a, 0x9b, 0x67, 0xaa, - 0x43, 0xb9, 0x18, 0x80, 0x00, 0xa1, 0x19, 0x29, 0xf0, 0x30, 0x80, 0x3b, 0xc2, 0x17, 0x0a, 0xea, - 0x40, 0xb8, 0x21, 0x19, 0xbb, 0x64, 0xc0, 0x19, 0x92, 0x0a, 0x01, 0x00, 0x21, 0xc9, 0x91, 0x8c, - 0x35, 0xbf, 0x26, 0xa8, 0x1a, 0x80, 0x21, 0x80, 0xb2, 0xaf, 0x14, 0xa9, 0x13, 0x82, 0x9e, 0x9a, - 0x62, 0xa1, 0x20, 0xca, 0x21, 0xb0, 0x1a, 0xa9, 0x26, 0x8b, 0x04, 0xba, 0x30, 0xa5, 0x0d, 0x24, - 0xba, 0x11, 0x9b, 0x14, 0x11, 0xce, 0x24, 0x9c, 0x83, 0x1c, 0xa2, 0x0b, 0x03, 0x2b, 0xb1, 0x8b, - 0x17, 0x0a, 0x23, 0x9f, 0x13, 0x0b, 0x21, 0xe9, 0x18, 0x0b, 0xa3, 0x5a, 0xd0, 0x19, 0x82, 0xba, - 0x8a, 0x93, 0x49, 0x09, 0x30, 0xf1, 0x5a, 0xb1, 0x0b, 0x84, 0xc8, 0x4a, 0xb1, 0x39, 0xe9, 0x1a, - 0x31, 0xa1, 0x81, 0x9e, 0x81, 0x8d, 0x11, 0x02, 0xba, 0x1b, 0xb0, 0x2b, 0xc1, 0x53, 0xb2, 0xaf, - 0x89, 0x11, 0x99, 0x81, 0xab, 0xb0, 0x23, 0x0f, 0xb3, 0x9c, 0x10, 0x9a, 0x9b, 0xb3, 0x0b, 0x8d, - 0x00, 0xb8, 0x9b, 0xb9, 0x0b, 0xa9, 0x9b, 0x7f, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0xd0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x71, 0x89, 0x83, 0xfc, 0x2e, 0x47, 0xaf, - 0x14, 0x98, 0x89, 0x11, 0xab, 0x16, 0x0c, 0xa3, 0x88, 0x2a, 0x00, 0x54, 0xe1, 0x2b, 0x84, 0x1b, - 0xa3, 0x8a, 0x0a, 0x86, 0x0a, 0x83, 0x2c, 0xb8, 0xa2, 0x63, 0xba, 0x38, 0x98, 0x12, 0x00, 0x0f, - 0xb2, 0x71, 0xb8, 0x28, 0xc2, 0x19, 0x01, 0x88, 0x31, 0xf0, 0x69, 0xc0, 0x29, 0xa2, 0x2a, 0x03, - 0x9e, 0x30, 0xa0, 0x90, 0x83, 0x2c, 0xe1, 0x22, 0x8c, 0x86, 0x0c, 0x83, 0x0a, 0x13, 0x9f, 0x04, - 0x89, 0x88, 0x82, 0x19, 0xb9, 0x50, 0xb0, 0x43, 0xbc, 0x01, 0x12, 0x1c, 0xaa, 0x87, 0x19, 0x0a, - 0x82, 0xba, 0x55, 0x89, 0x91, 0x08, 0xda, 0x52, 0x8a, 0x81, 0x88, 0x91, 0x4d, 0xe3, 0x39, 0xd3, - 0x49, 0xb8, 0x18, 0x22, 0xbb, 0x32, 0xbc, 0x26, 0xab, 0x02, 0x19, 0x88, 0xb8, 0x37, 0x8d, 0x91, - 0x00, 0x41, 0x9c, 0x20, 0xd3, 0x2c, 0x12, 0x8a, 0xc4, 0x59, 0x99, 0x08, 0x01, 0xa0, 0x6b, 0xa0, - 0x19, 0x92, 0x2d, 0xd3, 0x38, 0xa8, 0x30, 0x80, 0x8a, 0x00, 0x05, 0xba, 0x40, 0xba, 0x25, 0xad, - 0x00, 0x06, 0x0a, 0x94, 0x1d, 0xb1, 0x28, 0x22, 0xbc, 0x04, 0x8b, 0x35, 0xbe, 0x33, 0xc8, 0x42, - 0x9c, 0x03, 0x9b, 0x30, 0x88, 0x10, 0xe2, 0x4b, 0xa2, 0x2a, 0x18, 0xb8, 0xa2, 0x79, 0xb0, 0x8b, - 0x07, 0x09, 0x59, 0xf1, 0x18, 0x11, 0x0a, 0x92, 0x08, 0x8b, 0x92, 0x38, 0xb0, 0x2d, 0x05, 0x23, - 0x9f, 0xa1, 0x2d, 0x84, 0x99, 0x32, 0xae, 0x23, 0x9a, 0x01, 0x2b, 0xb6, 0x28, 0x90, 0x0e, 0x22, - 0x9b, 0x12, 0x80, 0xb9, 0x22, 0x13, 0xbf, 0x48, 0x23, 0xc0, 0xa1, 0x2c, 0x0b, 0x07, 0x98, 0x11, - 0xdb, 0x48, 0xb2, 0x39, 0x98, 0x00, 0x6b, 0xc2, 0x8d, 0x11, 0x02, 0x80, 0x3c, 0xf3, 0x4d, 0x80, - 0x98, 0x20, 0x88, 0xa2, 0x3a, 0xea, 0x53, 0x99, 0x09, 0x15, 0xca, 0x10, 0x18, 0xa1, 0x18, 0xa1, - 0x9a, 0x79, 0xe1, 0x28, 0xb2, 0x19, 0x40, 0xd0, 0x8a, 0x51, 0x90, 0x2a, 0x96, 0x8b, 0xa2, 0x39, - 0xa3, 0x4a, 0x8c, 0x87, 0x0a, 0xb0, 0x42, 0x9a, 0x94, 0x3b, 0xd0, 0x10, 0x80, 0x10, 0x98, 0x9b, - 0x53, 0xb3, 0x0c, 0xa2, 0x8c, 0x63, 0xa0, 0x99, 0x3a, 0x91, 0x42, 0xf3, 0x1c, 0x22, 0xc1, 0x18, - 0xac, 0x73, 0xc1, 0x10, 0xc9, 0x21, 0x98, 0x21, 0xa3, 0x9b, 0x0f, 0x15, 0xcb, 0x32, 0x09, 0xa9, - 0x33, 0xad, 0x12, 0x0a, 0x17, 0xab, 0x18, 0x88, 0x20, 0xb3, 0x58, 0xf3, 0x1c, 0x02, 0x89, 0x1a, - 0x86, 0x0b, 0x13, 0xcc, 0x31, 0xa0, 0x80, 0x38, 0xf3, 0x19, 0x88, 0x62, 0xe9, 0x01, 0x59, 0xc8, - 0x11, 0x89, 0x11, 0xab, 0x34, 0xb0, 0x8c, 0x20, 0xb5, 0x5a, 0xa8, 0x09, 0x14, 0x9d, 0x13, 0x8a, - 0x02, 0x8a, 0x96, 0x1e, 0x81, 0x89, 0x06, 0x0c, 0x03, 0x8d, 0x02, 0x88, 0x08, 0x88, 0x30, 0xc5, - 0x0c, 0x81, 0x21, 0x88, 0x02, 0xbd, 0x32, 0xd8, 0x22, 0x89, 0x0d, 0x07, 0x19, 0x8d, 0x91, 0x48, - 0xb1, 0x28, 0xb0, 0x98, 0x48, 0x18, 0xa4, 0x0c, 0x22, 0x90, 0xbe, 0x70, 0x92, 0x1b, 0x84, 0x0e, - 0x92, 0x39, 0x01, 0xb0, 0x1c, 0x00, 0x05, 0x9e, 0x13, 0x9b, 0x33, 0xab, 0x85, 0x8d, 0x23, 0x8b, - 0x82, 0x89, 0x09, 0x1a, 0x13, 0xc0, 0x5b, 0xf0, 0x25, 0x9c, 0x01, 0x99, 0x33, 0x81, 0xda, 0x19, - 0x88, 0x10, 0x15, 0x0f, 0x81, 0x08, 0x88, 0xe4, 0x5b, 0xa1, 0x02, 0x8b, 0x00, 0x98, 0x15, 0x0c, - 0x92, 0x2b, 0x84, 0xb0, 0x1c, 0xa4, 0x5c, 0xb1, 0x83, 0x0d, 0x11, 0xc8, 0x32, 0x90, 0x0c, 0xb8, - 0x24, 0x8c, 0x02, 0x88, 0x32, 0x8f, 0xf3, 0x48, 0x90, 0x08, 0x00, 0x99, 0x30, 0xb2, 0x99, 0x79, - 0xd1, 0x39, 0xc2, 0x3b, 0xa1, 0x81, 0x30, 0xaa, 0xb5, 0x4a, 0x82, 0x1b, 0xd2, 0x28, 0x34, 0xcf, - 0x42, 0xab, 0x24, 0xba, 0x15, 0x8d, 0x02, 0xba, 0x33, 0x80, 0x0a, 0x99, 0x44, 0xfa, 0x61, 0xbb, - 0x23, 0xa9, 0x83, 0x8d, 0x81, 0x21, 0x11, 0x9e, 0x02, 0x0b, 0xb4, 0x7a, 0xb1, 0x88, 0x40, 0xa1, - 0x9c, 0x10, 0x05, 0x0b, 0x93, 0x1e, 0xa3, 0x2b, 0x86, 0x0c, 0x91, 0x30, 0xb1, 0x0f, 0x84, 0x1b, - 0x95, 0x0c, 0x93, 0x0c, 0x12, 0x08, 0xb8, 0x3c, 0x05, 0x8c, 0xb3, 0x6b, 0x91, 0x29, 0xa1, 0x1a, - 0x92, 0x89, 0x43, 0xd9, 0x10, 0x10, 0xb4, 0x0f, 0xa3, 0x29, 0x84, 0x8f, 0x84, 0x0a, 0x00, 0x80, - 0xb1, 0x5c, 0xb2, 0x19, 0xe0, 0x48, 0x92, 0x0a, 0xa1, 0x39, 0xb4, 0x1b, 0x05, 0x8a, 0x82, 0x39, - 0x80, 0xfb, 0x23, 0x0b, 0x05, 0xbb, 0x43, 0xfb, 0x30, 0xa9, 0x93, 0x2a, 0x12, 0xbc, 0x03, 0x2a, - 0x27, 0x8e, 0x82, 0x0b, 0x92, 0x3b, 0x10, 0x96, 0x08, 0x0f, 0xb6, 0x3a, 0x81, 0x09, 0x91, 0x0c, - 0x85, 0x0a, 0x98, 0x71, 0xc1, 0x29, 0x90, 0x09, 0x08, 0x03, 0x80, 0x8f, 0xa4, 0x01, 0x1c, 0x00, - 0x92, 0x10, 0xe8, 0x49, 0xb0, 0x98, 0x16, 0x8c, 0x11, 0xa9, 0x30, 0xa8, 0x28, 0x22, 0xa5, 0x89, - 0x2a, 0xab, 0x47, 0x8c, 0x12, 0xc8, 0x1a, 0x31, 0xf0, 0x59, 0xb0, 0x40, 0xc9, 0x29, 0x11, 0x0a, - 0xb4, 0x29, 0x99, 0x98, 0x20, 0x21, 0xf8, 0x42, 0x09, 0xcb, 0x24, 0x0b, 0x94, 0x20, 0x99, 0x9b, - 0x35, 0xa0, 0x08, 0x9d, 0x13, 0xac, 0x15, 0xbb, 0x42, 0xdc, 0x24, 0xa9, 0xa9, 0x62, 0x99, 0x83, - 0x1b, 0xa5, 0x29, 0xb2, 0x1f, 0x93, 0x2c, 0x95, 0x0c, 0x94, 0x0a, 0x10, 0xb1, 0x38, 0x80, 0xa3, - 0xac, 0x20, 0x83, 0x2f, 0xa0, 0x16, 0x9b, 0x81, 0xab, 0x74, 0xc8, 0x38, 0x80, 0x8b, 0x12, 0x89, - 0x01, 0x2d, 0xc7, 0x39, 0xb0, 0x29, 0x12, 0xb0, 0x2d, 0xd2, 0x48, 0x90, 0x19, 0xa5, 0x4c, 0xb1, - 0x10, 0xa0, 0x59, 0xb1, 0x39, 0xd8, 0x38, 0x90, 0x39, 0xe3, 0x1d, 0x13, 0x8c, 0x82, 0x9b, 0x32, - 0x01, 0x9f, 0x85, 0x19, 0xa0, 0x03, 0x9c, 0x23, 0x0b, 0x87, 0x9a, 0x88, 0x12, 0x9a, 0x23, 0xdb, - 0x43, 0xe8, 0x18, 0x00, 0x00, 0x1c, 0xb1, 0x32, 0xe8, 0x5b, 0x01, 0xd0, 0x30, 0xa0, 0x09, 0xc1, - 0x71, 0x98, 0x80, 0x8a, 0x03, 0x90, 0x3b, 0x90, 0xc1, 0x0c, 0x72, 0xd1, 0x1a, 0x02, 0x98, 0x22, - 0xad, 0x14, 0x99, 0x8a, 0x27, 0x9d, 0x13, 0x89, 0x91, 0x1b, 0x85, 0x19, 0xb8, 0x1c, 0x85, 0x8a, - 0x21, 0xe1, 0x29, 0x08, 0x94, 0xba, 0x5b, 0xa4, 0x38, 0xd9, 0x21, 0x8a, 0x87, 0x0a, 0x01, 0xc2, - 0x5b, 0x92, 0xb9, 0x29, 0x40, 0xc1, 0x08, 0x00, 0xa8, 0x18, 0x85, 0x1e, 0xa8, 0x23, 0x0c, 0x02, - 0xaf, 0x62, 0xa0, 0x80, 0x18, 0xb8, 0x62, 0xa9, 0x93, 0x1c, 0x11, 0xb8, 0x06, 0x0e, 0x81, 0x18, - 0x18, 0xa8, 0x21, 0xbc, 0x40, 0x01, 0xb9, 0x3b, 0x17, 0xa9, 0x28, 0x88, 0x30, 0xfa, 0x24, 0x9e, - 0x10, 0xa3, 0x59, 0xb0, 0x0c, 0x05, 0x9a, 0x82, 0x28, 0xe0, 0x59, 0xa0, 0x18, 0xa8, 0x48, 0x94, - 0x09, 0xa8, 0x4b, 0xb3, 0x31, 0x8c, 0x91, 0x08, 0x0a, 0xa6, 0x0c, 0x12, 0x22, 0xad, 0x90, 0x09, - 0x32, 0x88, 0x27, 0xcf, 0x14, 0xa9, 0x30, 0xb8, 0x30, 0xc3, 0x3a, 0xca, 0x32, 0x8b, 0x27, 0xab, - 0x20, 0xbb, 0x26, 0xba, 0x31, 0xa9, 0x19, 0x14, 0xcc, 0x0a, 0x17, 0x8a, 0x02, 0xac, 0x31, 0xa2, - 0x79, 0xc0, 0x38, 0xb1, 0x39, 0xb8, 0x1a, 0x27, 0x8d, 0xb2, 0x30, 0xaa, 0x49, 0xa4, 0x18, 0x8d, - 0x21, 0xa4, 0x8b, 0x10, 0x82, 0xbb, 0x35, 0xba, 0x19, 0xd9, 0x35, 0xa8, 0xa8, 0x71, 0x98, 0xa0, - 0x48, 0xb8, 0x48, 0x91, 0x10, 0xeb, 0x5a, 0xa3, 0x1a, 0x92, 0x0e, 0xa3, 0x68, 0xaa, 0x05, 0x2b, - 0x98, 0x92, 0x3a, 0xc8, 0x42, 0xb8, 0x3b, 0xe0, 0x20, 0x08, 0x22, 0xd9, 0x89, 0x30, 0x50, 0xf1, - 0x29, 0x11, 0xa9, 0xc9, 0x44, 0xba, 0x22, 0xa2, 0x7b, 0xe0, 0x38, 0xa2, 0x09, 0x89, 0x03, 0xc9, - 0x49, 0xb1, 0x58, 0x99, 0x08, 0xa6, 0x1d, 0xb1, 0x50, 0xa0, 0x0a, 0x62, 0xd8, 0x20, 0x0a, 0x83, - 0xa8, 0x29, 0x94, 0x8b, 0x20, 0xa3, 0x98, 0x28, 0x7c, 0xf1, 0x18, 0x88, 0x23, 0xcc, 0x21, 0x90, - 0x28, 0xa9, 0x03, 0x8f, 0x04, 0x2c, 0xb2, 0x1c, 0x04, 0x0a, 0x02, 0x8c, 0x33, 0xfc, 0x31, 0xb0, - 0x40, 0xbb, 0x43, 0xbb, 0x50, 0xa1, 0x28, 0x9b, 0x13, 0xb0, 0x1e, 0x03, 0xc0, 0x6b, 0xc2, 0x39, - 0xb8, 0x30, 0x01, 0x8a, 0xe3, 0x5b, 0x83, 0xab, 0xa3, 0x79, 0xb8, 0x02, 0x1a, 0x08, 0xc1, 0x33, - 0x8b, 0xe8, 0x48, 0x82, 0x88, 0x8f, 0x04, 0x09, 0x01, 0xbb, 0x24, 0x0e, 0x94, 0x09, 0x28, 0xc9, - 0x22, 0xa1, 0x1f, 0x91, 0x21, 0xc8, 0x29, 0x91, 0x09, 0x10, 0x12, 0xbc, 0x34, 0x09, 0x2b, 0x97, - 0x1b, 0x12, 0xbc, 0x21, 0x38, 0xfa, 0x52, 0xba, 0x22, 0x9c, 0x84, 0x0f, 0x93, 0x18, 0x91, 0x8c, - 0x11, 0x93, 0x30, 0x8f, 0x85, 0x0b, 0x01, 0xa0, 0x3a, 0xf1, 0x51, 0xc8, 0x38, 0x99, 0x24, 0xda, - 0x39, 0xb2, 0x39, 0x91, 0x0b, 0x04, 0x9b, 0x91, 0x41, 0xda, 0x50, 0xa2, 0x0b, 0x98, 0x14, 0x91, - 0x19, 0x09, 0xf1, 0x41, 0x9c, 0x11, 0xc2, 0x4b, 0x93, 0xab, 0x40, 0xc9, 0x72, 0xb9, 0x23, 0x9c, - 0x32, 0xfb, 0x22, 0xa8, 0x22, 0xba, 0x02, 0x8f, 0x06, 0x88, 0x09, 0xc0, 0x40, 0xa9, 0x33, 0xbd, - 0x23, 0x99, 0x31, 0xe9, 0x08, 0x49, 0xa2, 0xa2, 0x1d, 0x91, 0x09, 0x23, 0x98, 0x02, 0x8f, 0x24, - 0xea, 0x10, 0x28, 0x82, 0xcc, 0x31, 0x90, 0x1c, 0x96, 0x3a, 0xd2, 0x1a, 0x82, 0x0a, 0x29, 0x05, - 0xbb, 0x50, 0xb0, 0x40, 0x99, 0x00, 0x3a, 0xc4, 0x9b, 0x30, 0x91, 0x82, 0x7a, 0xc0, 0x88, 0x34, - 0x9b, 0xfa, 0x31, 0xb3, 0x4c, 0xc0, 0x28, 0xa1, 0x59, 0xa2, 0x0b, 0xa1, 0x38, 0x10, 0xf8, 0x6a, - 0xa2, 0x09, 0xa0, 0x02, 0x4a, 0xc2, 0x29, 0xab, 0x91, 0x00, 0x50, 0xa0, 0x98, 0x44, 0xbb, 0x30, - 0x29, 0x27, 0xfb, 0x41, 0xa9, 0x09, 0x03, 0x8d, 0x13, 0x89, 0x88, 0x99, 0xa2, 0x1f, 0x27, 0x9d, - 0x01, 0x28, 0xb9, 0x30, 0x00, 0xc3, 0x4c, 0xa2, 0x9a, 0x20, 0x9a, 0x47, 0x9d, 0x12, 0x88, 0x8b, - 0x05, 0x08, 0x98, 0x1a, 0xa7, 0x2c, 0xa1, 0x38, 0xa1, 0x1d, 0x93, 0x0a, 0x0a, 0x07, 0x90, 0x3b, - 0xd1, 0x28, 0xa1, 0x3a, 0x15, 0x9c, 0x83, 0x3d, 0xd0, 0x28, 0x10, 0x90, 0x89, 0x08, 0xa8, 0x13, - 0x70, 0xe1, 0x28, 0xa9, 0x31, 0xb8, 0x89, 0x30, 0x04, 0x89, 0x9f, 0x06, 0xab, 0x63, 0xd0, 0x38, - 0xa9, 0x22, 0x9b, 0x15, 0xac, 0x33, 0xdb, 0x51, 0xd8, 0x48, 0xa1, 0x08, 0x09, 0x11, 0x09, 0x90, - 0x98, 0x11, 0x2c, 0xb5, 0x10, 0x0e, 0x13, 0xac, 0x04, 0x0d, 0x85, 0x9a, 0x31, 0xca, 0x32, 0x88, - 0xaa, 0x03, 0x2c, 0x85, 0x8a, 0x81, 0x49, 0xf3, 0x5a, 0xd1, 0x29, 0x83, 0x0b, 0x83, 0x9f, 0x23, - 0x98, 0x00, 0x8b, 0x02, 0xba, 0x44, 0xab, 0x18, 0x80, 0x70, 0xe2, 0x2a, 0x82, 0x99, 0x05, 0x8c, - 0x10, 0x81, 0x81, 0x1a, 0xa8, 0x06, 0x0e, 0x04, 0xba, 0x22, 0x09, 0x98, 0xa1, 0x09, 0x45, 0xfb, - 0x11, 0x91, 0x0b, 0x83, 0x3b, 0xe4, 0x39, 0x90, 0x1b, 0x94, 0x39, 0x94, 0x8f, 0x95, 0x19, 0x82, - 0x9b, 0x20, 0xb8, 0x44, 0xca, 0x12, 0x9a, 0x43, 0xb0, 0x8c, 0x12, 0x90, 0x0d, 0x93, 0x32, 0xaf, - 0x15, 0xa9, 0x2a, 0xa1, 0x51, 0xb9, 0xb8, 0x70, 0xc2, 0x18, 0x90, 0x83, 0xab, 0x03, 0x7a, 0xd0, - 0x28, 0x94, 0x0c, 0x01, 0x00, 0x80, 0xab, 0x07, 0x2a, 0x92, 0x8f, 0x04, 0xaa, 0x32, 0xda, 0x22, - 0x9b, 0x13, 0xab, 0x13, 0x1a, 0x82, 0xc8, 0x08, 0x9a, 0x72, 0xb0, 0x25, 0xbc, 0x22, 0x2b, 0x93, - 0x99, 0x82, 0x6c, 0xd2, 0x6a, 0xc3, 0x2c, 0x94, 0x0b, 0x81, 0x08, 0xa0, 0x39, 0xf9, 0x41, 0xa9, - 0x30, 0xd2, 0x39, 0xb2, 0x3c, 0xa3, 0x09, 0x18, 0x0b, 0xa5, 0x49, 0x11, 0x9d, 0x94, 0x2d, 0x93, - 0x98, 0x04, 0x8e, 0x13, 0xab, 0x23, 0x9c, 0x04, 0x3b, 0xe8, 0x21, 0x9c, 0x11, 0x43, 0xeb, 0x08, - 0x12, 0x8b, 0x85, 0x0a, 0x03, 0xab, 0x04, 0x9a, 0x00, 0x38, 0xa1, 0xa0, 0xaa, 0x78, 0x01, 0xd3, - 0x29, 0x82, 0x88, 0xc0, 0x3e, 0x86, 0x9b, 0x14, 0x9c, 0x82, 0x2a, 0xb7, 0x3b, 0xb3, 0x28, 0xc9, - 0x39, 0xa4, 0x3b, 0xa6, 0x29, 0x9a, 0x82, 0x3a, 0xf3, 0x79, 0x88, 0x88, 0x89, 0x08, 0x84, 0x39, - 0x80, 0xbb, 0x81, 0x02, 0x41, 0xab, 0x94, 0x63, 0xcb, 0xa8, 0x42, 0x8c, 0xb4, 0x3a, 0x38, 0xf0, - 0x3a, 0xa3, 0x40, 0x9d, 0x14, 0xa8, 0x3a, 0xc4, 0x29, 0x82, 0x1b, 0x88, 0xa4, 0xb0, 0x4f, 0xa5, - 0x8a, 0x38, 0xe0, 0x10, 0x80, 0x22, 0xfa, 0x38, 0xa2, 0x88, 0x10, 0xa9, 0x12, 0x9b, 0x94, 0x2a, - 0xdb, 0x43, 0x04, 0xbc, 0x62, 0x90, 0x88, 0x09, 0x29, 0xd9, 0x51, 0xc0, 0x39, 0x9b, 0x16, 0xc9, - 0x68, 0xc9, 0x33, 0xca, 0x30, 0xb0, 0x58, 0xc8, 0x21, 0xa8, 0x28, 0x82, 0x9b, 0xa0, 0x33, 0x0e, - 0xa1, 0x02, 0x0f, 0x15, 0x9c, 0x32, 0xaa, 0x10, 0x90, 0x29, 0xd0, 0x48, 0x94, 0xac, 0x31, 0x98, - 0x28, 0x40, 0xe0, 0x08, 0x30, 0xd0, 0x29, 0x9a, 0x06, 0x0b, 0x05, 0x9e, 0x12, 0x0a, 0x23, 0xcb, - 0x82, 0x1b, 0x12, 0x91, 0x32, 0xcd, 0x48, 0xa2, 0x0c, 0x05, 0x0c, 0xa4, 0x1a, 0x92, 0xac, 0x45, - 0x9a, 0x81, 0x0a, 0x81, 0x09, 0x83, 0x8c, 0x42, 0xcb, 0x32, 0x82, 0x9f, 0x24, 0x89, 0xb1, 0x2a, - 0x04, 0x9e, 0x14, 0x0a, 0xb1, 0x1e, 0x23, 0xd9, 0x00, 0x18, 0xc3, 0x10, 0x2b, 0xf2, 0x49, 0xa0, - 0x32, 0xca, 0x19, 0x01, 0x28, 0xf8, 0x20, 0x89, 0x02, 0x92, 0x1c, 0x92, 0x51, 0x98, 0xd9, 0x08, - 0x29, 0x42, 0xf9, 0x39, 0x92, 0x3b, 0xb6, 0x3c, 0xc1, 0x79, 0xc1, 0x29, 0xa0, 0x30, 0xb2, 0x1b, - 0xa1, 0x0a, 0x15, 0xaa, 0xb8, 0x51, 0x10, 0xc0, 0x19, 0xb8, 0x72, 0xb1, 0x28, 0xa8, 0x50, 0xd1, - 0x38, 0xe3, 0x1c, 0x83, 0x28, 0xf1, 0x28, 0x19, 0x92, 0xa0, 0x19, 0x92, 0x09, 0x80, 0x3b, 0xf0, - 0x9c, 0x36, 0x98, 0x1d, 0xb2, 0x38, 0x89, 0x38, 0xc2, 0x20, 0x00, 0x9f, 0x85, 0x3a, 0xa4, 0x3c, - 0xf2, 0x3a, 0x10, 0x99, 0x21, 0xca, 0x38, 0x04, 0x9d, 0x02, 0x10, 0xc9, 0x40, 0xc1, 0x0c, 0x13, - 0x20, 0xe9, 0x10, 0x89, 0x23, 0xb8, 0x1b, 0xb3, 0x69, 0x88, 0x94, 0x9c, 0x22, 0x0b, 0xb5, 0x48, - 0x8d, 0x03, 0xad, 0x36, 0xcb, 0x21, 0x91, 0x1a, 0xa0, 0x58, 0x90, 0x81, 0x1a, 0xdb, 0x51, 0xc1, - 0x48, 0xd8, 0x20, 0x89, 0x04, 0xac, 0x31, 0xc8, 0x50, 0xa8, 0x21, 0xaa, 0x30, 0xa8, 0x15, 0xac, - 0x24, 0xa9, 0x1a, 0x94, 0x29, 0xe9, 0x50, 0xb1, 0x1b, 0x03, 0x8c, 0x85, 0x0c, 0x93, 0x1d, 0xa3, - 0x29, 0xc1, 0x49, 0xb2, 0x48, 0xb9, 0x02, 0x39, 0xb4, 0x1d, 0x93, 0x2b, 0x93, 0x39, 0xb7, 0x0f, - 0x83, 0x19, 0xc1, 0x3a, 0x90, 0x80, 0x01, 0x8c, 0x16, 0x9b, 0x43, 0xe9, 0x08, 0x10, 0x82, 0x8b, - 0x19, 0xe3, 0x79, 0xc0, 0x30, 0xb0, 0x5a, 0xa1, 0x09, 0x98, 0x61, 0xb1, 0x2a, 0xc9, 0x43, 0x8a, - 0x28, 0xc1, 0x0a, 0x32, 0xba, 0x03, 0x8d, 0x25, 0xa8, 0x89, 0x80, 0x99, 0x02, 0x1f, 0x96, 0x8c, - 0x03, 0x1b, 0xb1, 0x22, 0x11, 0x3b, 0xf3, 0x2b, 0x24, 0xad, 0x53, 0xc8, 0x49, 0xc1, 0x3a, 0xa3, - 0x08, 0x2b, 0xf2, 0x08, 0x30, 0xc0, 0x39, 0xd3, 0x38, 0xc9, 0x2a, 0x84, 0x18, 0xa0, 0x88, 0xcc, - 0x71, 0x92, 0x09, 0x0c, 0x15, 0x89, 0xa1, 0x19, 0xb0, 0x70, 0xd1, 0x39, 0xc0, 0x38, 0x02, 0xac, - 0x13, 0x8c, 0x14, 0x9c, 0x82, 0x89, 0x48, 0xb0, 0x03, 0x8f, 0x13, 0x0a, 0x12, 0xf9, 0x39, 0x01, - 0xab, 0x21, 0x14, 0xac, 0x15, 0xbb, 0x23, 0x1b, 0xa6, 0x2a, 0x98, 0x20, 0xae, 0x25, 0xaa, 0x41, - 0xba, 0x24, 0xbc, 0x23, 0x8c, 0x33, 0xfb, 0x20, 0x88, 0x38, 0xc1, 0x08, 0x00, 0x3d, 0x96, 0x0c, - 0x02, 0x9b, 0x04, 0x1b, 0x96, 0x0c, 0x83, 0x2c, 0x83, 0x8c, 0x14, 0x8c, 0xa1, 0x39, 0x02, 0x0a, - 0xa2, 0x4a, 0xeb, 0x41, 0xa0, 0x89, 0x28, 0xc4, 0x4b, 0xb2, 0x19, 0x88, 0x31, 0xa2, 0x8d, 0x83, - 0x9e, 0x72, 0xa0, 0x08, 0x90, 0x20, 0x89, 0x85, 0x9c, 0x53, 0xd9, 0x30, 0xc0, 0x3a, 0xa3, 0x4b, - 0xc4, 0x1a, 0xa8, 0x31, 0xe2, 0x39, 0x98, 0x83, 0x8b, 0x10, 0x15, 0x8b, 0xa2, 0x08, 0x82, 0x0f, - 0x33, 0xfb, 0x20, 0x89, 0x10, 0xa2, 0x0b, 0x51, 0xb1, 0x08, 0xb3, 0x2f, 0xc8, 0x24, 0x8c, 0x03, - 0x0d, 0x23, 0xea, 0x58, 0xa9, 0x21, 0x90, 0x8c, 0x33, 0xd9, 0x00, 0x49, 0xd2, 0x18, 0x00, 0x89, - 0xa3, 0x8e, 0x14, 0x98, 0x00, 0x98, 0x04, 0x0f, 0x06, 0x9b, 0x01, 0x18, 0x89, 0x81, 0x19, 0xb2, - 0x1c, 0x04, 0x0f, 0xb4, 0x3a, 0x93, 0xac, 0x03, 0x3b, 0xd2, 0x83, 0x5a, 0xd0, 0x28, 0x81, 0x20, - 0xd9, 0x30, 0x8b, 0x86, 0x89, 0x30, 0xd9, 0x32, 0x9c, 0x31, 0xea, 0x42, 0xba, 0x30, 0xda, 0x21, - 0x13, 0x8f, 0x82, 0x1b, 0x02, 0xa1, 0x2b, 0xd2, 0x29, 0x92, 0x43, 0xcd, 0x53, 0xba, 0x32, 0xc9, - 0x30, 0x89, 0x81, 0x9c, 0x22, 0x03, 0xad, 0x52, 0xe9, 0x41, 0xaa, 0x93, 0x2b, 0x95, 0x1d, 0x94, - 0x1a, 0x01, 0x8b, 0x13, 0xcb, 0x22, 0x8b, 0x06, 0x9d, 0x21, 0x91, 0x2a, 0x88, 0x05, 0xad, 0x40, - 0xa2, 0x29, 0x98, 0x39, 0xe2, 0x4b, 0xa5, 0x2a, 0x09, 0x84, 0x0b, 0x81, 0x8d, 0x16, 0xa9, 0xb9, - 0x60, 0x90, 0x89, 0x03, 0x0c, 0xa5, 0x4b, 0xb1, 0x3b, 0xa3, 0x11, 0x8a, 0x82, 0x0a, 0x04, 0x83, - 0x0e, 0x86, 0x9c, 0x12, 0xb8, 0x10, 0x80, 0x38, 0xf3, 0x70, 0xca, 0x21, 0xa0, 0x19, 0x93, 0x0b, - 0xad, 0x45, 0xa9, 0x20, 0xb9, 0x22, 0x0a, 0xb2, 0x20, 0x11, 0x78, 0xf9, 0x18, 0x48, 0xb0, 0x32, - 0xc9, 0xab, 0x41, 0xa2, 0x4a, 0xa8, 0x28, 0x87, 0x8d, 0x04, 0xaa, 0x33, 0xab, 0x03, 0x9f, 0x14, - 0x8b, 0x82, 0x9b, 0x36, 0xcb, 0x22, 0xb8, 0x4a, 0x80, 0xa2, 0x1a, 0x18, 0xf9, 0x62, 0x98, 0x00, - 0xa9, 0x82, 0x3a, 0xa1, 0xb2, 0x7b, 0xa7, 0x1c, 0x92, 0x18, 0x00, 0x80, 0x8d, 0xa3, 0x1c, 0x03, - 0x3a, 0xf2, 0x6b, 0x90, 0x09, 0x92, 0x3a, 0xb4, 0x2b, 0x94, 0x9c, 0x12, 0x10, 0x10, 0xfb, 0x41, - 0x89, 0x83, 0x8e, 0x05, 0x8c, 0x12, 0xa8, 0x08, 0x88, 0x49, 0xb3, 0x88, 0x0e, 0x85, 0x0a, 0x93, - 0x09, 0xba, 0x43, 0x01, 0x99, 0x8d, 0x14, 0xc0, 0x40, 0xbc, 0x42, 0xc8, 0x41, 0xb8, 0x10, 0x08, - 0x14, 0xa8, 0x9d, 0x32, 0x1a, 0xc4, 0x0d, 0x02, 0x0b, 0x96, 0x39, 0xd1, 0x2a, 0x85, 0x1b, 0xb1, - 0x19, 0x22, 0x9a, 0x99, 0x32, 0xbb, 0x49, 0x17, 0xcd, 0x20, 0x21, 0xc0, 0x31, 0x0c, 0xb3, 0x6b, - 0xb3, 0x1b, 0x91, 0x2a, 0x92, 0xc9, 0x8a, 0x71, 0xa2, 0x09, 0x8a, 0x95, 0x5d, 0xb4, 0x1a, 0xa1, - 0x39, 0xc1, 0x4a, 0xd0, 0x31, 0x88, 0x8c, 0x04, 0x1b, 0x90, 0x63, 0xc8, 0x19, 0x88, 0x13, 0x91, - 0x8f, 0x05, 0xab, 0x24, 0xac, 0x82, 0x28, 0x82, 0x9c, 0x82, 0x88, 0x72, 0xb8, 0x88, 0x39, 0xd3, - 0x5b, 0xc2, 0x19, 0x90, 0x32, 0xdb, 0x30, 0x98, 0x62, 0xc1, 0x19, 0x9a, 0x24, 0x99, 0x88, 0xa2, - 0x0b, 0x50, 0xb2, 0x9d, 0x41, 0xa0, 0x70, 0xd9, 0x28, 0x20, 0x98, 0xb1, 0x30, 0xb9, 0x2c, 0x27, - 0xbc, 0x11, 0x1a, 0xa5, 0x1b, 0x31, 0x80, 0xa0, 0x7b, 0xa3, 0xac, 0x28, 0x04, 0x0a, 0xc1, 0x3c, - 0x93, 0x88, 0x3a, 0xa5, 0x0b, 0x12, 0x9b, 0x9a, 0x18, 0x37, 0x4b, 0xf1, 0x3b, 0xb0, 0x63, 0xb9, - 0x41, 0xeb, 0x40, 0x80, 0x90, 0x2a, 0x03, 0x0a, 0x8a, 0xb2, 0x39, 0x31, 0x08, 0xf3, 0x0f, 0x11, - 0x89, 0x83, 0x8d, 0x33, 0xad, 0x22, 0xa8, 0x1c, 0x83, 0x21, 0xcb, 0x99, 0x43, 0x42, 0xb8, 0xb8, - 0x7b, 0xc1, 0x81, 0x5b, 0x86, 0x0d, 0x93, 0x0b, 0x11, 0xb9, 0x34, 0xa9, 0xb8, 0x09, 0x21, 0xa2, - 0x78, 0xc0, 0x09, 0x11, 0x00, 0xd8, 0x39, 0xb5, 0x5a, 0xc9, 0x22, 0x90, 0x2a, 0x86, 0x1a, 0xc0, - 0x40, 0xa8, 0x28, 0xca, 0x41, 0xb8, 0x4a, 0xb3, 0x9a, 0x79, 0x96, 0x2b, 0xd8, 0x38, 0x82, 0x0c, - 0x92, 0x59, 0xd9, 0x12, 0x90, 0x89, 0x00, 0x80, 0x93, 0xaf, 0x54, 0xa0, 0x19, 0xa8, 0x51, 0xb8, - 0x22, 0xcc, 0x33, 0xda, 0x48, 0xa1, 0x88, 0x1a, 0x06, 0xab, 0x51, 0xb0, 0x10, 0xaa, 0x13, 0x8d, - 0x01, 0x18, 0x90, 0x52, 0xcc, 0x11, 0x01, 0x98, 0x30, 0xab, 0x85, 0x69, 0xc0, 0x19, 0x22, 0x09, - 0x91, 0xcf, 0x33, 0x1b, 0xb2, 0x2d, 0x93, 0x0c, 0x14, 0xc8, 0x88, 0x69, 0xa2, 0xa9, 0x2b, 0x04, - 0xc0, 0x58, 0xb0, 0x09, 0x81, 0x60, 0xa0, 0x80, 0x1b, 0x06, 0xaa, 0x81, 0x59, 0xd0, 0x39, 0x84, - 0x99, 0x89, 0x02, 0x89, 0x10, 0xaa, 0x00, 0x12, 0xc9, 0x54, 0xcc, 0x30, 0xb5, 0x4c, 0xc8, 0x20, - 0x18, 0xbb, 0x45, 0x98, 0x29, 0xa0, 0x20, 0xa9, 0x44, 0xab, 0xc2, 0x1e, 0x03, 0x08, 0x10, 0xba, - 0x45, 0xda, 0x00, 0x30, 0xe9, 0x31, 0xb8, 0x09, 0x09, 0x15, 0x0c, 0xb4, 0x2d, 0x86, 0x9b, 0x03, - 0x8b, 0x15, 0x9b, 0x04, 0x8c, 0x93, 0x49, 0xa0, 0x19, 0x9a, 0x02, 0x39, 0xc1, 0x19, 0x43, 0x09, - 0xc1, 0x38, 0x8a, 0x93, 0x87, 0x9f, 0x82, 0x1c, 0xc3, 0x60, 0x9a, 0x03, 0x8b, 0x00, 0x92, 0x8b, - 0x51, 0x91, 0x8e, 0x05, 0x8b, 0x13, 0x99, 0xa0, 0x6c, 0xd2, 0x30, 0xc8, 0x48, 0x90, 0x08, 0x80, - 0x29, 0x88, 0xa3, 0x9c, 0x18, 0x01, 0xe8, 0x2b, 0xb0, 0x57, 0xab, 0x23, 0xba, 0x59, 0x82, 0x01, - 0x9d, 0x10, 0x91, 0x18, 0x9a, 0x01, 0x21, 0xc8, 0x4a, 0xa6, 0x6b, 0xb0, 0x10, 0xa9, 0x29, 0x42, - 0x81, 0xfb, 0x58, 0xb9, 0x02, 0x4a, 0xf1, 0x39, 0xc2, 0x58, 0xa8, 0x10, 0x18, 0x80, 0x99, 0x20, - 0xda, 0x22, 0x0c, 0x96, 0xab, 0x15, 0x8b, 0x05, 0x89, 0xa1, 0x1b, 0x94, 0x88, 0x24, 0x9f, 0x12, - 0x01, 0xcb, 0x48, 0xa1, 0x89, 0x21, 0x84, 0xbf, 0x33, 0x98, 0x80, 0x18, 0x10, 0xd1, 0x1a, 0xa3, - 0x4a, 0xd9, 0x83, 0x68, 0xdb, 0x22, 0x30, 0xe9, 0x30, 0xa9, 0x04, 0x8b, 0x82, 0x8a, 0x82, 0x18, - 0x80, 0xbc, 0x59, 0x07, 0x8b, 0xb2, 0x1b, 0x17, 0xbc, 0x52, 0xa9, 0x11, 0x29, 0xb0, 0x09, 0x72, - 0xb8, 0x09, 0x82, 0x08, 0x31, 0xf9, 0x29, 0x81, 0x31, 0xf0, 0x29, 0xb9, 0x04, 0x89, 0x88, 0x19, - 0x04, 0x8c, 0x34, 0xf0, 0x18, 0x11, 0xd1, 0x18, 0xa8, 0x00, 0x2a, 0xa5, 0x4b, 0xa3, 0x2b, 0xb2, - 0x2a, 0xf1, 0x79, 0xb0, 0x11, 0xa0, 0x1c, 0x83, 0x3a, 0xa1, 0x08, 0x9b, 0x87, 0x3d, 0xb3, 0x0b, - 0x01, 0x36, 0xea, 0x2a, 0x84, 0x1a, 0xc0, 0x29, 0x80, 0x01, 0x0e, 0x84, 0x1c, 0xa3, 0x59, 0xb0, - 0x4a, 0xd2, 0x59, 0xb0, 0x49, 0xa1, 0x0a, 0x81, 0x38, 0xb1, 0x30, 0xab, 0xa0, 0x79, 0xc1, 0x21, - 0x99, 0x92, 0x98, 0x19, 0xf0, 0x5a, 0x91, 0x02, 0x9f, 0x03, 0x8a, 0x51, 0xa9, 0x02, 0x5a, 0xc2, - 0x1a, 0x02, 0x9b, 0x15, 0x8a, 0xe2, 0x1c, 0x92, 0x73, 0xd8, 0x10, 0xa8, 0x31, 0xa8, 0x19, 0x98, - 0x30, 0xc0, 0x4b, 0xb3, 0x1c, 0x23, 0xb2, 0x1d, 0x9e, 0x16, 0x8a, 0x82, 0x1a, 0x93, 0x0c, 0x02, - 0x83, 0x9e, 0x42, 0xf8, 0x29, 0x91, 0x20, 0xa0, 0x09, 0x08, 0x30, 0xe3, 0x3a, 0x89, 0xd5, 0x59, - 0xb0, 0x01, 0x0a, 0x81, 0x18, 0x58, 0xf2, 0x1a, 0x01, 0x99, 0x02, 0x88, 0x21, 0xc9, 0x6a, 0xa3, - 0x39, 0xe8, 0x4a, 0x93, 0xac, 0x24, 0x89, 0xb8, 0x58, 0xc2, 0x38, 0x08, 0xdb, 0x32, 0xa8, 0x08, - 0x82, 0xbd, 0x25, 0x88, 0x8a, 0xd3, 0x48, 0x00, 0xba, 0x20, 0x83, 0x8c, 0x32, 0xa5, 0x1f, 0xb3, - 0x2a, 0x60, 0xb1, 0x19, 0x89, 0x19, 0xb0, 0x2d, 0x07, 0x0c, 0x81, 0x0a, 0x83, 0x49, 0xe9, 0x32, - 0xca, 0x30, 0x80, 0xca, 0x59, 0x85, 0x8b, 0x02, 0x98, 0xac, 0x62, 0xa2, 0x2c, 0xc3, 0x3b, 0x82, - 0x11, 0x8d, 0x14, 0xbb, 0x59, 0xb1, 0x8d, 0x24, 0x98, 0x09, 0xb2, 0x48, 0x90, 0x8a, 0x32, 0x91, - 0x9a, 0x1a, 0xa6, 0x1e, 0x84, 0x90, 0x8b, 0x89, 0x86, 0x48, 0xb9, 0xa3, 0x5c, 0xe0, 0x50, 0xa8, - 0x20, 0xa8, 0x11, 0xa9, 0x38, 0xf2, 0x48, 0x99, 0x80, 0x88, 0x61, 0xa8, 0x80, 0x81, 0x2b, 0x06, - 0xbc, 0x32, 0x9a, 0x99, 0x16, 0x9c, 0x11, 0x11, 0x18, 0xc9, 0x1b, 0x06, 0x80, 0x99, 0x40, 0xc3, - 0x19, 0x0c, 0xb4, 0x1b, 0x14, 0xc8, 0x09, 0x80, 0x70, 0xc8, 0x82, 0x3c, 0x96, 0x0a, 0x91, 0x09, - 0x10, 0x85, 0x9c, 0x00, 0x88, 0x92, 0x69, 0xd2, 0x29, 0x02, 0xd8, 0x11, 0x0a, 0x93, 0x0a, 0x94, - 0x1d, 0x80, 0x00, 0xc9, 0x29, 0x16, 0x0a, 0xc2, 0x1b, 0xa8, 0x64, 0x89, 0x01, 0xa9, 0x10, 0x50, - 0xf0, 0x19, 0x81, 0x88, 0x38, 0xd2, 0x4b, 0x91, 0x18, 0x84, 0x8c, 0xe0, 0x60, 0xb0, 0x21, 0xb8, - 0x3b, 0xa4, 0x3b, 0xb1, 0x2a, 0x07, 0xa8, 0x8c, 0x10, 0x03, 0x2c, 0x85, 0x9c, 0x31, 0xd0, 0x18, - 0x80, 0x11, 0xa0, 0x81, 0x8e, 0x84, 0x2a, 0x82, 0x69, 0xe1, 0x1a, 0x02, 0x2a, 0xb3, 0x1d, 0xa0, - 0x98, 0x51, 0x92, 0x0e, 0x84, 0x0c, 0x82, 0x8a, 0x18, 0x14, 0x9b, 0x02, 0xb9, 0x4a, 0x33, 0xc4, - 0x2a, 0xa9, 0x72, 0xe0, 0x4a, 0x91, 0x08, 0x00, 0x9b, 0x09, 0x13, 0x23, 0xad, 0x0a, 0x92, 0x62, - 0xac, 0x33, 0xa1, 0x0e, 0x18, 0x92, 0x8d, 0x52, 0xb1, 0x2b, 0x1b, 0x07, 0x0c, 0x20, 0xb8, 0x32, - 0xab, 0x24, 0x9a, 0xb8, 0x1d, 0x17, 0x0e, 0x91, 0x30, 0xb8, 0x38, 0x90, 0x8b, 0x04, 0x49, 0xa3, - 0xbd, 0x3b, 0x17, 0x8a, 0xb0, 0x33, 0x9f, 0x12, 0x90, 0x88, 0x8b, 0x25, 0xb0, 0x2a, 0x04, 0x19, - 0xd8, 0x51, 0xc8, 0x28, 0x0c, 0xc3, 0x2b, 0x25, 0x19, 0xe0, 0x2b, 0xa3, 0x5a, 0x82, 0x0c, 0xa1, - 0x4a, 0x88, 0x11, 0xb9, 0x48, 0x13, 0xfb, 0x29, 0x29, 0x81, 0x10, 0xb2, 0x2e, 0xe0, 0x70, 0xa0, - 0x09, 0x01, 0x8a, 0x81, 0x09, 0x08, 0x70, 0xc4, 0x0c, 0x03, 0xa9, 0x33, 0xbc, 0x05, 0x1c, 0x84, - 0x89, 0xc9, 0x41, 0x89, 0x02, 0x99, 0x1b, 0x80, 0x16, 0x0b, 0xc0, 0x19, 0x22, 0xb1, 0x1c, 0x14, - 0xad, 0x05, 0x9a, 0x01, 0x68, 0xd3, 0x2b, 0xa1, 0x19, 0x03, 0x09, 0xd8, 0x62, 0xa9, 0x09, 0x02, - 0x2a, 0xe2, 0x3a, 0xb2, 0x10, 0x8b, 0x06, 0x99, 0x1a, 0xc2, 0x6b, 0xa3, 0x29, 0x08, 0xf8, 0x48, - 0x80, 0x82, 0x1d, 0x93, 0x2c, 0xb0, 0x10, 0x08, 0x10, 0xd9, 0x20, 0x38, 0xf3, 0x30, 0x9c, 0x01, - 0x99, 0x72, 0xb0, 0x2b, 0xb2, 0x72, 0xc9, 0x00, 0x49, 0xd2, 0x1b, 0x02, 0x08, 0x90, 0x41, 0xab, - 0x40, 0x97, 0x1c, 0xb1, 0x69, 0xa2, 0x0c, 0xa3, 0x1a, 0x83, 0x08, 0x90, 0x1c, 0xb2, 0x68, 0xb1, - 0x0b, 0x52, 0x93, 0xae, 0x11, 0x09, 0xd8, 0x61, 0xa8, 0x02, 0x0c, 0x84, 0x1c, 0x91, 0x02, 0x00, - 0xbc, 0x33, 0x01, 0xf0, 0x5a, 0xb1, 0x88, 0x08, 0xa0, 0x31, 0x11, 0xaf, 0x12, 0x20, 0x88, 0x96, - 0x0d, 0x88, 0x23, 0xbc, 0x00, 0x29, 0x02, 0x33, 0xae, 0x93, 0x1f, 0x04, 0xa8, 0x8a, 0x33, 0x82, - 0x9e, 0x04, 0x1d, 0xa2, 0x10, 0x1b, 0x99, 0x85, 0x1c, 0xb3, 0x1b, 0x23, 0x88, 0x05, 0xaf, 0x31, - 0x91, 0x9b, 0x21, 0xc9, 0x13, 0x3d, 0xd3, 0x28, 0x8e, 0x15, 0x99, 0x19, 0x10, 0x81, 0x0a, 0x84, - 0x0d, 0x85, 0x9d, 0x14, 0x9b, 0x02, 0x2b, 0xa5, 0x1b, 0xa2, 0x28, 0x33, 0xcc, 0x02, 0x9f, 0x12, - 0x31, 0xca, 0xb0, 0x78, 0xb1, 0x10, 0x2a, 0x90, 0x01, 0xc8, 0x6b, 0xb3, 0x2d, 0x85, 0x8b, 0x01, - 0x99, 0x63, 0xda, 0x21, 0x98, 0x00, 0x1c, 0x85, 0xaa, 0x30, 0xb1, 0x08, 0x00, 0x61, 0xc8, 0x08, - 0x0b, 0x23, 0x0c, 0x95, 0x19, 0xb8, 0x9c, 0x37, 0x99, 0x81, 0x0d, 0x85, 0x8b, 0x04, 0x9b, 0x12, - 0x88, 0x81, 0x9d, 0x05, 0x2a, 0xb5, 0x0b, 0x02, 0x18, 0xd9, 0x18, 0x20, 0x81, 0x01, 0xea, 0x38, - 0x89, 0x37, 0x8d, 0x98, 0x00, 0x14, 0xbc, 0x22, 0x99, 0x13, 0x2b, 0xa5, 0xae, 0x12, 0x41, 0xe8, - 0x19, 0x04, 0x9a, 0x01, 0x90, 0x20, 0x8c, 0x02, 0x89, 0xca, 0x00, 0x73, 0xb0, 0x18, 0x89, 0x85, - 0x1e, 0x84, 0x98, 0x19, 0x83, 0x8c, 0x99, 0x00, 0x71, 0xa4, 0x8d, 0x03, 0x0d, 0x93, 0x2a, 0xa3, - 0x1b, 0x42, 0xeb, 0x02, 0x0c, 0x05, 0x8a, 0x08, 0xa1, 0x49, 0xc1, 0x08, 0x01, 0x02, 0x9a, 0x10, - 0x90, 0x68, 0x85, 0xad, 0x40, 0xd0, 0x18, 0x12, 0x9d, 0x14, 0x9b, 0x13, 0x8d, 0x04, 0x0a, 0xa1, - 0x18, 0x83, 0xaf, 0x05, 0x0b, 0x83, 0x89, 0x12, 0xaa, 0xab, 0x74, 0xa8, 0x08, 0x41, 0xb0, 0x99, - 0x09, 0x16, 0x0a, 0xa2, 0x98, 0x0c, 0xa9, 0x37, 0xad, 0x33, 0x9a, 0x95, 0x0c, 0x82, 0x20, 0x08, - 0xda, 0x21, 0xbb, 0x43, 0x08, 0xb0, 0x6b, 0xa3, 0x09, 0x9c, 0x00, 0x16, 0x8c, 0x01, 0x82, 0x8c, - 0x01, 0x16, 0xad, 0x12, 0x18, 0xb0, 0x8b, 0x34, 0xba, 0x15, 0x1d, 0x95, 0x0d, 0x12, 0x99, 0x88, - 0x89, 0x52, 0xd0, 0x29, 0x90, 0x91, 0x28, 0x31, 0xdc, 0x92, 0x40, 0x98, 0xa2, 0x3d, 0x83, 0x98, - 0x98, 0x29, 0x09, 0x17, 0x19, 0xd8, 0x0f, 0x13, 0x8a, 0x80, 0x0a, 0x27, 0xac, 0x80, 0x39, 0x85, - 0xa9, 0x40, 0xd0, 0x88, 0x30, 0x93, 0xcb, 0x50, 0xa1, 0x2a, 0xf9, 0x42, 0xa9, 0x10, 0x88, 0x28, - 0xc9, 0x34, 0x8a, 0xa3, 0x0f, 0x13, 0xca, 0x28, 0xa1, 0x21, 0x9a, 0xa1, 0x28, 0x29, 0xa6, 0x68, - 0xc8, 0x09, 0x90, 0x7b, 0xa2, 0x98, 0x2a, 0x04, 0xa8, 0x1b, 0x20, 0x03, 0xd8, 0x4c, 0xb9, 0x26, - 0x1a, 0x05, 0xac, 0x01, 0x00, 0xa0, 0x1b, 0x10, 0xb8, 0x34, 0xff, 0x33, 0xaa, 0x22, 0x9a, 0xa1, - 0x1b, 0x52, 0xd2, 0x09, 0x88, 0x22, 0xab, 0x33, 0x80, 0xda, 0x22, 0x8e, 0x85, 0x19, 0x91, 0x15, - 0xad, 0x52, 0xdb, 0x32, 0x09, 0xc8, 0x19, 0x04, 0xab, 0x03, 0xab, 0x36, 0xba, 0x11, 0xa8, 0x09, - 0x65, 0xd0, 0x08, 0x88, 0x11, 0x08, 0x98, 0x80, 0x49, 0xa1, 0x31, 0xce, 0x12, 0x61, 0xc9, 0x19, - 0x08, 0x04, 0xab, 0x21, 0xb1, 0x71, 0xda, 0x30, 0xc8, 0x58, 0x80, 0x89, 0x89, 0x11, 0x21, 0xf9, - 0x48, 0xa0, 0x00, 0x8a, 0x83, 0x19, 0x9b, 0x55, 0x80, 0xba, 0x29, 0x14, 0xca, 0x51, 0xc0, 0x20, - 0xad, 0x31, 0x02, 0x0b, 0x90, 0x22, 0xe9, 0x3b, 0xe0, 0x42, 0xb9, 0x02, 0x8e, 0x14, 0x0a, 0xb3, - 0x4b, 0xa8, 0x15, 0x9a, 0xb0, 0x7b, 0x01, 0x91, 0x1b, 0x08, 0x96, 0x1c, 0xc1, 0x38, 0x98, 0x22, - 0xaa, 0x80, 0x3b, 0x07, 0x1a, 0xb2, 0x1e, 0x82, 0xac, 0x33, 0x99, 0x59, 0xb3, 0xbb, 0x6b, 0x90, - 0x83, 0x71, 0xe1, 0x19, 0x88, 0x12, 0x0c, 0x86, 0x8a, 0x80, 0x91, 0x89, 0x3a, 0x83, 0x84, 0x09, - 0xde, 0x41, 0x98, 0x24, 0xac, 0x01, 0x80, 0x38, 0xf2, 0x2c, 0x83, 0x99, 0x01, 0xae, 0x33, 0x02, - 0x98, 0xac, 0x23, 0x1a, 0xb3, 0x98, 0x1f, 0x96, 0x1a, 0x92, 0x8a, 0x22, 0x92, 0x0a, 0xbf, 0x43, - 0x90, 0x12, 0xbd, 0x73, 0xa9, 0x91, 0x40, 0xaa, 0x81, 0x9a, 0x00, 0x3a, 0xa6, 0x68, 0xb0, 0xa9, - 0x72, 0x90, 0x98, 0x10, 0x81, 0xab, 0x08, 0x45, 0xf9, 0x38, 0xb1, 0x28, 0xc0, 0x38, 0x02, 0x9b, - 0xb9, 0x73, 0xc9, 0x41, 0x00, 0xb9, 0x28, 0x01, 0xb9, 0x2b, 0xf1, 0x61, 0x88, 0xa8, 0x29, 0x02, - 0x28, 0x96, 0x9f, 0x11, 0x82, 0x8c, 0x94, 0x2a, 0xa1, 0x40, 0xc8, 0x29, 0x02, 0x91, 0xda, 0x50, - 0xb8, 0x22, 0x0a, 0x93, 0x9a, 0x89, 0x00, 0x7a, 0xe2, 0x2a, 0x01, 0xb1, 0x2b, 0x28, 0x92, 0xfc, - 0x72, 0xc0, 0x10, 0x1a, 0x95, 0x1b, 0x81, 0x20, 0xca, 0x22, 0x8d, 0x04, 0x8a, 0x52, 0xf8, 0x19, - 0x01, 0x01, 0xbb, 0x21, 0x80, 0x48, 0xb9, 0x11, 0x0a, 0x06, 0xc9, 0x1a, 0xb3, 0x70, 0x99, 0xa0, - 0x70, 0xa1, 0x29, 0x08, 0xe9, 0x70, 0xb0, 0x10, 0x9a, 0x13, 0x29, 0xb8, 0x89, 0x18, 0x95, 0x2e, - 0xd3, 0x1a, 0x02, 0x81, 0x89, 0x88, 0x10, 0x05, 0x9a, 0x09, 0x94, 0xbc, 0x60, 0x92, 0x9a, 0x21, - 0x2c, 0xa7, 0x09, 0x39, 0xe3, 0x49, 0xa0, 0x82, 0x0f, 0x13, 0x98, 0xaa, 0x09, 0x63, 0xb0, 0x2a, - 0xb1, 0x39, 0xa9, 0x27, 0xac, 0x81, 0x61, 0x91, 0xba, 0x2c, 0x85, 0x98, 0x09, 0x22, 0xbb, 0x62, - 0xa0, 0x8a, 0x31, 0x81, 0x40, 0xe9, 0x98, 0x34, 0xbb, 0x13, 0x8f, 0x01, 0x80, 0x1a, 0xc4, 0x59, - 0xb9, 0x42, 0xc8, 0x21, 0x9d, 0x13, 0x18, 0xc9, 0x01, 0x28, 0x80, 0x2a, 0xf1, 0x51, 0x98, 0x88, - 0x88, 0xb8, 0x52, 0x24, 0xf0, 0x1c, 0x01, 0x03, 0xbd, 0x30, 0x80, 0x00, 0xb8, 0x19, 0x90, 0x41, - 0x21, 0x95, 0xdf, 0x12, 0x11, 0xd8, 0x39, 0x83, 0x88, 0x99, 0x19, 0x22, 0xc9, 0x53, 0xac, 0xa0, - 0x2a, 0x27, 0xaa, 0x2a, 0x96, 0x2b, 0xd2, 0x39, 0xb8, 0x72, 0xb8, 0x10, 0x0a, 0x00, 0x85, 0x0a, - 0x9a, 0x33, 0xbd, 0x16, 0x8a, 0xa0, 0x48, 0x81, 0x92, 0x0e, 0xa1, 0x48, 0xa8, 0x13, 0x99, 0x8f, - 0x33, 0xb9, 0x89, 0x42, 0x21, 0xea, 0x89, 0x30, 0xb1, 0x35, 0x8d, 0xa3, 0x9c, 0x13, 0x0c, 0x81, - 0xb2, 0x60, 0xe9, 0x21, 0xa9, 0x32, 0x98, 0x11, 0xf9, 0x49, 0x92, 0x1a, 0xa5, 0x3b, 0xc1, 0x8a, - 0x23, 0x81, 0xbd, 0x52, 0xc8, 0x38, 0xd3, 0x4a, 0x81, 0x80, 0x8b, 0x88, 0x1a, 0x05, 0x91, 0x0e, - 0x84, 0x19, 0xa0, 0x88, 0x52, 0xc1, 0x9a, 0x62, 0x98, 0x21, 0xa9, 0xa9, 0x7b, 0xd1, 0x19, 0x82, - 0x1b, 0x93, 0x0e, 0x13, 0xba, 0x72, 0x92, 0x8b, 0x98, 0x23, 0xbb, 0x61, 0x80, 0xa0, 0xa8, 0x49, - 0xa0, 0x28, 0x01, 0x4b, 0xf1, 0x3d, 0x58, 0xb0, 0xa1, 0x7b, 0xb8, 0x38, 0x81, 0x10, 0xc8, 0x1a, - 0x02, 0x89, 0x28, 0x81, 0x27, 0x9e, 0x01, 0x31, 0xdd, 0x22, 0x90, 0xb0, 0x3c, 0x02, 0x90, 0x89, - 0x09, 0x23, 0xab, 0x07, 0x2e, 0xb0, 0x21, 0x12, 0x8f, 0xb0, 0x34, 0x9a, 0xa0, 0x79, 0x83, 0xac, - 0x28, 0x98, 0x22, 0x88, 0xa8, 0x2e, 0xa5, 0x2b, 0x93, 0x08, 0x2a, 0x96, 0x99, 0x0d, 0x02, 0x20, - 0xc0, 0x8a, 0x31, 0x35, 0xdd, 0x12, 0x2a, 0xf0, 0x50, 0xb8, 0x20, 0x2b, 0xa3, 0x30, 0xda, 0x10, - 0x9b, 0x14, 0x8a, 0x2c, 0xb5, 0x28, 0x2a, 0xa5, 0xcb, 0x71, 0x90, 0x81, 0x8b, 0x91, 0x32, 0xa9, - 0x81, 0x48, 0xe0, 0x31, 0xab, 0xc9, 0x62, 0x80, 0x22, 0xcf, 0x21, 0x10, 0x91, 0x0d, 0xa2, 0x20, - 0x99, 0x88, 0x80, 0x08, 0x71, 0xe2, 0x88, 0x1a, 0x04, 0x12, 0xbd, 0x32, 0xaa, 0x84, 0x8c, 0x12, - 0x91, 0x2a, 0x92, 0xea, 0x3b, 0x37, 0xb9, 0x98, 0x59, 0x92, 0xb9, 0x59, 0xc1, 0x20, 0x19, 0xc0, - 0x29, 0xe9, 0x31, 0x23, 0xdd, 0x29, 0x02, 0x18, 0x84, 0x9c, 0x82, 0x80, 0x29, 0xb1, 0x8a, 0x52, - 0x84, 0xcf, 0x32, 0x90, 0x29, 0xa1, 0x1a, 0xc1, 0x33, 0x1c, 0xf8, 0x81, 0x39, 0x82, 0x8d, 0x02, - 0x08, 0x90, 0xab, 0x70, 0xe1, 0x4a, 0x13, 0xbb, 0x20, 0x11, 0xc9, 0x30, 0x3a, 0xc7, 0x0a, 0x00, - 0x04, 0x9d, 0x22, 0x10, 0xe9, 0x11, 0x99, 0x81, 0x28, 0xc0, 0x01, 0x0f, 0x93, 0x18, 0x10, 0xaa, - 0x17, 0x0e, 0x92, 0x1a, 0x01, 0x12, 0xa9, 0x8d, 0x90, 0x75, 0xa8, 0x99, 0x30, 0xb2, 0x0c, 0x03, - 0x1a, 0x19, 0xa5, 0x89, 0xbc, 0x73, 0xa3, 0x9b, 0xa8, 0x78, 0x91, 0x99, 0x42, 0xa8, 0x00, 0x1b, - 0xb4, 0x1a, 0x09, 0x17, 0xaa, 0xa9, 0x4a, 0x87, 0x88, 0x19, 0x00, 0x90, 0x2b, 0x05, 0x10, 0xfc, - 0x30, 0xa0, 0x29, 0xa0, 0x08, 0x42, 0xe9, 0x0a, 0x61, 0xc8, 0x31, 0x8b, 0xa3, 0x3a, 0x90, 0x53, - 0xbe, 0x52, 0x90, 0x09, 0xaa, 0x20, 0x33, 0xdb, 0x80, 0x50, 0xc1, 0x4a, 0x84, 0x9b, 0x09, 0x03, - 0x88, 0xbc, 0x31, 0x43, 0xe9, 0x09, 0x20, 0x93, 0x2c, 0xa3, 0x8c, 0x18, 0x07, 0x1d, 0xc2, 0x4a, - 0x01, 0xa8, 0x09, 0xa0, 0x60, 0xc8, 0x21, 0xa9, 0x13, 0x1c, 0x05, 0xba, 0x58, 0xd2, 0x5b, 0x91, - 0x8a, 0x08, 0x12, 0x01, 0xbc, 0x38, 0x82, 0x49, 0xa1, 0x28, 0xc8, 0x2d, 0xa6, 0x0d, 0x13, 0x1a, - 0x91, 0xb8, 0x3c, 0x94, 0x01, 0x0f, 0x04, 0x8c, 0x01, 0x20, 0xd8, 0x40, 0x99, 0x83, 0x8e, 0x02, - 0x90, 0x0a, 0x14, 0x99, 0xc0, 0x68, 0x90, 0x88, 0x30, 0xd8, 0x08, 0x88, 0x05, 0x0c, 0xa0, 0x41, - 0xa0, 0x80, 0x1d, 0x84, 0x09, 0x09, 0x04, 0x8b, 0xd0, 0x61, 0xb8, 0x08, 0x30, 0x02, 0xbc, 0x08, - 0x51, 0xd8, 0x22, 0x8c, 0x92, 0x1a, 0x84, 0x09, 0x49, 0xe2, 0x4a, 0xa0, 0x98, 0x3a, 0xb4, 0x69, - 0x88, 0x91, 0x9b, 0x73, 0x90, 0x09, 0x9a, 0xc1, 0x78, 0xb2, 0x0a, 0x32, 0x09, 0xc4, 0x2c, 0x81, - 0x80, 0xaa, 0x70, 0xb0, 0x0b, 0x63, 0xc8, 0x28, 0x88, 0x28, 0xc1, 0x1d, 0x04, 0x88, 0x98, 0x58, - 0xd0, 0x38, 0x91, 0x90, 0x18, 0xa9, 0x11, 0xc9, 0x7b, 0x93, 0x1a, 0xd2, 0x6a, 0xa2, 0x9a, 0x28, - 0x06, 0xbb, 0x01, 0x09, 0x01, 0x22, 0xdc, 0x00, 0x32, 0xba, 0x43, 0xfa, 0x40, 0x08, 0xc0, 0x29, - 0x08, 0x12, 0x21, 0xec, 0x88, 0x21, 0x28, 0xc4, 0x0c, 0x00, 0x04, 0x29, 0xe9, 0x00, 0x39, 0x94, - 0x99, 0x8a, 0x12, 0x0b, 0xc6, 0x2c, 0x92, 0x19, 0x31, 0xa6, 0x8b, 0x1a, 0x17, 0x9a, 0x89, 0x12, - 0x88, 0x22, 0xbc, 0x01, 0x0b, 0x35, 0xa2, 0xbe, 0x88, 0x71, 0xa3, 0x9e, 0x01, 0x04, 0x8b, 0x82, - 0x0a, 0xa0, 0x61, 0xb2, 0x9d, 0x09, 0x35, 0xa1, 0x0b, 0x80, 0x21, 0xb9, 0x48, 0x9b, 0x87, 0x2a, - 0xb1, 0x0a, 0x10, 0x83, 0x72, 0xfb, 0x18, 0x12, 0x99, 0xb9, 0x14, 0x1d, 0x04, 0x98, 0x1c, 0xb1, - 0x71, 0xb0, 0x19, 0x0a, 0xa5, 0x59, 0xc0, 0x18, 0x10, 0x91, 0x8a, 0x10, 0x90, 0x0b, 0x17, 0x1a, - 0xf0, 0x39, 0x93, 0x08, 0x8b, 0x05, 0x1a, 0xba, 0x05, 0x0e, 0x02, 0x88, 0x08, 0xb9, 0x2a, 0x07, - 0x58, 0xe8, 0x28, 0x90, 0x81, 0x2b, 0xc3, 0x4b, 0x92, 0x10, 0x99, 0x0a, 0x17, 0x9b, 0x82, 0xa8, - 0x3a, 0x26, 0xad, 0x03, 0x2b, 0xb2, 0x90, 0x28, 0xa8, 0xf1, 0x4a, 0x12, 0xcd, 0x31, 0x13, 0xaa, - 0x80, 0x8c, 0x07, 0x4b, 0xb0, 0x38, 0xf8, 0x49, 0xb3, 0x29, 0x89, 0x28, 0xa3, 0xad, 0x48, 0x02, - 0xd9, 0x11, 0x08, 0xe0, 0x40, 0xb2, 0x2d, 0x92, 0x01, 0xab, 0x98, 0x44, 0x19, 0xc0, 0x29, 0xa0, - 0x24, 0xac, 0x35, 0xdb, 0x08, 0x40, 0xd0, 0x29, 0x00, 0x02, 0x1d, 0xc2, 0x49, 0x80, 0xb8, 0x62, - 0xc9, 0x30, 0x98, 0x91, 0x0c, 0x24, 0xb8, 0x08, 0x08, 0x98, 0x28, 0xd1, 0x28, 0x42, 0xfc, 0x00, - 0x50, 0xa0, 0x99, 0x28, 0x13, 0xd0, 0x0a, 0x18, 0x12, 0x06, 0x9b, 0x10, 0xd8, 0x48, 0x82, 0x1b, - 0xdc, 0x61, 0xb0, 0x89, 0x20, 0x04, 0x99, 0xa1, 0x0b, 0x92, 0x61, 0x99, 0x98, 0x00, 0x5b, 0x94, - 0xba, 0x20, 0x52, 0xc2, 0xcb, 0x78, 0x90, 0x11, 0x9b, 0x32, 0xd9, 0x2a, 0x43, 0xc9, 0xb8, 0x72, - 0xa8, 0x90, 0x09, 0x93, 0x5b, 0xa5, 0x0c, 0x13, 0x98, 0x99, 0x88, 0x23, 0x8b, 0x26, 0xdd, 0x01, - 0x1b, 0x07, 0x80, 0x8a, 0x90, 0x3a, 0x85, 0x8a, 0x19, 0x93, 0x2b, 0x84, 0x8f, 0x00, 0x32, 0x81, - 0xdf, 0x21, 0x81, 0x08, 0x0b, 0x85, 0x0b, 0x22, 0xb1, 0x9e, 0x11, 0x30, 0xf3, 0x2b, 0x98, 0x32, - 0x99, 0x18, 0x14, 0xeb, 0x31, 0x88, 0xc0, 0x59, 0x81, 0x94, 0xaf, 0x14, 0x0a, 0x90, 0x39, 0x95, - 0x9c, 0x10, 0x18, 0xa3, 0x0d, 0x13, 0xba, 0x80, 0x61, 0xa8, 0x10, 0x89, 0xa3, 0x0c, 0x21, 0x05, - 0x0d, 0xb2, 0x69, 0xb1, 0x98, 0x61, 0xd0, 0x28, 0xb8, 0x30, 0xa8, 0x22, 0xab, 0xc1, 0x78, 0xa2, - 0x9a, 0x42, 0xd2, 0x1b, 0x01, 0xc1, 0x2b, 0x84, 0x23, 0xbc, 0x80, 0x40, 0xb3, 0x00, 0x8e, 0x84, - 0x0c, 0x12, 0xa0, 0x0a, 0x31, 0x13, 0xed, 0x1b, 0x85, 0x21, 0x8e, 0x93, 0x2b, 0xb2, 0x5b, 0x23, - 0xe8, 0x2a, 0x91, 0xc8, 0x5b, 0x83, 0x09, 0x02, 0x8d, 0x92, 0x39, 0x18, 0x04, 0x9d, 0xa0, 0x39, - 0xa3, 0x0a, 0x58, 0xa4, 0x1b, 0x99, 0xa2, 0x71, 0xc8, 0x44, 0xdb, 0x10, 0x18, 0x93, 0x19, 0xbb, - 0x88, 0x47, 0xeb, 0x21, 0x99, 0x03, 0xaa, 0x41, 0xa8, 0xa0, 0x51, 0x09, 0xb1, 0x3c, 0x15, 0xb9, - 0x9b, 0x22, 0x21, 0x1c, 0xb6, 0x2a, 0x9b, 0x45, 0x92, 0xdc, 0x2a, 0x84, 0x10, 0xfa, 0x38, 0x01, - 0xa0, 0x39, 0xb0, 0xaa, 0x70, 0x97, 0x8a, 0x98, 0x41, 0x91, 0x8a, 0x00, 0x10, 0x00, 0xd9, 0x09, - 0xca, 0x45, 0x18, 0xc8, 0x18, 0x29, 0x95, 0x0a, 0xaa, 0x16, 0xac, 0x24, 0xab, 0x10, 0x00, 0x33, - 0xca, 0x9b, 0x15, 0x10, 0xab, 0x13, 0xae, 0x32, 0x80, 0x8d, 0x85, 0x1d, 0x94, 0x29, 0xc8, 0x20, - 0xa8, 0x52, 0xa0, 0xa9, 0x20, 0xa8, 0x24, 0xcb, 0x10, 0x34, 0xfa, 0x19, 0x0a, 0x15, 0x19, 0xc1, - 0x9c, 0x42, 0x10, 0xd0, 0x2a, 0x22, 0xc9, 0x8a, 0x22, 0xc8, 0x5a, 0x93, 0x20, 0x9d, 0x82, 0x44, - 0xca, 0x18, 0x39, 0xa5, 0xad, 0x30, 0xa1, 0x50, 0xc9, 0x03, 0x8d, 0x02, 0x38, 0xe1, 0x0a, 0x22, - 0x80, 0x9a, 0x13, 0x99, 0x04, 0xae, 0x11, 0xa1, 0x4b, 0x14, 0xa8, 0x9a, 0x01, 0x35, 0xc0, 0x4a, - 0xfa, 0x11, 0x91, 0x0f, 0x04, 0x9a, 0x81, 0x28, 0xa0, 0x31, 0xa8, 0x90, 0xb0, 0x4a, 0x69, 0xb2, - 0x91, 0x1f, 0x92, 0x8b, 0x11, 0x25, 0xeb, 0x40, 0xb9, 0x11, 0x20, 0xa0, 0x13, 0x9f, 0x86, 0x08, - 0xa9, 0x08, 0x20, 0xc0, 0x23, 0xaf, 0x22, 0x89, 0x03, 0x82, 0x8d, 0x99, 0x02, 0x01, 0x1c, 0x00, - 0xd3, 0x2c, 0xc3, 0x7b, 0xa3, 0x2c, 0x84, 0xaa, 0x18, 0x08, 0x94, 0x2a, 0x95, 0x0e, 0x02, 0x0b, - 0x82, 0x01, 0xbc, 0x60, 0xc1, 0x1b, 0x23, 0x19, 0xc1, 0x2c, 0xa4, 0x4a, 0xb0, 0x21, 0xb8, 0x8e, - 0x04, 0x2b, 0x96, 0x1b, 0x03, 0xa0, 0x18, 0xab, 0x92, 0x49, 0x88, 0x21, 0xfa, 0x6a, 0xa2, 0x19, - 0xc9, 0x44, 0xba, 0x13, 0x8d, 0x80, 0x12, 0x80, 0xc2, 0x3c, 0xa8, 0x11, 0x01, 0xaa, 0x68, 0xa0, - 0x13, 0xbf, 0x33, 0x38, 0xc2, 0x8b, 0x91, 0x0b, 0x17, 0x1d, 0xd3, 0x3a, 0xb4, 0x5b, 0xb2, 0x2d, - 0x85, 0x19, 0xa9, 0x1b, 0x86, 0x89, 0x00, 0x0a, 0x92, 0x30, 0xa8, 0xb0, 0x4d, 0x84, 0x80, 0xbb, - 0x3a, 0x11, 0x07, 0x29, 0xb1, 0x8d, 0x80, 0x48, 0xe3, 0x0a, 0x33, 0x09, 0xfa, 0x38, 0xa3, 0x5a, - 0xa8, 0x02, 0xbb, 0x49, 0x02, 0xd9, 0x09, 0x49, 0xb3, 0x70, 0xd9, 0x21, 0x88, 0x20, 0xc1, 0x0b, - 0x33, 0x0b, 0x97, 0x8d, 0xa2, 0x58, 0xb1, 0x80, 0x0a, 0x21, 0x84, 0x9d, 0x01, 0x00, 0x88, 0x22, - 0xfa, 0x31, 0xf0, 0x39, 0x90, 0xad, 0x35, 0x98, 0xa8, 0x3a, 0x96, 0x19, 0x88, 0x11, 0x88, 0xca, - 0x14, 0x8b, 0xb2, 0x68, 0xb2, 0xac, 0x71, 0x80, 0xb1, 0x2a, 0x02, 0xc1, 0x0b, 0x49, 0x87, 0x0c, - 0x91, 0x28, 0xca, 0x43, 0x88, 0xbb, 0x01, 0x5a, 0x84, 0x89, 0x0a, 0x33, 0xfb, 0x51, 0xb8, 0x48, - 0x9a, 0x11, 0xb9, 0x40, 0x92, 0x6a, 0xd0, 0x28, 0x88, 0x10, 0xba, 0x42, 0xd9, 0x30, 0x92, 0x0d, - 0xb1, 0x62, 0xd9, 0x21, 0x98, 0x19, 0x82, 0x89, 0x02, 0x0e, 0x15, 0xab, 0x01, 0x28, 0x91, 0x89, - 0x88, 0x08, 0xf0, 0x6c, 0x95, 0x8a, 0x88, 0x30, 0x90, 0xaa, 0x31, 0x93, 0x9f, 0x11, 0xb3, 0x1d, - 0x84, 0x48, 0xe9, 0x20, 0x80, 0x81, 0x9b, 0x10, 0x03, 0xaf, 0x33, 0x81, 0xcc, 0x31, 0x00, 0xb1, - 0x80, 0x3c, 0xd1, 0x50, 0xb9, 0x61, 0xc9, 0x41, 0xa8, 0x19, 0xa9, 0x16, 0x9a, 0x81, 0xa0, 0x18, - 0x02, 0x70, 0xe8, 0x20, 0x0a, 0x92, 0x0c, 0x81, 0x80, 0x2b, 0x93, 0x43, 0x9e, 0x14, 0x88, 0x9a, - 0x11, 0x39, 0xd1, 0x3a, 0xd2, 0x2c, 0xa2, 0x61, 0xb0, 0x8a, 0x30, 0x08, 0x48, 0xf0, 0x1a, 0x28, - 0xa3, 0x42, 0xac, 0x02, 0x3a, 0xf3, 0x1e, 0x81, 0x81, 0x20, 0xb8, 0x38, 0xbd, 0x36, 0xb8, 0x08, - 0x01, 0xb2, 0x09, 0xad, 0x52, 0xa2, 0x2c, 0x93, 0xeb, 0x31, 0x89, 0x06, 0xbb, 0x51, 0x90, 0x80, - 0xac, 0x71, 0xa0, 0x28, 0x9a, 0x82, 0x8d, 0x05, 0x80, 0x88, 0xb0, 0x38, 0xc8, 0x22, 0x40, 0xa4, - 0x1d, 0xe0, 0x39, 0x91, 0x10, 0xa2, 0x8a, 0x91, 0x1f, 0x84, 0x11, 0x0a, 0xa9, 0x12, 0xbe, 0x10, - 0x43, 0x98, 0x23, 0xcd, 0x39, 0xc0, 0x79, 0xa2, 0x0a, 0x90, 0x18, 0x02, 0x8c, 0x12, 0x40, 0xc4, - 0x1d, 0x81, 0xa8, 0x39, 0xa3, 0x41, 0xcb, 0x11, 0x90, 0x82, 0xac, 0x64, 0xa8, 0x9b, 0x32, 0xba, - 0x33, 0x3a, 0xf2, 0x90, 0x2a, 0x12, 0x98, 0x02, 0x9c, 0x72, 0xf0, 0x29, 0x90, 0x38, 0x83, 0x1a, - 0xa4, 0xaf, 0x33, 0x8b, 0x07, 0x9d, 0x02, 0x91, 0x0c, 0x93, 0x48, 0xb1, 0x5a, 0xc0, 0x1b, 0x04, - 0x19, 0x80, 0x91, 0x2b, 0xa8, 0x86, 0x3c, 0xc2, 0x29, 0x00, 0xc0, 0x2b, 0x92, 0x69, 0x93, 0xba, - 0x68, 0xc0, 0x48, 0x90, 0x90, 0x19, 0xb1, 0x1b, 0x9e, 0x27, 0x9a, 0x22, 0xca, 0x19, 0x43, 0x9a, - 0x94, 0x1c, 0x92, 0x38, 0xc2, 0x0e, 0x12, 0x8c, 0x14, 0xbd, 0x43, 0x9a, 0x02, 0x18, 0xa9, 0x22, - 0x8a, 0x86, 0x0d, 0xa1, 0x12, 0xab, 0x05, 0xab, 0x08, 0x73, 0xb1, 0x0b, 0x04, 0x1b, 0xa5, 0x0c, - 0x15, 0x99, 0x00, 0xd9, 0x08, 0x24, 0x1b, 0xe1, 0x40, 0xda, 0x21, 0x98, 0x20, 0x08, 0x98, 0x31, - 0x89, 0xf1, 0x59, 0xa0, 0x09, 0x89, 0x33, 0xbe, 0x25, 0xa9, 0x28, 0xb1, 0x62, 0xb9, 0x18, 0x18, - 0xe2, 0x48, 0xb8, 0x21, 0x98, 0xcb, 0x54, 0x98, 0x08, 0x8a, 0xa5, 0x0f, 0x85, 0x1a, 0xa1, 0x28, - 0x02, 0xda, 0x11, 0x1b, 0x85, 0x8b, 0x92, 0xa9, 0x2a, 0x27, 0x08, 0x9b, 0x14, 0xca, 0x29, 0x18, - 0x07, 0xab, 0x13, 0x0a, 0xd8, 0x10, 0x21, 0xa1, 0x29, 0x8d, 0x97, 0x8f, 0x02, 0x12, 0x8b, 0x82, - 0x8a, 0xa9, 0x32, 0x52, 0xf1, 0x2a, 0x92, 0x19, 0xc9, 0x62, 0x98, 0x88, 0x0a, 0x14, 0xab, 0x22, - 0x15, 0x9f, 0x01, 0x2b, 0x82, 0xba, 0x73, 0xa0, 0x2b, 0x91, 0xa1, 0x2d, 0x95, 0x2b, 0xb2, 0x1a, - 0x44, 0xda, 0x22, 0x8a, 0x94, 0x1d, 0x81, 0xa8, 0x09, 0x70, 0xb1, 0x1a, 0x21, 0x91, 0xbb, 0x22, - 0x28, 0x9a, 0xa7, 0x4d, 0xc2, 0x3a, 0x02, 0xb0, 0x8b, 0x30, 0x97, 0x8d, 0x81, 0x30, 0x8a, 0x21, - 0xd1, 0x19, 0x99, 0x72, 0xa1, 0xbb, 0x54, 0xa9, 0xa8, 0x18, 0x04, 0x19, 0xc3, 0x48, 0xda, 0x29, - 0x15, 0x09, 0x99, 0x18, 0x19, 0x91, 0xaa, 0x92, 0x4a, 0x33, 0xa9, 0xff, 0x20, 0x20, 0xc5, 0x2b, - 0xa2, 0x28, 0xa0, 0x20, 0xf1, 0x39, 0x93, 0x89, 0xba, 0x68, 0x94, 0x8c, 0x53, 0xbb, 0x84, 0x3a, - 0x93, 0x0d, 0x92, 0x38, 0xf1, 0x1c, 0x01, 0x01, 0x89, 0x00, 0x82, 0x9d, 0xb0, 0x71, 0xc3, 0x09, - 0x13, 0xac, 0x12, 0x8a, 0x32, 0xb9, 0x44, 0x9b, 0xcc, 0x21, 0x08, 0x16, 0x8b, 0x01, 0xb8, 0x68, - 0xa0, 0x29, 0x90, 0x79, 0xf2, 0x3b, 0xa2, 0x48, 0xc1, 0x30, 0xd8, 0x1c, 0x85, 0x1b, 0xa2, 0x49, - 0x90, 0x89, 0x19, 0x01, 0x12, 0x0c, 0x86, 0xab, 0xa0, 0x78, 0x91, 0x88, 0x31, 0xb9, 0x10, 0xac, - 0x33, 0x1a, 0x17, 0x9e, 0x83, 0x8e, 0x12, 0x80, 0x20, 0xba, 0x82, 0x8f, 0x02, 0x89, 0x24, 0x08, - 0xe9, 0x80, 0x0a, 0x63, 0x80, 0x00, 0xb8, 0x1a, 0xb3, 0x7a, 0xb1, 0x2a, 0x84, 0x9b, 0xb8, 0x0d, - 0x47, 0x99, 0x00, 0x89, 0xc8, 0x49, 0x93, 0x28, 0x9d, 0x22, 0xc8, 0x29, 0xc3, 0x58, 0xb2, 0x1a, - 0xb0, 0x2a, 0x82, 0x72, 0xb3, 0x0d, 0x02, 0x9b, 0x83, 0x8c, 0x01, 0x08, 0x83, 0xaa, 0xab, 0x37, - 0x23, 0xba, 0xb8, 0x1d, 0x95, 0x39, 0xd8, 0x08, 0x00, 0x78, 0xf3, 0x1b, 0x03, 0x0c, 0x06, 0x8b, - 0x01, 0x99, 0x38, 0x90, 0x13, 0x9a, 0x12, 0xc9, 0x9d, 0x41, 0x00, 0x83, 0x9f, 0x04, 0x9c, 0x41, - 0x80, 0x00, 0x9c, 0x22, 0xd8, 0x39, 0xd1, 0x28, 0x22, 0xeb, 0x01, 0x09, 0x20, 0x14, 0xca, 0x11, - 0x9c, 0x24, 0x98, 0x89, 0x88, 0x50, 0xb5, 0x1c, 0xc0, 0x48, 0x92, 0x1a, 0xe2, 0x3a, 0x94, 0x89, - 0x81, 0x0c, 0x16, 0x9a, 0x98, 0x08, 0x11, 0x01, 0x88, 0xf0, 0x3b, 0x85, 0x11, 0xaa, 0x99, 0x63, - 0x98, 0x98, 0xac, 0x21, 0x24, 0x82, 0x9e, 0x10, 0x90, 0x28, 0xc2, 0x0a, 0x69, 0xa4, 0x8a, 0xba, - 0x71, 0x01, 0x80, 0xa8, 0xdb, 0x60, 0xa1, 0x28, 0xd9, 0x41, 0xa0, 0x00, 0xb9, 0x6a, 0x83, 0x3a, - 0xf8, 0x2a, 0x01, 0x00, 0x28, 0x9a, 0x13, 0xbb, 0x62, 0xd0, 0x2a, 0x82, 0x02, 0xad, 0x88, 0x42, - 0xd0, 0x5a, 0xa8, 0x32, 0xc9, 0x3b, 0xa7, 0x2a, 0x81, 0x20, 0xac, 0x81, 0x38, 0x12, 0xb8, 0x73, - 0xcc, 0x01, 0x3a, 0x95, 0x1c, 0x92, 0x2a, 0x94, 0x9b, 0x20, 0xa2, 0x2b, 0xa3, 0xaa, 0xbf, 0x71, - 0xa2, 0x29, 0x01, 0x99, 0x31, 0xf0, 0x2a, 0x80, 0x20, 0xb1, 0xac, 0x59, 0x05, 0x9b, 0xa1, 0x61, - 0xa0, 0x80, 0x0d, 0x84, 0x0b, 0x13, 0x93, 0x1e, 0xa0, 0x19, 0x84, 0x2e, 0x92, 0x9c, 0x40, 0x98, - 0x21, 0xdb, 0x52, 0xb0, 0x18, 0x80, 0xa9, 0x48, 0xa0, 0x03, 0x9f, 0x01, 0x22, 0x9b, 0x24, 0xc9, - 0x72, 0x99, 0xa8, 0x89, 0x64, 0xa9, 0x20, 0xba, 0x42, 0xa8, 0xa8, 0x18, 0x48, 0xb5, 0x2d, 0xd3, - 0x1b, 0x11, 0x03, 0x1a, 0xa0, 0x1a, 0x81, 0xac, 0x05, 0x40, 0x8c, 0xc2, 0x30, 0xbb, 0x47, 0xa8, - 0x10, 0x09, 0xa9, 0x9b, 0x82, 0x70, 0x84, 0xbb, 0x18, 0x30, 0xf8, 0x58, 0x80, 0x98, 0x81, 0x9f, - 0x13, 0x0b, 0x25, 0xa9, 0x00, 0xa8, 0x09, 0x02, 0x39, 0xf0, 0x6a, 0xb0, 0x41, 0xdb, 0x52, 0xa0, - 0x18, 0xb0, 0x19, 0x91, 0x3b, 0x87, 0x18, 0xdb, 0x48, 0xa1, 0x18, 0x80, 0x12, 0xbb, 0x20, 0xdc, - 0x23, 0x8c, 0x34, 0xa2, 0xbf, 0x14, 0x89, 0x00, 0x19, 0x13, 0x8a, 0xf1, 0x3a, 0xb2, 0x2a, 0x37, - 0xb9, 0xca, 0x48, 0x02, 0x8a, 0xa0, 0x62, 0xdb, 0x22, 0xba, 0x31, 0x03, 0x01, 0xce, 0x08, 0x00, - 0x00, 0x22, 0x89, 0xc0, 0x30, 0x0a, 0x73, 0xf8, 0x68, 0xb0, 0x2a, 0x90, 0x38, 0x01, 0x98, 0xba, - 0x52, 0xd8, 0x72, 0xc8, 0x19, 0x90, 0x42, 0xcb, 0x21, 0x88, 0x01, 0xb0, 0x32, 0xdc, 0x40, 0x90, - 0x90, 0x9c, 0x53, 0x91, 0x88, 0xa8, 0x20, 0x01, 0xa9, 0xc8, 0x38, 0x04, 0x0f, 0xd3, 0x2c, 0x15, - 0x00, 0xaa, 0x89, 0x81, 0x31, 0xa0, 0x98, 0x2c, 0x03, 0x00, 0xdf, 0x39, 0x14, 0xa8, 0x8a, 0x0a, - 0x02, 0x2a, 0x06, 0x88, 0xa0, 0x2e, 0xa5, 0x2c, 0x04, 0xaa, 0x23, 0xab, 0x19, 0x83, 0x5a, 0xb2, - 0x34, 0xcf, 0x14, 0x89, 0x92, 0x9c, 0x02, 0x09, 0xc0, 0x08, 0x19, 0xd3, 0x70, 0xa2, 0x99, 0x08, - 0x20, 0x88, 0xc1, 0x6b, 0x91, 0x03, 0x1b, 0xf9, 0x69, 0x92, 0x8a, 0x00, 0x99, 0x84, 0x1d, 0x83, - 0x3a, 0xb3, 0x2c, 0xc0, 0x0d, 0x23, 0x92, 0x9c, 0x10, 0xbb, 0x22, 0x72, 0x81, 0x0a, 0xa0, 0x0b, - 0x86, 0x0f, 0x13, 0xa0, 0x0b, 0x93, 0x1c, 0xa3, 0x20, 0x48, 0xb6, 0x8f, 0x03, 0x80, 0x09, 0x89, - 0x12, 0x21, 0xaa, 0xf9, 0x69, 0x9a, 0x15, 0xbc, 0x32, 0x99, 0x12, 0xa8, 0x01, 0x1b, 0x01, 0xb4, - 0x9f, 0xa0, 0x73, 0xb3, 0x0d, 0x91, 0x68, 0x90, 0x18, 0x98, 0x80, 0x18, 0x83, 0xcb, 0x2b, 0x27, - 0xb9, 0x9d, 0x52, 0xa1, 0x0a, 0x80, 0x01, 0x9d, 0x23, 0x11, 0xfa, 0x2a, 0x22, 0x01, 0xd9, 0x4a, - 0x93, 0x0d, 0x03, 0x0b, 0xa8, 0x25, 0x10, 0xdc, 0x20, 0x80, 0x13, 0xdb, 0x21, 0xcc, 0x21, 0x10, - 0x89, 0xd1, 0x70, 0xa1, 0x99, 0x09, 0x23, 0x20, 0xdc, 0x11, 0x9a, 0x13, 0x32, 0xce, 0x20, 0x01, - 0x81, 0xeb, 0x39, 0x05, 0x8a, 0x01, 0x9a, 0xc1, 0x7b, 0x97, 0x8a, 0x81, 0x10, 0xa8, 0x09, 0x01, - 0x11, 0x09, 0xb1, 0x8d, 0x12, 0x42, 0x8b, 0xe4, 0x1a, 0x10, 0x99, 0x90, 0x40, 0xa6, 0x5a, 0xc8, - 0x01, 0x9a, 0x44, 0x91, 0xbb, 0x31, 0x0b, 0xc3, 0x40, 0x99, 0x40, 0xd8, 0x19, 0x90, 0x09, 0x53, - 0x99, 0xc1, 0x70, 0xbc, 0x24, 0x99, 0x12, 0xb9, 0x28, 0xfa, 0x40, 0x08, 0x00, 0x84, 0x8c, 0x81, - 0x28, 0xa1, 0x29, 0x81, 0xe9, 0x8b, 0x38, 0x86, 0x30, 0xba, 0x90, 0x2c, 0xc3, 0x1c, 0x14, 0x98, - 0x5b, 0xe1, 0x28, 0x92, 0x5b, 0x94, 0x8b, 0x8a, 0x21, 0x0a, 0x07, 0x8b, 0x88, 0x22, 0x2a, 0xc4, - 0x0c, 0x32, 0xc0, 0x0a, 0x81, 0x38, 0xc2, 0x8a, 0x00, 0x10, 0x11, 0x18, 0x00, 0xbf, 0x92, 0x79, - 0xc5, 0x8a, 0x28, 0x21, 0xe5, 0x2b, 0x82, 0x11, 0xb1, 0x2b, 0xe2, 0x68, 0xa0, 0x88, 0x28, 0x8b, - 0x17, 0x9a, 0x21, 0x9c, 0xb1, 0x52, 0xab, 0x06, 0x8b, 0x04, 0x9a, 0x22, 0xaa, 0x24, 0xcc, 0x91, - 0x1c, 0x04, 0xb0, 0x40, 0x99, 0x04, 0xab, 0x72, 0xb8, 0x40, 0xc9, 0x31, 0xbb, 0x16, 0x8c, 0x13, - 0x9a, 0x81, 0x99, 0x41, 0xcb, 0x25, 0xb9, 0x10, 0x9b, 0x83, 0x79, 0xb2, 0x09, 0x9c, 0x14, 0x08, - 0xab, 0x34, 0x89, 0x90, 0x8b, 0x23, 0x2a, 0x17, 0x10, 0xfb, 0x3a, 0x93, 0x39, 0xc9, 0x18, 0x09, - 0x95, 0x09, 0x9c, 0x10, 0x81, 0x37, 0xde, 0x30, 0x11, 0xc0, 0x1a, 0x98, 0x06, 0x0a, 0x11, 0xb8, - 0x8d, 0x35, 0x89, 0xcb, 0x32, 0x82, 0x0c, 0x91, 0x0a, 0x34, 0xad, 0x24, 0xae, 0x12, 0x02, 0xa9, - 0x9c, 0x43, 0x11, 0xb0, 0x0d, 0x83, 0xbb, 0x60, 0xe0, 0x28, 0x88, 0x42, 0xb0, 0x0c, 0x03, 0x18, - 0xa8, 0x01, 0x0e, 0xa1, 0x79, 0x92, 0xba, 0x70, 0x91, 0x89, 0x99, 0x32, 0x80, 0x8e, 0x11, 0xa1, - 0x0e, 0x14, 0x88, 0xc8, 0x3b, 0x12, 0xe1, 0x29, 0x18, 0xb2, 0x39, 0x95, 0x9d, 0x22, 0x10, 0xa2, - 0xad, 0x12, 0x48, 0xb2, 0x0c, 0x03, 0xbc, 0x51, 0xd0, 0x31, 0x8a, 0x84, 0x9c, 0x81, 0x1a, 0x04, - 0xa8, 0x88, 0x2a, 0xc3, 0x73, 0xa0, 0xad, 0x34, 0x8a, 0xc1, 0x10, 0x30, 0xa9, 0xa1, 0x48, 0x91, - 0xac, 0x33, 0x19, 0xe1, 0x1c, 0x92, 0x02, 0x20, 0x2b, 0x07, 0x9f, 0x04, 0x0b, 0xc0, 0x68, 0xb1, - 0x39, 0xd8, 0x30, 0x99, 0x14, 0x89, 0x9a, 0x05, 0x1b, 0xd3, 0x2b, 0x83, 0x28, 0xac, 0x00, 0x10, - 0x17, 0x90, 0x9e, 0x82, 0x58, 0xb2, 0x8b, 0x33, 0xb0, 0x1e, 0x83, 0x8c, 0xa1, 0x31, 0x0d, 0xd1, - 0x28, 0x31, 0xc1, 0x39, 0xd1, 0x49, 0xb1, 0x39, 0xc0, 0x2a, 0x26, 0xad, 0x02, 0x80, 0x29, 0x82, - 0xca, 0x73, 0xc9, 0x21, 0x09, 0xa8, 0x13, 0x9f, 0x34, 0xca, 0x08, 0x28, 0xb1, 0x70, 0xc8, 0x3a, - 0x90, 0x02, 0x80, 0x9c, 0x34, 0x80, 0xa9, 0x80, 0x0c, 0x15, 0x99, 0x0b, 0xb8, 0x70, 0x95, 0x19, - 0xc9, 0x50, 0x90, 0xa0, 0x1b, 0x13, 0x09, 0x94, 0x9e, 0x11, 0x91, 0x70, 0xd1, 0x1a, 0x00, 0x93, - 0x1c, 0x81, 0x98, 0x52, 0xa9, 0x98, 0xad, 0x26, 0xa8, 0x01, 0x8b, 0x83, 0x28, 0x04, 0x9f, 0x12, - 0x90, 0x38, 0xc8, 0x19, 0x20, 0x21, 0xf1, 0x0f, 0x82, 0x10, 0x90, 0xa1, 0x0b, 0x22, 0x41, 0xfa, - 0x8a, 0x42, 0x92, 0x8e, 0x02, 0x89, 0x22, 0x89, 0xa2, 0x9a, 0x5b, 0x15, 0xda, 0x88, 0x42, 0x99, - 0x93, 0x09, 0xda, 0x43, 0x80, 0xc9, 0x08, 0x89, 0x33, 0xa4, 0x9c, 0x50, 0xb0, 0x85, 0x0e, 0xa1, - 0x28, 0x03, 0x9d, 0x23, 0xea, 0x30, 0x82, 0x01, 0xaf, 0x42, 0x98, 0xa8, 0x18, 0x58, 0xd3, 0x2b, - 0xc3, 0x49, 0xa0, 0x12, 0x9c, 0x91, 0x19, 0x73, 0xb8, 0x2a, 0xa1, 0x32, 0xea, 0x29, 0x81, 0x09, - 0x14, 0xbb, 0x8e, 0x35, 0x99, 0x88, 0x20, 0x01, 0xcc, 0x32, 0x3a, 0xf0, 0x4c, 0x81, 0xa0, 0x29, - 0x81, 0xa9, 0x10, 0x16, 0xba, 0x20, 0x38, 0xe1, 0x9a, 0x31, 0x13, 0xcc, 0x9d, 0x17, 0xb9, 0x30, - 0x91, 0x81, 0xad, 0x31, 0x83, 0xb9, 0x1a, 0x37, 0xac, 0x12, 0x8b, 0x96, 0x3b, 0xa6, 0x9b, 0x21, - 0x90, 0x21, 0xab, 0x24, 0xa9, 0x80, 0x8b, 0x13, 0xcb, 0x38, 0x87, 0x29, 0xdd, 0x52, 0x88, 0xb8, - 0x31, 0xb8, 0x8c, 0x02, 0x58, 0xa3, 0x5a, 0xa4, 0xbd, 0x32, 0x11, 0xd9, 0x28, 0xa1, 0x40, 0xfa, - 0x50, 0xa0, 0x19, 0x80, 0x11, 0xdb, 0x38, 0x90, 0x03, 0x9c, 0x13, 0x9a, 0x35, 0xca, 0x80, 0x8a, - 0x43, 0xa3, 0xcd, 0x4a, 0x85, 0x89, 0xb0, 0x48, 0x98, 0x31, 0xd1, 0x18, 0xb0, 0x61, 0xc2, 0x0b, - 0x01, 0x18, 0xa4, 0x3b, 0xd1, 0x1a, 0x04, 0xb0, 0x09, 0x0a, 0x06, 0x90, 0x9c, 0x62, 0xe0, 0x29, - 0x11, 0x09, 0xd1, 0x48, 0xa8, 0x0a, 0x84, 0x38, 0xb1, 0x88, 0x78, 0xc1, 0x8a, 0x53, 0xb8, 0x09, - 0x81, 0xbb, 0x41, 0x32, 0xa1, 0xfd, 0x38, 0x11, 0xb9, 0x09, 0x14, 0x19, 0xb1, 0x28, 0xcd, 0x53, - 0x81, 0x91, 0xbd, 0x10, 0x18, 0x11, 0x30, 0xf8, 0x48, 0x21, 0xa0, 0x9f, 0x18, 0x12, 0xda, 0x41, - 0xb8, 0x11, 0x99, 0x40, 0xd2, 0x1a, 0x12, 0x03, 0xee, 0x49, 0x03, 0x9a, 0xa1, 0x3a, 0xc1, 0x1a, - 0x34, 0xa0, 0xce, 0x41, 0x82, 0xab, 0x31, 0x12, 0xa0, 0x8f, 0x12, 0xea, 0x30, 0x23, 0xc8, 0xad, - 0x22, 0x80, 0xd2, 0x49, 0x02, 0xc9, 0x21, 0xa9, 0x00, 0x10, 0x90, 0x93, 0xcf, 0x04, 0x18, 0xa1, - 0x1a, 0x12, 0xaa, 0x1a, 0xb2, 0xa0, 0x7c, 0x17, 0xbc, 0x21, 0x18, 0x92, 0x2b, 0x89, 0x06, 0xad, - 0x38, 0x10, 0xa9, 0x63, 0xb0, 0x8b, 0x81, 0x48, 0xc4, 0x2c, 0x82, 0x08, 0xda, 0x61, 0x90, 0x0b, - 0x03, 0x28, 0xf8, 0x29, 0x92, 0x39, 0xb2, 0x1d, 0xa4, 0x0c, 0x23, 0x11, 0xbd, 0x11, 0x11, 0x8e, - 0x94, 0x9a, 0x11, 0x25, 0xda, 0x88, 0x49, 0xa2, 0x18, 0xa0, 0x09, 0x32, 0xd0, 0x0b, 0x81, 0x72, - 0x98, 0xa1, 0x2b, 0x91, 0x3b, 0xa5, 0xc9, 0x4a, 0x40, 0x95, 0x8b, 0x82, 0x1b, 0x12, 0x08, 0xfa, - 0x3b, 0x22, 0xf0, 0x0b, 0x22, 0x06, 0x8d, 0x02, 0xa8, 0x2a, 0x04, 0x80, 0x9a, 0x09, 0x83, 0x1a, - 0x04, 0x1d, 0x87, 0x8b, 0xb0, 0x8d, 0x33, 0x24, 0xf3, 0x2c, 0xb2, 0x39, 0x02, 0x80, 0xba, 0x2a, - 0x83, 0xaf, 0x30, 0xb1, 0x71, 0xb0, 0x99, 0x1b, 0x25, 0x00, 0xa2, 0x9f, 0x23, 0xa9, 0x13, 0xdd, - 0x41, 0x84, 0x0b, 0xd8, 0x18, 0x11, 0x92, 0x3a, 0xb1, 0x9e, 0x53, 0xa0, 0xa9, 0x39, 0x04, 0x00, - 0xdd, 0x18, 0x82, 0x48, 0xb2, 0x8b, 0x90, 0x71, 0x91, 0x88, 0xb9, 0x71, 0xc0, 0x10, 0xc9, 0x42, - 0x00, 0x99, 0xa9, 0x3b, 0x07, 0x1a, 0x80, 0xab, 0x31, 0x24, 0xf8, 0x0b, 0x23, 0x21, 0xc1, 0x9f, - 0x12, 0x98, 0x20, 0x90, 0x09, 0x09, 0x04, 0x00, 0xac, 0x3a, 0x27, 0xaa, 0xa0, 0x0d, 0x21, 0x24, - 0xac, 0x11, 0x10, 0x99, 0x80, 0x9b, 0x11, 0x09, 0x67, 0xfa, 0x18, 0x01, 0x23, 0xca, 0x0a, 0x81, - 0xa9, 0x61, 0xb0, 0x49, 0xd8, 0x61, 0xa8, 0x08, 0x09, 0x11, 0x94, 0x0f, 0x82, 0x18, 0x99, 0x42, - 0xb0, 0x9d, 0x40, 0x83, 0xac, 0x00, 0x23, 0xc8, 0x09, 0xa9, 0x34, 0x9a, 0x42, 0xd0, 0x9a, 0x61, - 0x94, 0x9c, 0x02, 0x0a, 0x92, 0x19, 0x92, 0xaf, 0x64, 0x98, 0x80, 0x8b, 0x24, 0x8a, 0xa2, 0x8e, - 0x02, 0x18, 0x83, 0x9a, 0xaa, 0x30, 0x13, 0xdd, 0x50, 0x82, 0xba, 0x11, 0x88, 0x29, 0x27, 0xb0, - 0x89, 0xbd, 0x68, 0x01, 0xa8, 0x29, 0x89, 0x84, 0x8c, 0x24, 0xb0, 0x2a, 0x81, 0x80, 0xcc, 0x5a, - 0x84, 0x19, 0xb0, 0x58, 0xf8, 0x3a, 0x94, 0x29, 0xd2, 0x39, 0xb3, 0x8f, 0x23, 0xa8, 0x09, 0x30, - 0xc2, 0x0f, 0x02, 0x2b, 0xa3, 0x1b, 0x94, 0x9a, 0x32, 0x81, 0xa8, 0x38, 0x84, 0xaf, 0x88, 0x12, - 0x71, 0xc9, 0x20, 0x99, 0x19, 0x80, 0x13, 0xa8, 0x9b, 0x52, 0xa0, 0xb0, 0x8f, 0x37, 0x8c, 0x82, - 0x99, 0x81, 0x1d, 0x15, 0xa9, 0x28, 0x90, 0x88, 0xc8, 0x6a, 0xa4, 0x0c, 0x03, 0x98, 0x09, 0x18, - 0x96, 0xab, 0x3b, 0x07, 0x88, 0x8a, 0x85, 0x8b, 0x23, 0x80, 0xf8, 0x2c, 0x04, 0x1a, 0xc1, 0x6a, - 0xa2, 0x0a, 0x02, 0x8a, 0xca, 0x60, 0x82, 0x9a, 0x8a, 0x32, 0x83, 0x8e, 0x03, 0x8c, 0x81, 0x88, - 0x21, 0xca, 0x72, 0x82, 0xc9, 0x9c, 0x42, 0x91, 0x88, 0x08, 0x09, 0x8b, 0x47, 0xa9, 0x09, 0x88, - 0x44, 0xb8, 0xad, 0x30, 0x13, 0x90, 0xb0, 0x9d, 0x98, 0x73, 0x91, 0x8b, 0x31, 0x15, 0xca, 0x3a, - 0xe0, 0x40, 0x80, 0x09, 0xf9, 0x49, 0x02, 0x99, 0x99, 0x42, 0xa1, 0x8c, 0x12, 0x0b, 0xa1, 0x73, - 0xb5, 0x9d, 0x22, 0x08, 0x89, 0x09, 0xa3, 0x0a, 0x28, 0xa1, 0x02, 0x09, 0x65, 0xa0, 0xbc, 0x0c, - 0x27, 0xa0, 0x09, 0x80, 0x9b, 0x39, 0x84, 0x11, 0xa8, 0x61, 0xa1, 0xcd, 0x48, 0x02, 0x20, 0xdb, - 0x00, 0x09, 0x88, 0x35, 0xe9, 0x0a, 0x23, 0x9a, 0xa8, 0x30, 0x09, 0x07, 0x00, 0xaa, 0x09, 0x11, - 0x72, 0xd8, 0x09, 0x20, 0xc0, 0x0b, 0x15, 0x28, 0xc8, 0x32, 0xec, 0x39, 0x03, 0x09, 0xa8, 0x10, - 0x99, 0x09, 0x14, 0x9b, 0x43, 0xab, 0xa5, 0x1e, 0x82, 0x29, 0x17, 0xdb, 0x08, 0x09, 0x26, 0xb9, - 0x21, 0xbb, 0x30, 0xb9, 0x53, 0xca, 0x38, 0x02, 0x94, 0xaf, 0x04, 0x01, 0x9a, 0x01, 0x8b, 0x51, - 0x92, 0xa9, 0x8c, 0x25, 0x10, 0xf1, 0x1b, 0x00, 0x80, 0xa2, 0x2b, 0xf1, 0x48, 0x23, 0xbc, 0x18, - 0x98, 0x23, 0x18, 0xba, 0xb9, 0x72, 0x86, 0x9b, 0x08, 0x40, 0x94, 0x8c, 0x88, 0x49, 0xa4, 0x09, - 0xa9, 0x08, 0x26, 0xbb, 0x22, 0xca, 0x31, 0xa8, 0x22, 0xdf, 0x32, 0x98, 0x31, 0xad, 0x01, 0x31, - 0x85, 0x0b, 0xf9, 0x58, 0xa1, 0x1b, 0x02, 0x9b, 0x24, 0xa9, 0xb8, 0x3a, 0x17, 0x89, 0x0a, 0x09, - 0x07, 0x0b, 0x10, 0xa1, 0x28, 0xb0, 0x48, 0xf2, 0x0f, 0x23, 0xaa, 0x88, 0x20, 0x81, 0x90, 0x30, - 0x9b, 0xa7, 0x3c, 0xa1, 0x80, 0x0b, 0x12, 0x86, 0x8f, 0x14, 0x99, 0x28, 0x82, 0xc9, 0x1a, 0x32, - 0xaa, 0x88, 0x07, 0x1d, 0xa3, 0x3b, 0xf0, 0x1b, 0x17, 0x9a, 0x81, 0x0b, 0x82, 0x58, 0xa1, 0x88, - 0x08, 0x09, 0x07, 0xac, 0x12, 0x19, 0x85, 0xaa, 0x81, 0x8b, 0x27, 0xa0, 0x8c, 0x93, 0x2b, 0x02, - 0x02, 0xdc, 0x30, 0xa0, 0x19, 0xb9, 0x74, 0xb8, 0x31, 0xf8, 0x2b, 0x14, 0x98, 0x88, 0x09, 0x10, - 0x92, 0x11, 0x0b, 0xf8, 0x58, 0xa2, 0xaa, 0x69, 0xa1, 0x88, 0x18, 0x48, 0xc2, 0x8c, 0x44, 0xd9, - 0x09, 0x31, 0xc1, 0x18, 0x80, 0x11, 0xab, 0x22, 0x21, 0xfb, 0x2a, 0x88, 0xb3, 0x8f, 0x17, 0x89, - 0xb8, 0x60, 0xa1, 0x0b, 0x14, 0x99, 0x99, 0x28, 0x84, 0x19, 0xa0, 0xaa, 0x45, 0xbd, 0x35, 0xcb, - 0x30, 0xa8, 0x41, 0xd8, 0x29, 0x84, 0x8a, 0xb1, 0x48, 0xc8, 0x10, 0x90, 0x42, 0xe9, 0x41, 0xa8, - 0xa8, 0x21, 0x14, 0x99, 0x9a, 0x38, 0xd8, 0x2a, 0x25, 0xc0, 0x9c, 0x33, 0xaa, 0x80, 0x3c, 0x17, - 0x9a, 0x0c, 0x02, 0x80, 0x38, 0x91, 0xc2, 0x8e, 0x41, 0xb0, 0x90, 0x71, 0xb0, 0x0b, 0x11, 0x80, - 0x53, 0xda, 0x40, 0xc8, 0x58, 0xb8, 0x21, 0xac, 0x31, 0x91, 0x8a, 0x00, 0x31, 0xa8, 0x32, 0xbe, - 0x55, 0xda, 0x48, 0xc0, 0x39, 0x01, 0x10, 0xcd, 0x41, 0x88, 0x91, 0x1b, 0x04, 0xcb, 0x51, 0x90, - 0x99, 0x20, 0x11, 0xa2, 0xae, 0x20, 0x01, 0xa8, 0x11, 0x0a, 0x21, 0x90, 0x25, 0xce, 0x29, 0x16, - 0xa9, 0xa9, 0x10, 0x18, 0x12, 0xbc, 0x38, 0x84, 0x5a, 0xd3, 0x0c, 0x00, 0x23, 0x88, 0x91, 0x8d, - 0x91, 0x60, 0x84, 0xae, 0x22, 0x89, 0x82, 0x9c, 0x23, 0xcb, 0x44, 0xda, 0x30, 0xdb, 0x63, 0x98, - 0x80, 0xbb, 0x25, 0x8a, 0x80, 0x28, 0x83, 0xac, 0x60, 0xc0, 0x28, 0x12, 0xa1, 0xbc, 0x08, 0x23, - 0xa3, 0x1e, 0xa3, 0xab, 0x51, 0x81, 0x90, 0xd9, 0x6a, 0xa4, 0x9c, 0x42, 0xa9, 0x20, 0x82, 0xc9, - 0x29, 0x82, 0x08, 0x98, 0x8b, 0x74, 0xd3, 0x0a, 0x82, 0x2b, 0x94, 0x4a, 0xc3, 0x8f, 0x22, 0x99, - 0x81, 0x19, 0x80, 0x02, 0xb8, 0x1b, 0x14, 0x1c, 0x07, 0xdb, 0x08, 0x28, 0x16, 0xb9, 0x08, 0x88, - 0x00, 0x08, 0x22, 0xbb, 0x24, 0x11, 0xf8, 0x9f, 0x34, 0xa8, 0x39, 0xb9, 0x11, 0x30, 0xaa, 0x04, - 0x9e, 0x51, 0x81, 0xc9, 0x1c, 0x04, 0x00, 0x99, 0x08, 0xa8, 0x1b, 0x16, 0xab, 0x04, 0x9a, 0x30, - 0x85, 0xae, 0x34, 0xb0, 0x89, 0x20, 0xc9, 0x38, 0x13, 0xa0, 0x09, 0x9a, 0x97, 0x3b, 0xf0, 0x4a, - 0x96, 0x8a, 0x80, 0x20, 0x91, 0x2a, 0xf1, 0x3a, 0x90, 0x18, 0x84, 0x9d, 0x11, 0x02, 0x18, 0xc8, - 0x21, 0xcc, 0x72, 0x90, 0xb8, 0x48, 0xb1, 0x28, 0x89, 0x82, 0x5b, 0xb2, 0x2b, 0xeb, 0x71, 0xa2, - 0x0b, 0x98, 0x41, 0x80, 0x1a, 0xe1, 0x38, 0x98, 0x13, 0xaa, 0x8a, 0x22, 0x2b, 0xe7, 0x3c, 0x94, - 0x10, 0x98, 0xc9, 0x30, 0x89, 0x50, 0xb1, 0x80, 0x9c, 0x52, 0xa0, 0x08, 0x00, 0x10, 0xc9, 0x49, - 0xd0, 0x40, 0x92, 0xbb, 0x09, 0x02, 0x72, 0xb2, 0xea, 0x40, 0xa8, 0x20, 0xe8, 0x30, 0x08, 0x82, - 0xa8, 0xac, 0x73, 0xb8, 0x51, 0xa1, 0x9b, 0x39, 0x03, 0xe8, 0x59, 0x80, 0x82, 0xdb, 0x29, 0x02, - 0x1a, 0x87, 0x8d, 0x92, 0x4b, 0x96, 0x1a, 0x89, 0x20, 0xc0, 0x18, 0x01, 0xab, 0x34, 0x10, 0xf9, - 0x0a, 0x24, 0x88, 0x91, 0xac, 0x42, 0xc8, 0x12, 0x88, 0xba, 0x62, 0xa0, 0x8a, 0x2a, 0x94, 0x33, - 0xbf, 0x14, 0xa9, 0x31, 0x89, 0x88, 0x10, 0x99, 0x84, 0xaa, 0x0f, 0x86, 0x38, 0xd0, 0x0a, 0xb1, - 0x71, 0xa0, 0x30, 0xcb, 0x33, 0xd9, 0x28, 0x81, 0x8a, 0x90, 0x48, 0xb3, 0x1a, 0x89, 0x06, 0x29, - 0xbb, 0x05, 0x8b, 0xc2, 0x71, 0xe3, 0x1b, 0x22, 0x90, 0x9c, 0x22, 0x90, 0x9b, 0x93, 0x2e, 0x95, - 0x39, 0x93, 0xbb, 0x01, 0x39, 0x01, 0xf8, 0x79, 0xa9, 0x02, 0x2a, 0xb8, 0x31, 0x81, 0x88, 0xda, - 0x89, 0x45, 0x0a, 0xb4, 0x1c, 0xa1, 0x78, 0xc0, 0x29, 0x80, 0x30, 0xb1, 0xad, 0x63, 0x80, 0x88, - 0xac, 0x24, 0x98, 0x39, 0xe0, 0x89, 0x32, 0x88, 0x48, 0xf9, 0x49, 0xa1, 0x19, 0x88, 0x33, 0xea, - 0x29, 0x02, 0x0a, 0xb0, 0x7a, 0xb2, 0x1f, 0x82, 0x28, 0xb0, 0x3a, 0x87, 0x8c, 0x00, 0x02, 0xa0, - 0x1d, 0x84, 0xaa, 0x31, 0x89, 0x90, 0x2a, 0x03, 0x4a, 0xf2, 0x1f, 0x84, 0x1a, 0x91, 0x38, 0xc8, - 0x00, 0x19, 0x90, 0xd0, 0x6a, 0x82, 0x89, 0x9a, 0x24, 0x1a, 0xa1, 0x40, 0xd8, 0x8c, 0x34, 0xb9, - 0x28, 0xcb, 0x36, 0xba, 0x22, 0xb0, 0xab, 0x73, 0xb1, 0xa9, 0x51, 0x98, 0x01, 0xb8, 0x4a, 0x93, - 0x0e, 0x94, 0x9b, 0x08, 0x73, 0xa2, 0xab, 0x19, 0x36, 0xea, 0x20, 0xb2, 0x0c, 0x14, 0x99, 0x90, - 0x2b, 0x15, 0x90, 0x9c, 0x19, 0x05, 0x19, 0xa0, 0x28, 0xba, 0x2c, 0x87, 0x89, 0x99, 0x13, 0x11, - 0xd9, 0x2a, 0x12, 0xa3, 0x1b, 0xa6, 0x2d, 0xb2, 0x38, 0xd1, 0x1c, 0x27, 0xb8, 0x0b, 0xb0, 0x20, - 0x42, 0x91, 0xa1, 0xbf, 0x23, 0x39, 0x93, 0xa8, 0xcd, 0x21, 0x48, 0xe8, 0x48, 0x89, 0x15, 0xd8, - 0x1b, 0x13, 0x18, 0xa2, 0x8c, 0xa1, 0x1b, 0x27, 0x99, 0xaa, 0x34, 0xb8, 0x9c, 0x13, 0x2a, 0x95, - 0x5b, 0xd1, 0x89, 0x20, 0x05, 0x99, 0x8c, 0x03, 0x28, 0x90, 0xaf, 0x03, 0x29, 0x05, 0xbb, 0x10, - 0x98, 0x45, 0xb8, 0x99, 0x0b, 0x27, 0xb9, 0x38, 0xa1, 0x09, 0x01, 0x88, 0xba, 0x32, 0x54, 0xe2, - 0x0f, 0x02, 0x39, 0xc0, 0x10, 0xab, 0x42, 0x88, 0x22, 0xf9, 0x3b, 0xa4, 0x2a, 0x90, 0x98, 0x31, - 0x03, 0x98, 0x0d, 0xc0, 0x72, 0xd2, 0x2a, 0xc1, 0x40, 0x98, 0x81, 0x1d, 0xa2, 0x58, 0xb1, 0x8b, - 0x12, 0x91, 0x0c, 0x02, 0x9c, 0x27, 0x0b, 0x82, 0xcb, 0x41, 0x09, 0xa2, 0x0b, 0x98, 0x54, 0x90, - 0x9c, 0x12, 0x88, 0x21, 0x8e, 0x85, 0xab, 0x31, 0x02, 0xe0, 0x1c, 0x13, 0x10, 0xf8, 0x28, 0x80, - 0xb8, 0x62, 0xc9, 0x08, 0x53, 0x99, 0xc1, 0x2b, 0x22, 0x01, 0xdb, 0x08, 0x49, 0xd2, 0x48, 0xb8, - 0x18, 0x01, 0x24, 0xba, 0x88, 0x8b, 0x61, 0x93, 0xc9, 0x0f, 0x33, 0xa0, 0x9b, 0x11, 0x48, 0xc3, - 0x19, 0xe9, 0x39, 0x93, 0x20, 0xc9, 0x0a, 0x45, 0xbb, 0x01, 0x1e, 0x06, 0x8b, 0x81, 0x1b, 0x83, - 0x4a, 0x93, 0x8b, 0x09, 0x61, 0xb3, 0x8b, 0x8c, 0x06, 0xaa, 0x18, 0x28, 0x82, 0x89, 0x24, 0xff, - 0x31, 0x81, 0x8a, 0xaa, 0x72, 0xb0, 0x10, 0x88, 0x88, 0x41, 0xc2, 0x8a, 0x99, 0x2a, 0x27, 0x9c, - 0x12, 0x29, 0xd3, 0x2a, 0xa1, 0x98, 0x38, 0x93, 0x99, 0xaf, 0x17, 0x9c, 0x23, 0x09, 0x89, 0xa2, - 0x2c, 0x07, 0x8d, 0x83, 0x09, 0x8a, 0x22, 0x90, 0x9c, 0x23, 0x18, 0xaa, 0x9f, 0x16, 0x99, 0x28, - 0xc2, 0x39, 0xa0, 0x41, 0xa8, 0xa0, 0x79, 0xa4, 0x8b, 0xc9, 0x20, 0x43, 0xb8, 0x49, 0xe0, 0x38, - 0xa8, 0x21, 0xda, 0x41, 0x88, 0xa0, 0x9a, 0x61, 0x82, 0x09, 0xa8, 0xaa, 0x38, 0x06, 0x1b, 0xc2, - 0x51, 0xb9, 0x1a, 0x03, 0x00, 0x71, 0xd9, 0x91, 0x8d, 0x43, 0x98, 0xa8, 0x5a, 0x12, 0xbc, 0x11, - 0x19, 0x96, 0x1c, 0x82, 0x99, 0x9a, 0x27, 0x89, 0x98, 0x01, 0x08, 0x01, 0x8e, 0x05, 0x89, 0x89, - 0xa0, 0x0a, 0x01, 0x54, 0xb1, 0x8b, 0x29, 0x23, 0xc9, 0x0a, 0x01, 0x73, 0xf9, 0x39, 0xa2, 0x21, - 0xaf, 0x06, 0x9a, 0x12, 0xa0, 0x09, 0xa8, 0x64, 0xba, 0x43, 0xba, 0x21, 0x9c, 0x02, 0x21, 0x9c, - 0x02, 0x08, 0xea, 0x18, 0x16, 0x8a, 0x82, 0xe8, 0x30, 0xb0, 0x22, 0xda, 0x48, 0xa0, 0xa8, 0x21, - 0x99, 0x25, 0xa9, 0x29, 0xda, 0x88, 0x61, 0x12, 0xdb, 0x32, 0x9a, 0x23, 0xdb, 0x42, 0xc9, 0x2a, - 0x95, 0x8e, 0x10, 0x33, 0xb9, 0x53, 0xbe, 0x32, 0x9b, 0x21, 0x90, 0x39, 0xfc, 0x41, 0xb0, 0x08, - 0x20, 0x05, 0xbd, 0x31, 0x98, 0x21, 0x90, 0x00, 0xc9, 0x0c, 0x34, 0xd3, 0x0c, 0x11, 0x80, 0x99, - 0x31, 0xa0, 0x9e, 0x15, 0x98, 0xab, 0x42, 0x01, 0xa3, 0x8d, 0x91, 0x39, 0xe1, 0x20, 0xb9, 0x08, - 0x37, 0xb0, 0x0b, 0x90, 0x32, 0x83, 0xaf, 0xa1, 0x8a, 0x72, 0x83, 0x9f, 0x20, 0x05, 0x9b, 0x08, - 0x89, 0x33, 0xb8, 0x89, 0x00, 0x80, 0x72, 0x04, 0xbf, 0x20, 0x01, 0x09, 0xbb, 0x24, 0x99, 0x11, - 0x8c, 0x07, 0x0e, 0x13, 0x98, 0xb9, 0x49, 0x14, 0xc8, 0x1b, 0x04, 0x98, 0x38, 0xa0, 0x89, 0x8b, - 0x07, 0x1a, 0xd8, 0x28, 0x10, 0xb1, 0x49, 0xb1, 0x0b, 0x04, 0x10, 0xbd, 0x21, 0x42, 0xc8, 0x38, - 0xf9, 0x39, 0x22, 0x08, 0xf1, 0x49, 0x8a, 0x23, 0x9d, 0x83, 0x2b, 0xa1, 0x24, 0xca, 0x0c, 0x94, - 0x48, 0xda, 0x01, 0x40, 0xb8, 0x22, 0xea, 0x30, 0x1b, 0x07, 0x8b, 0x91, 0x0a, 0x43, 0xb9, 0xd9, - 0x3a, 0x26, 0xb9, 0x30, 0xb8, 0x12, 0x10, 0xc9, 0x9d, 0x43, 0x90, 0x04, 0xaf, 0x13, 0x88, 0x01, - 0xa9, 0x88, 0x0b, 0x65, 0xc8, 0x2a, 0x90, 0x34, 0xc8, 0x08, 0xaa, 0x42, 0x92, 0xbc, 0x18, 0x43, - 0x8b, 0x84, 0x8d, 0x04, 0x18, 0x90, 0xa9, 0x89, 0x78, 0x94, 0x1b, 0xc8, 0x4a, 0x85, 0x8a, 0x90, - 0x29, 0xa2, 0x30, 0xc9, 0x2d, 0x04, 0xa8, 0x2a, 0xd8, 0x72, 0x90, 0xa0, 0x9a, 0x63, 0xab, 0x04, - 0x29, 0xa0, 0xab, 0x44, 0x90, 0x8b, 0x12, 0x30, 0xf9, 0x2f, 0x93, 0x08, 0xa9, 0x42, 0xd8, 0x28, - 0x00, 0x00, 0xa9, 0x11, 0xba, 0x0a, 0x71, 0x13, 0xbd, 0x24, 0x8c, 0x01, 0x98, 0x58, 0x91, 0x88, - 0x9c, 0x83, 0x0d, 0x04, 0x38, 0xc8, 0x00, 0x99, 0x01, 0x39, 0xf8, 0x40, 0x20, 0xf9, 0x18, 0x12, - 0x99, 0x11, 0xdc, 0x58, 0xa0, 0x19, 0x12, 0xb0, 0x3a, 0xa4, 0x0c, 0x25, 0xda, 0x21, 0xc8, 0x1a, - 0x83, 0x28, 0x98, 0x02, 0xac, 0x42, 0x2a, 0xb6, 0x8b, 0x73, 0xc8, 0x19, 0x81, 0x32, 0xac, 0x98, - 0x11, 0x30, 0xea, 0x42, 0xdb, 0x30, 0x02, 0xad, 0x28, 0x13, 0x18, 0xe3, 0x4b, 0xd1, 0x21, 0x0a, - 0x91, 0xac, 0x32, 0x85, 0x0e, 0xa2, 0x41, 0x89, 0xa1, 0xaa, 0x11, 0x18, 0x94, 0x89, 0x8c, 0x31, - 0xa4, 0x9e, 0x72, 0xa1, 0x8a, 0x19, 0xa8, 0x81, 0x73, 0x88, 0xc1, 0x10, 0x19, 0x81, 0xfc, 0x38, - 0x03, 0x9c, 0x28, 0x14, 0x9b, 0x80, 0x40, 0x98, 0xaa, 0x06, 0x1a, 0x9d, 0x04, 0x40, 0xe8, 0x0a, - 0x05, 0x99, 0x29, 0x92, 0x98, 0x2b, 0x02, 0xa0, 0x99, 0x56, 0x98, 0xaa, 0x08, 0x33, 0xa8, 0x29, - 0xca, 0x31, 0xd4, 0x5c, 0x90, 0x98, 0x24, 0x8c, 0x00, 0x98, 0x85, 0x3b, 0xc0, 0x98, 0x8a, 0x36, - 0xb9, 0xa8, 0x61, 0x8a, 0x83, 0xbc, 0x38, 0x85, 0x1b, 0x33, 0xe0, 0x82, 0x4b, 0x92, 0x9d, 0x16, - 0x8a, 0x88, 0xbb, 0x27, 0xa9, 0x10, 0xa0, 0x22, 0xac, 0x21, 0xa4, 0x0e, 0xa0, 0x62, 0xca, 0x31, - 0x01, 0xca, 0x08, 0x15, 0xab, 0x32, 0xd9, 0x31, 0xb8, 0x00, 0x10, 0x09, 0x23, 0xa2, 0xd9, 0x0d, - 0x84, 0x0e, 0xa0, 0x40, 0xa0, 0x43, 0xba, 0x92, 0x0b, 0x20, 0x01, 0xf4, 0x4a, 0x90, 0x98, 0x22, - 0x0f, 0x85, 0x1a, 0xa2, 0x9d, 0x22, 0x10, 0xa1, 0x0d, 0x83, 0x1b, 0x86, 0x28, 0xd8, 0x98, 0x5c, - 0xb4, 0x1a, 0x10, 0x10, 0xd3, 0x0c, 0x08, 0x02, 0xa0, 0x58, 0xa0, 0x1d, 0x05, 0x88, 0xcb, 0x41, - 0x81, 0xa9, 0x88, 0x79, 0xb2, 0x3a, 0x93, 0x9b, 0xaa, 0x55, 0xb0, 0x2b, 0xa2, 0x44, 0xd9, 0x39, - 0xd0, 0x20, 0x91, 0x88, 0xb9, 0x29, 0x22, 0x05, 0xcb, 0x41, 0xb0, 0x19, 0x21, 0xc9, 0xd9, 0x51, - 0x01, 0x88, 0x09, 0x15, 0x9a, 0x9c, 0x82, 0x83, 0x0e, 0x24, 0xba, 0x08, 0x41, 0x83, 0x9e, 0xa0, - 0x0d, 0x16, 0x0c, 0x83, 0xac, 0x12, 0x48, 0xb3, 0x9d, 0x32, 0x98, 0x98, 0x4b, 0x95, 0x1d, 0x03, - 0x80, 0xba, 0x8a, 0x26, 0xb8, 0xa9, 0x61, 0x91, 0x0a, 0x13, 0xcb, 0x39, 0x02, 0xf3, 0x2b, 0x1a, - 0x33, 0xc6, 0x2d, 0xa2, 0x08, 0x0a, 0xa2, 0x58, 0xa1, 0x38, 0xb1, 0x0c, 0xa1, 0x73, 0xb0, 0x1a, - 0xc8, 0x68, 0x91, 0x00, 0x99, 0x0a, 0x86, 0x0a, 0x09, 0x02, 0xaa, 0x33, 0xae, 0x34, 0x99, 0x04, - 0x8b, 0xf9, 0x10, 0x81, 0xb8, 0x29, 0x42, 0xa2, 0x89, 0x24, 0xaf, 0x34, 0xbc, 0x42, 0xd9, 0x40, - 0x01, 0xbb, 0x08, 0x35, 0xcb, 0x12, 0x0a, 0xd3, 0x2a, 0x11, 0xc9, 0x31, 0x08, 0x00, 0xdc, 0x51, - 0x98, 0x88, 0xd9, 0x71, 0x98, 0x18, 0xa1, 0x18, 0x09, 0x32, 0xc1, 0x2a, 0x12, 0xea, 0x29, 0xa9, - 0x15, 0x18, 0xbc, 0x31, 0x81, 0xa0, 0x1d, 0xf1, 0x20, 0x80, 0x30, 0xf8, 0x20, 0x08, 0x2b, 0x96, - 0x8b, 0x21, 0x99, 0x03, 0x9e, 0x21, 0x13, 0x9b, 0xbd, 0x36, 0x88, 0x08, 0x19, 0xc1, 0xb8, 0x7c, - 0x93, 0xdb, 0x50, 0xa2, 0x9b, 0x81, 0x51, 0x99, 0xb1, 0x30, 0x8a, 0x9a, 0x15, 0x10, 0xea, 0x40, - 0x22, 0xe9, 0x09, 0x14, 0xba, 0x09, 0x90, 0x14, 0x39, 0xbb, 0x16, 0x18, 0x9a, 0x19, 0xf0, 0x1c, - 0x34, 0xc1, 0x1a, 0x08, 0x00, 0x98, 0x10, 0x9c, 0x15, 0x98, 0x0d, 0xa8, 0x17, 0x5a, 0xb8, 0x09, - 0x21, 0xa0, 0x29, 0xd9, 0x11, 0x4b, 0xa5, 0x2a, 0x89, 0x21, 0x42, 0xfb, 0x08, 0x22, 0xac, 0x24, - 0xab, 0x81, 0x29, 0x12, 0xcf, 0x11, 0x11, 0x81, 0xbc, 0x33, 0xb2, 0x2d, 0x90, 0x24, 0xab, 0x22, - 0x19, 0xc8, 0x72, 0xa1, 0xae, 0x23, 0xbb, 0x42, 0xa2, 0x1b, 0x85, 0xbb, 0x72, 0xb2, 0x8b, 0x04, - 0xac, 0x12, 0x8a, 0x11, 0x16, 0x9c, 0x89, 0x06, 0x09, 0xa1, 0x09, 0x88, 0x01, 0x89, 0x84, 0x71, - 0xf1, 0x18, 0x98, 0x90, 0x2a, 0x15, 0xa9, 0x48, 0xfa, 0x32, 0xa9, 0x18, 0x13, 0xa8, 0x9b, 0x20, - 0xaa, 0x11, 0x52, 0x97, 0x9f, 0x22, 0x89, 0xa1, 0x6a, 0x92, 0x9c, 0x80, 0x32, 0x98, 0xaa, 0x45, - 0xaa, 0x0a, 0x93, 0x71, 0xd9, 0x13, 0x99, 0x99, 0x88, 0x17, 0x09, 0x91, 0xab, 0x49, 0x83, 0x99, - 0x81, 0x1c, 0x93, 0x10, 0xf9, 0x3e, 0x03, 0x89, 0xb0, 0x1d, 0x04, 0x10, 0x99, 0x8b, 0x91, 0x73, - 0xc3, 0x39, 0xd9, 0x20, 0x04, 0xba, 0x9c, 0x42, 0x88, 0x82, 0x9f, 0x22, 0x18, 0x96, 0x9c, 0x20, - 0x80, 0x10, 0xb9, 0x80, 0xaa, 0x74, 0xd2, 0x08, 0x89, 0x42, 0xb0, 0x8a, 0x98, 0x43, 0x0a, 0x07, - 0xca, 0x39, 0x05, 0x99, 0xba, 0x21, 0x91, 0x60, 0xf8, 0x38, 0x88, 0x03, 0xab, 0x01, 0x0b, 0x84, - 0x34, 0x9d, 0xb0, 0x39, 0x92, 0xb9, 0x41, 0x1c, 0xa4, 0x38, 0xe9, 0x30, 0x89, 0x86, 0x1b, 0x98, - 0x18, 0x07, 0x8a, 0x91, 0x9a, 0x21, 0x15, 0xab, 0xa8, 0x41, 0xa8, 0x09, 0x95, 0x1b, 0x08, 0x17, - 0x8c, 0xd0, 0x49, 0x80, 0x80, 0x0b, 0x86, 0xaa, 0x70, 0xb3, 0xba, 0x48, 0x85, 0x98, 0xb9, 0x61, - 0xb0, 0x40, 0x98, 0x90, 0x89, 0x32, 0xa9, 0xd9, 0x2a, 0x27, 0xcb, 0x08, 0x12, 0x09, 0x31, 0xa8, - 0xbd, 0x42, 0x28, 0x13, 0xef, 0x28, 0x32, 0xb8, 0x1a, 0x00, 0x98, 0x30, 0xd9, 0x89, 0x12, 0x50, - 0xb1, 0xbd, 0x53, 0x02, 0x9a, 0xb2, 0x0f, 0x82, 0x10, 0xb2, 0x1d, 0x80, 0x63, 0xa8, 0xca, 0x40, - 0x90, 0x08, 0x12, 0xba, 0x0b, 0x74, 0xd3, 0x0c, 0x21, 0x80, 0xa9, 0x10, 0x09, 0x04, 0x8b, 0x37, - 0xcd, 0x18, 0x22, 0x92, 0x8d, 0x13, 0x9c, 0x81, 0x09, 0x24, 0xbc, 0x43, 0xad, 0x03, 0x09, 0x31, - 0x31, 0xfa, 0x1b, 0x01, 0x9a, 0x23, 0xa8, 0x10, 0xba, 0x46, 0xa9, 0x18, 0x02, 0x01, 0x8d, 0xa1, - 0x0c, 0x43, 0x88, 0x84, 0xbb, 0x0f, 0x03, 0x0a, 0x13, 0x9f, 0x05, 0x8a, 0x39, 0xd8, 0x41, 0x01, - 0x9b, 0xa9, 0x51, 0xa8, 0x02, 0x40, 0xad, 0x03, 0xad, 0x73, 0xb9, 0x13, 0x89, 0x80, 0x9a, 0x63, - 0xd9, 0x50, 0xa8, 0x80, 0x2a, 0x03, 0x9b, 0x00, 0x11, 0x98, 0xa9, 0x20, 0x11, 0xc5, 0x0e, 0x21, - 0x13, 0xb8, 0xac, 0x88, 0xe8, 0x73, 0x98, 0x88, 0x80, 0x80, 0x40, 0xfa, 0x43, 0x88, 0xa9, 0x4b, - 0xc4, 0x39, 0x88, 0x21, 0xbc, 0x38, 0x04, 0x90, 0x9e, 0x23, 0xc1, 0x29, 0xad, 0x13, 0x00, 0x31, - 0xd1, 0x9c, 0x03, 0x48, 0xc1, 0x28, 0x80, 0x89, 0x0a, 0xca, 0x41, 0x45, 0xb0, 0x9a, 0xab, 0x37, - 0x9b, 0x12, 0x8c, 0x94, 0x1b, 0x94, 0xab, 0x32, 0x16, 0x8c, 0xea, 0x39, 0x03, 0x01, 0x9b, 0x02, - 0x2b, 0xa7, 0x2a, 0x12, 0xdc, 0x43, 0x98, 0xa9, 0x09, 0x42, 0xc1, 0x8b, 0x43, 0x88, 0xfa, 0x61, - 0xc8, 0x10, 0x91, 0x08, 0x88, 0xa8, 0x54, 0xc9, 0x20, 0x80, 0x99, 0x29, 0x92, 0x91, 0x1e, 0xb4, - 0x3b, 0x01, 0x44, 0xda, 0x38, 0x80, 0x89, 0xc1, 0x1e, 0x02, 0x10, 0x88, 0x93, 0x9f, 0x15, 0x08, - 0xba, 0x1b, 0x27, 0xb9, 0x00, 0x98, 0x38, 0x01, 0x02, 0xdd, 0x39, 0x81, 0xb2, 0x1c, 0x22, 0x81, - 0xc1, 0x3c, 0xa5, 0x6a, 0xc2, 0x29, 0xe8, 0x30, 0x80, 0x01, 0xac, 0x10, 0x12, 0x9a, 0x82, 0x1d, - 0x05, 0xaa, 0x90, 0x2b, 0x10, 0x36, 0xe0, 0x9b, 0x61, 0x92, 0xa9, 0x1a, 0x11, 0x81, 0x20, 0xdd, - 0x21, 0x30, 0x95, 0x8d, 0xa3, 0x2c, 0x92, 0x13, 0xbd, 0x09, 0x51, 0xa3, 0x0b, 0x9d, 0x33, 0x14, - 0x9e, 0x02, 0x9a, 0x00, 0x05, 0x9a, 0x9a, 0x63, 0xa2, 0x9b, 0x08, 0x24, 0xd8, 0x38, 0xa9, 0x02, - 0xaa, 0x64, 0xb8, 0x9b, 0x34, 0x01, 0xc8, 0x8a, 0x09, 0x26, 0xba, 0x38, 0xf9, 0x61, 0x88, 0x18, - 0xb8, 0x09, 0x58, 0xc3, 0x0c, 0x94, 0x39, 0xc1, 0x18, 0x9a, 0x05, 0x2b, 0xb4, 0x8c, 0x13, 0x18, - 0x90, 0xa9, 0x29, 0x17, 0x08, 0x8a, 0xe0, 0x4b, 0x95, 0x8a, 0x18, 0x08, 0x14, 0xbb, 0x84, 0x1f, - 0xa1, 0x51, 0xa0, 0x9a, 0x10, 0x32, 0xa9, 0x8b, 0x10, 0xa1, 0x1f, 0x17, 0xbb, 0x40, 0x81, 0xa0, - 0x9c, 0x22, 0x18, 0x15, 0xfb, 0x39, 0xa2, 0x61, 0xb9, 0x89, 0x90, 0x61, 0x80, 0xc8, 0x2a, 0x13, - 0x92, 0x0f, 0xa2, 0x39, 0xa1, 0x31, 0xc8, 0x9e, 0x32, 0x01, 0xbb, 0x52, 0xb0, 0x39, 0xd8, 0x18, - 0x91, 0x78, 0x96, 0xac, 0x21, 0x08, 0x03, 0x9a, 0xaa, 0x42, 0x9a, 0x91, 0x4a, 0xc2, 0x52, 0xb9, - 0x09, 0x1a, 0x33, 0x05, 0x0e, 0xb1, 0x9f, 0x42, 0x92, 0x09, 0xa0, 0x1c, 0x93, 0x30, 0x98, 0x8a, - 0x59, 0x94, 0xab, 0x80, 0x61, 0x90, 0xe0, 0x49, 0xa1, 0x99, 0x03, 0x19, 0xd0, 0x58, 0x10, 0xc0, - 0x9c, 0x50, 0x82, 0x81, 0xcc, 0x40, 0xa1, 0x1a, 0x06, 0xac, 0x11, 0x11, 0x91, 0x8d, 0x12, 0x01, - 0xc8, 0x39, 0xc9, 0x39, 0x04, 0x99, 0x18, 0x9d, 0x25, 0x91, 0x9e, 0x12, 0x90, 0x89, 0x33, 0xcd, - 0x33, 0x98, 0x91, 0xbd, 0x62, 0x91, 0x8b, 0x82, 0x19, 0xb1, 0x64, 0x98, 0xb9, 0x4a, 0x86, 0x89, - 0x89, 0x98, 0x22, 0x8e, 0x83, 0x39, 0xf3, 0x5a, 0xa1, 0x08, 0x89, 0x20, 0x92, 0x0a, 0xc9, 0x24, - 0xcb, 0x6a, 0x92, 0xa9, 0x20, 0x32, 0xf0, 0x2b, 0x94, 0x1a, 0xb3, 0x69, 0xd1, 0x09, 0x02, 0x08, - 0xa8, 0x19, 0x33, 0xda, 0x18, 0x29, 0xa5, 0x1d, 0x85, 0x0c, 0x81, 0x98, 0x32, 0xb2, 0x9f, 0x83, - 0x99, 0x63, 0xa9, 0x08, 0x9a, 0x26, 0xa0, 0x9b, 0x03, 0x2b, 0x07, 0x9d, 0x02, 0x18, 0xc1, 0x39, - 0x98, 0x23, 0x08, 0xcb, 0x8a, 0x01, 0x47, 0x9a, 0xb0, 0x40, 0x9d, 0x86, 0x09, 0x89, 0x81, 0x20, - 0xc0, 0x3b, 0x84, 0x68, 0xa0, 0x08, 0xaa, 0x8a, 0x64, 0xa0, 0xba, 0x78, 0xa3, 0x0d, 0x01, 0x29, - 0xb1, 0x21, 0x9c, 0x92, 0x30, 0x01, 0xc8, 0x1c, 0x81, 0x40, 0xf1, 0x1a, 0x23, 0xad, 0x43, 0xab, - 0x04, 0x0b, 0x86, 0x1a, 0xa1, 0x8e, 0x02, 0x40, 0xa0, 0xa9, 0x28, 0xa9, 0x33, 0x89, 0xa9, 0x37, - 0xbc, 0x73, 0xc8, 0x01, 0x19, 0x81, 0xb8, 0x8c, 0x24, 0x89, 0xa8, 0x25, 0x8f, 0x12, 0xb0, 0x09, - 0x8a, 0x45, 0x91, 0xac, 0x88, 0x44, 0xa8, 0x00, 0x91, 0x8f, 0x02, 0x18, 0xd2, 0x5a, 0x91, 0x28, - 0xd0, 0x29, 0x88, 0x20, 0x92, 0xcc, 0x00, 0x39, 0x86, 0x98, 0x0a, 0x03, 0xc8, 0x1b, 0x35, 0xab, - 0x24, 0xa9, 0x9a, 0x48, 0x89, 0x17, 0x9b, 0x02, 0x9f, 0x14, 0x88, 0x8b, 0x83, 0x20, 0xa1, 0xca, - 0x1b, 0x15, 0x1b, 0x85, 0xba, 0x00, 0x21, 0x13, 0xbf, 0x43, 0xc8, 0x81, 0x1c, 0x14, 0x89, 0x82, - 0x9c, 0xaa, 0x84, 0x79, 0xa6, 0x0a, 0x88, 0x10, 0x10, 0xc8, 0x30, 0xab, 0x86, 0x1a, 0xb0, 0x19, - 0x24, 0x28, 0xf1, 0x1d, 0x22, 0x89, 0xa1, 0x0c, 0x91, 0x52, 0x8a, 0xb3, 0x0f, 0x05, 0x99, 0x8a, - 0x15, 0xa9, 0x01, 0x19, 0xa8, 0x30, 0x53, 0xf0, 0x19, 0x00, 0x09, 0xa5, 0x0c, 0x91, 0x88, 0x32, - 0x48, 0xf0, 0x3b, 0x83, 0x0a, 0xd1, 0x29, 0x10, 0xa0, 0x8a, 0x62, 0x92, 0x9c, 0x00, 0x83, 0x9f, - 0x35, 0xb8, 0x2a, 0x82, 0xa0, 0x40, 0xda, 0x30, 0xa1, 0x9b, 0x20, 0x80, 0xfa, 0x78, 0xb3, 0xa9, - 0x0c, 0x34, 0xa8, 0x20, 0x9c, 0x91, 0x53, 0x9b, 0x85, 0x9e, 0x42, 0x90, 0x8a, 0x88, 0x31, 0x90, - 0x12, 0xb8, 0x8b, 0x88, 0x53, 0xfd, 0x30, 0x83, 0x02, 0xce, 0x28, 0x80, 0x21, 0x92, 0xac, 0x18, - 0x39, 0x86, 0x18, 0xec, 0x42, 0xb0, 0x1b, 0x92, 0x48, 0xb0, 0x48, 0xb1, 0x0e, 0x12, 0x81, 0x00, - 0xc9, 0x3b, 0x06, 0xaa, 0x19, 0x16, 0xbb, 0x44, 0xd8, 0x2a, 0x82, 0x08, 0x88, 0x8a, 0x24, 0xc9, - 0x3a, 0xb4, 0x1b, 0x22, 0x10, 0xf8, 0x0d, 0x21, 0x85, 0x0b, 0x83, 0xcb, 0x59, 0x02, 0x28, 0xfb, - 0x41, 0xb9, 0x11, 0xaa, 0x35, 0x9a, 0x81, 0xac, 0x32, 0xa8, 0x41, 0xc8, 0x18, 0xca, 0x73, 0xb8, - 0x88, 0x01, 0x28, 0x91, 0x08, 0x9a, 0x44, 0x01, 0xd1, 0x0c, 0x91, 0x39, 0x15, 0x9a, 0xaa, 0x90, - 0x35, 0x98, 0xce, 0x48, 0x03, 0xba, 0x30, 0x9a, 0x30, 0x93, 0x14, 0xbc, 0x8d, 0x36, 0xd9, 0x8a, - 0x21, 0x15, 0xa8, 0x8d, 0x25, 0xbb, 0x58, 0xa2, 0x09, 0x9b, 0x26, 0xab, 0x91, 0x29, 0x86, 0x0c, - 0x83, 0xbb, 0x32, 0x80, 0x82, 0x08, 0x98, 0x41, 0xc0, 0x9a, 0x37, 0xdc, 0x12, 0x0d, 0x83, 0x0a, - 0x02, 0x8b, 0x22, 0x89, 0x59, 0xb2, 0x8f, 0x12, 0x00, 0x8b, 0x04, 0xd0, 0x8a, 0x20, 0x13, 0x08, - 0x60, 0xe8, 0xb8, 0x78, 0x91, 0x01, 0xcb, 0x31, 0x98, 0x8b, 0x40, 0x84, 0x9b, 0x80, 0xa0, 0xa9, - 0x72, 0x15, 0x99, 0xbc, 0x15, 0x0a, 0x12, 0x89, 0x82, 0x9f, 0x02, 0x2a, 0xe0, 0x49, 0x83, 0x8b, - 0x92, 0x0d, 0x16, 0xbb, 0x42, 0x9b, 0x12, 0x88, 0x0a, 0xa2, 0x3b, 0x26, 0xa0, 0xcc, 0x40, 0x93, - 0x8c, 0x14, 0x8a, 0xc9, 0x52, 0x91, 0x0a, 0x89, 0x81, 0x8a, 0xa8, 0x53, 0xa8, 0x11, 0x0c, 0x87, - 0x0d, 0x21, 0x94, 0x9f, 0x21, 0x81, 0x8a, 0x81, 0x80, 0x18, 0x0b, 0x07, 0x99, 0x1c, 0x03, 0x89, - 0x99, 0x83, 0x3b, 0x13, 0xbb, 0x13, 0xff, 0x70, 0x92, 0xaa, 0x02, 0x8c, 0x24, 0x89, 0x99, 0x8a, - 0x14, 0x9b, 0x80, 0x61, 0xc2, 0x4a, 0xd1, 0x99, 0x51, 0x80, 0x08, 0xc9, 0x29, 0x83, 0x43, 0xea, - 0x19, 0x00, 0x82, 0x82, 0x0e, 0x02, 0x48, 0xb0, 0x39, 0xfc, 0x30, 0x93, 0x8b, 0xb0, 0x4b, 0xb2, - 0x41, 0x80, 0xbb, 0x32, 0xc3, 0x8d, 0x18, 0x25, 0xd9, 0x52, 0xc0, 0x19, 0x10, 0x90, 0x98, 0x4a, - 0xc2, 0x38, 0xa9, 0x14, 0x88, 0x8c, 0x16, 0x88, 0xdd, 0x41, 0xa1, 0x0a, 0x90, 0x08, 0x82, 0x10, - 0x18, 0xf2, 0x4a, 0x10, 0x80, 0xb8, 0x59, 0x12, 0xc9, 0xaa, 0x52, 0xb9, 0x72, 0xd1, 0x0b, 0x14, - 0x0a, 0xb0, 0x28, 0x02, 0x21, 0xdb, 0x10, 0x9a, 0x37, 0xba, 0x90, 0x0a, 0x06, 0x9a, 0x22, 0xcb, - 0x18, 0x23, 0x8b, 0xa7, 0x1d, 0x11, 0x81, 0xd8, 0x1a, 0x22, 0x21, 0xf0, 0x1b, 0x23, 0x10, 0x99, - 0xe8, 0x20, 0x89, 0x25, 0xcd, 0x20, 0x84, 0x19, 0xa0, 0x90, 0x0d, 0x11, 0xb4, 0x0e, 0x90, 0x42, - 0x81, 0xb9, 0x0b, 0x53, 0xa9, 0x24, 0xcb, 0x88, 0x71, 0xc3, 0x09, 0x18, 0x11, 0xba, 0x03, 0xab, - 0x31, 0xed, 0x53, 0xba, 0x40, 0x01, 0x90, 0xae, 0x20, 0x11, 0x10, 0xc1, 0x09, 0xa9, 0x42, 0x93, - 0x8a, 0x99, 0xab, 0x27, 0x89, 0xb1, 0x6a, 0x06, 0xcc, 0x22, 0x8a, 0x81, 0x41, 0xc2, 0x8d, 0x01, - 0x01, 0x9c, 0x02, 0x02, 0x18, 0xca, 0x80, 0x60, 0x00, 0x03, 0x8b, 0xfb, 0x58, 0x91, 0x9c, 0x32, - 0x99, 0xa0, 0x31, 0xbe, 0x01, 0x68, 0x05, 0xaa, 0x8c, 0x13, 0x08, 0x12, 0x3a, 0xc2, 0xbc, 0x48, - 0x02, 0xad, 0x63, 0x91, 0xba, 0x9a, 0x33, 0x12, 0x03, 0x8d, 0x88, 0xd1, 0x5a, 0x82, 0xba, 0xca, - 0x72, 0xc4, 0x0b, 0x13, 0x10, 0xa8, 0x58, 0xc8, 0x0b, 0x34, 0x00, 0xd9, 0x2b, 0x06, 0x8a, 0x90, - 0x0b, 0x04, 0x2b, 0x94, 0xbb, 0x48, 0x42, 0xb2, 0x9c, 0x22, 0x0a, 0xb0, 0x10, 0xcb, 0x40, 0x37, - 0xb9, 0x9e, 0x28, 0x21, 0x82, 0xbc, 0x41, 0x80, 0x90, 0x11, 0xc8, 0x9e, 0x44, 0xb1, 0x9b, 0x09, - 0x34, 0x00, 0x81, 0xaa, 0x0c, 0xe1, 0x70, 0xb0, 0x09, 0x22, 0x01, 0xda, 0x1c, 0x07, 0x09, 0xa9, - 0x18, 0x91, 0x3c, 0x86, 0x09, 0xb0, 0x5a, 0x92, 0x89, 0x99, 0x31, 0xc1, 0x50, 0xa0, 0xc8, 0x69, - 0x81, 0xa9, 0x39, 0x88, 0x01, 0xb8, 0x78, 0xd2, 0x2b, 0x03, 0xa8, 0x09, 0x08, 0x92, 0xa0, 0x78, - 0xd3, 0x00, 0x9a, 0x42, 0xfa, 0x41, 0x91, 0x89, 0x0a, 0x21, 0x98, 0x08, 0x21, 0x8b, 0xb1, 0xbb, - 0x27, 0x8f, 0x93, 0x30, 0x10, 0xec, 0x09, 0x12, 0x38, 0x88, 0x22, 0xf0, 0x3a, 0xb4, 0x5b, 0xd1, - 0x48, 0xc1, 0x8a, 0x21, 0x91, 0x9b, 0x73, 0xd1, 0x2a, 0x82, 0x1b, 0x94, 0x2a, 0xa3, 0x8c, 0x81, - 0x18, 0xb0, 0x70, 0x82, 0xca, 0x88, 0x28, 0x03, 0x8a, 0x71, 0xd8, 0x18, 0x00, 0xa4, 0x0b, 0x1b, - 0x07, 0xa9, 0x98, 0x8a, 0x71, 0x83, 0x89, 0x00, 0xba, 0x4a, 0x17, 0x99, 0x8a, 0x02, 0x1a, 0xd0, - 0x3a, 0x91, 0x73, 0xe1, 0x09, 0xb9, 0x63, 0x91, 0x90, 0x9d, 0x24, 0x90, 0x09, 0x98, 0x28, 0x90, - 0x42, 0xf9, 0x1a, 0x13, 0x81, 0x9b, 0x01, 0xaa, 0x36, 0x8a, 0xb2, 0x9f, 0x31, 0x33, 0xfb, 0x0c, - 0x23, 0xa1, 0x8d, 0x12, 0x98, 0x93, 0x78, 0xc8, 0x08, 0x10, 0x80, 0x01, 0x8f, 0x13, 0x1b, 0x84, - 0x8c, 0x10, 0x98, 0x28, 0xa1, 0xae, 0x32, 0x20, 0x06, 0xad, 0x00, 0x10, 0x10, 0x99, 0x88, 0x0a, - 0x80, 0x66, 0xb9, 0x18, 0x30, 0xc2, 0x8a, 0xdb, 0x51, 0x12, 0xb9, 0x99, 0x48, 0x11, 0xb1, 0x0b, - 0x04, 0xbc, 0x74, 0xc8, 0x8a, 0x20, 0x52, 0xa2, 0xbc, 0x19, 0x25, 0x88, 0x89, 0xf3, 0x4a, 0x82, - 0x99, 0x99, 0x99, 0x37, 0x9a, 0x02, 0x9f, 0x12, 0x80, 0x00, 0x9b, 0x22, 0x30, 0xd1, 0x2c, 0x92, - 0x39, 0x84, 0xcc, 0x99, 0x59, 0x14, 0xa8, 0x9e, 0x32, 0xa0, 0x19, 0x94, 0x1b, 0x00, 0x85, 0x0c, - 0xe8, 0x29, 0x25, 0xa9, 0x80, 0xaa, 0x42, 0x82, 0x8a, 0x98, 0x30, 0x83, 0xa0, 0xcf, 0x12, 0x18, - 0x23, 0xfb, 0x8a, 0x21, 0xa8, 0x19, 0x19, 0x07, 0x3e, 0xb4, 0x0a, 0x10, 0x22, 0xa1, 0x9d, 0xb9, - 0x60, 0x00, 0x01, 0xb8, 0x29, 0x11, 0xc0, 0x99, 0x61, 0x93, 0xbd, 0x71, 0xc0, 0x18, 0x21, 0xb1, - 0x9b, 0x1a, 0x07, 0x0b, 0x88, 0x20, 0xa8, 0x30, 0xd2, 0x49, 0x18, 0x84, 0xc9, 0x3b, 0x93, 0x1a, - 0xc3, 0x40, 0x9f, 0x03, 0x39, 0xa2, 0x9f, 0x11, 0x82, 0x3a, 0xc4, 0x1d, 0x82, 0x11, 0xaf, 0x21, - 0x12, 0xc1, 0x39, 0xca, 0x80, 0x43, 0xca, 0x08, 0x52, 0xd0, 0x4a, 0xa1, 0x2a, 0xa2, 0x3a, 0x86, - 0xab, 0x88, 0x60, 0x91, 0x8c, 0x14, 0x99, 0x98, 0x48, 0xb3, 0x0c, 0x81, 0x28, 0xb2, 0x8e, 0x33, - 0x89, 0x1a, 0x27, 0xcd, 0x29, 0x11, 0xb2, 0x29, 0xb9, 0x36, 0xfb, 0x38, 0x82, 0x08, 0x19, 0x90, - 0xab, 0x51, 0x92, 0x1b, 0xb0, 0x72, 0xf0, 0x08, 0x00, 0x91, 0x01, 0x9b, 0x16, 0xbb, 0x48, 0x85, - 0x1a, 0xba, 0x43, 0xc0, 0x9b, 0x21, 0x17, 0xaa, 0x28, 0xa8, 0x98, 0x49, 0x35, 0xd8, 0x0b, 0x25, - 0xb9, 0x8a, 0x32, 0x91, 0x0d, 0xb2, 0x38, 0xe9, 0x49, 0x05, 0xa9, 0x09, 0x00, 0x92, 0x2a, 0x02, - 0xb8, 0x08, 0x9e, 0x27, 0xb8, 0x0a, 0x21, 0xc9, 0x0a, 0x88, 0x37, 0x0a, 0x92, 0x89, 0x9b, 0x34, - 0xdc, 0x28, 0x98, 0x35, 0xaa, 0x92, 0x0c, 0x90, 0x54, 0x83, 0xac, 0x8a, 0x05, 0x09, 0x8b, 0x01, - 0x32, 0xf9, 0x1a, 0x00, 0xac, 0x44, 0xa3, 0x0e, 0x91, 0x12, 0x1b, 0x94, 0x39, 0x90, 0xae, 0x14, - 0x2a, 0x98, 0x10, 0x85, 0x8e, 0x20, 0xb8, 0x08, 0x42, 0xa8, 0xb3, 0x8e, 0x30, 0xa1, 0x5a, 0xf2, - 0x3a, 0x91, 0x10, 0xd1, 0x1a, 0x24, 0x0a, 0xa3, 0x8d, 0x02, 0x1a, 0x07, 0x8a, 0xaa, 0x69, 0x83, - 0xba, 0x29, 0x12, 0x88, 0xb2, 0xbf, 0x31, 0x02, 0x73, 0xda, 0x00, 0x09, 0x85, 0xab, 0x01, 0x10, - 0xa4, 0x0f, 0x05, 0x9a, 0x82, 0x09, 0x12, 0xbb, 0x88, 0x36, 0xda, 0x2a, 0x83, 0x49, 0xa2, 0x29, - 0xc9, 0x0b, 0x07, 0x89, 0xaa, 0x26, 0xa9, 0x98, 0x20, 0x01, 0x99, 0x01, 0xda, 0x31, 0xaa, 0x46, - 0xb8, 0x88, 0x8b, 0x46, 0xf0, 0x3a, 0xb1, 0x58, 0x98, 0x01, 0xca, 0x41, 0x82, 0xa9, 0x1a, 0x33, - 0xd8, 0x00, 0x0b, 0x17, 0xca, 0x30, 0x88, 0xbb, 0x20, 0x33, 0x98, 0x9d, 0x98, 0x27, 0xb8, 0x30, - 0x88, 0xb9, 0x6a, 0xa4, 0x99, 0x4c, 0x87, 0x0a, 0xb9, 0x33, 0xb9, 0x18, 0x22, 0x89, 0xfb, 0x63, - 0x98, 0xa9, 0x00, 0x11, 0x2b, 0x95, 0xae, 0x11, 0x38, 0x94, 0x9d, 0x22, 0x81, 0x39, 0xfa, 0x10, - 0x1a, 0x96, 0x2a, 0xc2, 0x2b, 0x01, 0x02, 0x98, 0xaf, 0x53, 0xa8, 0x80, 0x0a, 0x16, 0xaa, 0x20, - 0xb8, 0x49, 0x93, 0x2b, 0xf1, 0x80, 0x1a, 0x15, 0xa0, 0x89, 0x18, 0x81, 0x01, 0xad, 0x88, 0x34, - 0x1a, 0xb4, 0x1d, 0xba, 0x36, 0x11, 0xcd, 0x38, 0x92, 0x80, 0x29, 0xb8, 0x22, 0xd8, 0x72, 0xd0, - 0x8a, 0x42, 0x01, 0xac, 0x00, 0x20, 0xa1, 0x29, 0x9a, 0xe3, 0x7a, 0xb3, 0x8c, 0x00, 0x11, 0x03, - 0x8e, 0x82, 0x9a, 0x62, 0xa0, 0x09, 0x91, 0x49, 0xa1, 0x21, 0xbf, 0x53, 0x99, 0x88, 0xba, 0x12, - 0x32, 0x48, 0xf1, 0x1a, 0x39, 0xa7, 0x0c, 0x02, 0x88, 0x30, 0xc8, 0x2a, 0x99, 0x70, 0xa2, 0x89, - 0x8d, 0x14, 0x89, 0x91, 0x2a, 0x03, 0x0a, 0x91, 0xcd, 0x38, 0x80, 0x23, 0xb9, 0xad, 0x75, 0xa1, - 0x98, 0x18, 0x0a, 0x87, 0x8c, 0x02, 0x09, 0x81, 0x02, 0xcf, 0x32, 0xa8, 0x20, 0x89, 0xa8, 0x34, - 0x9e, 0x23, 0x98, 0x1a, 0xa1, 0xb8, 0x72, 0xd0, 0x10, 0x81, 0x09, 0xa4, 0x1e, 0x82, 0x18, 0xa1, - 0x0a, 0x11, 0x95, 0x2c, 0xd0, 0x01, 0x1b, 0xc0, 0x59, 0xa2, 0x0a, 0x40, 0xa3, 0x0f, 0xa3, 0x40, - 0x99, 0xa0, 0x28, 0x28, 0x13, 0x9f, 0xa1, 0x79, 0xb1, 0x3b, 0xc0, 0x41, 0x88, 0xa9, 0x33, 0xac, - 0x06, 0x0c, 0xa2, 0x2c, 0x85, 0x1b, 0xc8, 0x41, 0x98, 0x08, 0x88, 0x22, 0x90, 0x3a, 0xe2, 0x8a, - 0x81, 0x61, 0xa8, 0x8c, 0x03, 0x11, 0xad, 0x02, 0x07, 0x3b, 0xea, 0x32, 0x98, 0x99, 0x12, 0x0a, - 0x00, 0xa2, 0xad, 0x41, 0xc1, 0x30, 0xf8, 0x20, 0x99, 0x15, 0x99, 0x01, 0xcc, 0x20, 0x91, 0x4a, - 0xc2, 0x52, 0xc9, 0x09, 0x11, 0x43, 0xc8, 0x2a, 0xa3, 0x2c, 0x18, 0x87, 0x8d, 0x28, 0xb3, 0x0b, - 0xaa, 0x72, 0xc3, 0x89, 0x30, 0xc0, 0x8a, 0x43, 0x80, 0xb8, 0x0e, 0x15, 0x98, 0x1a, 0x95, 0x1a, - 0xa8, 0x10, 0x1a, 0xb0, 0x73, 0xb2, 0x8c, 0x23, 0x98, 0x04, 0x9f, 0x02, 0xaa, 0x49, 0x82, 0x8b, - 0x91, 0x73, 0xa0, 0xb9, 0x10, 0x61, 0xc9, 0x32, 0xcb, 0x11, 0x10, 0x2a, 0xd0, 0x08, 0x34, 0xba, - 0xbc, 0x36, 0x98, 0x8a, 0x42, 0xf8, 0x20, 0x08, 0xa1, 0x8b, 0x19, 0x47, 0xba, 0x20, 0x88, 0x09, - 0x82, 0xb0, 0x0a, 0x09, 0x15, 0x8d, 0xa2, 0x3a, 0x05, 0x9d, 0x92, 0x41, 0x98, 0x31, 0xe1, 0x0a, - 0x99, 0x47, 0xa9, 0x98, 0x51, 0xba, 0xa2, 0x3b, 0x04, 0x29, 0xb9, 0x84, 0x9f, 0x43, 0xa9, 0x81, - 0x08, 0x19, 0xfb, 0x71, 0xa8, 0x21, 0xba, 0x13, 0x9c, 0x14, 0x8b, 0x13, 0xd9, 0x51, 0x99, 0x03, - 0x9a, 0x39, 0xb2, 0x10, 0xdf, 0x20, 0x88, 0x32, 0xe8, 0x28, 0xb0, 0x61, 0xaa, 0x03, 0x1b, 0xc9, - 0x43, 0xc0, 0x49, 0x80, 0x91, 0x88, 0x8e, 0x04, 0x18, 0x91, 0x0a, 0x98, 0x58, 0x95, 0xaa, 0x09, - 0x02, 0x81, 0x8f, 0x91, 0x51, 0xa8, 0x08, 0x80, 0x08, 0x28, 0x84, 0x91, 0x8f, 0xa2, 0x63, 0xaa, - 0xa0, 0x38, 0x40, 0xf8, 0x3a, 0x88, 0x42, 0xc0, 0x19, 0xc9, 0x44, 0xa9, 0x80, 0x91, 0x3d, 0x95, - 0x0a, 0x83, 0x1d, 0x90, 0x12, 0x0e, 0xa4, 0x2a, 0xa3, 0x1a, 0x93, 0x8d, 0x05, 0x9b, 0xb8, 0x4a, - 0x13, 0xba, 0x16, 0x2b, 0xa4, 0x9a, 0x34, 0xcb, 0x22, 0x9e, 0x14, 0x1b, 0x94, 0x1e, 0x83, 0x0b, - 0x80, 0x89, 0x03, 0x0d, 0x05, 0x9c, 0x02, 0x1a, 0x91, 0x58, 0xc0, 0x98, 0x3b, 0x85, 0x00, 0x8d, - 0x14, 0x88, 0x98, 0x08, 0x81, 0x30, 0xb1, 0x01, 0xaf, 0x42, 0xb1, 0x28, 0xac, 0x11, 0x39, 0xe1, - 0x18, 0x9a, 0x28, 0x38, 0x37, 0xef, 0x31, 0x00, 0xb8, 0x18, 0x2b, 0x97, 0x1a, 0x12, 0xab, 0x19, - 0x17, 0x89, 0x9d, 0x23, 0xa0, 0x2a, 0xa0, 0x08, 0x86, 0x0d, 0x85, 0x8b, 0x11, 0x82, 0xb9, 0x0c, - 0x25, 0x00, 0xc9, 0x3a, 0x93, 0xcc, 0x51, 0xba, 0x12, 0x1b, 0x25, 0xc0, 0x2b, 0x84, 0x08, 0x8a, - 0x93, 0x1c, 0xe1, 0x60, 0x90, 0xa9, 0x52, 0xa0, 0x09, 0x0b, 0x24, 0xd8, 0x2a, 0x12, 0xe0, 0x3a, - 0x12, 0x98, 0xfb, 0x10, 0x10, 0xd8, 0x21, 0x39, 0xc0, 0x58, 0x91, 0x9b, 0x12, 0x41, 0xb1, 0x8f, - 0x02, 0x20, 0xb0, 0x2a, 0x93, 0xad, 0x30, 0xba, 0x17, 0x1a, 0xa3, 0x0b, 0xb8, 0x68, 0x81, 0xab, - 0x91, 0x7a, 0xb8, 0x15, 0xa8, 0x0d, 0x07, 0x1a, 0xb8, 0x11, 0x12, 0x99, 0xa9, 0x21, 0x82, 0x8f, - 0x02, 0x09, 0xb1, 0x5b, 0xa0, 0x89, 0x23, 0x72, 0xb8, 0x1c, 0x95, 0x1b, 0xc9, 0x61, 0xc0, 0x20, - 0xaa, 0x13, 0x1b, 0x86, 0x08, 0x0b, 0xa4, 0x4b, 0xd1, 0x29, 0x91, 0x01, 0x1d, 0x91, 0x18, 0x05, - 0xb8, 0x1e, 0xa3, 0x71, 0xb9, 0x29, 0x04, 0xc8, 0x29, 0x91, 0x2a, 0xc8, 0x92, 0x6a, 0xd8, 0x20, - 0x12, 0xc9, 0x30, 0xc0, 0x48, 0xb9, 0x31, 0x98, 0x18, 0x85, 0x0e, 0x01, 0x90, 0x39, 0xa1, 0x8c, - 0x37, 0xac, 0x02, 0x18, 0x88, 0xc2, 0x0e, 0x15, 0xab, 0x80, 0x30, 0xba, 0x46, 0xda, 0x10, 0x08, - 0x01, 0x90, 0x1c, 0x05, 0x98, 0x08, 0x88, 0x1a, 0x94, 0x9a, 0x18, 0xba, 0x73, 0x93, 0x90, 0xad, - 0x26, 0x8a, 0xc1, 0x49, 0x91, 0x19, 0xb0, 0x1b, 0x11, 0xb8, 0x77, 0xd9, 0x28, 0x00, 0xa0, 0x28, - 0x80, 0x89, 0x13, 0x9c, 0xb3, 0x8f, 0x05, 0x89, 0xa2, 0x3b, 0x93, 0x18, 0x94, 0x8f, 0x03, 0x99, - 0x32, 0xca, 0x10, 0x28, 0x33, 0xf9, 0x1f, 0x91, 0x11, 0x08, 0xa0, 0x0b, 0x21, 0x03, 0xbe, 0x2a, - 0x35, 0xd2, 0x0c, 0x92, 0x18, 0x83, 0x29, 0xa8, 0xd8, 0x7a, 0x82, 0x9a, 0x10, 0x85, 0x1c, 0xa0, - 0x20, 0xba, 0x33, 0x12, 0xaf, 0x01, 0x8c, 0x24, 0xa8, 0x09, 0x31, 0x9c, 0xa7, 0x4b, 0xa8, 0x30, - 0x92, 0x1c, 0x14, 0xaf, 0x31, 0x10, 0x92, 0x9f, 0x14, 0x9a, 0x98, 0x01, 0x78, 0xc0, 0x3a, 0xb0, - 0x41, 0x0a, 0xa3, 0x2b, 0xd1, 0x19, 0x35, 0xcb, 0x30, 0xa8, 0x23, 0xcd, 0x31, 0xa9, 0x18, 0x84, - 0xa0, 0x0e, 0x14, 0x99, 0x1a, 0x13, 0x80, 0xad, 0x03, 0x58, 0xfa, 0x59, 0x80, 0x90, 0x18, 0x88, - 0x99, 0x40, 0x86, 0x8a, 0x80, 0x28, 0x98, 0xba, 0x31, 0x07, 0xac, 0x1b, 0x16, 0xab, 0x31, 0x20, - 0xe2, 0x8b, 0x41, 0x82, 0xca, 0x38, 0x85, 0x0c, 0x81, 0x3b, 0xb6, 0x5b, 0xb2, 0x8a, 0x20, 0x09, - 0x03, 0x9c, 0x33, 0xa9, 0x98, 0x88, 0x32, 0xfc, 0x2b, 0x07, 0x80, 0xac, 0x14, 0x09, 0x98, 0x23, - 0xca, 0x1b, 0xa2, 0x72, 0xa0, 0x30, 0xc2, 0x9f, 0x22, 0x00, 0x9c, 0x22, 0x9a, 0x23, 0xcf, 0x25, - 0x99, 0x08, 0x08, 0x02, 0xcb, 0x21, 0x88, 0x93, 0x0d, 0x02, 0x89, 0x25, 0xca, 0x99, 0x29, 0x52, - 0xb2, 0xdc, 0x41, 0xa1, 0x0a, 0xb0, 0x52, 0xa9, 0x52, 0xb0, 0x0a, 0x88, 0x63, 0xc2, 0x0a, 0x01, - 0x29, 0xe1, 0x40, 0xa9, 0x29, 0x21, 0xd8, 0x99, 0x3c, 0x05, 0x90, 0x9c, 0x42, 0xcb, 0x32, 0x00, - 0x38, 0xfa, 0x21, 0xc8, 0x2a, 0x94, 0x40, 0x90, 0xb8, 0x69, 0xc0, 0x29, 0x14, 0xba, 0x09, 0xa2, - 0x8c, 0x10, 0x45, 0xb0, 0xcb, 0x22, 0x01, 0xca, 0x40, 0x93, 0x2b, 0xc8, 0x42, 0xac, 0x22, 0x32, - 0xc1, 0xaf, 0x01, 0x10, 0x08, 0x43, 0xea, 0x20, 0x10, 0xb1, 0xad, 0x2a, 0x06, 0xab, 0x43, 0x89, - 0x91, 0x9b, 0x72, 0xb1, 0x08, 0x29, 0x94, 0xdd, 0x68, 0x82, 0x8a, 0xa0, 0x20, 0xba, 0x29, 0x35, - 0xb1, 0xaf, 0x53, 0xa0, 0x0a, 0x12, 0x00, 0xe1, 0x2a, 0x83, 0xad, 0x21, 0x24, 0xc8, 0x8d, 0x02, - 0x18, 0xc0, 0x60, 0x81, 0xab, 0x22, 0x99, 0x81, 0x88, 0x29, 0xc6, 0x1d, 0x82, 0x18, 0x98, 0x30, - 0x03, 0xad, 0x28, 0x80, 0xc8, 0x71, 0x94, 0xac, 0x02, 0x28, 0xb1, 0x2a, 0x31, 0xe3, 0xad, 0x31, - 0x10, 0x99, 0x35, 0xea, 0x18, 0x90, 0x31, 0xf9, 0x28, 0x81, 0x80, 0xac, 0x44, 0xb8, 0x29, 0x93, - 0x00, 0xfb, 0x58, 0xa1, 0x18, 0xb1, 0x59, 0xd1, 0x1a, 0x12, 0x82, 0xac, 0x01, 0x82, 0x1e, 0x83, - 0x8a, 0x18, 0x17, 0xbb, 0x80, 0x59, 0xa0, 0x10, 0xa8, 0x11, 0x23, 0xfa, 0x1a, 0x80, 0x43, 0x8b, - 0xc0, 0x51, 0xb8, 0x29, 0xa0, 0x82, 0x28, 0x79, 0xb3, 0x3b, 0xc1, 0x2a, 0x03, 0x00, 0xcf, 0x23, - 0x98, 0xeb, 0x38, 0x43, 0xe2, 0x1b, 0x12, 0xd9, 0x38, 0x02, 0xc0, 0x19, 0x10, 0xe0, 0x3a, 0x04, - 0x39, 0xe2, 0x0a, 0xa8, 0x1b, 0x45, 0x22, 0xf8, 0x5b, 0xa0, 0x10, 0x08, 0x01, 0xba, 0x2a, 0xb2, - 0x8c, 0x33, 0xa9, 0x27, 0xcb, 0xb0, 0x58, 0x02, 0x18, 0xc2, 0x0e, 0x03, 0x0b, 0x83, 0xae, 0x73, - 0xa1, 0x09, 0xc9, 0x11, 0x30, 0xb1, 0x31, 0xf8, 0x8a, 0x24, 0xa9, 0xa8, 0x40, 0x81, 0xb0, 0xbd, - 0x51, 0x91, 0x42, 0xc8, 0x09, 0x88, 0x24, 0x88, 0x98, 0xca, 0x35, 0x9e, 0x12, 0xab, 0x16, 0x88, - 0x98, 0xba, 0x79, 0xa3, 0x10, 0xb8, 0x89, 0x21, 0x32, 0xf9, 0x1c, 0x12, 0x12, 0xd8, 0x0c, 0x13, - 0x99, 0x11, 0x98, 0x89, 0x3a, 0x23, 0xb5, 0x9f, 0x48, 0x83, 0xaa, 0xd0, 0x1a, 0x42, 0x94, 0x8b, - 0x02, 0x01, 0x99, 0x93, 0x9c, 0x12, 0x29, 0x16, 0xff, 0x20, 0x80, 0x13, 0xba, 0x29, 0x90, 0xab, - 0x54, 0xd9, 0x41, 0xbb, 0x35, 0xaa, 0x80, 0x89, 0x51, 0xc2, 0x2d, 0x92, 0x81, 0x0b, 0x35, 0xc9, - 0x9b, 0x61, 0x81, 0x9c, 0x18, 0x13, 0xb9, 0x08, 0x2b, 0x86, 0x0b, 0x33, 0xc0, 0xac, 0x73, 0xb2, - 0x0b, 0xa2, 0x4a, 0xa2, 0x28, 0xc2, 0x9f, 0x25, 0x89, 0xa1, 0x0b, 0x14, 0x18, 0xf0, 0x1a, 0x01, - 0x20, 0xa0, 0x09, 0xbb, 0x41, 0x04, 0xbb, 0x63, 0x80, 0xaa, 0x31, 0xb0, 0x6b, 0x23, 0xaa, 0xb2, - 0xef, 0x31, 0x10, 0xa9, 0x88, 0x29, 0xb3, 0x3c, 0x16, 0xb9, 0x19, 0x21, 0xb3, 0xbf, 0x40, 0x91, - 0x11, 0xb9, 0x30, 0xfb, 0x7a, 0xa2, 0x20, 0xca, 0x51, 0xc1, 0x0b, 0x33, 0xc8, 0x88, 0x30, 0xf2, - 0x1a, 0xa2, 0x40, 0xc0, 0x39, 0xa1, 0x28, 0x81, 0x29, 0xb0, 0x38, 0xc4, 0x8e, 0x99, 0x32, 0x26, - 0xac, 0x01, 0x99, 0x20, 0x1a, 0x04, 0x89, 0x99, 0x40, 0x12, 0xf9, 0x2f, 0x84, 0x1b, 0x91, 0x1b, - 0xb3, 0x6b, 0x82, 0x99, 0x20, 0x08, 0xa2, 0xbd, 0x71, 0xc1, 0x2a, 0x82, 0x90, 0x99, 0x78, 0xb2, - 0xac, 0x58, 0x83, 0xa0, 0x2c, 0x94, 0x1a, 0x01, 0x18, 0xfa, 0x5c, 0x91, 0x18, 0xd8, 0x40, 0x91, - 0x0a, 0x82, 0x0a, 0xd9, 0x41, 0x81, 0xa9, 0x0a, 0x51, 0xb3, 0x0e, 0x83, 0x09, 0x88, 0x89, 0x32, - 0x9c, 0x34, 0x02, 0xfc, 0x09, 0x23, 0xa9, 0x88, 0x12, 0xa0, 0x1f, 0x05, 0x99, 0x09, 0x19, 0x25, - 0xca, 0x9d, 0x23, 0x01, 0x08, 0xa8, 0x9c, 0x9a, 0x47, 0xb0, 0x0a, 0x32, 0x93, 0xeb, 0x58, 0xa8, - 0x12, 0x89, 0x81, 0xbf, 0x50, 0x83, 0x9b, 0x09, 0x35, 0xc8, 0x0a, 0x83, 0x19, 0xb9, 0x57, 0xd8, - 0x09, 0x11, 0x90, 0x98, 0x28, 0xa2, 0x99, 0x28, 0x10, 0x94, 0x8a, 0x35, 0xaa, 0xfc, 0x39, 0x16, - 0xaa, 0x18, 0x80, 0xba, 0x59, 0x12, 0x02, 0x9b, 0x41, 0xc1, 0x9f, 0x41, 0x81, 0x81, 0x9c, 0x82, - 0x0a, 0x09, 0x16, 0xba, 0x1a, 0x12, 0x0a, 0xa8, 0x33, 0x4a, 0xc2, 0x33, 0x9d, 0xa9, 0x90, 0x67, - 0xaa, 0x98, 0x21, 0xc9, 0x49, 0x13, 0x20, 0xaf, 0x84, 0xab, 0x41, 0x82, 0x98, 0x0b, 0x02, 0xdb, - 0x39, 0x84, 0x38, 0xb2, 0x8f, 0x92, 0x30, 0x84, 0x2a, 0x95, 0xaf, 0x00, 0x18, 0x06, 0x8a, 0x02, - 0x9d, 0x01, 0x1a, 0x84, 0x9a, 0x20, 0x10, 0xc5, 0x2d, 0x02, 0x80, 0x9a, 0x03, 0x0b, 0x21, 0x92, - 0xc8, 0x1c, 0x25, 0x40, 0xfa, 0x09, 0x10, 0x80, 0xb1, 0x38, 0xfb, 0x30, 0x04, 0x9c, 0x02, 0x8b, - 0x85, 0x00, 0x0a, 0xca, 0x64, 0xa1, 0x9a, 0x00, 0x41, 0xd0, 0x19, 0x90, 0x58, 0xc2, 0x08, 0x98, - 0x08, 0x04, 0x8d, 0x02, 0xab, 0x33, 0x8b, 0x86, 0x9d, 0x04, 0x0a, 0x13, 0x9b, 0x91, 0x40, 0x95, - 0x2b, 0xbd, 0x73, 0xb0, 0x1a, 0x83, 0x9b, 0x04, 0x9a, 0x98, 0x51, 0x92, 0xb8, 0x3a, 0x30, 0x97, - 0x8a, 0x30, 0xd0, 0x08, 0x80, 0x32, 0xfc, 0x3b, 0x07, 0x9a, 0x99, 0x43, 0x99, 0x98, 0x22, 0x2b, - 0xe4, 0x38, 0xa0, 0x91, 0x0b, 0x22, 0xf1, 0x4a, 0x05, 0x9a, 0x20, 0x30, 0xea, 0x09, 0x12, 0x99, - 0x29, 0xa6, 0x1c, 0xb1, 0x40, 0xe9, 0x3a, 0x04, 0x0b, 0xc2, 0x39, 0xb1, 0x50, 0x80, 0xa1, 0x8a, - 0x4a, 0x86, 0x8c, 0x92, 0x49, 0xa3, 0x0b, 0xb2, 0x2d, 0x05, 0xb8, 0x2a, 0xf2, 0x28, 0x01, 0x01, - 0xbe, 0x32, 0x89, 0x00, 0x9c, 0x16, 0x9a, 0x32, 0xfa, 0x49, 0x01, 0x88, 0x98, 0x0a, 0x20, 0x80, - 0x02, 0x89, 0xdc, 0x50, 0x01, 0xb9, 0x51, 0x99, 0xab, 0x11, 0x73, 0xe2, 0x0a, 0x14, 0xb9, 0x89, - 0x52, 0xb8, 0x20, 0x09, 0x02, 0xab, 0x11, 0x34, 0xfb, 0x99, 0x40, 0xc0, 0x4b, 0x84, 0x19, 0xca, - 0x63, 0xb8, 0x2a, 0x03, 0x88, 0xa8, 0x49, 0xb2, 0x41, 0x9b, 0x8b, 0x27, 0x9f, 0x15, 0x9c, 0x11, - 0x88, 0x11, 0xc8, 0x39, 0xa3, 0x2b, 0xb8, 0x43, 0xbc, 0x12, 0x8b, 0x17, 0xac, 0x15, 0x89, 0x9a, - 0x31, 0x04, 0x89, 0x9a, 0x38, 0xf8, 0x39, 0x32, 0xd0, 0x9d, 0x13, 0x99, 0xa1, 0x7a, 0x82, 0xb8, - 0x3b, 0x83, 0x99, 0x21, 0x31, 0xf0, 0x8f, 0x31, 0x98, 0x88, 0x42, 0xc9, 0x29, 0x90, 0x02, 0x20, - 0xab, 0x46, 0xfa, 0x20, 0x99, 0x04, 0x9d, 0x11, 0x81, 0x8a, 0x10, 0x21, 0xa8, 0x10, 0x2a, 0x37, - 0xcf, 0x41, 0xb8, 0x28, 0x11, 0x91, 0xaf, 0x33, 0x88, 0xd0, 0x39, 0x84, 0x9d, 0x22, 0x80, 0x9a, - 0x10, 0x33, 0xc1, 0xad, 0x21, 0x18, 0xa8, 0x21, 0x00, 0x19, 0x10, 0x17, 0xbf, 0x48, 0x84, 0x9a, - 0xa8, 0x20, 0x80, 0x88, 0x2a, 0x03, 0xf9, 0x58, 0xa0, 0x9a, 0x40, 0x13, 0x8a, 0xa1, 0x4a, 0xc1, - 0x68, 0xa3, 0x8f, 0x82, 0x28, 0xa1, 0x8d, 0x14, 0xaa, 0x14, 0x9f, 0x12, 0x9b, 0x34, 0x99, 0xa2, - 0x9f, 0x05, 0x0a, 0x90, 0x21, 0x92, 0xbb, 0x71, 0xc8, 0x31, 0x10, 0xa8, 0xbb, 0x39, 0x34, 0xc9, - 0x39, 0x92, 0x9f, 0x21, 0x01, 0x88, 0xea, 0x78, 0xb1, 0x0b, 0x23, 0xaa, 0x51, 0x81, 0xb9, 0x39, - 0xa0, 0x39, 0xc3, 0x2a, 0x47, 0xda, 0x29, 0x92, 0x39, 0xa0, 0x31, 0xf8, 0x0d, 0x04, 0x09, 0x91, - 0x09, 0x19, 0x02, 0xaa, 0x18, 0x15, 0x1a, 0x86, 0xae, 0x90, 0x50, 0x84, 0xaa, 0x00, 0x88, 0x98, - 0x28, 0x14, 0x9b, 0x28, 0x03, 0xfa, 0x0f, 0x24, 0xb9, 0x21, 0x9b, 0x13, 0x80, 0x1a, 0xa5, 0x0c, - 0x43, 0x98, 0xf9, 0x4b, 0x82, 0x80, 0xa9, 0x02, 0xb9, 0x1a, 0x83, 0x2e, 0x94, 0x9b, 0x51, 0x93, - 0x0f, 0x23, 0xaa, 0x00, 0x28, 0xc8, 0x3a, 0x13, 0xa2, 0x30, 0xbb, 0xc1, 0x53, 0xbf, 0x70, 0xc2, - 0x19, 0x89, 0x12, 0xb0, 0x39, 0xda, 0x24, 0x8a, 0x18, 0xf3, 0x1a, 0x12, 0x00, 0x10, 0x8b, 0x96, - 0x9f, 0x34, 0x09, 0xb9, 0x48, 0xb8, 0x20, 0x0a, 0x93, 0x59, 0xc0, 0x18, 0x9c, 0x73, 0xb0, 0x08, - 0x89, 0x22, 0x92, 0x1e, 0xc0, 0x22, 0x8c, 0x05, 0x99, 0x00, 0xc8, 0x59, 0xd2, 0x48, 0xb0, 0x20, - 0x89, 0xaa, 0x13, 0x8b, 0x41, 0x01, 0xb1, 0x8f, 0x33, 0x0a, 0xb8, 0x28, 0x81, 0xe8, 0x70, 0xc0, - 0x21, 0xb8, 0x99, 0x10, 0xa0, 0x65, 0x99, 0x99, 0x33, 0x9e, 0x31, 0xdb, 0x11, 0x10, 0x00, 0xc0, - 0x9a, 0x35, 0xad, 0x35, 0x98, 0xaa, 0x38, 0x00, 0xc0, 0x72, 0x98, 0x91, 0xbc, 0x40, 0x92, 0x29, - 0xe3, 0x1a, 0xb1, 0x7a, 0xa4, 0x19, 0x98, 0x31, 0xda, 0x10, 0x81, 0x9c, 0x24, 0x20, 0xeb, 0x19, - 0x12, 0x00, 0xb1, 0x8a, 0x35, 0x9e, 0x12, 0x88, 0x8b, 0x43, 0xc0, 0xaa, 0x38, 0x80, 0x97, 0x1d, - 0x03, 0x9a, 0x04, 0x8a, 0x88, 0x82, 0x3a, 0xc3, 0xb9, 0x7b, 0xa1, 0x62, 0xca, 0x28, 0xc9, 0x41, - 0xa8, 0x22, 0x9d, 0x25, 0x9b, 0x10, 0x91, 0x99, 0xba, 0x71, 0xa3, 0xa8, 0x0a, 0x12, 0x04, 0x0c, - 0x84, 0x8a, 0x9b, 0x57, 0xd9, 0x29, 0x02, 0x88, 0x9d, 0x13, 0x80, 0x9b, 0x82, 0x48, 0xb0, 0x52, - 0x82, 0xac, 0x91, 0x58, 0x88, 0xab, 0x37, 0x8c, 0x91, 0x18, 0x98, 0x00, 0x81, 0x80, 0x9c, 0xaa, - 0x37, 0x4a, 0xc1, 0x2a, 0xa8, 0x51, 0xc9, 0x21, 0x89, 0x32, 0xc8, 0x99, 0x62, 0xa8, 0x01, 0x8f, - 0x15, 0xb9, 0x59, 0xb8, 0x29, 0x82, 0x09, 0x14, 0xcd, 0x40, 0xb0, 0x11, 0x08, 0x82, 0xbc, 0x30, - 0x14, 0x99, 0xcc, 0x70, 0xc1, 0x3a, 0x92, 0x30, 0xf9, 0x49, 0x91, 0x0a, 0x10, 0x11, 0xf0, 0x2a, - 0x81, 0x9a, 0x13, 0x09, 0x88, 0x08, 0x31, 0x82, 0xf8, 0x2f, 0xa5, 0x19, 0x90, 0x22, 0x9b, 0xb1, - 0x59, 0x91, 0xbc, 0x71, 0x81, 0x99, 0x1b, 0x86, 0x29, 0xb0, 0x41, 0xd9, 0x1a, 0x05, 0xa9, 0x80, - 0x0a, 0x17, 0x8b, 0x21, 0xa8, 0xaa, 0x73, 0x90, 0x9a, 0x12, 0x08, 0xa0, 0xbb, 0x74, 0xb0, 0x2b, - 0xa3, 0x9b, 0x08, 0x67, 0xb0, 0x0a, 0x18, 0x86, 0xab, 0x41, 0xc1, 0x19, 0x04, 0x9a, 0xa1, 0x3a, - 0x24, 0xd9, 0x9a, 0x38, 0x85, 0x19, 0x89, 0x12, 0xf9, 0x3b, 0x93, 0x98, 0x1b, 0x32, 0x84, 0xbe, - 0x50, 0x10, 0x99, 0x20, 0xc2, 0x39, 0xda, 0x21, 0xd8, 0x59, 0x14, 0xdb, 0x18, 0xa8, 0x22, 0x01, - 0x19, 0xe2, 0x0c, 0x03, 0x30, 0x90, 0xa9, 0xad, 0x13, 0x52, 0xdb, 0x02, 0x2d, 0x07, 0xba, 0x29, - 0x02, 0x01, 0xb0, 0x2b, 0xc2, 0x4b, 0x14, 0x98, 0x8d, 0x14, 0xb8, 0x1b, 0x92, 0x69, 0xa1, 0x40, - 0xd9, 0x88, 0x40, 0x92, 0xa8, 0x1e, 0x82, 0x01, 0x90, 0x8f, 0x84, 0x29, 0xa2, 0x0c, 0x82, 0x1b, - 0x16, 0xb9, 0x90, 0x3b, 0x17, 0xab, 0x32, 0xa9, 0x88, 0x18, 0x08, 0xab, 0x68, 0x05, 0xe8, 0x1c, - 0x83, 0x30, 0xbb, 0x93, 0xad, 0x43, 0x1a, 0x14, 0xea, 0x28, 0xa2, 0x20, 0x99, 0xaa, 0x22, 0x05, - 0x9a, 0x28, 0xfb, 0x54, 0xc9, 0x30, 0xa9, 0x02, 0x1a, 0xc3, 0x2d, 0xa1, 0x52, 0xc8, 0x09, 0x00, - 0xa2, 0x1a, 0x03, 0x0f, 0x85, 0x0a, 0x81, 0xa9, 0x23, 0x29, 0x94, 0x9d, 0x98, 0x63, 0x98, 0x0b, - 0x14, 0x99, 0x91, 0x2f, 0x93, 0x9b, 0x23, 0x40, 0xf9, 0x1a, 0x12, 0x22, 0xdc, 0x12, 0x99, 0x8a, - 0x24, 0x9b, 0x91, 0x44, 0x09, 0xf9, 0x1a, 0x12, 0x03, 0xbc, 0x92, 0x6a, 0xc8, 0x24, 0xca, 0x10, - 0x88, 0x14, 0x1b, 0xc1, 0x2b, 0x33, 0x03, 0xfa, 0x1f, 0x12, 0xa0, 0x1a, 0x81, 0x2a, 0xa1, 0x08, - 0xba, 0x70, 0x90, 0x83, 0xad, 0x28, 0x02, 0x8c, 0x95, 0x4c, 0x93, 0x1c, 0xb0, 0x4a, 0xc2, 0x68, - 0x98, 0x00, 0x8a, 0x42, 0x91, 0x9a, 0x0a, 0x82, 0xca, 0x01, 0x70, 0xb8, 0x29, 0x94, 0xaf, 0x34, - 0x90, 0x8a, 0xb9, 0x45, 0xb9, 0x11, 0x88, 0xa0, 0x70, 0xc1, 0x08, 0x99, 0x20, 0x95, 0x8b, 0x05, - 0x19, 0xd0, 0x30, 0xa8, 0x99, 0x30, 0x01, 0xa8, 0x1f, 0x86, 0x8c, 0x02, 0x00, 0x19, 0xc0, 0x58, - 0xc3, 0x1d, 0x83, 0x89, 0x88, 0x31, 0xd0, 0x8b, 0x11, 0x22, 0xc1, 0x1f, 0x84, 0x99, 0x10, 0x91, - 0x38, 0xb8, 0x52, 0xbb, 0x80, 0x71, 0xb4, 0x8a, 0xac, 0x12, 0x33, 0xc9, 0x32, 0xec, 0x11, 0x89, - 0x13, 0xae, 0x33, 0xa8, 0xa9, 0x0b, 0x34, 0xa2, 0x38, 0xb8, 0xac, 0x20, 0x27, 0x2a, 0xc9, 0x25, - 0xab, 0x08, 0x89, 0x03, 0x44, 0x1c, 0xf3, 0x0d, 0x31, 0x88, 0xc0, 0x38, 0x93, 0x9d, 0x01, 0x48, - 0xf0, 0x38, 0x91, 0x88, 0x8b, 0x16, 0x09, 0x99, 0x10, 0x10, 0x90, 0x2d, 0x87, 0x0a, 0x88, 0x00, - 0xa9, 0x29, 0x71, 0xb0, 0x08, 0x8a, 0x24, 0xc9, 0x18, 0x21, 0x22, 0xcf, 0x50, 0xa0, 0xa0, 0x2e, - 0x84, 0x89, 0x02, 0xa9, 0x09, 0x19, 0x27, 0x8c, 0x81, 0xa9, 0x23, 0x9d, 0x11, 0x83, 0x0d, 0x12, - 0x81, 0xbd, 0x29, 0x07, 0x19, 0x98, 0x99, 0x35, 0xba, 0x11, 0xda, 0x31, 0xa8, 0xbb, 0x23, 0x1a, - 0x27, 0xbb, 0x01, 0x1b, 0xd1, 0x71, 0x81, 0x0b, 0x83, 0x09, 0x82, 0x8f, 0x43, 0xa8, 0x1c, 0xc1, - 0x0b, 0x62, 0x03, 0xbb, 0x15, 0x9f, 0x13, 0x9b, 0x21, 0x90, 0x01, 0xaf, 0x34, 0xa9, 0x88, 0x31, - 0x94, 0x9f, 0x21, 0x88, 0x01, 0x19, 0x92, 0xd9, 0x2b, 0x14, 0xd0, 0x19, 0x11, 0x91, 0x8c, 0x23, - 0xb2, 0x1e, 0x92, 0xa0, 0x0b, 0x13, 0x70, 0xe2, 0x1a, 0xa1, 0x49, 0xa2, 0x20, 0xc9, 0x0c, 0x26, - 0xa8, 0x09, 0x18, 0x88, 0x91, 0x1d, 0xd1, 0x08, 0x41, 0xb3, 0x8f, 0x30, 0x87, 0x8a, 0x80, 0x09, - 0x12, 0x99, 0x89, 0x00, 0x90, 0x48, 0x07, 0xaf, 0x11, 0x00, 0x81, 0x9b, 0x30, 0xd8, 0x21, 0x2b, - 0xb6, 0x1d, 0x14, 0x98, 0xaa, 0x31, 0x22, 0xfb, 0x49, 0x81, 0x89, 0x13, 0x9b, 0x80, 0x2c, 0x86, - 0x88, 0xcb, 0x11, 0x01, 0x98, 0x21, 0xa0, 0x0d, 0x90, 0x34, 0xbb, 0x15, 0x20, 0xca, 0x51, 0xcd, - 0x10, 0x23, 0x29, 0xfa, 0x11, 0x3b, 0x95, 0x29, 0xe0, 0x10, 0x09, 0x93, 0x9b, 0x4b, 0x92, 0x20, - 0xad, 0x93, 0x60, 0x89, 0x13, 0xbf, 0x02, 0x79, 0x92, 0x0a, 0xb8, 0x3a, 0x15, 0xb9, 0xbc, 0x51, - 0x02, 0xb9, 0x11, 0x0c, 0x83, 0x62, 0xc8, 0x0a, 0x01, 0x18, 0x96, 0x0e, 0x01, 0x88, 0x01, 0x89, - 0xb0, 0x3a, 0x37, 0xdb, 0x18, 0x19, 0x34, 0xb8, 0x99, 0x9b, 0x41, 0xa3, 0xae, 0x41, 0x82, 0x1c, - 0x93, 0x0e, 0x91, 0x32, 0x11, 0xcb, 0xbb, 0x72, 0xa2, 0x08, 0xda, 0x50, 0xa1, 0x80, 0x89, 0x48, - 0x02, 0x02, 0xfa, 0x2a, 0x81, 0x98, 0x31, 0xbc, 0x05, 0x1b, 0x91, 0x0c, 0x17, 0x0c, 0x83, 0x00, - 0xc9, 0x0c, 0x25, 0x98, 0x09, 0xa0, 0x30, 0xe8, 0x49, 0xa1, 0x00, 0x8a, 0x34, 0xdc, 0x10, 0x10, - 0x12, 0x9a, 0x98, 0xa9, 0x2a, 0x37, 0x08, 0xaf, 0x04, 0x0b, 0x90, 0x11, 0x43, 0x90, 0xca, 0x2a, - 0xc8, 0x60, 0x98, 0x12, 0xcb, 0x10, 0x80, 0x93, 0x09, 0xcb, 0x47, 0x08, 0xcb, 0x40, 0x02, 0x09, - 0x99, 0xab, 0x51, 0xc8, 0x39, 0x02, 0xb8, 0x2a, 0xa5, 0x3c, 0x94, 0x9d, 0x24, 0xca, 0x2a, 0x23, - 0x18, 0x88, 0xc3, 0x8f, 0x13, 0x20, 0xc8, 0x99, 0x55, 0xa8, 0x8a, 0x01, 0x12, 0x9c, 0x80, 0xb0, - 0x21, 0xae, 0x36, 0xaa, 0x88, 0x84, 0x8d, 0x12, 0x01, 0x18, 0xf0, 0x58, 0xa9, 0x11, 0x19, 0x92, - 0x8f, 0x11, 0x93, 0x1e, 0xa0, 0x23, 0x08, 0x9a, 0xa0, 0x11, 0x8b, 0x14, 0xea, 0x1a, 0x41, 0xb2, - 0x0d, 0x34, 0xe9, 0x89, 0x00, 0x28, 0x82, 0x33, 0x2d, 0xca, 0x91, 0x68, 0x80, 0xcd, 0x32, 0x90, - 0x89, 0x28, 0x07, 0xab, 0x80, 0x31, 0x88, 0x1a, 0xd4, 0x98, 0x4b, 0x93, 0x25, 0xdc, 0x3a, 0x03, - 0xa9, 0x59, 0xa1, 0xb8, 0x39, 0x12, 0xb1, 0x9c, 0x37, 0x99, 0xab, 0x00, 0x33, 0xbb, 0x24, 0x90, - 0x39, 0xf8, 0x68, 0x98, 0x29, 0x97, 0x1a, 0x98, 0x0b, 0x94, 0x38, 0x99, 0xd0, 0x59, 0x82, 0x0b, - 0xda, 0x42, 0x09, 0xa3, 0xac, 0x30, 0x86, 0x08, 0x39, 0x99, 0xe3, 0x39, 0x92, 0x1f, 0x84, 0x09, - 0x90, 0x0d, 0x23, 0xac, 0x01, 0x19, 0x83, 0x1b, 0x11, 0xf8, 0x0b, 0x49, 0x07, 0x9d, 0x21, 0x00, - 0x98, 0x1a, 0x84, 0x0a, 0x93, 0x8d, 0x12, 0xa9, 0x38, 0xb5, 0x2d, 0x12, 0x90, 0xc0, 0x1c, 0x03, - 0x8f, 0x80, 0x40, 0x08, 0x82, 0x8d, 0x93, 0x8b, 0x31, 0x34, 0xfa, 0x20, 0x89, 0x01, 0xb2, 0x7b, - 0xb2, 0x3b, 0xf0, 0x08, 0x02, 0x38, 0xc8, 0x39, 0xa1, 0x69, 0xb2, 0x49, 0xb9, 0xcb, 0x71, 0xd3, - 0x18, 0x18, 0x28, 0xd1, 0x88, 0x39, 0x91, 0xab, 0x45, 0xb9, 0x28, 0x03, 0x98, 0xbc, 0x73, 0x91, - 0xcb, 0x81, 0x71, 0xb8, 0x20, 0x80, 0xb8, 0x0c, 0x26, 0xc0, 0x10, 0x89, 0x05, 0xbc, 0x50, 0xa8, - 0x01, 0x90, 0x00, 0xba, 0x28, 0x04, 0x20, 0xac, 0x41, 0xb8, 0x99, 0x53, 0x90, 0xa9, 0x08, 0x42, - 0xd1, 0x4c, 0x84, 0x88, 0x9d, 0x22, 0xb0, 0x2a, 0x06, 0x9a, 0x10, 0x1a, 0x83, 0x0c, 0xda, 0x29, - 0xa6, 0x7a, 0xb1, 0x1b, 0x83, 0x71, 0xb1, 0x8c, 0x82, 0x18, 0xc8, 0x40, 0xc2, 0x3a, 0x02, 0x81, - 0xca, 0x2a, 0x05, 0x98, 0x9b, 0x22, 0xa1, 0x58, 0x04, 0xfa, 0x29, 0x28, 0xe8, 0x10, 0x1a, 0x42, - 0xf0, 0x38, 0xa8, 0x81, 0x29, 0x91, 0x12, 0xbd, 0x30, 0x91, 0x0a, 0x12, 0x14, 0xf9, 0x3a, 0xd0, - 0x68, 0x90, 0x81, 0x8a, 0x0a, 0x86, 0x89, 0x11, 0xb9, 0x09, 0x23, 0x0d, 0xa5, 0x2b, 0x82, 0x29, - 0xcb, 0x01, 0x09, 0x9a, 0x47, 0x98, 0x9a, 0x8a, 0x86, 0x2b, 0x96, 0x1b, 0x21, 0xf9, 0x42, 0xa0, - 0x8b, 0x20, 0x86, 0x8d, 0x81, 0x39, 0xc2, 0x0a, 0x10, 0x19, 0x13, 0xa1, 0xbb, 0x8e, 0x27, 0x8a, - 0x88, 0xaa, 0x44, 0x98, 0x1c, 0x90, 0x25, 0x89, 0x01, 0xeb, 0x21, 0x03, 0xba, 0x28, 0x9d, 0x26, - 0x90, 0xbb, 0x20, 0x19, 0xe1, 0x38, 0xab, 0x26, 0x8a, 0x91, 0x9e, 0x12, 0x33, 0x20, 0xe1, 0x9b, - 0x81, 0x49, 0x95, 0x0a, 0x81, 0x00, 0xbb, 0x1c, 0x35, 0x94, 0x99, 0x0e, 0xa8, 0x02, 0x72, 0xa1, - 0xbb, 0x68, 0x91, 0x8b, 0x92, 0x21, 0x3b, 0xd1, 0xb2, 0x1b, 0x1b, 0x47, 0xa0, 0xac, 0x20, 0x24, - 0xca, 0x28, 0xa3, 0xbc, 0x29, 0xa2, 0x21, 0x04, 0x3d, 0x95, 0x9a, 0x19, 0x38, 0xb5, 0x2c, 0x86, - 0xbb, 0x41, 0x82, 0x09, 0x00, 0xc8, 0x8d, 0x03, 0x18, 0x19, 0xaa, 0xa4, 0x73, 0x9a, 0x11, 0x13, - 0xfc, 0x00, 0x0a, 0xb2, 0x74, 0xa0, 0x18, 0x8a, 0x02, 0x11, 0xac, 0x31, 0xc1, 0x1c, 0x24, 0xac, - 0x10, 0x00, 0x93, 0x9f, 0x83, 0x30, 0xf9, 0x1a, 0x22, 0x81, 0x1a, 0x38, 0xc3, 0x8e, 0x13, 0xa8, - 0x0a, 0x24, 0x90, 0x9d, 0x94, 0x9a, 0x48, 0xa1, 0x39, 0xb4, 0x8f, 0x43, 0xc9, 0x18, 0x80, 0x0a, - 0x05, 0x9a, 0x30, 0x96, 0x0c, 0x28, 0xe3, 0x29, 0x90, 0x80, 0x0a, 0x12, 0x89, 0x80, 0x57, 0xdb, - 0x10, 0x19, 0xb2, 0x1e, 0x92, 0x08, 0x33, 0x9f, 0x05, 0x0a, 0x80, 0x11, 0x90, 0x9a, 0x10, 0xaa, - 0x04, 0x50, 0xc3, 0x1c, 0x93, 0x2a, 0xf9, 0x48, 0x80, 0x9a, 0x18, 0x15, 0x98, 0x8b, 0x16, 0x9a, - 0x00, 0xa1, 0x45, 0x9e, 0x91, 0x00, 0x00, 0x29, 0x86, 0x8a, 0x88, 0xa8, 0x50, 0x92, 0x0b, 0x94, - 0x8b, 0x18, 0x22, 0xfb, 0x79, 0x90, 0x19, 0xc0, 0x28, 0x91, 0x92, 0x2a, 0x0a, 0xb0, 0x46, 0xaa, - 0x32, 0xbd, 0x41, 0x03, 0xbc, 0x09, 0x11, 0x88, 0xd0, 0x0d, 0x16, 0x49, 0xc2, 0x8b, 0x10, 0xa0, - 0x11, 0x1b, 0x86, 0x9c, 0x14, 0xaa, 0x03, 0x0d, 0x14, 0xaa, 0x89, 0x9a, 0x16, 0x2b, 0x95, 0x8b, - 0x40, 0xb2, 0x8a, 0x9c, 0x44, 0xa8, 0x38, 0xdc, 0x51, 0x09, 0x92, 0x09, 0xa8, 0x38, 0xc0, 0x24, - 0x0c, 0xa0, 0x40, 0xa9, 0x90, 0x86, 0x0c, 0x90, 0x91, 0x1a, 0x94, 0x2a, 0xf2, 0x20, 0x31, 0x90, - 0xd1, 0x2b, 0x91, 0x00, 0x88, 0x07, 0x8b, 0xa0, 0x03, 0xae, 0x31, 0x80, 0x05, 0x8d, 0xa1, 0x59, - 0xd9, 0x20, 0x80, 0x91, 0x08, 0xb1, 0xbf, 0x55, 0x80, 0xba, 0x28, 0x01, 0x90, 0x89, 0x44, 0xdb, - 0x12, 0x29, 0xb0, 0x9c, 0x24, 0x09, 0xea, 0x29, 0x03, 0x9c, 0x02, 0x82, 0xab, 0x30, 0x95, 0x0d, - 0x82, 0x08, 0x13, 0xff, 0x20, 0x03, 0xba, 0x21, 0xa9, 0x00, 0x90, 0x29, 0xb8, 0x41, 0x50, 0xa1, - 0xac, 0x35, 0xa1, 0x2b, 0xe3, 0x8b, 0xa8, 0x50, 0xb2, 0x38, 0xa8, 0x17, 0xa9, 0xcb, 0x15, 0x99, - 0x19, 0x14, 0xa9, 0x8c, 0x43, 0xd8, 0x09, 0x12, 0xa0, 0xca, 0x03, 0x48, 0x82, 0x0b, 0x57, 0x9e, - 0x00, 0x10, 0x82, 0x8b, 0x83, 0x9d, 0x01, 0x10, 0x00, 0x8d, 0x04, 0x0f, 0x02, 0x99, 0x00, 0x21, - 0xda, 0x18, 0xb0, 0x21, 0x03, 0xba, 0x80, 0x1d, 0x17, 0x0a, 0x90, 0x19, 0x08, 0x01, 0xdb, 0x19, - 0x38, 0x3a, 0xa6, 0x91, 0xaf, 0x13, 0x2a, 0xc0, 0x1c, 0x85, 0x18, 0x18, 0xdb, 0x30, 0xa3, 0x38, - 0xbe, 0x10, 0x21, 0xb1, 0x12, 0x9f, 0x02, 0x9b, 0x47, 0xbb, 0x21, 0x09, 0xa8, 0x99, 0x25, 0xbc, - 0x35, 0xab, 0xc2, 0x28, 0x81, 0x10, 0xa8, 0x88, 0x20, 0xb9, 0x07, 0x0d, 0x90, 0x09, 0x40, 0x99, - 0x90, 0x01, 0x9b, 0xfb, 0x32, 0x1c, 0x59, 0xb3, 0xbb, 0x6b, 0x1a, 0x05, 0xbb, 0xb1, 0x6a, 0xc2, - 0x21, 0x9a, 0x82, 0x8d, 0x21, 0xa3, 0xc8, 0x0c, 0x61, 0xb9, 0x18, 0x0a, 0x20, 0xab, 0x28, 0x92, - 0x0c, 0x26, 0x09, 0xdb, 0x29, 0x84, 0x8e, 0x00, 0x08, 0x48, 0xa3, 0xbd, 0x20, 0x2b, 0x04, 0xba, - 0x18, 0x0a, 0x84, 0x2e, 0xb0, 0x8c, 0x42, 0x81, 0x9c, 0xbb, 0x7b, 0x81, 0x12, 0x8c, 0x09, 0x49, - 0xa1, 0xa0, 0x81, 0x9e, 0x33, 0x0c, 0xc1, 0x38, 0x29, 0xba, 0xa2, 0x3b, 0x8d, 0x29, 0x50, 0xbb, - 0x93, 0xd2, 0x19, 0x3a, 0x0a, 0x70, 0xb9, 0x92, 0x0b, 0x08, 0x11, 0x32, 0x8f, 0x09, 0x90, 0xa3, - 0xf2, 0xb2, 0x90, 0x00, 0x02, 0xf9, 0x88, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7f, 0xf3, 0x5a, 0x74, 0xda, 0x32, 0x29, 0xb5, - 0x2d, 0x06, 0x0a, 0x47, 0x2a, 0xf8, 0x1a, 0x81, 0x81, 0x28, 0xf0, 0x29, 0xb0, 0x5a, 0x03, 0xbb, - 0x60, 0xa2, 0xab, 0x0a, 0x05, 0x89, 0x20, 0x07, 0xbb, 0x21, 0x11, 0xce, 0x33, 0x8b, 0xb5, 0x5d, - 0xb2, 0x1b, 0x11, 0x82, 0xab, 0x31, 0xc1, 0x0a, 0x54, 0xf8, 0x28, 0xb1, 0x3a, 0x91, 0x13, 0x2c, - 0xb6, 0x8d, 0x43, 0xb9, 0x81, 0x30, 0xda, 0x11, 0x2a, 0xb4, 0x3a, 0x98, 0x04, 0x3b, 0xc0, 0x90, - 0x90, 0x1f, 0x07, 0x8c, 0x10, 0xa1, 0x3a, 0xa2, 0xaa, 0x50, 0xa3, 0x1b, 0xd8, 0x41, 0x0b, 0x87, - 0x0d, 0x82, 0x08, 0x20, 0xa0, 0x1a, 0xb2, 0x41, 0x1b, 0xb3, 0x6a, 0xb0, 0x59, 0xc1, 0x00, 0x8c, - 0x99, 0x24, 0x9b, 0x13, 0x89, 0xce, 0x53, 0xa8, 0x10, 0xaa, 0x24, 0x8b, 0xa3, 0x4a, 0x83, 0x08, - 0xba, 0x07, 0x8f, 0x12, 0x12, 0xbe, 0x22, 0x40, 0xd9, 0x00, 0x20, 0xa9, 0x83, 0xaa, 0x30, 0xdd, - 0xea, 0x1c, 0x26, 0x28, 0xc1, 0x1a, 0x82, 0xc9, 0x50, 0x01, 0xc8, 0x29, 0x81, 0x12, 0x9e, 0x85, - 0x38, 0x9c, 0x05, 0x28, 0xcb, 0x41, 0xa0, 0x8b, 0x32, 0x90, 0x92, 0x0f, 0x05, 0x9c, 0x12, 0x0a, - 0x12, 0xbd, 0x23, 0xca, 0x9a, 0x45, 0xb8, 0x89, 0x11, 0x19, 0xf0, 0x29, 0x10, 0xcc, 0x52, 0x81, - 0xbb, 0x40, 0x93, 0x0c, 0x88, 0x02, 0x0a, 0x41, 0xa4, 0x0e, 0x82, 0x19, 0x03, 0xfb, 0x5a, 0x02, - 0xca, 0x30, 0xa8, 0x88, 0x61, 0x00, 0xfb, 0x32, 0x98, 0x80, 0x89, 0x02, 0x62, 0xfb, 0x38, 0x81, - 0x88, 0x20, 0xb1, 0x0c, 0x15, 0x1c, 0xa1, 0x99, 0x38, 0x03, 0xbc, 0x12, 0x21, 0xe8, 0x78, 0xd1, - 0x29, 0x81, 0xa8, 0x10, 0xc9, 0x5a, 0x00, 0xa2, 0x19, 0x80, 0x88, 0xaa, 0x00, 0x17, 0xab, 0x30, - 0x00, 0xf1, 0x7b, 0xb2, 0x08, 0x0b, 0xd2, 0x70, 0xa8, 0x20, 0x98, 0x21, 0x8e, 0x94, 0x9a, 0x32, - 0x98, 0x88, 0xfa, 0x42, 0x80, 0xa8, 0x33, 0xcd, 0x20, 0x01, 0xa1, 0x2c, 0xa3, 0x20, 0xaf, 0x85, - 0x38, 0xa0, 0xb8, 0x4a, 0xb4, 0x69, 0xa0, 0x09, 0x08, 0x82, 0x08, 0xc1, 0x1b, 0x83, 0x40, 0xcb, - 0x32, 0xf9, 0x59, 0xd8, 0x21, 0x89, 0x02, 0x2a, 0xd0, 0x88, 0x68, 0xa0, 0x89, 0x13, 0x1b, 0xc3, - 0x19, 0xab, 0x37, 0x0b, 0xb8, 0x24, 0xae, 0x51, 0x91, 0xba, 0x62, 0x89, 0x90, 0x08, 0x01, 0x08, - 0x98, 0x00, 0xf1, 0x5a, 0x02, 0xc8, 0x38, 0x88, 0xa1, 0x5d, 0xb3, 0x0b, 0x48, 0xb9, 0x14, 0xb8, - 0x49, 0xa2, 0xab, 0x69, 0xa1, 0x0a, 0x45, 0xc0, 0xab, 0x62, 0xb8, 0x19, 0x14, 0x9c, 0x32, 0xcb, - 0x24, 0xab, 0x29, 0x85, 0x89, 0x08, 0xa8, 0x23, 0x0e, 0x04, 0xac, 0x62, 0xb8, 0x21, 0xab, 0x28, - 0x05, 0x99, 0x9b, 0x16, 0x0a, 0x81, 0x93, 0x9f, 0x12, 0x91, 0x2c, 0x94, 0xaa, 0x32, 0xb4, 0x0f, - 0x81, 0x10, 0x88, 0x89, 0x48, 0xa0, 0x14, 0x8d, 0xa0, 0x20, 0x2a, 0x14, 0xcb, 0x11, 0x89, 0x05, - 0x8e, 0x01, 0x91, 0x20, 0xb8, 0x0b, 0x06, 0x0c, 0x05, 0x9b, 0x28, 0x99, 0x05, 0x09, 0x8c, 0x04, - 0x89, 0x80, 0xa8, 0x44, 0x8b, 0x90, 0xb6, 0x2f, 0x83, 0x8a, 0x22, 0xc8, 0x8c, 0x35, 0xc9, 0x20, - 0xa8, 0x12, 0xbb, 0x31, 0xa1, 0x0b, 0x12, 0x38, 0xf4, 0x2e, 0x24, 0xdb, 0x28, 0x22, 0xdd, 0x33, - 0x9a, 0x00, 0xa0, 0x48, 0xb1, 0x09, 0x08, 0x35, 0xaf, 0x33, 0x9b, 0xa1, 0x30, 0xa1, 0x8d, 0x82, - 0x42, 0xba, 0xa1, 0x61, 0xbb, 0x15, 0x0a, 0x80, 0x0a, 0x15, 0xca, 0x00, 0x4a, 0xd3, 0x29, 0x93, - 0x2c, 0xd3, 0x4a, 0xa0, 0x29, 0x91, 0x32, 0xaf, 0x22, 0xa8, 0x10, 0x03, 0x8f, 0x92, 0x28, 0x99, - 0x21, 0xbd, 0x27, 0x8c, 0x00, 0x82, 0x8b, 0xa2, 0x38, 0x98, 0xb8, 0x46, 0xaa, 0x00, 0x2b, 0x86, - 0x98, 0x3c, 0xf3, 0x38, 0x98, 0x84, 0x8d, 0x03, 0x09, 0x88, 0xa0, 0x78, 0xc2, 0x2a, 0x91, 0x89, - 0x81, 0x71, 0xf0, 0x28, 0x08, 0x80, 0x98, 0x28, 0xa3, 0x1b, 0xc0, 0x48, 0xa1, 0x6a, 0xb1, 0x91, - 0x3b, 0x91, 0x82, 0x0c, 0x15, 0x9d, 0x82, 0x1b, 0x40, 0xf3, 0x39, 0x88, 0x18, 0xc2, 0x4a, 0x98, - 0x82, 0x0a, 0xa9, 0x13, 0x0e, 0x17, 0x8b, 0x94, 0x89, 0x0b, 0x03, 0x01, 0x1d, 0xa5, 0x2a, 0xd0, - 0x58, 0x81, 0x9a, 0x22, 0xad, 0x33, 0xbb, 0x10, 0x14, 0x9d, 0x42, 0xc0, 0x19, 0x82, 0xbb, 0x32, - 0x83, 0x1b, 0xd3, 0xad, 0x36, 0xaa, 0x89, 0x05, 0x99, 0x59, 0xa3, 0x8f, 0x22, 0xb8, 0x5b, 0xa2, - 0x89, 0x40, 0xa2, 0x9c, 0x10, 0x20, 0x0a, 0x96, 0x8a, 0x19, 0x03, 0x1b, 0x98, 0x0a, 0x57, 0xda, - 0x09, 0x12, 0x10, 0xb1, 0x0b, 0x01, 0xba, 0x64, 0xb0, 0x2b, 0xb0, 0x72, 0xb1, 0x0b, 0x83, 0x10, - 0x9a, 0x90, 0x3f, 0x97, 0x1b, 0x82, 0xa8, 0x38, 0x1b, 0xa7, 0x28, 0x9f, 0x15, 0x89, 0x9a, 0x15, - 0x9a, 0x09, 0x15, 0x9d, 0x11, 0x11, 0xab, 0x12, 0x08, 0x99, 0x0a, 0x27, 0xaa, 0x09, 0x00, 0x20, - 0xf1, 0x09, 0x73, 0xc9, 0x19, 0x05, 0x8c, 0x81, 0x12, 0xaa, 0x8a, 0x45, 0xc9, 0x08, 0x21, 0xb1, - 0x0a, 0x00, 0x33, 0xaf, 0x13, 0x09, 0xb0, 0x49, 0x20, 0xf3, 0x0c, 0x13, 0x98, 0x88, 0x31, 0xa9, - 0x8b, 0x37, 0xeb, 0x20, 0x10, 0xd0, 0x4b, 0xb4, 0x38, 0xa9, 0x90, 0x21, 0xd8, 0x38, 0x13, 0xea, - 0x2a, 0x85, 0x99, 0x0b, 0x17, 0xb8, 0x29, 0x90, 0x84, 0x8c, 0x12, 0xa0, 0x98, 0x3a, 0x07, 0xbc, - 0x43, 0xa9, 0x30, 0x90, 0xb8, 0x5a, 0xa5, 0x0c, 0x94, 0x8a, 0x41, 0xe8, 0x51, 0xa9, 0x08, 0x10, - 0xb1, 0x19, 0x19, 0x23, 0xca, 0x39, 0x03, 0xcd, 0x41, 0x81, 0x8b, 0x80, 0x23, 0x8a, 0x9f, 0x15, - 0x9b, 0x12, 0xb2, 0x3b, 0x00, 0xa4, 0x8e, 0x02, 0x29, 0xd0, 0x91, 0x7a, 0xb0, 0x80, 0x41, 0x9a, - 0xa0, 0x12, 0x38, 0xdc, 0x41, 0xa3, 0x9f, 0x42, 0xb0, 0x20, 0x98, 0x99, 0x62, 0xf8, 0x59, 0xa8, - 0x11, 0x89, 0x02, 0x9c, 0x21, 0x01, 0xc9, 0x30, 0xb1, 0x1a, 0x08, 0x03, 0x80, 0x9d, 0x54, 0xe9, - 0x39, 0x92, 0x09, 0x88, 0x01, 0x18, 0xca, 0x71, 0x81, 0xab, 0x98, 0x64, 0xcb, 0x41, 0x98, 0xa8, - 0x51, 0xb0, 0x09, 0x01, 0x88, 0x81, 0xbc, 0x65, 0xa8, 0x28, 0xb8, 0x20, 0xc8, 0x31, 0xa0, 0xa8, - 0x7a, 0xa5, 0x9a, 0x30, 0x19, 0xd1, 0x30, 0x98, 0x98, 0x39, 0xc0, 0x12, 0x0c, 0x09, 0x27, 0x9e, - 0x42, 0xb8, 0x08, 0x2a, 0x93, 0xba, 0x71, 0xa1, 0x18, 0xa0, 0xab, 0x75, 0xc8, 0x28, 0x88, 0x09, - 0x82, 0x91, 0x38, 0xae, 0x22, 0x18, 0xf9, 0x58, 0x90, 0x80, 0xaa, 0x32, 0x00, 0x09, 0xd3, 0x69, - 0xa9, 0x11, 0xb1, 0x0c, 0x08, 0x37, 0xca, 0x19, 0x02, 0x08, 0xb2, 0x2f, 0x91, 0x80, 0x28, 0x03, - 0xcf, 0x22, 0x02, 0x9c, 0x91, 0x50, 0xa8, 0x18, 0x91, 0xba, 0x52, 0x99, 0xa1, 0x38, 0x18, 0xc4, - 0x3b, 0x08, 0xc7, 0x3e, 0x94, 0x8a, 0x18, 0x82, 0x98, 0x09, 0x22, 0xc9, 0x81, 0x61, 0xc9, 0x80, - 0x12, 0x2a, 0xf0, 0x29, 0x91, 0x93, 0x2b, 0x00, 0xf4, 0x3b, 0x12, 0xd1, 0x1d, 0x14, 0xaa, 0x21, - 0xbb, 0x43, 0xa8, 0x00, 0x11, 0xa9, 0x18, 0x38, 0x92, 0x87, 0xaf, 0x33, 0x8b, 0x85, 0x0d, 0x92, - 0x3a, 0xb0, 0x29, 0x84, 0x0a, 0x18, 0xc3, 0x18, 0x2c, 0x96, 0xab, 0x18, 0x34, 0xb8, 0x81, 0xbc, - 0x70, 0xb9, 0x24, 0x08, 0xc9, 0x30, 0x90, 0x9d, 0x05, 0x8a, 0x52, 0xd1, 0x8a, 0x42, 0xd0, 0x3a, - 0x95, 0x8b, 0x31, 0xe8, 0x58, 0xa0, 0x19, 0x18, 0x92, 0x9b, 0x32, 0x99, 0x88, 0xc8, 0x51, 0x19, - 0xc1, 0x1a, 0x63, 0xf8, 0x39, 0x92, 0xaa, 0x51, 0xa8, 0x02, 0x98, 0x1a, 0x91, 0x0a, 0x11, 0x27, - 0xbe, 0x63, 0xb8, 0x09, 0x00, 0x82, 0x0b, 0x04, 0xb9, 0x01, 0x40, 0xa0, 0xba, 0x78, 0xb0, 0x50, - 0xc0, 0x29, 0x91, 0x1b, 0x96, 0x1a, 0x88, 0x83, 0x48, 0xfb, 0x20, 0x10, 0xc0, 0x49, 0xa0, 0x00, - 0x10, 0x99, 0xc3, 0x4c, 0x92, 0xb8, 0x78, 0xb2, 0x1d, 0x94, 0x1a, 0xa8, 0x23, 0xab, 0x15, 0xba, - 0x88, 0x13, 0x0b, 0x86, 0x3a, 0xf1, 0x3a, 0x11, 0xc2, 0x0c, 0x21, 0xf8, 0x50, 0xa8, 0x08, 0x22, - 0xbb, 0x01, 0x00, 0x98, 0x2c, 0x07, 0x8c, 0x11, 0x90, 0x81, 0x8e, 0x14, 0x99, 0x20, 0xb0, 0x8a, - 0x40, 0x11, 0xc2, 0x0b, 0x38, 0x05, 0xb9, 0x49, 0xcc, 0x25, 0xb8, 0x3a, 0x86, 0x0d, 0x12, 0xb8, - 0x8b, 0x24, 0xb1, 0x2a, 0xa3, 0x89, 0x39, 0x80, 0x94, 0xbc, 0x49, 0x31, 0xf3, 0x0d, 0x42, 0xe0, - 0x28, 0x90, 0x81, 0x1a, 0x02, 0xc8, 0x0a, 0x02, 0x58, 0xd1, 0x39, 0x92, 0x0e, 0x03, 0xa9, 0x8b, - 0x25, 0xb0, 0x1c, 0x06, 0x0c, 0x01, 0x91, 0x2b, 0xa0, 0x1a, 0x03, 0x82, 0x0e, 0x82, 0x9b, 0x12, - 0x19, 0x13, 0x60, 0xf4, 0x2e, 0x92, 0xa8, 0x49, 0x94, 0x0d, 0x03, 0x0b, 0x01, 0xa0, 0x08, 0x20, - 0xc9, 0x00, 0x33, 0xaf, 0x16, 0x9a, 0x08, 0x11, 0x88, 0x1a, 0xa6, 0x0e, 0x23, 0xc8, 0x19, 0x00, - 0x90, 0x20, 0xa1, 0x0d, 0x85, 0xaa, 0x20, 0x05, 0xac, 0x33, 0xc9, 0x88, 0x42, 0xc9, 0x83, 0x39, - 0xea, 0x33, 0xbd, 0x42, 0x92, 0x0b, 0x01, 0xc2, 0x2d, 0x11, 0xb0, 0x29, 0xa1, 0x1c, 0x84, 0x00, - 0x8b, 0x20, 0xb5, 0x3d, 0xc3, 0x0c, 0x31, 0xe2, 0x2b, 0x93, 0x8b, 0x72, 0xd1, 0x28, 0xb0, 0x28, - 0x80, 0x81, 0x19, 0xa8, 0x23, 0x9a, 0xa9, 0x10, 0x74, 0xd8, 0x02, 0x08, 0xaf, 0x14, 0xb8, 0x4c, - 0x83, 0x09, 0xa9, 0x31, 0xa8, 0x99, 0x03, 0x1e, 0x86, 0x99, 0x38, 0xb3, 0x8c, 0x43, 0xfa, 0x21, - 0x99, 0x12, 0xb1, 0x1d, 0x05, 0xab, 0x12, 0x3a, 0xd0, 0x31, 0xc8, 0x39, 0xa1, 0xa1, 0x8f, 0x05, - 0x19, 0xa8, 0x93, 0x2e, 0xb3, 0x29, 0x81, 0x8d, 0x07, 0x1a, 0xb0, 0xa8, 0x58, 0xa2, 0x19, 0x08, - 0xa2, 0x9b, 0x73, 0xc1, 0x1b, 0x14, 0xda, 0x40, 0x90, 0x88, 0x05, 0x8d, 0x03, 0x8a, 0x11, 0x80, - 0x8b, 0x84, 0x0c, 0xc2, 0x79, 0xc3, 0x19, 0x02, 0xcb, 0x31, 0xa1, 0x0b, 0x18, 0xf3, 0x4a, 0xc2, - 0x38, 0x88, 0xc0, 0x39, 0x81, 0x8b, 0x13, 0x30, 0xad, 0x87, 0x1c, 0x93, 0x98, 0x8a, 0x21, 0xc0, - 0x38, 0x81, 0x9c, 0x36, 0xad, 0x22, 0xe3, 0x3a, 0xa1, 0x91, 0x1c, 0x80, 0x61, 0xc0, 0x18, 0x00, - 0x92, 0x89, 0xa0, 0x3c, 0xa7, 0x4a, 0xc1, 0x18, 0x91, 0x28, 0x83, 0xaf, 0x24, 0xa8, 0x20, 0xa8, - 0x08, 0x1a, 0xa5, 0x4a, 0xa4, 0x8d, 0x33, 0xc9, 0x18, 0x82, 0x0b, 0x92, 0x8c, 0x13, 0x0b, 0x89, - 0x25, 0xf8, 0x1f, 0x05, 0xa8, 0x0b, 0x13, 0xca, 0x28, 0x07, 0x8c, 0x02, 0x98, 0x00, 0xc9, 0x50, - 0x80, 0x90, 0x2b, 0x86, 0x8c, 0x12, 0x09, 0xca, 0x31, 0x81, 0x91, 0x8d, 0x22, 0x12, 0xaf, 0x16, - 0x9b, 0x20, 0x81, 0x89, 0x89, 0x41, 0x98, 0xb0, 0x69, 0xa0, 0x51, 0xb8, 0x08, 0x98, 0x31, 0x18, - 0xf0, 0x2b, 0x32, 0xdc, 0x13, 0xab, 0x55, 0xb8, 0x81, 0x8b, 0x89, 0x24, 0x90, 0x9b, 0x02, 0x9c, - 0x36, 0xba, 0x80, 0x00, 0x18, 0x91, 0xac, 0x01, 0x75, 0xd0, 0x29, 0xa1, 0x40, 0xd8, 0x20, 0xab, - 0x32, 0x81, 0x0a, 0xb4, 0x2b, 0x46, 0xf8, 0x29, 0x98, 0x28, 0x22, 0xb9, 0x1b, 0x93, 0x12, 0x82, - 0x1e, 0xd8, 0x38, 0x24, 0xbc, 0x38, 0x80, 0x57, 0xbe, 0x23, 0x08, 0xa0, 0x18, 0xa9, 0x93, 0x3c, - 0x07, 0xab, 0x29, 0x92, 0x31, 0xcd, 0x20, 0x83, 0x8c, 0x22, 0xdb, 0x00, 0x20, 0xb0, 0x0a, 0xba, - 0x77, 0xb0, 0x19, 0x08, 0x90, 0x88, 0x36, 0xfb, 0x28, 0x92, 0x88, 0x89, 0x10, 0x89, 0x24, 0xac, - 0x92, 0x8b, 0x27, 0xa9, 0x09, 0x29, 0x07, 0x9b, 0x21, 0xcc, 0x43, 0x82, 0x9b, 0x00, 0x88, 0x50, - 0x04, 0xae, 0x12, 0x08, 0x00, 0x30, 0xfa, 0x39, 0x85, 0x9b, 0x28, 0x22, 0xc0, 0x59, 0xd9, 0x20, - 0x80, 0x02, 0xca, 0x0a, 0x14, 0x19, 0xa0, 0x88, 0x80, 0x90, 0x4d, 0xc1, 0x8a, 0x42, 0x91, 0x1c, - 0xfb, 0x44, 0xba, 0x10, 0xb1, 0x29, 0x10, 0x80, 0x93, 0xcf, 0x44, 0xa8, 0x9c, 0x42, 0xa0, 0x80, - 0x11, 0xbc, 0x32, 0x98, 0x60, 0xb2, 0x9e, 0x31, 0x92, 0xbc, 0x42, 0x91, 0x89, 0x41, 0xc9, 0x00, - 0x13, 0x0d, 0x80, 0x9c, 0x55, 0xa0, 0x9b, 0x42, 0xc8, 0x59, 0x90, 0x89, 0x20, 0xa3, 0x8c, 0x10, - 0xd9, 0x42, 0x98, 0x9a, 0x51, 0xb3, 0x3b, 0x94, 0xcc, 0x42, 0x91, 0x0c, 0x93, 0x2b, 0x90, 0x20, - 0x99, 0x31, 0xb3, 0x8f, 0x13, 0xae, 0x34, 0xa8, 0x0d, 0x13, 0xbb, 0x27, 0x9b, 0xb0, 0x53, 0xaa, - 0x13, 0x9c, 0x42, 0xa8, 0x01, 0x90, 0x9f, 0x82, 0x22, 0x00, 0xaf, 0x14, 0x98, 0x00, 0x08, 0xb1, - 0x1b, 0x0a, 0x17, 0xab, 0x30, 0x14, 0xdd, 0x38, 0x03, 0xdb, 0x43, 0xbb, 0x01, 0x39, 0x04, 0xc8, - 0x9a, 0x70, 0xb0, 0x18, 0x01, 0x8d, 0x13, 0x01, 0xa8, 0x0f, 0x85, 0x09, 0x99, 0xa3, 0x7a, 0xb1, - 0x21, 0xba, 0xb1, 0x70, 0xa2, 0x8a, 0x00, 0x61, 0xd9, 0x11, 0x89, 0xc2, 0x51, 0xa9, 0x92, 0x0b, - 0x44, 0xb0, 0x8c, 0x32, 0x98, 0x0a, 0x88, 0x22, 0xba, 0x30, 0x91, 0xcd, 0x43, 0x42, 0xcb, 0xa8, - 0x50, 0xc9, 0x22, 0xb9, 0xaa, 0x37, 0x9b, 0x94, 0xa0, 0x0e, 0x13, 0x0c, 0x01, 0x00, 0x0c, 0x13, - 0xd8, 0x1c, 0x06, 0x9a, 0x28, 0xb2, 0x29, 0x03, 0x0e, 0x86, 0x8c, 0x10, 0x83, 0x9a, 0x30, 0xf8, - 0x20, 0x08, 0x82, 0x1c, 0x92, 0x28, 0x9f, 0x93, 0x4a, 0x13, 0xea, 0x38, 0xb3, 0x0f, 0x03, 0x88, - 0x0b, 0x11, 0x93, 0x0e, 0x11, 0x90, 0x91, 0x8b, 0x86, 0x8a, 0x00, 0x25, 0xcc, 0x30, 0xa2, 0x8b, - 0x00, 0x68, 0xb0, 0x0b, 0x33, 0x8b, 0xf2, 0x49, 0x93, 0x0e, 0x02, 0x89, 0x99, 0x40, 0x81, 0xb0, - 0x4b, 0xb1, 0x20, 0xb0, 0x50, 0x88, 0x9a, 0x27, 0x9f, 0x93, 0x29, 0x12, 0xba, 0x92, 0x3c, 0xd0, - 0x11, 0x08, 0x88, 0x27, 0xcb, 0x09, 0x31, 0x93, 0x3b, 0xf8, 0x31, 0x8f, 0x84, 0x19, 0x89, 0x01, - 0x59, 0xf8, 0x20, 0x88, 0x80, 0x29, 0xb5, 0x1e, 0x82, 0x91, 0x28, 0xda, 0x32, 0xa9, 0x29, 0xa3, - 0x20, 0x9f, 0x85, 0x0a, 0x0a, 0x83, 0x02, 0x1e, 0xb2, 0x29, 0x20, 0xdb, 0x15, 0x8d, 0x83, 0x80, - 0x09, 0x98, 0x44, 0x9a, 0xd1, 0x48, 0xb9, 0x42, 0xb0, 0x30, 0xcb, 0x28, 0x16, 0xab, 0x10, 0x30, - 0xea, 0x13, 0x0c, 0x98, 0x07, 0x89, 0x89, 0x91, 0x29, 0x23, 0xcc, 0x08, 0x83, 0x51, 0xda, 0x13, - 0x1a, 0xb9, 0x94, 0x4a, 0xb2, 0x2c, 0x97, 0x0b, 0x08, 0x83, 0x2b, 0x81, 0xc2, 0x0a, 0x88, 0x64, - 0xe8, 0x18, 0x88, 0x95, 0x2b, 0x80, 0xa0, 0x48, 0x02, 0x90, 0xbb, 0x79, 0x95, 0x8d, 0x90, 0x12, - 0x09, 0x83, 0x89, 0x1d, 0x95, 0x0b, 0x13, 0x8f, 0x82, 0x21, 0x9d, 0x11, 0x38, 0xc1, 0x1a, 0x00, - 0xb0, 0x70, 0xd2, 0x3a, 0xb8, 0x43, 0x81, 0xbc, 0x42, 0xc0, 0x18, 0x82, 0x9d, 0x20, 0x85, 0x29, - 0xda, 0x20, 0x80, 0x02, 0x8c, 0x18, 0xe0, 0x48, 0x88, 0xa2, 0x4b, 0x13, 0xe8, 0x3b, 0xa3, 0x4a, - 0xe1, 0x30, 0xbb, 0x22, 0x11, 0x29, 0xf0, 0x5a, 0xa0, 0x30, 0xb9, 0x33, 0xbf, 0x06, 0x09, 0xc8, - 0x30, 0x92, 0x00, 0x0a, 0xb1, 0x01, 0x59, 0xc2, 0x8d, 0xa3, 0x70, 0xa9, 0x80, 0x10, 0xa0, 0x48, - 0xa9, 0x80, 0x69, 0x94, 0x8b, 0xb0, 0x38, 0x52, 0x9a, 0xc0, 0x38, 0x13, 0xae, 0xa3, 0x1c, 0x24, - 0xa1, 0x9c, 0x02, 0x0a, 0x84, 0x40, 0xfb, 0x89, 0x52, 0x8b, 0x95, 0x2b, 0x92, 0x00, 0x8b, 0x02, - 0xaa, 0x55, 0xa9, 0xa0, 0x4b, 0x11, 0xa4, 0x8f, 0x04, 0x09, 0x80, 0x18, 0xc0, 0x09, 0x33, 0xbc, - 0x01, 0x18, 0x02, 0xc3, 0x1f, 0x86, 0x9b, 0x12, 0x20, 0x9e, 0x01, 0x32, 0xae, 0x30, 0xb2, 0x10, - 0x1a, 0xa3, 0x8e, 0xa2, 0x70, 0xc1, 0x09, 0x02, 0x08, 0xb0, 0x89, 0x63, 0xc9, 0x20, 0x91, 0x99, - 0x29, 0x15, 0xd9, 0x1a, 0x52, 0xd0, 0x89, 0x12, 0xa8, 0x43, 0xcb, 0x82, 0x1a, 0x94, 0x1b, 0x11, - 0x94, 0x9f, 0x14, 0x8d, 0x83, 0x28, 0x82, 0xfb, 0x38, 0x82, 0xa0, 0x4a, 0xb0, 0x18, 0xa9, 0x36, - 0xab, 0x88, 0x23, 0x8e, 0x93, 0x4b, 0x94, 0xea, 0x50, 0xa8, 0x10, 0x82, 0x8e, 0x03, 0x1b, 0x02, - 0xaa, 0x00, 0x38, 0x9a, 0x97, 0x2c, 0xc1, 0x31, 0x90, 0xb9, 0x28, 0x84, 0x9c, 0x11, 0x9d, 0x26, - 0xc0, 0x59, 0xa0, 0xa9, 0x33, 0x1a, 0xc0, 0x38, 0xa3, 0x8c, 0x18, 0xb2, 0x15, 0x9e, 0x32, 0xd1, - 0x1b, 0x27, 0xbd, 0x21, 0x91, 0x10, 0xa1, 0x1e, 0x82, 0x8a, 0x41, 0x99, 0x98, 0x51, 0x0a, 0xe1, - 0x48, 0x90, 0x0a, 0xa3, 0x38, 0x90, 0x0c, 0x12, 0xb8, 0x21, 0x78, 0xe0, 0x8a, 0x42, 0x91, 0x9a, - 0x71, 0xc9, 0x10, 0x81, 0x10, 0xb8, 0x2b, 0x07, 0x0f, 0x01, 0x82, 0x8c, 0x81, 0x00, 0x08, 0x00, - 0x83, 0xaf, 0x23, 0xb9, 0x40, 0xaa, 0x42, 0xa1, 0xbd, 0x52, 0xa0, 0x39, 0x92, 0xa9, 0x10, 0x20, - 0x97, 0x1d, 0x81, 0xba, 0x44, 0xcb, 0x24, 0xa9, 0x80, 0x84, 0x8f, 0x02, 0x93, 0x2b, 0xb9, 0x11, - 0x12, 0x8e, 0x14, 0xbb, 0x62, 0xa8, 0x90, 0x2a, 0xa2, 0x35, 0xad, 0x21, 0xa1, 0x98, 0x19, 0x28, - 0xd1, 0x29, 0x17, 0xae, 0x21, 0x83, 0x0d, 0xb2, 0x3a, 0x12, 0x98, 0x82, 0x9f, 0x82, 0x10, 0xb0, - 0x3d, 0x86, 0xa9, 0x29, 0x84, 0x0e, 0x03, 0xa9, 0x8b, 0x15, 0x8c, 0x23, 0xc0, 0x29, 0x18, 0xd0, - 0x4a, 0x92, 0xbb, 0x55, 0xc9, 0x28, 0x81, 0x09, 0x28, 0xa4, 0x19, 0x8b, 0x80, 0x96, 0xaa, 0x3d, - 0x07, 0x8a, 0x18, 0x94, 0x8e, 0x12, 0x00, 0x9a, 0x83, 0x0b, 0x23, 0xbd, 0x31, 0x03, 0x9b, 0x11, - 0x82, 0xdf, 0x41, 0xa2, 0x0b, 0x03, 0xb0, 0x7a, 0xe1, 0x29, 0x02, 0xba, 0x22, 0xb8, 0x89, 0x35, - 0x19, 0xb8, 0xb9, 0x6b, 0xb3, 0x0b, 0x63, 0x90, 0xd0, 0x49, 0xa8, 0x00, 0x30, 0x91, 0x9f, 0xa1, - 0x52, 0x00, 0xf9, 0x30, 0xaa, 0x03, 0x18, 0x9c, 0x02, 0x43, 0xe0, 0x2c, 0xa1, 0x10, 0x89, 0x25, - 0x8d, 0xa3, 0x3b, 0xa3, 0x0a, 0x88, 0x07, 0x8e, 0x01, 0x10, 0xa8, 0x10, 0x19, 0xe2, 0x30, 0x99, - 0x23, 0xea, 0x41, 0x09, 0xb8, 0x15, 0x09, 0xcb, 0x52, 0x99, 0x85, 0x8b, 0x30, 0xd3, 0x2b, 0x84, - 0x8b, 0x94, 0x2a, 0xf3, 0x29, 0x99, 0x24, 0xaa, 0xa1, 0x60, 0xa9, 0x08, 0x92, 0x0d, 0x12, 0x91, - 0xdb, 0x68, 0xa1, 0x29, 0x84, 0x8e, 0x92, 0x39, 0xa0, 0x90, 0x1b, 0x37, 0xd9, 0x2a, 0x85, 0x1a, - 0x88, 0xa1, 0x98, 0x4c, 0xb4, 0x39, 0xa1, 0x0b, 0x04, 0xb9, 0x5a, 0x85, 0x8c, 0x12, 0xb0, 0x4c, - 0xa3, 0x89, 0x00, 0x9a, 0x34, 0x99, 0x68, 0xa4, 0x0c, 0x89, 0x84, 0x3b, 0xc1, 0x34, 0xca, 0x10, - 0x80, 0x98, 0x29, 0xda, 0x63, 0xa9, 0xa8, 0x44, 0xba, 0x81, 0xb1, 0x71, 0xba, 0x32, 0xeb, 0x10, - 0x50, 0xc1, 0x8a, 0x31, 0xc1, 0x18, 0x18, 0xf0, 0x10, 0x29, 0x92, 0x8a, 0x80, 0x54, 0xea, 0x20, - 0x08, 0x91, 0x0c, 0x84, 0xaa, 0x31, 0x80, 0xa8, 0xc9, 0x70, 0x95, 0x9c, 0x32, 0xa8, 0x18, 0x0a, - 0xd0, 0x51, 0x09, 0xa3, 0x0e, 0x84, 0x19, 0xa8, 0x11, 0x99, 0x23, 0x2a, 0xf2, 0x1b, 0x15, 0xaa, - 0x09, 0x05, 0x19, 0x08, 0xe1, 0x20, 0xc9, 0x42, 0x98, 0xaa, 0x28, 0x07, 0x99, 0x9c, 0x07, 0x99, - 0x08, 0x13, 0xbb, 0x21, 0x92, 0x1c, 0xb9, 0x16, 0x9a, 0x2b, 0x95, 0x89, 0x03, 0x9a, 0x88, 0x91, - 0x32, 0x5a, 0xf8, 0x8a, 0x43, 0x29, 0xf1, 0x5a, 0xb8, 0x28, 0x31, 0xd1, 0x0b, 0x33, 0xdb, 0x00, - 0x41, 0x98, 0x28, 0x82, 0xfb, 0x69, 0xa8, 0x11, 0x80, 0x98, 0x40, 0xb0, 0x1d, 0x05, 0xa8, 0x4a, - 0x93, 0xac, 0x11, 0x90, 0x20, 0xe2, 0x18, 0x9a, 0x62, 0xd1, 0x19, 0x80, 0x38, 0xd1, 0x18, 0x09, - 0x83, 0x59, 0xc8, 0x89, 0x42, 0xfa, 0x40, 0xa9, 0x08, 0x11, 0x82, 0xbb, 0x40, 0xa1, 0x2c, 0x87, - 0x9c, 0x40, 0x90, 0xa8, 0x11, 0xa9, 0x62, 0x90, 0x80, 0x8b, 0x42, 0x81, 0xca, 0x1a, 0x81, 0x70, - 0x95, 0x09, 0xa9, 0x51, 0xc9, 0x22, 0xaa, 0x19, 0x35, 0xf9, 0x49, 0x81, 0x99, 0x30, 0xe8, 0x2a, - 0x03, 0x91, 0xac, 0x10, 0x48, 0xa4, 0x0a, 0xa9, 0x38, 0x03, 0x39, 0xdf, 0x11, 0x18, 0x88, 0x94, - 0x9f, 0x43, 0xc0, 0x09, 0x09, 0x84, 0x2a, 0x01, 0xe9, 0x28, 0x12, 0xd8, 0x39, 0xa1, 0x18, 0x32, - 0xf8, 0x0c, 0x31, 0xa2, 0x8a, 0x28, 0xd1, 0x38, 0x83, 0xda, 0x09, 0x38, 0x27, 0xad, 0x31, 0x8a, - 0x96, 0x1b, 0x10, 0xa8, 0x41, 0x11, 0xe8, 0x28, 0x8a, 0x05, 0x9a, 0x1a, 0x07, 0x9a, 0x21, 0x98, - 0x2a, 0x90, 0xa3, 0x8f, 0x01, 0x82, 0x21, 0x0a, 0xb0, 0x3b, 0xc5, 0x8d, 0x03, 0x2a, 0xab, 0x27, - 0x0f, 0x82, 0x18, 0xb1, 0x8a, 0x39, 0xe2, 0x49, 0xb8, 0x08, 0x23, 0x29, 0xca, 0x07, 0x1a, 0xd9, - 0x24, 0x89, 0xaa, 0x71, 0xc2, 0x1b, 0x31, 0xc1, 0x19, 0x02, 0xac, 0x32, 0xc8, 0x12, 0x4a, 0xf9, - 0x60, 0xa9, 0x91, 0x39, 0xa1, 0x00, 0x88, 0x88, 0x10, 0xf2, 0x69, 0x88, 0xa8, 0x40, 0xb2, 0x9d, - 0x22, 0x20, 0xdb, 0x01, 0x28, 0x8a, 0x87, 0x2b, 0xb2, 0x1b, 0x30, 0xa7, 0x1e, 0x93, 0x1a, 0x92, - 0x18, 0x19, 0xc3, 0x39, 0xe9, 0x41, 0xa9, 0x23, 0x99, 0xbd, 0x60, 0xa3, 0x19, 0x09, 0xb0, 0x69, - 0xb2, 0x49, 0xc8, 0x39, 0xb0, 0x83, 0x4b, 0xb2, 0xa8, 0x72, 0x99, 0xca, 0x60, 0xa3, 0x1a, 0xb9, - 0x81, 0x80, 0x5c, 0xc2, 0x09, 0x22, 0x19, 0xa4, 0xbf, 0x33, 0xb2, 0x0e, 0x22, 0xd9, 0x50, 0x90, - 0x08, 0xa8, 0x30, 0xa8, 0x42, 0xdb, 0x23, 0x80, 0x0d, 0xa5, 0x4b, 0x91, 0x92, 0x1b, 0x01, 0x9a, - 0x03, 0x5c, 0xe8, 0x21, 0x19, 0xb4, 0x1b, 0x92, 0x19, 0x88, 0x09, 0x99, 0x67, 0x8d, 0x03, 0x8c, - 0x88, 0x33, 0xab, 0xb1, 0x50, 0x80, 0x9c, 0x84, 0x00, 0x89, 0x80, 0xa0, 0x10, 0x2c, 0x94, 0x2b, - 0x9d, 0xd2, 0x70, 0xb8, 0x03, 0x3c, 0xd2, 0x18, 0x8a, 0x85, 0x98, 0x3c, 0xc5, 0x28, 0x98, 0x80, - 0x30, 0xb0, 0x49, 0xa2, 0x8a, 0x38, 0x87, 0x8b, 0x49, 0xf4, 0x49, 0x91, 0x99, 0x42, 0xca, 0x38, - 0x92, 0x0b, 0x84, 0x18, 0x9b, 0xc2, 0x59, 0x00, 0xb1, 0x8c, 0x46, 0xeb, 0x10, 0x21, 0xca, 0x20, - 0x01, 0xdb, 0x32, 0x88, 0xb1, 0x3a, 0xd2, 0x4a, 0xa0, 0x51, 0x91, 0xba, 0x60, 0xb8, 0x29, 0x01, - 0x04, 0x9e, 0x82, 0x38, 0xb9, 0x32, 0x81, 0xaf, 0x13, 0x08, 0x9b, 0x15, 0x98, 0xa0, 0x3b, 0x85, - 0xa2, 0x2d, 0x84, 0x9c, 0x01, 0x92, 0x0a, 0x40, 0x91, 0xa1, 0x8e, 0x8a, 0x47, 0xb0, 0x99, 0x41, - 0xeb, 0x32, 0x88, 0xa9, 0x03, 0xab, 0x68, 0xa3, 0x8d, 0x32, 0xca, 0x98, 0x52, 0x9a, 0x22, 0xc8, - 0x1a, 0x11, 0x9a, 0x07, 0x1b, 0xca, 0x26, 0x0a, 0xba, 0x34, 0x9a, 0x80, 0x13, 0x0f, 0x10, 0x93, - 0x1a, 0xb8, 0x9d, 0x07, 0x29, 0xc9, 0x42, 0xa9, 0x1b, 0x16, 0x9c, 0x01, 0x12, 0x0c, 0xe2, 0x49, - 0x01, 0xb0, 0x29, 0x98, 0x03, 0x99, 0x53, 0xac, 0x91, 0x43, 0x8c, 0xa1, 0x50, 0x08, 0xe0, 0x39, - 0x98, 0x11, 0x90, 0x00, 0xaf, 0x21, 0x94, 0x1a, 0x09, 0xa3, 0x00, 0x9e, 0x12, 0xab, 0x12, 0x32, - 0xbc, 0xfb, 0x71, 0x90, 0x08, 0x1a, 0xb2, 0x1c, 0x22, 0xa1, 0xbc, 0x25, 0x00, 0xba, 0x90, 0x34, - 0x2b, 0x90, 0xc1, 0x0f, 0x15, 0x19, 0xa0, 0xc0, 0x3a, 0x33, 0xea, 0x22, 0x1c, 0x04, 0x0b, 0xb1, - 0x9a, 0x71, 0x87, 0x9a, 0x80, 0x28, 0x18, 0x92, 0x09, 0xdb, 0x55, 0xb8, 0x0a, 0x02, 0x31, 0x9e, - 0x80, 0x01, 0x0a, 0x33, 0xb2, 0xff, 0x20, 0x28, 0xc2, 0x8b, 0x33, 0xaa, 0x09, 0x95, 0x1d, 0x98, - 0x22, 0x83, 0xbf, 0x48, 0x04, 0xaa, 0x38, 0xc2, 0x1a, 0x61, 0xc0, 0x2a, 0x81, 0x99, 0x41, 0xe0, - 0x3a, 0x84, 0xa8, 0x3b, 0xa4, 0x1c, 0x04, 0xaa, 0x81, 0x30, 0xdb, 0x45, 0xc9, 0x39, 0x03, 0x9d, - 0x02, 0x18, 0x8a, 0x85, 0x0a, 0x09, 0xa2, 0x1c, 0x16, 0xab, 0x00, 0x44, 0xeb, 0x30, 0xb2, 0x0a, - 0x22, 0xc0, 0x2a, 0xc1, 0x30, 0x99, 0xe8, 0x58, 0x81, 0x99, 0x28, 0xb2, 0x0d, 0x10, 0xa4, 0x2b, - 0xb8, 0x71, 0x90, 0xb9, 0x78, 0xc1, 0x29, 0x10, 0xb0, 0x50, 0xa8, 0x11, 0xc9, 0x49, 0x02, 0xb9, - 0xbb, 0x46, 0x00, 0xbc, 0x05, 0x18, 0x9a, 0x23, 0x98, 0x89, 0x89, 0x43, 0xd0, 0x1c, 0x07, 0x89, - 0x2a, 0xc4, 0x3a, 0xa9, 0x15, 0x8c, 0x91, 0x38, 0xa4, 0x0c, 0x00, 0x98, 0x80, 0x42, 0xcb, 0x00, - 0x51, 0xd8, 0x08, 0x00, 0x89, 0x03, 0x8b, 0xb3, 0x5a, 0x10, 0x97, 0xab, 0x18, 0x33, 0xf3, 0x3a, - 0xb0, 0x32, 0x8d, 0xa5, 0x29, 0xa8, 0x2a, 0x37, 0xbc, 0x40, 0x90, 0x98, 0xa1, 0x49, 0x22, 0xd9, - 0x19, 0x11, 0x0c, 0x13, 0xe1, 0x58, 0xba, 0x14, 0x28, 0xfa, 0x20, 0x2a, 0xd3, 0x18, 0x28, 0xe1, - 0x38, 0xd0, 0x18, 0x82, 0xac, 0x34, 0xa8, 0x8c, 0x24, 0xd8, 0x29, 0x11, 0xc8, 0x48, 0xa8, 0x20, - 0x80, 0xc9, 0x52, 0xb8, 0x19, 0x84, 0x1c, 0x80, 0x22, 0xbd, 0x53, 0x98, 0xa9, 0x73, 0xb9, 0x20, - 0x10, 0xac, 0x16, 0x9c, 0x12, 0x90, 0x0c, 0x04, 0x99, 0x09, 0x85, 0x9a, 0x38, 0xa3, 0x2b, 0x90, - 0xc0, 0x79, 0xd1, 0x29, 0x23, 0xe9, 0x39, 0x91, 0xa8, 0x2a, 0x82, 0x11, 0xcb, 0x11, 0x68, 0xe0, - 0x38, 0x81, 0xc9, 0x29, 0x83, 0x0a, 0x99, 0x33, 0xa9, 0x91, 0xaf, 0x36, 0xd9, 0x19, 0x84, 0x0b, - 0xa9, 0x15, 0x10, 0xbc, 0x42, 0xa0, 0x3d, 0xb1, 0x12, 0x18, 0xba, 0x33, 0x62, 0xe9, 0x18, 0x04, - 0x9c, 0x08, 0x35, 0xcc, 0x32, 0xa8, 0x1a, 0xa3, 0x2d, 0x83, 0xb9, 0x49, 0x13, 0xfb, 0x59, 0x91, - 0x9a, 0x01, 0x29, 0xa2, 0x2a, 0x30, 0xb6, 0x9f, 0x51, 0x90, 0xaa, 0x43, 0xa9, 0x88, 0x13, 0x9d, - 0x02, 0x82, 0x1c, 0xd3, 0x18, 0x29, 0xc4, 0x1b, 0x22, 0xa2, 0x9c, 0x40, 0xd2, 0x2a, 0xa3, 0x2b, - 0x83, 0xbe, 0x46, 0xb8, 0x0a, 0x12, 0xa8, 0x29, 0xb3, 0x39, 0x16, 0xbf, 0x14, 0x8a, 0x88, 0x23, - 0x99, 0x9d, 0x14, 0x98, 0x19, 0x92, 0xaa, 0x32, 0x8c, 0x86, 0x10, 0xcb, 0x33, 0xca, 0x82, 0x62, - 0xad, 0x84, 0x0a, 0x02, 0x90, 0x58, 0xc1, 0x9b, 0x13, 0x23, 0x9f, 0x12, 0x08, 0x0e, 0x84, 0x80, - 0x39, 0xe8, 0x52, 0xaa, 0xa0, 0x41, 0x99, 0x91, 0x39, 0x90, 0x80, 0x00, 0x80, 0x9f, 0x86, 0x1a, - 0xb2, 0xaa, 0x70, 0xc2, 0x29, 0x09, 0xa4, 0x1e, 0x03, 0x9a, 0x01, 0xa8, 0x79, 0xc1, 0x28, 0x88, - 0x91, 0x38, 0x88, 0xa0, 0x5c, 0x91, 0x90, 0x1c, 0x81, 0x31, 0x92, 0xaf, 0x83, 0x1c, 0x86, 0x09, - 0x19, 0xc2, 0x31, 0x9c, 0x95, 0x0d, 0x13, 0x00, 0xca, 0x31, 0xa9, 0x30, 0xc0, 0x0c, 0x84, 0x49, - 0xb1, 0x1a, 0x8a, 0x16, 0x1b, 0xe8, 0x39, 0xa2, 0x42, 0x9a, 0xd9, 0x71, 0x98, 0x00, 0xc9, 0x42, - 0xa9, 0x98, 0x21, 0xc9, 0x31, 0x19, 0xd2, 0x0a, 0x28, 0x17, 0xab, 0x19, 0x84, 0x0b, 0x00, 0x84, - 0x09, 0x39, 0xf2, 0x38, 0x9a, 0x94, 0x72, 0xf0, 0x29, 0x82, 0xb8, 0x48, 0x82, 0xbb, 0x51, 0xa8, - 0x10, 0x00, 0x88, 0x2a, 0x98, 0xa5, 0x7a, 0x89, 0xc2, 0x38, 0xbc, 0x04, 0x38, 0xac, 0x15, 0x8a, - 0xa1, 0x58, 0xba, 0x94, 0x1c, 0x81, 0x92, 0x1e, 0x85, 0x8a, 0x98, 0x42, 0xd9, 0x40, 0x90, 0x99, - 0x20, 0x98, 0x89, 0x20, 0xd0, 0x62, 0xb9, 0x20, 0x91, 0xad, 0x63, 0xc0, 0x18, 0x19, 0xb2, 0x3a, - 0x92, 0x91, 0x19, 0xa9, 0x70, 0x97, 0x0b, 0x12, 0xd0, 0x3a, 0x00, 0x94, 0x3b, 0xd9, 0x23, 0xaa, - 0x13, 0x1f, 0x82, 0x82, 0x9d, 0x32, 0xba, 0x06, 0x0b, 0xc2, 0x28, 0x0c, 0x94, 0x38, 0xc9, 0x21, - 0x30, 0xfa, 0x48, 0x98, 0xb8, 0x60, 0xc1, 0x19, 0x80, 0x08, 0x00, 0x08, 0x91, 0x7b, 0xf8, 0x20, - 0x90, 0x39, 0xd2, 0x2a, 0x12, 0xb9, 0x19, 0x30, 0x93, 0x9f, 0x34, 0xb9, 0x80, 0x88, 0x59, 0xa2, - 0x9c, 0x63, 0xb0, 0x1d, 0x84, 0x01, 0x9d, 0x12, 0x08, 0x90, 0x28, 0xdb, 0x35, 0xab, 0x31, 0xb2, - 0x0d, 0x12, 0x89, 0xab, 0x26, 0x0a, 0xd9, 0x51, 0xd0, 0x39, 0x98, 0x01, 0x09, 0xa0, 0x68, 0xe0, - 0x28, 0x01, 0xca, 0x62, 0xc8, 0x28, 0x00, 0xa8, 0x28, 0x90, 0x82, 0x2b, 0xf2, 0x49, 0x80, 0xa8, - 0x50, 0xa2, 0x0e, 0x82, 0x00, 0x89, 0x13, 0xbc, 0x20, 0x87, 0x0a, 0x08, 0xa3, 0x48, 0xca, 0x28, - 0x23, 0xcd, 0x21, 0x83, 0x8f, 0x22, 0xb8, 0x3c, 0xa5, 0x2b, 0x90, 0x01, 0x98, 0x00, 0x90, 0x8b, - 0x44, 0xcd, 0x32, 0x80, 0x9c, 0x07, 0x9b, 0x21, 0xb0, 0x68, 0x98, 0x90, 0x19, 0x08, 0xc1, 0x70, - 0xb9, 0x32, 0x10, 0x9e, 0x04, 0x88, 0x0b, 0x93, 0x89, 0x32, 0xba, 0x43, 0xae, 0x11, 0x93, 0x2f, - 0xa2, 0x01, 0x89, 0x48, 0xd9, 0x02, 0x8a, 0x44, 0xb9, 0x1a, 0x01, 0x42, 0xdb, 0x41, 0xc8, 0x09, - 0x38, 0x95, 0x81, 0x9f, 0x24, 0xc9, 0x18, 0x22, 0xc8, 0x1b, 0x82, 0xb1, 0x7b, 0xb2, 0x28, 0x80, - 0xbb, 0x04, 0x89, 0x2e, 0x86, 0xaa, 0x50, 0xc0, 0x18, 0x30, 0xc0, 0x88, 0x2a, 0xa2, 0x91, 0x6a, - 0xb3, 0x99, 0x49, 0x04, 0xab, 0x1c, 0x16, 0xdb, 0x11, 0x21, 0xea, 0x31, 0x98, 0x89, 0x01, 0x4b, - 0xc3, 0x00, 0x0c, 0x12, 0xcb, 0x53, 0xc8, 0x28, 0x82, 0x0d, 0x82, 0x21, 0x1c, 0xe2, 0x10, 0x89, - 0x32, 0xa8, 0xa8, 0x12, 0x9f, 0x26, 0xcb, 0x22, 0x89, 0x8a, 0x07, 0x8c, 0x20, 0xa1, 0x09, 0x10, - 0xb0, 0x41, 0x98, 0xbb, 0x73, 0xe8, 0x29, 0x03, 0x99, 0x19, 0x94, 0x0b, 0x91, 0x10, 0xaa, 0x17, - 0x0e, 0xb3, 0x1a, 0x24, 0xa9, 0xa9, 0x68, 0xa2, 0x1c, 0x04, 0xab, 0x13, 0x88, 0x8c, 0x02, 0x9e, - 0x15, 0x08, 0xb8, 0x19, 0x92, 0x40, 0x40, 0xf0, 0x3b, 0x08, 0x91, 0x89, 0x42, 0x08, 0xb6, 0x2f, - 0xa1, 0x01, 0x2a, 0x90, 0xb4, 0x1f, 0x03, 0x90, 0x1b, 0x92, 0x31, 0xf0, 0x8a, 0x12, 0x92, 0x3b, - 0xa5, 0x8f, 0x21, 0x81, 0x8a, 0x18, 0xaa, 0x94, 0x70, 0xaa, 0x82, 0x38, 0xda, 0x32, 0x99, 0xd1, - 0x51, 0x8b, 0xc2, 0x7a, 0xa0, 0x20, 0x9a, 0x82, 0x3a, 0xa3, 0x9a, 0x8b, 0x33, 0xa8, 0xbd, 0x62, - 0xa0, 0x02, 0x1f, 0xa2, 0x30, 0xd0, 0x49, 0x90, 0x88, 0x40, 0xdb, 0x21, 0x18, 0x02, 0x88, 0x90, - 0x1e, 0x12, 0xa0, 0x2a, 0x47, 0xc9, 0x1b, 0x95, 0x2d, 0x91, 0x82, 0x39, 0xe0, 0x18, 0x20, 0xe8, - 0x41, 0x89, 0xb9, 0x43, 0xa0, 0x0c, 0x03, 0xb0, 0x1c, 0x03, 0x88, 0x9a, 0x16, 0x8b, 0xa8, 0x08, - 0x58, 0xd3, 0x0b, 0x05, 0x8c, 0x11, 0xa4, 0x2c, 0x90, 0x11, 0x09, 0xdb, 0x24, 0xa9, 0x90, 0x69, - 0xd8, 0x23, 0x0c, 0x94, 0x8a, 0x21, 0xa1, 0x0e, 0x12, 0x88, 0xba, 0x74, 0xc0, 0x10, 0x39, 0xd3, - 0x2a, 0xb0, 0x50, 0x88, 0xa8, 0x12, 0xeb, 0x51, 0xb0, 0x00, 0x28, 0xc8, 0x21, 0x8a, 0x82, 0x10, - 0x8c, 0x93, 0x0e, 0xa4, 0x78, 0xb8, 0x91, 0x6b, 0xd1, 0x38, 0x88, 0xa1, 0x30, 0xc9, 0x41, 0xc9, - 0x22, 0xba, 0x21, 0x9a, 0x06, 0x1a, 0x9a, 0x85, 0x3a, 0xe9, 0x42, 0x90, 0xda, 0x21, 0xb8, 0x20, - 0x00, 0xa4, 0x29, 0xca, 0x32, 0xc9, 0x04, 0x3a, 0xec, 0x13, 0x3a, 0xd0, 0x09, 0x04, 0x0b, 0x89, - 0x86, 0x2c, 0xc3, 0x19, 0x11, 0xfa, 0x31, 0x80, 0xa9, 0x38, 0xb2, 0x50, 0x9a, 0x91, 0x19, 0x0a, - 0x17, 0x9a, 0xa3, 0x1e, 0x04, 0x99, 0x00, 0x98, 0x7b, 0xd3, 0x48, 0xa8, 0x10, 0xa9, 0x90, 0x52, - 0xaa, 0x15, 0x1a, 0xcb, 0x11, 0x21, 0x91, 0x0e, 0x22, 0xe2, 0x1b, 0x83, 0x0a, 0x91, 0x21, 0xa9, - 0xb3, 0x7a, 0xf1, 0x50, 0xba, 0x23, 0x0a, 0xa1, 0x10, 0x0a, 0xb5, 0x2f, 0x94, 0x8c, 0x03, 0xa8, - 0x28, 0xa1, 0x8c, 0x38, 0x90, 0x03, 0x89, 0x4c, 0xc1, 0x91, 0x98, 0x3f, 0xa4, 0x08, 0x32, 0xbf, - 0x15, 0x98, 0x09, 0x83, 0x0e, 0x03, 0x00, 0x0c, 0x84, 0x9b, 0x12, 0x88, 0x19, 0x01, 0x88, 0xc9, - 0x16, 0x0d, 0xb4, 0x4b, 0xa9, 0x07, 0x9b, 0x22, 0x93, 0x8f, 0x01, 0x90, 0x08, 0x10, 0xc9, 0x22, - 0x3c, 0x94, 0x99, 0x0e, 0x23, 0x90, 0xbb, 0x72, 0xd0, 0x48, 0xb8, 0x20, 0x00, 0x98, 0x22, 0xda, - 0x39, 0x93, 0x9c, 0x11, 0x19, 0xb2, 0x49, 0xd3, 0x9d, 0x51, 0xa0, 0x40, 0x98, 0x99, 0x00, 0x93, - 0x2d, 0x83, 0xd2, 0x2f, 0x84, 0x0a, 0x18, 0xb1, 0x59, 0x90, 0x89, 0x94, 0x09, 0x28, 0xd1, 0x29, - 0x88, 0x10, 0xf3, 0x3a, 0x11, 0xe2, 0x4b, 0xb8, 0x15, 0x9c, 0x38, 0x94, 0x8b, 0x10, 0xb4, 0x0d, - 0x21, 0x00, 0xa0, 0x3a, 0xe2, 0x39, 0x08, 0xc2, 0x18, 0x2c, 0x82, 0xb0, 0x20, 0x30, 0xf9, 0x39, - 0x89, 0x91, 0x42, 0x0a, 0xf5, 0x2c, 0x91, 0x32, 0x89, 0xb1, 0x39, 0xa8, 0x63, 0x98, 0xd9, 0x79, - 0xb1, 0x58, 0xb0, 0x28, 0x91, 0x3a, 0x8a, 0xa4, 0x53, 0x8e, 0xa2, 0x20, 0x0b, 0x02, 0xca, 0x88, - 0x2a, 0x24, 0x8b, 0x80, 0xd1, 0x70, 0xb9, 0x18, 0x92, 0x29, 0x9a, 0x08, 0xd2, 0x2e, 0x83, 0xc3, - 0x5d, 0xc1, 0x20, 0x98, 0x10, 0xc8, 0x2b, 0x17, 0x9b, 0x31, 0xdb, 0x31, 0x81, 0x09, 0x20, 0xdb, - 0x04, 0x9b, 0x20, 0xd9, 0x23, 0x30, 0x9e, 0xa2, 0x23, 0x19, 0xea, 0x33, 0xe9, 0x69, 0xb0, 0x08, - 0x48, 0xa1, 0x29, 0xbb, 0x17, 0x1b, 0x92, 0x9a, 0x29, 0x85, 0x0c, 0x85, 0x9a, 0x39, 0x96, 0x8b, - 0x80, 0x82, 0x0d, 0x23, 0xba, 0xa3, 0x6b, 0x94, 0x8c, 0x00, 0x82, 0x09, 0x11, 0xa2, 0x2c, 0xe2, - 0x39, 0x25, 0xdd, 0x21, 0x92, 0x8a, 0x08, 0x95, 0x1b, 0x01, 0x23, 0xaf, 0x81, 0x60, 0xc0, 0x18, - 0x18, 0xd3, 0x2b, 0x92, 0x10, 0xab, 0x26, 0xa9, 0x88, 0x31, 0x9a, 0xd9, 0x22, 0x21, 0xbb, 0x99, - 0x07, 0x9d, 0x41, 0x83, 0xbc, 0x32, 0x3b, 0xf0, 0x40, 0xb8, 0x98, 0x49, 0x92, 0xa1, 0x1a, 0x19, - 0xb0, 0x10, 0x0c, 0x07, 0x0e, 0x84, 0x9a, 0x88, 0x24, 0x98, 0x19, 0x8a, 0x01, 0x01, 0x8d, 0x35, - 0xbc, 0x61, 0xa8, 0xa3, 0x2e, 0xa2, 0x11, 0xab, 0x22, 0xb8, 0x30, 0x20, 0xb8, 0x14, 0x8e, 0x17, - 0xbc, 0x21, 0x91, 0x8a, 0x54, 0xeb, 0x41, 0xa9, 0x02, 0x20, 0xda, 0x40, 0x80, 0x80, 0x99, 0x83, - 0x8e, 0x01, 0x21, 0x0b, 0x23, 0xd9, 0x1a, 0x88, 0x00, 0x86, 0x19, 0xdc, 0x10, 0x32, 0xac, 0x12, - 0x9b, 0x17, 0x8c, 0x02, 0x09, 0x1a, 0xc6, 0x3a, 0xb8, 0x12, 0x40, 0xc2, 0x1e, 0x83, 0x19, 0x9c, - 0x16, 0xab, 0x81, 0x60, 0xd1, 0x18, 0x80, 0xa9, 0x40, 0xa0, 0x38, 0x03, 0xad, 0x31, 0xc2, 0x8c, - 0x23, 0x90, 0x8b, 0x17, 0x9a, 0x09, 0xb2, 0x70, 0xa8, 0x80, 0x81, 0x20, 0x2a, 0xf3, 0x11, 0x2b, - 0xa3, 0xcb, 0x51, 0xa0, 0x0c, 0x06, 0x9b, 0x10, 0x12, 0x8a, 0xd9, 0x21, 0x10, 0xbb, 0xc3, 0x58, - 0xb3, 0x2c, 0x06, 0xdb, 0x12, 0x08, 0x98, 0xe1, 0x3a, 0xa2, 0x42, 0xb9, 0x88, 0x19, 0x83, 0xa8, - 0x5a, 0x94, 0x29, 0xa0, 0x1b, 0xa9, 0xa5, 0x08, 0x5c, 0xc2, 0x31, 0xb5, 0x8f, 0x03, 0x98, 0x2c, - 0xa3, 0x31, 0xea, 0x50, 0x90, 0x91, 0x8a, 0x39, 0x86, 0x1c, 0xa3, 0x0d, 0x10, 0x03, 0xbb, 0x60, - 0xa0, 0x89, 0x12, 0x9b, 0x41, 0x21, 0xf9, 0x18, 0x19, 0x40, 0xe3, 0x8a, 0x38, 0xe0, 0x22, 0x89, - 0xda, 0x30, 0x84, 0xa9, 0x70, 0xa0, 0x98, 0x80, 0x8a, 0x83, 0x4a, 0x81, 0x80, 0xc0, 0x3e, 0x87, - 0x8a, 0x28, 0xa0, 0x9a, 0x32, 0x11, 0x8b, 0x99, 0x07, 0x8c, 0x9b, 0x46, 0xa0, 0x28, 0xd9, 0x22, - 0x9b, 0x21, 0x82, 0xbf, 0x06, 0x19, 0xa0, 0x09, 0x03, 0x20, 0xeb, 0x01, 0x09, 0x1b, 0x27, 0xd8, - 0x29, 0x02, 0xf9, 0x29, 0x81, 0x80, 0x10, 0x80, 0xab, 0x31, 0x28, 0xb8, 0xa9, 0xc9, 0x79, 0xf2, - 0x40, 0x80, 0xa8, 0x81, 0x11, 0xbb, 0x49, 0xb6, 0x1c, 0x92, 0x3b, 0xa6, 0x2a, 0x05, 0xb9, 0x3a, - 0x93, 0x39, 0xca, 0x34, 0xbd, 0x03, 0x11, 0x8c, 0x04, 0xb8, 0x59, 0xa8, 0x09, 0x43, 0xb2, 0x8f, - 0x20, 0xb1, 0x69, 0xb8, 0x88, 0x11, 0x98, 0x21, 0xc8, 0x19, 0x05, 0x2c, 0xf1, 0x3b, 0x02, 0x10, - 0xd1, 0x1a, 0x41, 0x9b, 0x06, 0x08, 0x9b, 0x10, 0x20, 0x94, 0x09, 0x3b, 0x27, 0xad, 0x89, 0x35, - 0xcb, 0x30, 0xa2, 0x8b, 0x51, 0x84, 0xac, 0x88, 0x03, 0x0a, 0xab, 0x07, 0x1a, 0x23, 0xcb, 0x82, - 0x8e, 0x52, 0xb0, 0x0d, 0x02, 0x88, 0x09, 0x83, 0xb8, 0x1c, 0x83, 0x13, 0xcd, 0x53, 0x09, 0xf1, - 0x1a, 0x03, 0x9a, 0x10, 0x33, 0xce, 0x30, 0x02, 0xbb, 0x31, 0xa0, 0x09, 0x29, 0xe1, 0x58, 0xab, - 0x43, 0x82, 0xeb, 0x50, 0x00, 0xb0, 0x71, 0xa9, 0x08, 0x12, 0x99, 0x09, 0x80, 0x34, 0x00, 0xd8, - 0x39, 0xc2, 0x12, 0x2e, 0xc1, 0x29, 0x01, 0xc8, 0x2b, 0x07, 0x1a, 0xb0, 0x21, 0x8e, 0x94, 0x0b, - 0x12, 0xb8, 0x0c, 0x16, 0xca, 0x39, 0x14, 0xeb, 0x10, 0x11, 0xaa, 0x43, 0x8c, 0xa1, 0x20, 0x18, - 0xa3, 0x8c, 0xb0, 0x55, 0xcc, 0x41, 0x90, 0x99, 0x50, 0xc0, 0x18, 0x11, 0xca, 0x31, 0xca, 0x21, - 0x11, 0x9b, 0x28, 0xc1, 0x49, 0x32, 0xf8, 0x4a, 0xc0, 0x08, 0x31, 0xa2, 0x8b, 0x33, 0xeb, 0x19, - 0x27, 0x9a, 0x10, 0xc2, 0x1c, 0x84, 0x0a, 0x18, 0xaa, 0x01, 0x24, 0xdc, 0x49, 0x92, 0x29, 0xe0, - 0x39, 0xb2, 0x3a, 0x82, 0xa9, 0x09, 0x01, 0x83, 0xdf, 0x32, 0x83, 0xcb, 0x20, 0x20, 0x43, 0xe1, - 0x0b, 0x2a, 0x01, 0x04, 0x90, 0xbf, 0x34, 0xa2, 0x1b, 0x09, 0xb6, 0x1d, 0x05, 0x0a, 0x90, 0x12, - 0x09, 0xb9, 0x8c, 0x91, 0x57, 0xaa, 0x01, 0x0a, 0xc0, 0x71, 0xa8, 0x19, 0x20, 0xa1, 0x9d, 0x01, - 0x13, 0xbb, 0x51, 0xe8, 0x89, 0x32, 0xa8, 0x00, 0x2b, 0x05, 0x00, 0x9a, 0x88, 0xd1, 0x2c, 0xa2, - 0xcb, 0x44, 0x40, 0xe1, 0x0a, 0x01, 0xb1, 0x58, 0xaa, 0x85, 0x8b, 0x24, 0x98, 0x8a, 0x05, 0x9a, - 0x12, 0x29, 0xf2, 0x6a, 0x98, 0x98, 0x30, 0xb1, 0x7a, 0x92, 0xa9, 0x29, 0xa0, 0x58, 0xb0, 0x01, - 0x4a, 0x94, 0xa9, 0x9b, 0x24, 0x29, 0xc9, 0x25, 0xab, 0x1b, 0x64, 0xe2, 0x2c, 0x82, 0x90, 0x19, - 0xa1, 0x18, 0xba, 0x14, 0x30, 0xba, 0x20, 0x63, 0xf1, 0x1c, 0x12, 0x90, 0x88, 0x11, 0xcc, 0x21, - 0x11, 0xe0, 0x0c, 0x23, 0x91, 0x0a, 0x9a, 0x91, 0x25, 0xbc, 0x34, 0xaf, 0x13, 0x11, 0xbb, 0x09, - 0x31, 0xc1, 0x18, 0x99, 0x19, 0x1a, 0x57, 0x9b, 0x80, 0x49, 0x98, 0xd0, 0x1e, 0x13, 0x81, 0x11, - 0x9e, 0x10, 0x10, 0xa2, 0x2d, 0x83, 0x9a, 0x15, 0xf9, 0x3c, 0x84, 0xa9, 0x30, 0xb9, 0x38, 0x33, - 0x89, 0xa0, 0x1c, 0x83, 0xc8, 0x38, 0x09, 0x15, 0xb0, 0x2d, 0xa9, 0x08, 0x77, 0xa8, 0x90, 0x0a, - 0x42, 0xb1, 0x39, 0x9a, 0xa4, 0x78, 0x82, 0xcc, 0x38, 0xa1, 0x28, 0x01, 0x09, 0x9c, 0x07, 0x8d, - 0x99, 0x22, 0x80, 0x0a, 0x92, 0x8b, 0x37, 0xac, 0x18, 0x81, 0x90, 0x62, 0xfa, 0x10, 0x80, 0x89, - 0x00, 0x9a, 0x12, 0x31, 0xa6, 0x1d, 0xc0, 0x50, 0xc1, 0x1a, 0x92, 0x88, 0x00, 0x00, 0x0a, 0xc1, - 0x30, 0x84, 0x0d, 0x10, 0xd0, 0x38, 0x20, 0xd1, 0x8a, 0x42, 0x02, 0xf8, 0x1c, 0x05, 0x20, 0xba, - 0x90, 0x3b, 0x17, 0x1a, 0xb1, 0xba, 0x69, 0x02, 0xa9, 0x12, 0x2c, 0x84, 0xbb, 0x20, 0x28, 0x13, - 0xad, 0x94, 0x4e, 0xb1, 0x38, 0xcc, 0x32, 0x00, 0x01, 0xa9, 0x90, 0x2e, 0x92, 0x0a, 0xb8, 0x66, - 0xa9, 0x90, 0x18, 0xa8, 0x12, 0x6a, 0xc3, 0x19, 0x9e, 0x22, 0x99, 0x81, 0x32, 0xce, 0x21, 0x98, - 0x00, 0x32, 0xba, 0x88, 0x88, 0x80, 0x3a, 0x02, 0x77, 0xc0, 0x8a, 0x30, 0xe0, 0x39, 0x92, 0x10, - 0xcc, 0x20, 0x04, 0x00, 0x8b, 0x86, 0xc9, 0x3c, 0xa3, 0x06, 0x8c, 0x82, 0xaa, 0x40, 0x31, 0xc1, - 0x8c, 0x92, 0x28, 0x19, 0xa3, 0x32, 0xcf, 0x40, 0xa2, 0x1d, 0x81, 0x08, 0x18, 0xd3, 0x3b, 0x01, - 0x8e, 0x04, 0x00, 0xab, 0x11, 0x02, 0x0d, 0x93, 0x08, 0xad, 0x33, 0xab, 0x51, 0xa8, 0x82, 0x0e, - 0x82, 0x20, 0x99, 0xa4, 0x49, 0x8f, 0x35, 0xb9, 0x0b, 0x13, 0x00, 0x0d, 0xa3, 0x5b, 0x04, 0xba, - 0x40, 0xe9, 0x51, 0x90, 0x81, 0xba, 0x32, 0x99, 0x90, 0x18, 0x28, 0x04, 0xbb, 0x19, 0xbb, 0x04, - 0x04, 0xdf, 0x83, 0x40, 0x93, 0x8b, 0x8c, 0x03, 0x08, 0x15, 0xac, 0xa8, 0x50, 0xc2, 0x1c, 0x02, - 0xd0, 0x53, 0x9d, 0x11, 0x18, 0xaa, 0x12, 0x9b, 0x38, 0x16, 0xc9, 0x39, 0x9a, 0x42, 0xb0, 0x19, - 0x98, 0x00, 0x10, 0xbb, 0x67, 0xda, 0x00, 0x08, 0x3a, 0xa6, 0x2a, 0x93, 0x8f, 0x04, 0x19, 0xa9, - 0x61, 0xa9, 0x03, 0x19, 0x99, 0x90, 0x34, 0x98, 0x2a, 0xe8, 0x49, 0xe2, 0x28, 0x88, 0x22, 0xa9, - 0x09, 0x12, 0xcf, 0x04, 0x39, 0xd1, 0x29, 0xa8, 0x23, 0x98, 0x89, 0xb1, 0x9c, 0x09, 0x12, 0x1a, - 0xa6, 0x5a, 0xe0, 0x19, 0x21, 0xb1, 0x09, 0x19, 0xfb, 0x73, 0x90, 0x89, 0xa1, 0x3a, 0x03, 0xc0, - 0x38, 0xc8, 0x42, 0xdb, 0x11, 0x2a, 0x94, 0x31, 0xac, 0x52, 0xa1, 0x3b, 0xf3, 0x1a, 0x84, 0x9c, - 0x23, 0xaa, 0x12, 0xa4, 0x0f, 0x82, 0x20, 0x00, 0xa4, 0x8e, 0x82, 0x00, 0x9e, 0x13, 0x8b, 0x14, - 0x18, 0xcb, 0x09, 0xa0, 0x22, 0x09, 0xaf, 0x14, 0x08, 0x22, 0xe0, 0x8a, 0x93, 0x1f, 0x92, 0x21, - 0xa9, 0x3a, 0x84, 0xb9, 0x59, 0xc2, 0x4a, 0xc2, 0x29, 0x15, 0xbc, 0x38, 0x83, 0xb9, 0x4b, 0x86, - 0x8a, 0x03, 0x0c, 0x91, 0x00, 0x72, 0x83, 0xbf, 0x01, 0x09, 0x11, 0x02, 0x00, 0x88, 0x09, 0xe3, - 0x3e, 0x95, 0x0b, 0x00, 0xa1, 0x38, 0xa2, 0x09, 0x8e, 0x94, 0x39, 0xb0, 0xca, 0x70, 0xa1, 0x88, - 0x38, 0xc9, 0x81, 0x1c, 0x81, 0x21, 0xac, 0x12, 0x99, 0x9f, 0x22, 0x10, 0x39, 0x94, 0x8d, 0x08, - 0xb1, 0x8c, 0x43, 0xa8, 0x28, 0x07, 0x1c, 0xb2, 0x0a, 0x90, 0x6b, 0x13, 0xf9, 0x49, 0x81, 0x10, - 0xa0, 0x38, 0xb2, 0x9f, 0x34, 0x98, 0xaa, 0x61, 0x90, 0xca, 0x60, 0x80, 0x08, 0x11, 0x8a, 0x09, - 0xa0, 0x71, 0xb0, 0x2a, 0x33, 0xf8, 0x1a, 0x32, 0xf0, 0x2b, 0x03, 0xbc, 0x52, 0xa0, 0x09, 0x21, - 0xe8, 0x2a, 0xa3, 0x20, 0xab, 0x95, 0x1b, 0xb0, 0x30, 0x17, 0xb8, 0x40, 0xb2, 0xaf, 0x00, 0x33, - 0x9d, 0x14, 0x9a, 0xa9, 0x25, 0x89, 0x82, 0xac, 0x28, 0x87, 0x8d, 0x22, 0x98, 0x8a, 0x12, 0xc9, - 0x08, 0x21, 0x81, 0x2b, 0xeb, 0x34, 0x09, 0xb9, 0x39, 0x95, 0x1d, 0x05, 0x99, 0x9b, 0x26, 0x9a, - 0x90, 0x28, 0x30, 0xb4, 0x0b, 0x72, 0xe0, 0x28, 0x90, 0x00, 0x89, 0x90, 0x43, 0xab, 0xb3, 0x59, - 0x80, 0xc9, 0x60, 0x81, 0x09, 0xa3, 0xb8, 0x9f, 0x21, 0x22, 0xba, 0x67, 0xbb, 0x11, 0x08, 0x21, - 0xca, 0x19, 0xc0, 0x29, 0x27, 0x89, 0xba, 0x21, 0xba, 0x20, 0x80, 0x34, 0x8a, 0x06, 0xdf, 0x10, - 0x08, 0x24, 0x9a, 0x00, 0x01, 0xcb, 0x11, 0x29, 0xc0, 0x10, 0x13, 0xcc, 0x50, 0xa1, 0x9a, 0x22, - 0x1c, 0x14, 0xbb, 0x40, 0xd8, 0x38, 0xb8, 0xa9, 0x53, 0x88, 0x05, 0x99, 0xaf, 0x21, 0x21, 0x90, - 0x88, 0xad, 0x31, 0x24, 0xfb, 0x30, 0x90, 0xbb, 0x51, 0x10, 0x94, 0x0b, 0x12, 0xfb, 0x69, 0x91, - 0x00, 0x99, 0x19, 0x82, 0x8c, 0x31, 0xb1, 0x9a, 0x12, 0x35, 0xf8, 0x2d, 0x84, 0x9a, 0x28, 0x94, - 0x0c, 0x80, 0x20, 0xd2, 0x0c, 0x33, 0xb8, 0x4a, 0x93, 0x0a, 0x9b, 0x27, 0xbc, 0x12, 0x49, 0x95, - 0x09, 0xaa, 0x11, 0x31, 0xeb, 0x43, 0xd9, 0x28, 0xa8, 0x01, 0x1a, 0x06, 0x9b, 0xb1, 0x08, 0x71, - 0xa1, 0x9c, 0x82, 0x1a, 0x39, 0xe1, 0x18, 0x12, 0xaa, 0x15, 0xae, 0x11, 0x14, 0xa8, 0x39, 0xd0, - 0xa0, 0x6a, 0x90, 0x80, 0x8b, 0x34, 0xba, 0x10, 0x35, 0xdc, 0x22, 0x8a, 0x01, 0x22, 0xba, 0xa9, - 0x19, 0xc4, 0x73, 0xba, 0x34, 0xb8, 0x19, 0xbc, 0x16, 0x1a, 0x01, 0xb0, 0x0f, 0x14, 0x9a, 0x18, - 0xb2, 0x4c, 0x93, 0x1b, 0x83, 0x8e, 0x13, 0xc8, 0x1c, 0x12, 0xb2, 0x5c, 0x90, 0x92, 0x1d, 0x92, - 0x41, 0x9a, 0xb9, 0x53, 0xb8, 0x4c, 0x94, 0x19, 0x29, 0xe2, 0x2b, 0x14, 0x81, 0xbb, 0x09, 0x23, - 0x4b, 0x97, 0xac, 0x30, 0x01, 0x9a, 0x09, 0xc1, 0x79, 0xa8, 0x82, 0x2a, 0x88, 0x85, 0xaa, 0xbd, - 0x48, 0x05, 0x09, 0xb8, 0x20, 0x88, 0x00, 0x07, 0x9f, 0x12, 0x20, 0xb8, 0xab, 0x32, 0x10, 0x00, - 0x03, 0xdd, 0x70, 0x90, 0x91, 0x99, 0x99, 0x54, 0xa9, 0x8a, 0x24, 0x89, 0x13, 0xca, 0x0a, 0x51, - 0x83, 0xdc, 0x10, 0x88, 0x14, 0x00, 0xa9, 0x2b, 0x97, 0x39, 0xeb, 0x00, 0x43, 0x88, 0xb9, 0x8b, - 0x82, 0x61, 0x80, 0x8b, 0x85, 0x19, 0x89, 0xca, 0x80, 0x55, 0xb9, 0x3a, 0xd2, 0x1c, 0x84, 0x2a, - 0xc0, 0x10, 0x01, 0x9c, 0x34, 0xa9, 0x4a, 0xb3, 0x1d, 0x92, 0x08, 0x32, 0xb0, 0xaa, 0x3c, 0x27, - 0x9a, 0xa3, 0x8e, 0x98, 0x25, 0x09, 0xd2, 0x0c, 0x14, 0x98, 0x1a, 0xa0, 0x1a, 0x13, 0xcb, 0x16, - 0x1e, 0x03, 0xa8, 0x2c, 0xa0, 0x42, 0x98, 0xb3, 0x1f, 0xa3, 0x38, 0xb8, 0xba, 0x31, 0x84, 0xab, - 0x3d, 0x07, 0x0d, 0x02, 0x88, 0x9b, 0x33, 0xa9, 0x92, 0x8d, 0x20, 0xf3, 0x3b, 0x04, 0x89, 0x00, - 0xa2, 0x9f, 0x82, 0x39, 0x84, 0x09, 0x8c, 0x25, 0x98, 0x98, 0x31, 0xbd, 0x40, 0x93, 0x9e, 0x43, - 0x80, 0x88, 0x88, 0x99, 0xa8, 0x7a, 0x94, 0x2b, 0xb8, 0x40, 0xa3, 0x08, 0x2b, 0xb6, 0x8c, 0x42, - 0xe0, 0x28, 0x91, 0x01, 0x0d, 0x83, 0x83, 0x9f, 0x00, 0x91, 0x8a, 0x28, 0x92, 0x0b, 0xb0, 0x45, - 0xfa, 0x29, 0x81, 0x80, 0x0c, 0x01, 0x88, 0x22, 0xdc, 0x12, 0x8c, 0x04, 0x40, 0xd9, 0x13, 0xaa, - 0x01, 0x33, 0xd0, 0x29, 0x21, 0xb8, 0x29, 0x17, 0xcc, 0x40, 0xa0, 0x88, 0x4a, 0x95, 0x10, 0x98, - 0xaa, 0x12, 0xac, 0x71, 0x01, 0xba, 0x31, 0x11, 0x9d, 0x98, 0x27, 0xac, 0x21, 0x90, 0x89, 0x32, - 0x9a, 0xa2, 0x1e, 0x02, 0x02, 0x9f, 0x82, 0x08, 0x8f, 0x03, 0x00, 0x10, 0xe0, 0x1c, 0x93, 0x1a, - 0x14, 0xca, 0x1a, 0xb2, 0x78, 0x81, 0x08, 0xb8, 0x2d, 0x87, 0x9b, 0x22, 0x00, 0xb9, 0x48, 0x98, - 0x30, 0x83, 0x89, 0xef, 0x13, 0x38, 0x91, 0xca, 0x3b, 0xb4, 0x29, 0x05, 0xba, 0x25, 0x99, 0x90, - 0xbb, 0x3a, 0x37, 0xd8, 0x39, 0x81, 0xa0, 0x89, 0x20, 0xca, 0x24, 0x01, 0xcb, 0x42, 0x9a, 0x94, - 0x8c, 0x80, 0x8a, 0x32, 0x65, 0xe8, 0x89, 0x4a, 0x95, 0x8d, 0x12, 0x18, 0x88, 0x09, 0xd1, 0x19, - 0x14, 0x80, 0xca, 0x2a, 0x14, 0x89, 0x9b, 0x15, 0x9b, 0x41, 0x95, 0x8d, 0x11, 0xb1, 0x4a, 0x90, - 0x80, 0x33, 0xcd, 0x10, 0x03, 0x09, 0x11, 0x8e, 0xc0, 0x6a, 0x92, 0x09, 0x02, 0xbb, 0x60, 0x83, - 0x8c, 0x02, 0xdb, 0x51, 0xa9, 0x21, 0x00, 0xa1, 0x19, 0x80, 0xfc, 0x41, 0xa1, 0x1c, 0x81, 0x81, - 0x80, 0x0c, 0x09, 0x85, 0xaa, 0x68, 0xd1, 0xab, 0x73, 0xa1, 0x8a, 0x12, 0x00, 0xda, 0x11, 0x9a, - 0x84, 0x00, 0x31, 0xe0, 0x8c, 0x25, 0xb8, 0x8b, 0x35, 0xd0, 0x19, 0x01, 0x91, 0xa9, 0x30, 0x90, - 0x8a, 0x20, 0x45, 0xf2, 0x1c, 0x03, 0xb8, 0x18, 0x41, 0xe8, 0x39, 0xa1, 0x2b, 0x81, 0x00, 0x43, - 0xc8, 0x19, 0x81, 0xdb, 0x62, 0xc0, 0x18, 0x11, 0xb8, 0x1a, 0x10, 0x25, 0xac, 0x11, 0x90, 0x9f, - 0x14, 0x89, 0x88, 0xa8, 0x62, 0xc8, 0x3b, 0xb3, 0x2d, 0x94, 0x28, 0x99, 0x08, 0x24, 0xf9, 0x19, - 0x11, 0x90, 0x58, 0xaa, 0x81, 0x1b, 0x31, 0xd2, 0x59, 0x81, 0x10, 0xfb, 0x3b, 0x12, 0x9a, 0x06, - 0xbb, 0x01, 0x43, 0xaa, 0x88, 0x8b, 0x07, 0x99, 0x29, 0xd3, 0x9c, 0x32, 0x13, 0xb9, 0x0b, 0x13, - 0x3a, 0x55, 0xf9, 0x9a, 0x12, 0x99, 0xa8, 0x39, 0x47, 0xa1, 0xb8, 0x2b, 0x93, 0xcb, 0x27, 0xac, - 0x21, 0x23, 0xb9, 0xac, 0x81, 0x73, 0xb8, 0x31, 0x08, 0xeb, 0x18, 0x22, 0x11, 0x19, 0x05, 0xdb, - 0x30, 0x09, 0x05, 0x00, 0x9b, 0x89, 0x08, 0x73, 0x82, 0xcc, 0x12, 0x0b, 0x90, 0x90, 0x25, 0xaf, - 0x14, 0xaa, 0x80, 0x39, 0x98, 0x27, 0xbb, 0x43, 0xbc, 0x08, 0x03, 0x9b, 0x02, 0x3b, 0xa6, 0x09, - 0x10, 0x24, 0xcd, 0x19, 0x13, 0xba, 0x0a, 0x36, 0xdb, 0x38, 0xb8, 0x8a, 0x70, 0x95, 0x8b, 0x02, - 0x9b, 0x30, 0x23, 0xc0, 0x01, 0x1a, 0xf3, 0x1c, 0x5a, 0x93, 0x99, 0x0c, 0x35, 0x91, 0xab, 0x15, - 0xc9, 0x18, 0x11, 0x80, 0x99, 0x50, 0xc2, 0x1b, 0x40, 0xc3, 0x2a, 0xb1, 0x5d, 0xb2, 0x8c, 0x41, - 0xc8, 0x1a, 0x04, 0xaa, 0x4a, 0x84, 0x88, 0x1b, 0x88, 0x00, 0xa2, 0x0c, 0x09, 0x17, 0xad, 0x12, - 0x88, 0x30, 0xd4, 0x0a, 0x11, 0xb0, 0x0c, 0x82, 0x9a, 0x72, 0x80, 0xa3, 0x19, 0x19, 0x96, 0x9c, - 0x39, 0x92, 0x51, 0x34, 0xe0, 0x9d, 0x32, 0xb1, 0x29, 0x88, 0x32, 0x13, 0xbd, 0x42, 0xd9, 0x38, - 0x14, 0xb9, 0x9f, 0x11, 0x99, 0x28, 0x02, 0x02, 0xaf, 0x01, 0x20, 0xbb, 0x31, 0x07, 0xbd, 0x29, - 0x13, 0xbb, 0x21, 0xb8, 0x2b, 0x05, 0x59, 0xa6, 0x8e, 0x22, 0xa8, 0xaa, 0x31, 0x93, 0x4a, 0x92, - 0x8a, 0x88, 0x32, 0x61, 0xb0, 0xab, 0x39, 0x97, 0x8f, 0x32, 0xa9, 0x10, 0x23, 0xcc, 0x38, 0xa2, - 0x12, 0x8e, 0x88, 0x34, 0xb0, 0x1e, 0x80, 0x02, 0x49, 0x93, 0xce, 0x68, 0x91, 0x08, 0xba, 0x28, - 0x13, 0x88, 0x1b, 0x17, 0xe9, 0x39, 0x91, 0x2b, 0x84, 0x20, 0xcc, 0x88, 0x08, 0x42, 0xb1, 0x0c, - 0x98, 0x10, 0x2a, 0x83, 0xca, 0x0c, 0x26, 0x80, 0xca, 0x38, 0x83, 0x9b, 0xad, 0xb3, 0x7b, 0x92, - 0x88, 0x73, 0xb0, 0x08, 0x99, 0xc0, 0x4a, 0x16, 0xb9, 0x09, 0x21, 0xb0, 0x43, 0xa1, 0x9e, 0x33, - 0x99, 0x22, 0xbf, 0x02, 0x22, 0xba, 0x01, 0x2b, 0xc2, 0x27, 0x8a, 0xda, 0x38, 0x25, 0x19, 0xba, - 0x22, 0xaa, 0x13, 0x9c, 0xd1, 0x73, 0x91, 0xbb, 0x81, 0x21, 0x61, 0xfa, 0x28, 0x80, 0x32, 0xca, - 0x39, 0xf1, 0x39, 0x81, 0x98, 0x8b, 0x14, 0x10, 0x90, 0xf8, 0x4a, 0xb2, 0x39, 0xd4, 0x2c, 0x04, - 0x98, 0x09, 0xc9, 0x30, 0x81, 0xb8, 0x38, 0x52, 0xd8, 0x19, 0xa0, 0x3a, 0x00, 0x37, 0xac, 0xa8, - 0x10, 0x12, 0xa9, 0x9b, 0x37, 0x00, 0xd8, 0x20, 0xc9, 0x00, 0x71, 0xa1, 0x8e, 0x30, 0x83, 0xad, - 0x32, 0xc0, 0x18, 0x12, 0xcb, 0x31, 0x81, 0x18, 0x80, 0xec, 0x51, 0x98, 0x1a, 0x11, 0x11, 0x8b, - 0x87, 0xad, 0x21, 0x12, 0x98, 0x80, 0x9e, 0x12, 0x0a, 0x82, 0x32, 0xaf, 0x30, 0x84, 0xbd, 0x38, - 0x83, 0x0b, 0x05, 0x9c, 0x21, 0x11, 0xa2, 0x2a, 0xfc, 0x50, 0x98, 0x90, 0x28, 0xa0, 0x19, 0xb0, - 0x18, 0xa0, 0x03, 0x3e, 0x96, 0x0a, 0xb0, 0x6b, 0x82, 0x92, 0x1c, 0x00, 0xc0, 0x2a, 0x87, 0x98, - 0x50, 0xd0, 0x88, 0x11, 0x10, 0xc8, 0x89, 0x8b, 0x16, 0x08, 0x13, 0xac, 0x82, 0x9d, 0x11, 0x00, - 0x4a, 0x05, 0xa0, 0xad, 0x71, 0x90, 0xa9, 0x29, 0x80, 0x03, 0x89, 0xb8, 0x4a, 0xc0, 0x74, 0xc8, - 0x1a, 0x88, 0x93, 0x0d, 0x23, 0x10, 0x89, 0x83, 0xdc, 0x4a, 0xd3, 0x38, 0xc0, 0x18, 0x12, 0xa8, - 0x2c, 0x24, 0xac, 0x13, 0x99, 0xea, 0x30, 0x23, 0xb1, 0x1c, 0xb8, 0x30, 0x98, 0x25, 0x81, 0xcf, - 0x28, 0x06, 0x9a, 0x21, 0x98, 0x09, 0xd8, 0x69, 0x83, 0x8a, 0x82, 0xab, 0x89, 0x31, 0x07, 0x0b, - 0x99, 0x33, 0xc8, 0x09, 0xfb, 0x50, 0x83, 0x88, 0xd9, 0x2a, 0x11, 0x88, 0x21, 0x9e, 0x41, 0xc1, - 0x01, 0x9e, 0x32, 0x92, 0x0c, 0x81, 0xf0, 0x30, 0x98, 0x80, 0xa0, 0x58, 0x82, 0xdb, 0x39, 0x02, - 0x0a, 0x24, 0xdb, 0x81, 0x18, 0x93, 0xba, 0x73, 0xa9, 0xa2, 0x2b, 0xda, 0x43, 0x8b, 0x21, 0xc1, - 0x0f, 0x11, 0x81, 0x1c, 0x81, 0x21, 0xd2, 0x8d, 0x22, 0xe8, 0x58, 0xa3, 0x99, 0xa8, 0x31, 0x88, - 0x98, 0x52, 0x11, 0xfc, 0x40, 0xa1, 0x28, 0xa0, 0x09, 0x99, 0x43, 0x88, 0x49, 0x94, 0x8a, 0x08, - 0x91, 0x14, 0x8b, 0xca, 0x23, 0xa3, 0x3e, 0xe1, 0x22, 0x38, 0xd1, 0xcb, 0x89, 0x42, 0x30, 0xa3, - 0xcc, 0x61, 0xbb, 0x28, 0x05, 0x8c, 0x43, 0x98, 0xa2, 0x8c, 0x98, 0x21, 0xcb, 0x21, 0x9c, 0xa8, - 0x72, 0xb3, 0xdb, 0x73, 0xb8, 0x88, 0x08, 0x92, 0x5b, 0xc3, 0x29, 0xb1, 0x49, 0xa8, 0x84, 0x8c, - 0x38, 0x03, 0x88, 0xfb, 0x10, 0x32, 0x9d, 0x21, 0xd1, 0x49, 0x81, 0xa8, 0xa9, 0x20, 0x73, 0xd3, - 0x89, 0x20, 0x98, 0x80, 0xab, 0x65, 0x90, 0x81, 0xa9, 0x2b, 0x15, 0x88, 0x22, 0xdd, 0x32, 0x19, - 0xa1, 0x9f, 0x12, 0x48, 0xb0, 0x20, 0xaa, 0x19, 0x11, 0xd8, 0x30, 0x1b, 0xa5, 0x0c, 0x10, 0xc9, - 0x43, 0x9d, 0x43, 0xb9, 0x60, 0xc8, 0x09, 0x80, 0x00, 0x08, 0xa4, 0x1a, 0x91, 0x1c, 0x94, 0x9e, - 0x32, 0xa9, 0x82, 0x9c, 0x42, 0x10, 0xfa, 0x20, 0xb0, 0x2a, 0x88, 0xd1, 0x69, 0x91, 0x08, 0x12, - 0xad, 0x42, 0xda, 0x28, 0x13, 0x91, 0x19, 0x88, 0x12, 0x9a, 0x44, 0xa0, 0x8c, 0x07, 0x8b, 0x91, - 0x39, 0xa1, 0x23, 0x0f, 0x94, 0x0b, 0x09, 0x82, 0x00, 0xb9, 0x8f, 0x86, 0x0b, 0xa3, 0x98, 0x0c, - 0x06, 0x08, 0x08, 0x04, 0x9c, 0x09, 0xe1, 0x68, 0x98, 0x01, 0x00, 0x0a, 0x08, 0x98, 0x32, 0xa9, - 0x71, 0x9a, 0xa4, 0x3d, 0xd9, 0x44, 0x09, 0xc8, 0x48, 0xb0, 0x18, 0x19, 0x04, 0x9a, 0x21, 0x8d, - 0xa0, 0x64, 0xb0, 0x19, 0xb2, 0x1b, 0xd8, 0x19, 0x03, 0x14, 0x0f, 0x13, 0x8b, 0xc1, 0x58, 0xb0, - 0xa8, 0x39, 0x84, 0x00, 0xbd, 0x04, 0x89, 0x18, 0x18, 0x94, 0xdb, 0x4b, 0x92, 0x31, 0x9a, 0xcc, - 0x43, 0xbc, 0x25, 0x88, 0x09, 0xa8, 0x11, 0x59, 0x83, 0x02, 0xaf, 0x98, 0x3a, 0x20, 0x07, 0x0b, - 0x91, 0x88, 0x20, 0x92, 0x2d, 0x12, 0xb2, 0xaf, 0x84, 0x0a, 0x51, 0x93, 0x29, 0x80, 0x81, 0xfd, - 0x21, 0x99, 0x42, 0xa9, 0x88, 0x00, 0x09, 0x17, 0xba, 0xa1, 0x70, 0xb9, 0x31, 0x90, 0xc0, 0x49, - 0xa3, 0x08, 0x2d, 0xb5, 0x0b, 0x98, 0x20, 0x80, 0x11, 0x73, 0xfa, 0x19, 0x30, 0xc0, 0x99, 0x38, - 0xb0, 0x31, 0xa3, 0x10, 0x8f, 0x03, 0xd1, 0x8f, 0x24, 0xb0, 0x00, 0x9b, 0x23, 0x99, 0x12, 0x04, - 0x9a, 0xaf, 0x33, 0xbc, 0x26, 0x9a, 0xa3, 0x38, 0xaa, 0x22, 0x0a, 0x06, 0x1c, 0x93, 0x0f, 0x02, - 0x99, 0x38, 0x82, 0x9a, 0x42, 0xd3, 0x2a, 0xa8, 0x94, 0x60, 0xa8, 0x91, 0x91, 0x0f, 0x02, 0x81, - 0x18, 0xba, 0xab, 0x26, 0x08, 0x09, 0xfa, 0x7b, 0xa2, 0x09, 0x88, 0x80, 0x01, 0x10, 0x19, 0xa3, - 0x9e, 0x09, 0x8f, 0x07, 0x38, 0xa8, 0xb8, 0x8d, 0x02, 0x18, 0x05, 0xab, 0x12, 0x18, 0x88, 0xa8, - 0x40, 0x00, 0xf3, 0x3b, 0x09, 0xd0, 0x73, 0xa1, 0x9b, 0x00, 0x29, 0x94, 0x38, 0x0a, 0x83, 0xcf, - 0x04, 0x0c, 0x91, 0x01, 0x98, 0x0b, 0x05, 0x30, 0x92, 0x8e, 0x98, 0x03, 0xbb, 0x48, 0x53, 0xb3, - 0xc8, 0xae, 0x39, 0x84, 0x20, 0x94, 0xbe, 0x28, 0x05, 0x88, 0x98, 0x12, 0xc9, 0x28, 0xd1, 0x38, - 0x92, 0x3b, 0x94, 0x8e, 0x20, 0x06, 0xab, 0x01, 0x81, 0x28, 0xf8, 0x30, 0x88, 0x98, 0x2c, 0x94, - 0x0a, 0x40, 0xa4, 0xaf, 0x21, 0x80, 0x22, 0xa1, 0x1b, 0xb2, 0xcb, 0x7b, 0xa3, 0x99, 0x51, 0xa2, - 0xa9, 0x2a, 0x04, 0x92, 0x9b, 0xd4, 0x1e, 0x93, 0x09, 0x11, 0xa8, 0x58, 0x80, 0x28, 0xaf, 0x95, - 0x0b, 0x91, 0x21, 0x8b, 0x84, 0x89, 0x1b, 0xb9, 0x42, 0xa8, 0x73, 0xf0, 0x00, 0x89, 0xa2, 0x5b, - 0xb3, 0x3a, 0xc2, 0x2b, 0x00, 0x83, 0x37, 0x0d, 0xb0, 0x48, 0x89, 0x12, 0x18, 0x29, 0x84, 0x8d, - 0xd8, 0x19, 0x02, 0x4b, 0x87, 0x8a, 0x01, 0xaa, 0x48, 0x83, 0x0b, 0xfa, 0x28, 0x20, 0x32, 0xf3, - 0x2d, 0x93, 0x0a, 0x82, 0x88, 0x8a, 0x21, 0x19, 0xc3, 0x08, 0x79, 0x97, 0x8b, 0x92, 0x0a, 0xa0, - 0x40, 0xb0, 0x9b, 0x67, 0xb8, 0x80, 0x89, 0x00, 0x21, 0xb2, 0x2e, 0x03, 0x0c, 0x11, 0xea, 0x41, - 0x00, 0xc8, 0x2b, 0x01, 0x90, 0x49, 0xd0, 0x28, 0xb2, 0x3a, 0xd0, 0x1c, 0x43, 0x01, 0xcc, 0x19, - 0x52, 0xc9, 0x10, 0x8a, 0x22, 0x91, 0x4b, 0xe8, 0x2b, 0x24, 0x92, 0xbe, 0x40, 0x92, 0x0a, 0x10, - 0x19, 0xb9, 0x63, 0x8a, 0x93, 0x9b, 0x68, 0x90, 0x80, 0x41, 0x10, 0x09, 0x0b, 0xf0, 0x0a, 0x70, - 0xb9, 0x32, 0x1c, 0x83, 0xb2, 0x2b, 0x0c, 0xa4, 0x89, 0xcb, 0x31, 0x73, 0xc1, 0x4a, 0x00, 0x09, - 0x12, 0x03, 0xdb, 0x8f, 0x13, 0x30, 0xa2, 0x3b, 0xc6, 0x0c, 0x01, 0x10, 0x98, 0x8c, 0x15, 0x8a, - 0xaa, 0x00, 0x23, 0x8f, 0x12, 0xc0, 0x1a, 0x02, 0x92, 0x9b, 0x13, 0xd1, 0x1a, 0xaa, 0x97, 0x4c, - 0x04, 0x89, 0xcb, 0x32, 0xa9, 0x89, 0x35, 0xe9, 0x18, 0x11, 0x9b, 0x94, 0x1e, 0x81, 0x1a, 0x13, - 0xac, 0x88, 0xa0, 0x72, 0x99, 0x02, 0x13, 0x99, 0xce, 0x18, 0x33, 0xc8, 0x09, 0x04, 0x8d, 0x33, - 0x83, 0x0d, 0x98, 0x00, 0xcc, 0x43, 0xc8, 0x39, 0x92, 0x81, 0x01, 0xbb, 0x7b, 0xa7, 0x0b, 0x18, - 0x84, 0x8b, 0x12, 0xb0, 0x08, 0x09, 0x33, 0x8c, 0xc0, 0x61, 0x90, 0xc3, 0x3b, 0x88, 0xb4, 0x70, - 0xa1, 0x09, 0xa9, 0xa8, 0x1a, 0x94, 0x79, 0xb6, 0x09, 0x9a, 0x13, 0x39, 0x84, 0xcd, 0x28, 0xd0, - 0x29, 0x23, 0xf9, 0x18, 0x21, 0xd8, 0x19, 0x02, 0xaa, 0x10, 0x01, 0x1c, 0x95, 0x1b, 0xa3, 0x9e, - 0x30, 0x96, 0x0b, 0x01, 0xa2, 0x8a, 0xaa, 0x83, 0x3c, 0x23, 0xb1, 0x9c, 0x10, 0x73, 0xf3, 0x0e, - 0x02, 0x09, 0x82, 0x11, 0x8c, 0x92, 0x28, 0xc9, 0x43, 0x8a, 0xb0, 0x29, 0x1f, 0x06, 0x8b, 0x88, - 0xa2, 0x2b, 0x17, 0xca, 0x21, 0xa9, 0x32, 0xc0, 0x9b, 0x48, 0xa2, 0x8d, 0x43, 0xb0, 0x0c, 0x23, - 0x89, 0x8c, 0x42, 0x82, 0x9d, 0x80, 0x43, 0x09, 0x9a, 0x94, 0x9f, 0x11, 0x33, 0xb8, 0x09, 0xb9, - 0x9a, 0x54, 0xb1, 0x3a, 0xb3, 0x28, 0xfb, 0x08, 0x14, 0xcc, 0x88, 0x51, 0xa8, 0x98, 0x59, 0xa2, - 0xa9, 0x40, 0xa1, 0x0d, 0x93, 0x3c, 0xe0, 0x50, 0x90, 0xab, 0x22, 0xc0, 0x31, 0xd0, 0x29, 0x91, - 0x18, 0x88, 0x39, 0xb1, 0x61, 0xea, 0x29, 0x99, 0xa2, 0x1e, 0x16, 0xa9, 0x80, 0x99, 0x19, 0x04, - 0x1c, 0x82, 0x81, 0x28, 0xeb, 0x29, 0x80, 0x88, 0x64, 0x8a, 0xb1, 0x00, 0x38, 0xaa, 0x6a, 0x93, - 0x90, 0x1b, 0xdf, 0x30, 0x98, 0x02, 0xc2, 0x78, 0xc9, 0x18, 0x08, 0xa0, 0x29, 0x81, 0x10, 0x0b, - 0xb5, 0x11, 0xbc, 0x09, 0x43, 0xd9, 0x31, 0xcc, 0x21, 0x31, 0xc1, 0xbb, 0x13, 0x31, 0x90, 0xc4, - 0x1c, 0xe1, 0x39, 0x03, 0xaa, 0x21, 0x9d, 0x03, 0x9f, 0x05, 0xaa, 0x49, 0xd1, 0x28, 0x29, 0x92, - 0x1b, 0xc1, 0x19, 0xb0, 0x70, 0xc8, 0x88, 0x39, 0xd3, 0x28, 0x9b, 0x07, 0xaa, 0x3a, 0xa4, 0x80, - 0x1b, 0xa3, 0x0d, 0x98, 0x24, 0xd0, 0x0a, 0x28, 0xa1, 0x8d, 0x08, 0x03, 0xaf, 0x62, 0xa0, 0x8b, - 0x22, 0xb8, 0x39, 0xb1, 0x02, 0x8c, 0x85, 0x90, 0x19, 0xc9, 0x92, 0x4a, 0xcb, 0x21, 0x30, 0x91, - 0xad, 0x21, 0x61, 0xba, 0x29, 0xa1, 0x44, 0xba, 0x9b, 0xa9, 0x0b, 0x43, 0x93, 0xad, 0x81, 0x30, - 0xf0, 0x29, 0x10, 0x91, 0x9c, 0xb1, 0x5a, 0xa1, 0x29, 0xb0, 0x9b, 0x0b, 0x05, 0x9b, 0x18, 0x93, - 0xcb, 0x1c, 0xa3, 0x39, 0xb1, 0x20, 0xba, 0xbb, 0x30, 0xa1, 0x99, 0x11, 0xb9, 0x9a, 0x21, 0xa0, - 0x99, 0x1a, 0xb1, 0x00, 0x0b, 0x03, 0x0a, 0x99, 0x99, 0x0b, 0x91, 0x10, 0x01, 0xa9, 0x19, 0x99, - 0x99, 0x09, 0x90, 0x0a, 0x90, 0x99, 0x09, 0x79, 0x02, 0x01, 0x0f, 0x7d, 0x0b, 0x02, 0xcd, 0x06, - 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0x08, 0x88, 0x08, - 0x08, 0x88, 0x80, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x10, 0x22, - 0x11, 0x29, 0x77, 0x24, 0x98, 0xaa, 0xac, 0x40, 0x37, 0x03, 0x00, 0x90, 0xdc, 0x9b, 0x10, 0x08, - 0x51, 0x44, 0x12, 0x90, 0xba, 0x9a, 0xfa, 0xad, 0x9a, 0x9a, 0x20, 0x47, 0x43, 0x11, 0x80, 0xb8, - 0xac, 0xaa, 0xb9, 0xbf, 0x9b, 0x51, 0x34, 0x33, 0x36, 0x33, 0x22, 0x12, 0xb0, 0xbe, 0xab, 0x09, - 0x20, 0x02, 0xfb, 0xab, 0xa9, 0xbb, 0x51, 0x24, 0x01, 0x63, 0x33, 0xb8, 0xbe, 0xcd, 0x9b, 0x18, - 0x52, 0x33, 0x81, 0xcb, 0x89, 0x21, 0x11, 0x31, 0x24, 0x31, 0x53, 0x13, 0xca, 0xcb, 0xeb, 0xbb, - 0xac, 0x18, 0x32, 0x44, 0x34, 0x24, 0xa0, 0xce, 0x9b, 0x30, 0x44, 0x12, 0xa8, 0xcc, 0xba, 0x89, - 0x80, 0x98, 0x99, 0x88, 0x73, 0x37, 0x22, 0x80, 0x98, 0x08, 0x33, 0x13, 0x01, 0xeb, 0xab, 0x89, - 0xaa, 0x48, 0x47, 0x23, 0x81, 0xb9, 0xcd, 0xac, 0x99, 0x00, 0x22, 0x82, 0xba, 0x9c, 0x10, 0x44, - 0x44, 0x12, 0xa8, 0xaa, 0x0a, 0x00, 0xfa, 0xcd, 0x9a, 0x38, 0x37, 0x24, 0x80, 0xb9, 0xbb, 0xbb, - 0x8a, 0x08, 0x01, 0x88, 0x42, 0x81, 0x9a, 0x00, 0xea, 0x8a, 0x75, 0x44, 0x12, 0x00, 0x11, 0x21, - 0xa0, 0xde, 0xbc, 0xbb, 0x99, 0x08, 0x00, 0x32, 0x65, 0x34, 0x35, 0x22, 0x81, 0xa9, 0xab, 0x99, - 0xba, 0xbd, 0xac, 0x9b, 0x89, 0x00, 0x64, 0x34, 0x23, 0x32, 0x22, 0x81, 0xdb, 0xbc, 0xab, 0xbb, - 0xbd, 0xbd, 0xaa, 0x88, 0x11, 0x22, 0x23, 0x01, 0x10, 0x65, 0x44, 0x22, 0x81, 0xca, 0xbc, 0xab, - 0x9a, 0xdb, 0xbc, 0xac, 0x18, 0x22, 0x12, 0x00, 0x00, 0x20, 0x67, 0x43, 0x12, 0x98, 0x99, 0x98, - 0xa8, 0xfb, 0xbc, 0xaa, 0x89, 0x00, 0x11, 0x41, 0x46, 0x43, 0x34, 0x23, 0x02, 0x99, 0xab, 0xbb, - 0xeb, 0xcc, 0xab, 0x18, 0x64, 0x33, 0x12, 0x80, 0x89, 0x08, 0x31, 0x12, 0x90, 0xca, 0x9a, 0x00, - 0xd9, 0xef, 0xcc, 0xba, 0x09, 0x10, 0x33, 0x23, 0x43, 0x44, 0x44, 0x22, 0x80, 0xba, 0xbe, 0xbc, - 0xba, 0xaa, 0x9a, 0x08, 0x31, 0x34, 0x23, 0x23, 0x02, 0x88, 0x41, 0x45, 0x13, 0x80, 0x08, 0x11, - 0x82, 0xba, 0xac, 0x89, 0x98, 0xfd, 0xcc, 0xbb, 0x08, 0x63, 0x54, 0x34, 0x33, 0x12, 0x01, 0x98, - 0xba, 0xbf, 0xbc, 0xab, 0x9a, 0x89, 0x00, 0x43, 0x45, 0x43, 0x32, 0x22, 0x02, 0x98, 0xcc, 0xcc, - 0xbb, 0xcc, 0xbb, 0xbb, 0x99, 0x80, 0x08, 0x42, 0x54, 0x44, 0x33, 0x32, 0x01, 0xa8, 0xcc, 0xac, - 0xaa, 0x99, 0xaa, 0x9a, 0x99, 0x99, 0xdb, 0x8a, 0x54, 0x34, 0x33, 0x43, 0x32, 0x33, 0x22, 0x98, - 0x99, 0x88, 0xd9, 0xcd, 0xcc, 0xca, 0xaa, 0x8a, 0x31, 0x55, 0x43, 0x33, 0x22, 0x22, 0x00, 0x98, - 0xcb, 0xcb, 0xcb, 0xaa, 0x09, 0x21, 0x11, 0x10, 0x51, 0x45, 0x35, 0x24, 0x01, 0x90, 0xb9, 0xbb, - 0xcd, 0xbc, 0xbe, 0xcb, 0xab, 0x9a, 0x10, 0x33, 0x35, 0x35, 0x43, 0x23, 0x11, 0x80, 0xb9, 0xbd, - 0xbc, 0xab, 0xcb, 0xcb, 0xbb, 0xaa, 0x8a, 0x31, 0x46, 0x24, 0x22, 0x12, 0x00, 0x21, 0x33, 0x24, - 0x12, 0x90, 0x99, 0x08, 0x88, 0xea, 0xde, 0xac, 0x9a, 0x30, 0x55, 0x43, 0x22, 0x80, 0x88, 0x98, - 0xaa, 0xbc, 0xbd, 0xaa, 0x09, 0x21, 0x12, 0x01, 0x41, 0x65, 0x44, 0x33, 0x33, 0x03, 0xa9, 0xce, - 0xcc, 0xcb, 0xba, 0xaa, 0xaa, 0x99, 0x09, 0x40, 0x45, 0x34, 0x24, 0x12, 0x10, 0x80, 0x90, 0xb9, - 0xbb, 0xab, 0xba, 0xdc, 0xcb, 0xbb, 0xbc, 0xab, 0x89, 0x41, 0x44, 0x43, 0x32, 0x33, 0x36, 0x34, - 0x12, 0x98, 0xcb, 0xcb, 0xaa, 0x98, 0xa9, 0xbb, 0xba, 0x38, 0x77, 0x34, 0x23, 0x11, 0x88, 0x98, - 0x98, 0xcb, 0xdc, 0xcb, 0xaa, 0x9a, 0x08, 0x20, 0x32, 0x55, 0x53, 0x43, 0x23, 0x02, 0x98, 0xba, - 0xcc, 0xdc, 0xbc, 0xac, 0xab, 0x8a, 0x00, 0x20, 0x43, 0x43, 0x34, 0x43, 0x32, 0x12, 0x00, 0xa8, - 0xa9, 0xaa, 0x99, 0xda, 0xdd, 0xbc, 0xbc, 0xab, 0x99, 0x09, 0x10, 0x53, 0x54, 0x43, 0x23, 0x23, - 0x12, 0x01, 0xa8, 0xcb, 0xbc, 0xab, 0xbb, 0xcb, 0x0a, 0x52, 0x54, 0x33, 0x33, 0x11, 0x80, 0xa9, - 0xa9, 0xba, 0xcb, 0xaa, 0x9b, 0x99, 0xca, 0xaa, 0x09, 0x72, 0x55, 0x54, 0x33, 0x23, 0x81, 0xb9, - 0xdb, 0xcc, 0xcc, 0xcc, 0xba, 0x9a, 0x89, 0x08, 0x42, 0x34, 0x35, 0x32, 0x22, 0x11, 0x01, 0x98, - 0x98, 0xaa, 0xda, 0xcc, 0xbb, 0xbc, 0xac, 0xbb, 0xbc, 0xbb, 0x89, 0x72, 0x53, 0x33, 0x43, 0x23, - 0x23, 0x02, 0x98, 0xcb, 0xab, 0x9a, 0x89, 0xba, 0xbc, 0x0a, 0x53, 0x56, 0x43, 0x13, 0x02, 0x88, - 0x8a, 0x08, 0x21, 0x80, 0xfb, 0xcc, 0xab, 0x9b, 0x08, 0x31, 0x44, 0x34, 0x44, 0x32, 0x23, 0x12, - 0xa8, 0xec, 0xcd, 0xcc, 0xbb, 0xbb, 0xbb, 0x9a, 0x18, 0x55, 0x44, 0x32, 0x22, 0x11, 0x00, 0x88, - 0x99, 0xaa, 0xaa, 0xa9, 0xaa, 0xdd, 0xcd, 0xcb, 0xbb, 0xbb, 0x99, 0x20, 0x44, 0x34, 0x44, 0x33, - 0x24, 0x33, 0x23, 0x81, 0xa9, 0xbd, 0xcb, 0xbb, 0xba, 0xbb, 0x09, 0x41, 0x54, 0x23, 0x13, 0x01, - 0x00, 0x11, 0x33, 0x22, 0xb8, 0xcf, 0xbc, 0xab, 0x9a, 0x89, 0x89, 0x00, 0x21, 0x43, 0x33, 0x03, - 0xb9, 0xde, 0xdd, 0xcd, 0xcb, 0xcb, 0xaa, 0x9a, 0x09, 0x41, 0x44, 0x24, 0x23, 0x22, 0x01, 0x01, - 0x11, 0x01, 0x01, 0x88, 0xba, 0xce, 0xce, 0xbc, 0xbc, 0xbb, 0x9a, 0x10, 0x63, 0x43, 0x33, 0x34, - 0x34, 0x33, 0x23, 0x12, 0x90, 0xbc, 0xbd, 0xbb, 0xbb, 0xab, 0x8a, 0x31, 0x46, 0x32, 0x22, 0x12, - 0x22, 0x23, 0x13, 0x80, 0x9a, 0xbb, 0xbd, 0xcd, 0xdb, 0xbb, 0xbc, 0xaa, 0xa9, 0x18, 0x32, 0x24, - 0x11, 0x23, 0x13, 0xfa, 0xff, 0xbc, 0xbc, 0xbb, 0xbb, 0x88, 0x43, 0x45, 0x43, 0x23, 0x33, 0x22, - 0x12, 0x01, 0x01, 0x98, 0xca, 0xec, 0xcc, 0xbc, 0xcb, 0xaa, 0x89, 0x18, 0x21, 0x42, 0x53, 0x53, - 0x33, 0x34, 0x43, 0x22, 0x01, 0xa8, 0xca, 0xac, 0xac, 0xba, 0xaa, 0x9a, 0x09, 0x21, 0x43, 0x33, - 0x34, 0x34, 0x22, 0x11, 0x08, 0xa8, 0xcc, 0xcc, 0xcb, 0xbc, 0xbc, 0xaa, 0x08, 0x11, 0x12, 0x90, - 0x99, 0x30, 0x36, 0x24, 0xb8, 0xef, 0xcb, 0xbc, 0xab, 0xaa, 0x08, 0x51, 0x44, 0x34, 0x33, 0x32, - 0x12, 0x11, 0x22, 0x12, 0xa8, 0xfb, 0xdc, 0xbb, 0xac, 0xbb, 0x99, 0x10, 0x21, 0x32, 0x53, 0x63, - 0x43, 0x34, 0x34, 0x24, 0x22, 0x02, 0x98, 0xbc, 0xbd, 0xba, 0xab, 0xa9, 0x99, 0x08, 0x18, 0x32, - 0x36, 0x34, 0x23, 0x22, 0x02, 0xa8, 0xcd, 0xcc, 0xbb, 0xbd, 0xac, 0x9a, 0x19, 0x10, 0x81, 0x98, - 0x9a, 0x28, 0x66, 0x43, 0x12, 0xc9, 0xcd, 0xcc, 0xba, 0xbb, 0xa9, 0x08, 0x32, 0x37, 0x34, 0x34, - 0x12, 0x12, 0x21, 0x21, 0x81, 0xc9, 0xcd, 0xcc, 0xab, 0xbb, 0x99, 0x18, 0x10, 0x22, 0x32, 0x45, - 0x34, 0x35, 0x43, 0x34, 0x23, 0x23, 0x81, 0xb9, 0xcc, 0xac, 0xbb, 0xaa, 0xab, 0x9a, 0x99, 0x10, - 0x52, 0x44, 0x34, 0x23, 0x23, 0x81, 0xc9, 0xcc, 0xdb, 0xcb, 0xab, 0xab, 0x09, 0x18, 0x00, 0x88, - 0x99, 0x28, 0x55, 0x45, 0x43, 0x01, 0xba, 0xce, 0xcc, 0xbb, 0xaa, 0x8a, 0x20, 0x44, 0x34, 0x34, - 0x23, 0x22, 0x21, 0x01, 0x01, 0xa8, 0xeb, 0xbd, 0xbc, 0xbb, 0xab, 0x89, 0x11, 0x23, 0x12, 0x00, - 0x41, 0x56, 0x45, 0x34, 0x24, 0x23, 0x12, 0x98, 0xca, 0xcb, 0xbb, 0xba, 0xba, 0xbb, 0xbc, 0xab, - 0x08, 0x44, 0x44, 0x23, 0x33, 0x14, 0x02, 0xb9, 0xdc, 0xbc, 0xac, 0xab, 0x99, 0x88, 0x98, 0xa9, - 0xaa, 0x9b, 0x20, 0x56, 0x44, 0x22, 0x90, 0xeb, 0xbd, 0xbc, 0xab, 0x9a, 0x18, 0x42, 0x44, 0x43, - 0x23, 0x23, 0x12, 0x12, 0x12, 0x11, 0xb9, 0xcf, 0xbc, 0xcb, 0x9a, 0x89, 0x10, 0x21, 0x10, 0x08, - 0x20, 0x65, 0x54, 0x34, 0x44, 0x22, 0x22, 0x00, 0xa8, 0xca, 0xcb, 0xba, 0xba, 0xba, 0xbb, 0x9a, - 0x08, 0x43, 0x45, 0x33, 0x43, 0x22, 0x02, 0x90, 0xcc, 0xcc, 0xbb, 0xac, 0x99, 0x99, 0x99, 0xcb, - 0xbc, 0xcb, 0x8a, 0x42, 0x36, 0x34, 0x13, 0xa0, 0xdc, 0xbc, 0xcb, 0x9a, 0x89, 0x00, 0x21, 0x42, - 0x42, 0x33, 0x43, 0x33, 0x34, 0x33, 0x12, 0xda, 0xbd, 0xbd, 0xaa, 0x9a, 0x88, 0x01, 0x01, 0x88, - 0x00, 0x63, 0x64, 0x44, 0x43, 0x24, 0x32, 0x11, 0x00, 0xa9, 0xca, 0xbb, 0xac, 0xbb, 0xca, 0xca, - 0xaa, 0x88, 0x21, 0x35, 0x35, 0x32, 0x22, 0x01, 0xb8, 0xcc, 0xcc, 0xbb, 0xab, 0xa9, 0xca, 0xcb, - 0xac, 0xbb, 0x9b, 0x40, 0x45, 0x34, 0x33, 0x81, 0xc9, 0xbd, 0xad, 0xab, 0x99, 0x89, 0x88, 0x10, - 0x31, 0x35, 0x43, 0x33, 0x44, 0x34, 0x43, 0x01, 0x98, 0xcb, 0xac, 0x9b, 0x99, 0x89, 0xa9, 0xbb, - 0xbb, 0x0a, 0x75, 0x55, 0x53, 0x43, 0x33, 0x32, 0x11, 0x81, 0xa8, 0xdb, 0xdb, 0xba, 0xab, 0xab, - 0xaa, 0x9a, 0x18, 0x41, 0x44, 0x24, 0x22, 0x81, 0x98, 0xba, 0xcc, 0xbd, 0xbb, 0x9b, 0x9a, 0xcb, - 0xcd, 0xcb, 0xab, 0x0a, 0x31, 0x35, 0x34, 0x22, 0x81, 0xca, 0xcc, 0xbb, 0xac, 0x99, 0xaa, 0xba, - 0xab, 0x20, 0x46, 0x44, 0x34, 0x43, 0x43, 0x12, 0x01, 0xb9, 0xcc, 0xab, 0xaa, 0x99, 0xa8, 0xa9, - 0x9a, 0x28, 0x55, 0x45, 0x44, 0x34, 0x43, 0x33, 0x22, 0x01, 0x90, 0xba, 0xbe, 0xbc, 0xab, 0xab, - 0xaa, 0xaa, 0x99, 0x20, 0x45, 0x44, 0x33, 0x22, 0x02, 0x80, 0xb9, 0xdc, 0xbc, 0xbc, 0xbb, 0xcb, - 0xcb, 0xcb, 0xbb, 0x9a, 0x20, 0x45, 0x34, 0x23, 0x12, 0x90, 0xca, 0xbc, 0xac, 0xbb, 0xcb, 0xcb, - 0xbb, 0x89, 0x31, 0x55, 0x33, 0x35, 0x43, 0x33, 0x22, 0x80, 0xca, 0xcb, 0xba, 0xaa, 0xaa, 0xaa, - 0x9b, 0x08, 0x52, 0x54, 0x45, 0x44, 0x34, 0x33, 0x33, 0x12, 0x81, 0xa9, 0xeb, 0xbc, 0xbb, 0xac, - 0xa9, 0xab, 0xbb, 0x89, 0x31, 0x47, 0x43, 0x33, 0x11, 0x80, 0x98, 0xca, 0xbc, 0xcc, 0xbb, 0xcb, - 0xba, 0xdb, 0xcb, 0xab, 0x0a, 0x30, 0x45, 0x33, 0x24, 0x12, 0x80, 0xba, 0xbc, 0xbc, 0xac, 0xcb, - 0xbc, 0xab, 0x8a, 0x31, 0x55, 0x43, 0x34, 0x24, 0x23, 0x01, 0x90, 0xaa, 0xac, 0xaa, 0xba, 0xaa, - 0xab, 0x99, 0x21, 0x64, 0x44, 0x45, 0x43, 0x34, 0x23, 0x23, 0x11, 0x80, 0xa8, 0xbc, 0xcc, 0xba, - 0xba, 0xbc, 0xcc, 0xba, 0x89, 0x31, 0x44, 0x43, 0x22, 0x11, 0x12, 0x01, 0xb9, 0xdd, 0xcc, 0xbb, - 0xba, 0xbc, 0xcb, 0xcb, 0xaa, 0x08, 0x32, 0x35, 0x34, 0x33, 0x12, 0x81, 0xba, 0xbd, 0xbd, 0xcb, - 0xbc, 0xad, 0x9b, 0x89, 0x32, 0x54, 0x34, 0x34, 0x32, 0x22, 0x01, 0xa8, 0xca, 0xba, 0xab, 0x9a, - 0x9a, 0x88, 0x08, 0x41, 0x64, 0x44, 0x35, 0x34, 0x24, 0x23, 0x23, 0x11, 0x01, 0xa9, 0xbc, 0xbd, - 0xcb, 0xbb, 0xdb, 0xbb, 0xab, 0x09, 0x42, 0x44, 0x23, 0x33, 0x23, 0x12, 0x90, 0xea, 0xcc, 0xcc, - 0xbb, 0xbc, 0xcb, 0xbb, 0xaa, 0x88, 0x21, 0x43, 0x34, 0x43, 0x33, 0x13, 0x81, 0xcb, 0xbd, 0xcc, - 0xdb, 0xcb, 0xab, 0xaa, 0x20, 0x53, 0x35, 0x43, 0x33, 0x32, 0x23, 0x01, 0xa9, 0xbc, 0xbb, 0xbb, - 0xaa, 0x9a, 0x18, 0x52, 0x44, 0x53, 0x34, 0x35, 0x43, 0x43, 0x32, 0x33, 0x12, 0x01, 0xa8, 0xcc, - 0xbc, 0xcc, 0xba, 0xac, 0xaa, 0x8a, 0x10, 0x33, 0x43, 0x32, 0x43, 0x33, 0x43, 0x12, 0xca, 0xde, - 0xcc, 0xac, 0xbb, 0xba, 0xaa, 0xaa, 0x88, 0x10, 0x44, 0x43, 0x33, 0x32, 0x12, 0x01, 0xb9, 0xce, - 0xcd, 0xcc, 0xbb, 0xab, 0x89, 0x42, 0x35, 0x43, 0x32, 0x33, 0x33, 0x14, 0x01, 0x99, 0xab, 0xcb, - 0xaa, 0xaa, 0x99, 0x21, 0x64, 0x53, 0x43, 0x32, 0x43, 0x33, 0x33, 0x35, 0x34, 0x33, 0x12, 0xa8, - 0xdd, 0xcb, 0xbb, 0xaa, 0x9b, 0xaa, 0x89, 0x08, 0x21, 0x32, 0x53, 0x42, 0x32, 0x25, 0x81, 0xeb, - 0xdd, 0xbc, 0xbc, 0xba, 0xa9, 0x9a, 0xa9, 0x99, 0x18, 0x32, 0x35, 0x34, 0x34, 0x23, 0x91, 0xeb, - 0xdd, 0xdb, 0xbb, 0x9c, 0x8a, 0x21, 0x34, 0x34, 0x33, 0x34, 0x33, 0x23, 0x01, 0x90, 0xaa, 0xbb, - 0xcb, 0xbb, 0xaa, 0x31, 0x47, 0x34, 0x33, 0x02, 0x00, 0x30, 0x55, 0x35, 0x25, 0x43, 0x33, 0x13, - 0x81, 0xca, 0xbd, 0xcb, 0xaa, 0xaa, 0xab, 0xab, 0xaa, 0x8a, 0x10, 0x43, 0x44, 0x42, 0x22, 0x12, - 0xa8, 0xde, 0xcc, 0xbb, 0xbb, 0xaa, 0xa9, 0xaa, 0xcb, 0x9a, 0x09, 0x52, 0x45, 0x23, 0x02, 0xd9, - 0xcc, 0xcc, 0xba, 0xaa, 0x8a, 0x20, 0x53, 0x34, 0x53, 0x32, 0x33, 0x12, 0x11, 0x20, 0x01, 0xb8, - 0xcd, 0xcc, 0x9a, 0x18, 0x52, 0x34, 0x24, 0x01, 0x89, 0x99, 0x08, 0x53, 0x44, 0x34, 0x53, 0x33, - 0x13, 0x80, 0xcb, 0xbc, 0xbb, 0xbb, 0xcb, 0xbb, 0xad, 0xbb, 0x99, 0x18, 0x32, 0x53, 0x32, 0x13, - 0x82, 0xc9, 0xcd, 0xcc, 0xba, 0xab, 0x9a, 0xbb, 0xdc, 0xcb, 0xaa, 0x19, 0x54, 0x53, 0x12, 0xa8, - 0xdc, 0xbb, 0xbc, 0xaa, 0x99, 0x18, 0x42, 0x34, 0x35, 0x33, 0x24, 0x32, 0x22, 0x33, 0x43, 0x01, - 0xc9, 0xcd, 0xac, 0x9a, 0x20, 0x34, 0x34, 0x22, 0x90, 0xaa, 0x9a, 0x30, 0x55, 0x44, 0x53, 0x33, - 0x24, 0x02, 0x98, 0xca, 0xab, 0xbb, 0xaa, 0xcc, 0xdb, 0xbb, 0xbb, 0x88, 0x22, 0x43, 0x22, 0x11, - 0x88, 0x89, 0xa9, 0xeb, 0xbc, 0xac, 0x9a, 0x99, 0xdb, 0xce, 0xcb, 0xaa, 0x10, 0x44, 0x33, 0x81, - 0xdc, 0xcc, 0xbb, 0xaa, 0x9a, 0x00, 0x31, 0x53, 0x34, 0x33, 0x43, 0x43, 0x32, 0x43, 0x32, 0x22, - 0x98, 0xcd, 0xbd, 0xaa, 0x08, 0x33, 0x36, 0x22, 0x81, 0xba, 0xbb, 0x09, 0x64, 0x53, 0x33, 0x35, - 0x43, 0x32, 0x11, 0xa8, 0xba, 0xbc, 0xba, 0xbc, 0xbe, 0xbd, 0xab, 0x99, 0x11, 0x33, 0x33, 0x01, - 0x98, 0xbb, 0x99, 0x00, 0x11, 0x98, 0x99, 0xba, 0xff, 0xcd, 0xcc, 0xab, 0x89, 0x31, 0x35, 0x12, - 0xb9, 0xcf, 0xcb, 0xaa, 0x99, 0x89, 0x10, 0x21, 0x34, 0x43, 0x24, 0x34, 0x34, 0x33, 0x24, 0x22, - 0x81, 0xca, 0xcd, 0x9b, 0x89, 0x21, 0x34, 0x24, 0x01, 0xb9, 0xcb, 0x8a, 0x41, 0x35, 0x44, 0x33, - 0x33, 0x25, 0x23, 0x12, 0x88, 0xba, 0xcc, 0xcb, 0xcc, 0xbc, 0xbc, 0x9a, 0x08, 0x32, 0x24, 0x01, - 0xa9, 0xcc, 0xaa, 0x88, 0x21, 0x32, 0x02, 0x90, 0xdb, 0xdc, 0xcb, 0xcb, 0x9a, 0x09, 0x43, 0x24, - 0x81, 0xec, 0xcc, 0xba, 0xaa, 0x99, 0x98, 0x08, 0x20, 0x34, 0x35, 0x45, 0x43, 0x32, 0x33, 0x22, - 0x11, 0xa8, 0xda, 0xac, 0x8a, 0x10, 0x43, 0x24, 0x12, 0x98, 0xbb, 0xac, 0x18, 0x45, 0x44, 0x33, - 0x24, 0x33, 0x53, 0x43, 0x22, 0x01, 0xa9, 0xcc, 0xcc, 0xdb, 0xab, 0xab, 0x88, 0x10, 0x33, 0x23, - 0xa8, 0xcd, 0xbc, 0x9a, 0x28, 0x42, 0x33, 0x02, 0xa8, 0xbd, 0xbd, 0xbb, 0xbb, 0x99, 0x20, 0x63, - 0x23, 0xc0, 0xde, 0xbc, 0xab, 0xab, 0xaa, 0xac, 0x9b, 0x18, 0x63, 0x44, 0x44, 0x42, 0x32, 0x12, - 0x01, 0x80, 0xa8, 0xaa, 0xab, 0x08, 0x30, 0x33, 0x01, 0xa9, 0xcc, 0xac, 0x19, 0x55, 0x45, 0x32, - 0x22, 0x12, 0x43, 0x44, 0x44, 0x12, 0x80, 0xb9, 0xbd, 0xbc, 0xbc, 0xba, 0x9a, 0x88, 0x31, 0x33, - 0x82, 0xfa, 0xcc, 0xaa, 0x89, 0x21, 0x43, 0x12, 0x80, 0xba, 0xcb, 0xab, 0x9a, 0xba, 0xab, 0x88, - 0x32, 0x83, 0xff, 0xcc, 0xbd, 0xbb, 0xbb, 0xbc, 0xad, 0x9b, 0x28, 0x64, 0x53, 0x33, 0x24, 0x23, - 0x11, 0x00, 0x98, 0x99, 0x99, 0x08, 0x00, 0x01, 0x90, 0xba, 0xcb, 0x9a, 0x30, 0x66, 0x44, 0x43, - 0x12, 0x11, 0x21, 0x54, 0x34, 0x25, 0x11, 0xa8, 0xbb, 0xcd, 0xbb, 0xbb, 0xab, 0x9a, 0x08, 0x21, - 0x12, 0xc9, 0xce, 0xac, 0x9b, 0x10, 0x23, 0x13, 0x80, 0xba, 0xbb, 0x9a, 0x89, 0xb9, 0xdd, 0xcb, - 0xab, 0x99, 0xa9, 0xec, 0xcd, 0xcc, 0xca, 0xca, 0xbb, 0xbd, 0x9b, 0x30, 0x46, 0x34, 0x33, 0x33, - 0x13, 0x02, 0x80, 0x88, 0x88, 0x80, 0x00, 0x80, 0xa8, 0xdb, 0xbb, 0x89, 0x31, 0x56, 0x44, 0x33, - 0x24, 0x11, 0x10, 0x42, 0x46, 0x34, 0x23, 0x81, 0xca, 0xbc, 0xbb, 0xab, 0xba, 0xba, 0xbb, 0x99, - 0x08, 0xb8, 0xde, 0xcc, 0xab, 0x89, 0x10, 0x11, 0x08, 0x99, 0x9a, 0x08, 0x21, 0x33, 0xb8, 0xff, - 0xbc, 0xba, 0xaa, 0x99, 0xba, 0xce, 0xcd, 0xcb, 0xbb, 0xbe, 0xac, 0x8a, 0x31, 0x46, 0x24, 0x23, - 0x22, 0x12, 0x11, 0x00, 0x80, 0x88, 0x08, 0x88, 0x98, 0xc9, 0xba, 0x89, 0x52, 0x45, 0x33, 0x24, - 0x23, 0x21, 0x20, 0x41, 0x64, 0x44, 0x33, 0x13, 0x90, 0xdb, 0xbb, 0xbb, 0xba, 0xca, 0xbb, 0xcb, - 0xa9, 0xa9, 0xca, 0xcd, 0xcb, 0xaa, 0x88, 0x80, 0x88, 0xaa, 0x8b, 0x32, 0x35, 0x34, 0x02, 0xfa, - 0xdc, 0xab, 0x9b, 0x8a, 0x90, 0xb9, 0xce, 0xbd, 0xbc, 0xcb, 0xbb, 0xbc, 0x8a, 0x72, 0x44, 0x33, - 0x33, 0x22, 0x11, 0x12, 0x01, 0x81, 0x88, 0x89, 0x89, 0x99, 0xaa, 0x8a, 0x61, 0x45, 0x34, 0x32, - 0x21, 0x33, 0x34, 0x33, 0x34, 0x36, 0x35, 0x24, 0x02, 0xb8, 0xcc, 0xbb, 0x9a, 0x9a, 0xab, 0xbc, - 0xad, 0xaa, 0xaa, 0xcb, 0xdb, 0xcb, 0xba, 0xab, 0xca, 0xba, 0x8b, 0x62, 0x34, 0x24, 0x12, 0x98, - 0xcc, 0xdb, 0xba, 0xaa, 0x9a, 0xaa, 0xcc, 0xcc, 0xcb, 0xbb, 0xad, 0xac, 0x9b, 0x18, 0x55, 0x53, - 0x33, 0x32, 0x21, 0x22, 0x12, 0x02, 0x98, 0xaa, 0xbb, 0x8a, 0x08, 0x32, 0x54, 0x44, 0x34, 0x24, - 0x23, 0x22, 0x23, 0x23, 0x33, 0x44, 0x44, 0x34, 0x33, 0x90, 0xdc, 0xcb, 0x9a, 0x98, 0x80, 0xa9, - 0xdb, 0xab, 0xab, 0xaa, 0xeb, 0xcc, 0xdb, 0xba, 0xab, 0xbb, 0xbb, 0x09, 0x63, 0x44, 0x23, 0x01, - 0x98, 0xcb, 0xbc, 0xba, 0xbb, 0xbc, 0xcb, 0xcd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0x89, 0x53, 0x46, - 0x44, 0x32, 0x22, 0x22, 0x22, 0x13, 0x01, 0xa8, 0xbc, 0xac, 0x89, 0x31, 0x44, 0x34, 0x34, 0x33, - 0x33, 0x23, 0x24, 0x32, 0x32, 0x43, 0x43, 0x34, 0x33, 0x80, 0xdc, 0xbd, 0xba, 0x89, 0x10, 0x01, - 0xaa, 0xbc, 0xbb, 0xcc, 0xdb, 0xdc, 0xdb, 0xbb, 0xbb, 0xac, 0x9b, 0x09, 0x32, 0x36, 0x23, 0x13, - 0x98, 0xca, 0xac, 0xab, 0xba, 0xba, 0xcc, 0xbd, 0xcd, 0xbb, 0xbc, 0xbb, 0xba, 0x99, 0x31, 0x56, - 0x44, 0x33, 0x33, 0x32, 0x43, 0x22, 0x01, 0xa9, 0xbd, 0xac, 0x8a, 0x20, 0x44, 0x34, 0x34, 0x23, - 0x33, 0x22, 0x12, 0x21, 0x32, 0x43, 0x34, 0x33, 0x23, 0xa0, 0xdd, 0xcc, 0xbb, 0x99, 0x00, 0x01, - 0x90, 0x99, 0xba, 0xaa, 0xdc, 0xdd, 0xcc, 0xcc, 0xbb, 0xac, 0xaa, 0x99, 0x00, 0x42, 0x43, 0x23, - 0x02, 0x90, 0xa9, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xcc, 0xbb, 0xcb, 0xbb, 0xab, 0x8a, 0x10, 0x54, - 0x54, 0x33, 0x25, 0x33, 0x32, 0x22, 0x01, 0xb9, 0xcd, 0xbb, 0xaa, 0x18, 0x42, 0x44, 0x34, 0x34, - 0x32, 0x33, 0x23, 0x32, 0x32, 0x23, 0x13, 0x22, 0x01, 0xd9, 0xdc, 0xbc, 0xbc, 0xbb, 0x99, 0x10, - 0x22, 0x33, 0x22, 0x11, 0xb8, 0xee, 0xdc, 0xdc, 0xbb, 0xbc, 0xab, 0xa9, 0x89, 0x00, 0x31, 0x35, - 0x33, 0x23, 0x11, 0x80, 0xba, 0xcf, 0xdb, 0xbc, 0xbc, 0xbb, 0xcb, 0xba, 0xac, 0xab, 0x8a, 0x40, - 0x64, 0x53, 0x33, 0x43, 0x23, 0x22, 0x02, 0x98, 0xdb, 0xbb, 0xbb, 0xaa, 0x18, 0x63, 0x44, 0x43, - 0x24, 0x24, 0x32, 0x22, 0x22, 0x11, 0x80, 0x80, 0x08, 0xb8, 0xcc, 0xdb, 0xbc, 0xad, 0x9a, 0x09, - 0x20, 0x23, 0x22, 0x01, 0x00, 0xa8, 0xfb, 0xed, 0xdb, 0xbb, 0xba, 0xbb, 0xba, 0xaa, 0x09, 0x62, - 0x44, 0x33, 0x23, 0x01, 0xa9, 0xcb, 0xcc, 0xbc, 0xbc, 0xcb, 0xbb, 0xbc, 0xcb, 0xbb, 0x9a, 0x08, - 0x63, 0x44, 0x34, 0x34, 0x33, 0x23, 0x22, 0x81, 0x99, 0xcb, 0xcb, 0xab, 0x9b, 0x19, 0x52, 0x44, - 0x54, 0x33, 0x34, 0x33, 0x32, 0x21, 0x12, 0x11, 0x80, 0xb9, 0xcb, 0xbc, 0xcc, 0xcc, 0xab, 0xaa, - 0x88, 0x21, 0x11, 0x00, 0x98, 0x89, 0x90, 0xfb, 0xdd, 0xbd, 0xbc, 0xac, 0xab, 0xaa, 0x89, 0x31, - 0x45, 0x34, 0x33, 0x13, 0x90, 0xb9, 0xcc, 0xbc, 0xcc, 0xcb, 0xbb, 0xcb, 0xcb, 0xcb, 0xaa, 0x89, - 0x31, 0x45, 0x35, 0x43, 0x23, 0x23, 0x21, 0x11, 0x00, 0xa9, 0xcb, 0xcb, 0xbb, 0xbb, 0x9a, 0x20, - 0x56, 0x54, 0x43, 0x33, 0x32, 0x22, 0x21, 0x21, 0x01, 0x88, 0xaa, 0xcb, 0xbc, 0xcd, 0xcb, 0xbb, - 0x8a, 0x08, 0x00, 0x00, 0x99, 0x89, 0x01, 0x98, 0xfb, 0xcf, 0xbc, 0xbc, 0xbb, 0xab, 0x89, 0x20, - 0x54, 0x34, 0x25, 0x12, 0x81, 0xa9, 0xaa, 0xba, 0xcc, 0xcc, 0xcb, 0xdb, 0xcb, 0xbb, 0xac, 0x9a, - 0x18, 0x53, 0x34, 0x35, 0x33, 0x23, 0x33, 0x32, 0x12, 0x90, 0xba, 0xcc, 0xba, 0xac, 0xbb, 0xab, - 0x19, 0x65, 0x44, 0x33, 0x43, 0x22, 0x22, 0x23, 0x33, 0x12, 0x90, 0xba, 0xbd, 0xdb, 0xdb, 0xba, - 0xcb, 0xaa, 0x9a, 0x89, 0x88, 0x00, 0x11, 0x88, 0xb9, 0xff, 0xcc, 0xbb, 0xac, 0x9a, 0x08, 0x10, - 0x52, 0x34, 0x35, 0x22, 0x82, 0x98, 0xa9, 0xa9, 0xca, 0xdb, 0xcd, 0xcc, 0xbb, 0xbc, 0xcb, 0xab, - 0x9a, 0x10, 0x44, 0x35, 0x34, 0x33, 0x33, 0x24, 0x22, 0x02, 0x98, 0xaa, 0xac, 0xbb, 0xca, 0xca, - 0x9a, 0x18, 0x43, 0x45, 0x33, 0x24, 0x22, 0x43, 0x33, 0x34, 0x23, 0x01, 0x99, 0xaa, 0xbc, 0xdb, - 0xcc, 0xbc, 0xba, 0xab, 0x99, 0x10, 0x00, 0xa9, 0xcb, 0xdd, 0xcc, 0xcb, 0xaa, 0x9a, 0x08, 0x11, - 0x53, 0x44, 0x34, 0x24, 0x11, 0x88, 0x89, 0x88, 0x89, 0xb9, 0xed, 0xdc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbb, 0x9a, 0x20, 0x45, 0x44, 0x43, 0x33, 0x24, 0x33, 0x22, 0x01, 0x98, 0xba, 0xbb, 0xac, 0xab, - 0xbb, 0x9a, 0x8a, 0x20, 0x73, 0x34, 0x43, 0x44, 0x33, 0x34, 0x34, 0x22, 0x21, 0x00, 0x88, 0xba, - 0xcd, 0xcc, 0xcb, 0xcb, 0x9a, 0x08, 0x88, 0x98, 0xba, 0xcc, 0xcc, 0xcb, 0xab, 0x8a, 0x10, 0x32, - 0x53, 0x34, 0x35, 0x34, 0x13, 0x01, 0x98, 0x98, 0x80, 0x98, 0xdc, 0xde, 0xcb, 0xcb, 0xab, 0xbb, - 0xac, 0xab, 0x8a, 0x30, 0x55, 0x43, 0x34, 0x33, 0x34, 0x23, 0x23, 0x01, 0x98, 0xaa, 0xaa, 0xcb, - 0xab, 0xac, 0xbb, 0xac, 0x8a, 0x10, 0x31, 0x44, 0x35, 0x44, 0x34, 0x24, 0x33, 0x34, 0x12, 0x00, - 0xa9, 0xcc, 0xcc, 0xcb, 0xaa, 0x8a, 0x99, 0xa9, 0xbc, 0xbc, 0xcc, 0xba, 0xab, 0x09, 0x21, 0x43, - 0x43, 0x53, 0x53, 0x33, 0x33, 0x12, 0x01, 0x88, 0x80, 0x98, 0xd9, 0xde, 0xbc, 0xcc, 0xcb, 0xbb, - 0xcb, 0xcb, 0x9b, 0x0a, 0x21, 0x45, 0x43, 0x24, 0x43, 0x32, 0x33, 0x32, 0x11, 0x88, 0x98, 0xb9, - 0xcb, 0xcb, 0xcb, 0xab, 0x9b, 0x89, 0x88, 0x00, 0x21, 0x44, 0x46, 0x44, 0x43, 0x34, 0x32, 0x11, - 0x91, 0xc9, 0xdb, 0xbb, 0xac, 0x9a, 0xa9, 0xb9, 0xdb, 0xcb, 0xca, 0xba, 0xba, 0x9a, 0x10, 0x22, - 0x33, 0x54, 0x43, 0x44, 0x33, 0x34, 0x33, 0x11, 0x00, 0x80, 0x90, 0xca, 0xde, 0xbc, 0xbe, 0xbc, - 0xcb, 0xbb, 0xac, 0xa9, 0x08, 0x32, 0x44, 0x43, 0x43, 0x34, 0x43, 0x23, 0x23, 0x12, 0x11, 0x88, - 0xb9, 0xbd, 0xbc, 0xaa, 0xaa, 0x89, 0x89, 0xa9, 0xab, 0x9a, 0x50, 0x56, 0x54, 0x43, 0x32, 0x12, - 0x01, 0x98, 0xba, 0xdb, 0xcb, 0x9a, 0x9a, 0xc9, 0xcb, 0xcb, 0xba, 0xbb, 0xbc, 0xcb, 0x09, 0x21, - 0x22, 0x31, 0x43, 0x35, 0x44, 0x42, 0x22, 0x22, 0x11, 0x21, 0x22, 0x33, 0x81, 0xfd, 0xdd, 0xcc, - 0xcb, 0xba, 0xab, 0xab, 0xaa, 0x08, 0x21, 0x53, 0x53, 0x44, 0x43, 0x24, 0x33, 0x23, 0x22, 0x02, - 0x90, 0xc9, 0xca, 0xaa, 0xab, 0xab, 0xaa, 0xba, 0xcc, 0xab, 0x8a, 0x63, 0x45, 0x35, 0x32, 0x13, - 0x01, 0x80, 0x88, 0xb9, 0xbd, 0xbc, 0xab, 0xaa, 0xca, 0xab, 0xab, 0xbc, 0xbd, 0xbd, 0xaa, 0x89, - 0x08, 0x98, 0x18, 0x62, 0x34, 0x34, 0x42, 0x33, 0x43, 0x33, 0x34, 0x43, 0x33, 0x81, 0xec, 0xdd, - 0xbc, 0xac, 0xbb, 0xba, 0xab, 0x9b, 0x99, 0x20, 0x42, 0x45, 0x44, 0x34, 0x43, 0x33, 0x32, 0x23, - 0x11, 0x90, 0xa9, 0xcb, 0xbc, 0xac, 0xaa, 0xaa, 0xaa, 0xcb, 0xab, 0x19, 0x74, 0x34, 0x34, 0x22, - 0x10, 0x08, 0x08, 0x08, 0x99, 0xbd, 0xbc, 0xac, 0xaa, 0x99, 0x88, 0xb9, 0xce, 0xcb, 0xab, 0x8a, - 0x98, 0x99, 0xbb, 0x8a, 0x31, 0x46, 0x34, 0x42, 0x43, 0x33, 0x44, 0x43, 0x43, 0x22, 0x80, 0xfb, - 0xcc, 0xbc, 0xac, 0xbb, 0xba, 0xac, 0xaa, 0x99, 0x00, 0x41, 0x45, 0x44, 0x33, 0x34, 0x33, 0x43, - 0x12, 0x01, 0x80, 0xa8, 0xcb, 0xdb, 0xaa, 0xab, 0x9a, 0xaa, 0xab, 0x0a, 0x73, 0x34, 0x25, 0x23, - 0x11, 0x88, 0x98, 0x80, 0x98, 0xda, 0xcc, 0xcb, 0xba, 0x09, 0x10, 0x01, 0xb9, 0xbe, 0xaa, 0x89, - 0x99, 0xeb, 0xbc, 0xac, 0x99, 0x99, 0x00, 0x42, 0x43, 0x34, 0x45, 0x53, 0x43, 0x33, 0x12, 0x90, - 0xcc, 0xcd, 0xbb, 0xbc, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x08, 0x52, 0x44, 0x34, 0x34, 0x34, 0x24, - 0x13, 0x12, 0x01, 0x81, 0x98, 0xbc, 0xbc, 0xac, 0xaa, 0xaa, 0xaa, 0x89, 0x31, 0x35, 0x35, 0x34, - 0x12, 0x11, 0x88, 0x99, 0x89, 0xa9, 0xfb, 0xbc, 0xbd, 0xaa, 0x09, 0x10, 0x80, 0xaa, 0x8a, 0x10, - 0x13, 0xe8, 0xcd, 0xac, 0xab, 0xbc, 0xba, 0x9a, 0x18, 0x22, 0x55, 0x54, 0x44, 0x33, 0x23, 0x12, - 0x90, 0xdb, 0xcc, 0xcb, 0xac, 0xbc, 0xcb, 0xba, 0xaa, 0x8a, 0x18, 0x53, 0x44, 0x43, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x11, 0x81, 0xb8, 0xcc, 0xbc, 0xac, 0xa9, 0x99, 0x08, 0x00, 0x22, 0x43, 0x34, - 0x33, 0x23, 0x01, 0xb9, 0xbb, 0xbb, 0xcc, 0xcd, 0xbd, 0xcb, 0x99, 0x08, 0x00, 0x00, 0x11, 0x32, - 0x24, 0x81, 0xca, 0xcc, 0xdb, 0xcc, 0xcb, 0xab, 0xaa, 0x98, 0x20, 0x54, 0x35, 0x44, 0x23, 0x32, - 0x11, 0x80, 0xba, 0xcc, 0xbd, 0xdb, 0xcb, 0xbc, 0xbb, 0xba, 0x99, 0x10, 0x43, 0x45, 0x34, 0x35, - 0x33, 0x34, 0x22, 0x22, 0x12, 0x90, 0xba, 0xce, 0xbb, 0xac, 0x9a, 0x88, 0x08, 0x11, 0x31, 0x43, - 0x34, 0x33, 0x13, 0x90, 0xaa, 0xbb, 0xcb, 0xcd, 0xdb, 0xbc, 0xac, 0xab, 0x89, 0x11, 0x32, 0x44, - 0x33, 0x22, 0x21, 0x02, 0xea, 0xdd, 0xdb, 0xcb, 0xaa, 0xaa, 0x89, 0x21, 0x53, 0x44, 0x24, 0x24, - 0x22, 0x02, 0x90, 0xb9, 0xcb, 0xbc, 0xbc, 0xbd, 0xbd, 0xcb, 0x9a, 0x99, 0x20, 0x42, 0x44, 0x34, - 0x43, 0x34, 0x32, 0x33, 0x23, 0x02, 0xa8, 0xdb, 0xbd, 0xcb, 0xab, 0xaa, 0x89, 0x09, 0x31, 0x43, - 0x34, 0x43, 0x32, 0x11, 0x01, 0x98, 0xba, 0xdc, 0xcc, 0xdb, 0xba, 0xba, 0x99, 0x08, 0x20, 0x43, - 0x34, 0x23, 0x32, 0x33, 0x02, 0xea, 0xde, 0xdb, 0xbb, 0xbb, 0xab, 0x09, 0x31, 0x54, 0x34, 0x44, - 0x33, 0x23, 0x11, 0x90, 0xba, 0xbc, 0xdb, 0xdb, 0xcc, 0xdb, 0xba, 0x9a, 0x89, 0x21, 0x53, 0x34, - 0x34, 0x44, 0x32, 0x34, 0x22, 0x22, 0x80, 0xa9, 0xbc, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0x08, 0x31, - 0x35, 0x34, 0x32, 0x12, 0x22, 0x21, 0x12, 0xa9, 0xde, 0xcc, 0xac, 0xbb, 0xaa, 0x99, 0x88, 0x20, - 0x22, 0x44, 0x43, 0x24, 0x12, 0x91, 0xdb, 0xbd, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x21, 0x63, 0x44, - 0x24, 0x23, 0x22, 0x10, 0x98, 0xa9, 0xbb, 0xcd, 0xcc, 0xbc, 0xbc, 0xba, 0x99, 0x08, 0x32, 0x36, - 0x35, 0x34, 0x34, 0x43, 0x33, 0x22, 0x12, 0x80, 0xba, 0xcd, 0xbc, 0xbb, 0xbb, 0xab, 0xaa, 0x18, - 0x43, 0x35, 0x33, 0x24, 0x21, 0x33, 0x12, 0x80, 0xda, 0xdc, 0xbc, 0xcb, 0xab, 0xbb, 0xa9, 0x88, - 0x11, 0x53, 0x33, 0x34, 0x22, 0x02, 0xc9, 0xcc, 0xcc, 0xbc, 0xbc, 0xbb, 0xaa, 0x08, 0x31, 0x37, - 0x45, 0x32, 0x32, 0x12, 0x01, 0x88, 0xb8, 0xdb, 0xcc, 0xbc, 0xbd, 0xcb, 0xaa, 0x8a, 0x08, 0x42, - 0x45, 0x34, 0x43, 0x43, 0x32, 0x23, 0x13, 0x02, 0x98, 0xda, 0xbc, 0xcc, 0xba, 0xaa, 0xab, 0x99, - 0x00, 0x33, 0x35, 0x33, 0x23, 0x33, 0x24, 0x13, 0x00, 0xca, 0xcd, 0xcc, 0xbb, 0xac, 0xab, 0x9a, - 0x08, 0x21, 0x32, 0x43, 0x33, 0x21, 0x90, 0xeb, 0xbc, 0xcd, 0xbc, 0xad, 0xab, 0x9a, 0x08, 0x52, - 0x45, 0x43, 0x33, 0x22, 0x02, 0x01, 0x88, 0xba, 0xdc, 0xdb, 0xbc, 0xbc, 0xac, 0xaa, 0x99, 0x20, - 0x63, 0x44, 0x53, 0x32, 0x33, 0x24, 0x22, 0x22, 0x00, 0x98, 0xdb, 0xcc, 0xbb, 0xbc, 0xaa, 0xab, - 0x99, 0x08, 0x22, 0x34, 0x24, 0x33, 0x43, 0x32, 0x33, 0x01, 0xba, 0xcf, 0xcb, 0xcb, 0xab, 0xaa, - 0x89, 0x18, 0x20, 0x11, 0x01, 0x88, 0x99, 0xba, 0xdc, 0xcc, 0xdc, 0xdb, 0xbb, 0xaa, 0x8a, 0x32, - 0x46, 0x44, 0x33, 0x33, 0x23, 0x21, 0x00, 0x98, 0xca, 0xdc, 0xeb, 0xcb, 0xbb, 0xac, 0xaa, 0x88, - 0x31, 0x45, 0x35, 0x34, 0x24, 0x23, 0x33, 0x33, 0x23, 0x81, 0xb9, 0xdd, 0xdb, 0xbb, 0xba, 0xbb, - 0x9a, 0x9a, 0x08, 0x21, 0x32, 0x33, 0x45, 0x53, 0x33, 0x23, 0x01, 0xb9, 0xec, 0xcb, 0xba, 0xba, - 0x99, 0x09, 0x10, 0x00, 0xa9, 0xcb, 0xbb, 0xaa, 0xa9, 0xdc, 0xcd, 0xbd, 0xad, 0xbb, 0x8a, 0x30, - 0x54, 0x43, 0x34, 0x24, 0x22, 0x22, 0x21, 0x01, 0x98, 0xba, 0xcf, 0xcc, 0xdb, 0xab, 0xab, 0x99, - 0x20, 0x52, 0x34, 0x45, 0x42, 0x32, 0x32, 0x24, 0x33, 0x12, 0x00, 0xba, 0xdd, 0xbb, 0xbc, 0xab, - 0xab, 0xab, 0xa9, 0x88, 0x18, 0x10, 0x33, 0x46, 0x34, 0x34, 0x12, 0x80, 0xa9, 0xbc, 0xac, 0xab, - 0x9a, 0x9a, 0x89, 0x99, 0xca, 0xbd, 0xbc, 0xab, 0x8a, 0xa8, 0xeb, 0xcd, 0xbd, 0xbb, 0xaa, 0x18, - 0x54, 0x43, 0x43, 0x42, 0x32, 0x32, 0x22, 0x12, 0x11, 0x98, 0xdb, 0xdd, 0xcc, 0xbc, 0xab, 0x9b, - 0x09, 0x21, 0x44, 0x44, 0x53, 0x32, 0x24, 0x43, 0x32, 0x23, 0x12, 0x98, 0xcb, 0xcc, 0xbb, 0xac, - 0xbb, 0xbb, 0xbb, 0xba, 0x9a, 0x99, 0x00, 0x52, 0x55, 0x33, 0x24, 0x12, 0x90, 0xaa, 0xbb, 0xaa, - 0x99, 0xa8, 0xaa, 0xbc, 0xcd, 0xac, 0xac, 0xbb, 0xbb, 0x9a, 0xbb, 0xdc, 0xcc, 0xbc, 0xac, 0x89, - 0x41, 0x53, 0x33, 0x34, 0x24, 0x23, 0x23, 0x21, 0x12, 0x01, 0xa9, 0xcd, 0xdd, 0xcb, 0xac, 0xbb, - 0x99, 0x18, 0x31, 0x35, 0x45, 0x43, 0x43, 0x43, 0x43, 0x23, 0x13, 0x01, 0x98, 0xca, 0xcb, 0xbc, - 0xcb, 0xab, 0xac, 0xaa, 0xab, 0xba, 0xaa, 0x08, 0x63, 0x53, 0x24, 0x23, 0x12, 0x98, 0xb9, 0x9a, - 0x89, 0x88, 0x98, 0xb9, 0xdd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xdc, 0xcc, 0xcb, 0x9a, - 0x09, 0x32, 0x45, 0x34, 0x42, 0x22, 0x32, 0x32, 0x24, 0x23, 0x01, 0xa8, 0xdc, 0xcd, 0xbc, 0xbb, - 0xab, 0x8a, 0x10, 0x31, 0x35, 0x36, 0x35, 0x35, 0x34, 0x43, 0x23, 0x22, 0x01, 0x98, 0xcb, 0xbc, - 0xbc, 0xbb, 0xcb, 0xbb, 0xbc, 0xbc, 0xba, 0x9a, 0x10, 0x43, 0x44, 0x24, 0x23, 0x11, 0x00, 0x88, - 0x99, 0x88, 0x80, 0xa9, 0xdd, 0xdb, 0xbb, 0xac, 0x99, 0xa9, 0x99, 0xba, 0xcc, 0xcc, 0xdb, 0xba, - 0x9a, 0x18, 0x52, 0x43, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x32, 0x13, 0x90, 0xed, 0xcc, 0xbb, - 0xaa, 0xaa, 0x88, 0x08, 0x10, 0x53, 0x55, 0x44, 0x34, 0x34, 0x24, 0x33, 0x22, 0x01, 0x98, 0xbc, - 0xbd, 0xbb, 0xac, 0xbb, 0xbd, 0xcb, 0xba, 0xaa, 0x08, 0x21, 0x34, 0x44, 0x32, 0x23, 0x12, 0x00, - 0x98, 0x89, 0x08, 0x98, 0xfb, 0xdc, 0xbb, 0xbb, 0x99, 0x89, 0xa9, 0xbb, 0xdc, 0xcb, 0xcb, 0xab, - 0xbb, 0x9a, 0x10, 0x34, 0x34, 0x34, 0x35, 0x34, 0x34, 0x43, 0x43, 0x43, 0x12, 0x90, 0xcc, 0xbc, - 0xab, 0xab, 0xaa, 0x9a, 0x9a, 0x09, 0x72, 0x46, 0x54, 0x43, 0x33, 0x33, 0x24, 0x22, 0x81, 0xb8, - 0xeb, 0xbb, 0xbc, 0xbb, 0xdb, 0xcb, 0xbb, 0xba, 0x99, 0x20, 0x42, 0x34, 0x24, 0x33, 0x24, 0x12, - 0x00, 0x98, 0x99, 0xba, 0xcc, 0xbd, 0xbc, 0xac, 0x9a, 0x88, 0x80, 0x08, 0x88, 0xaa, 0xbb, 0xcd, - 0xbc, 0xab, 0xab, 0x89, 0x88, 0x10, 0x53, 0x45, 0x44, 0x43, 0x34, 0x34, 0x24, 0x02, 0x98, 0xca, - 0xba, 0xbb, 0xca, 0xba, 0xba, 0xbc, 0x8b, 0x73, 0x47, 0x53, 0x43, 0x32, 0x33, 0x33, 0x23, 0x81, - 0xca, 0xcc, 0xbc, 0xbb, 0xcb, 0xbc, 0xdb, 0xaa, 0x9a, 0x08, 0x21, 0x24, 0x24, 0x33, 0x43, 0x32, - 0x12, 0x80, 0xaa, 0xca, 0xcb, 0xbc, 0xbd, 0xbb, 0xbb, 0x9a, 0x88, 0x00, 0x10, 0x80, 0x99, 0xca, - 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xbd, 0xaa, 0x08, 0x63, 0x54, 0x43, 0x34, 0x24, 0x33, 0x02, 0x80, - 0xa9, 0xab, 0xbc, 0xca, 0xcb, 0xcb, 0xab, 0x28, 0x65, 0x45, 0x43, 0x43, 0x33, 0x33, 0x24, 0x12, - 0x90, 0xda, 0xcb, 0xac, 0xbb, 0xdb, 0xbb, 0xbc, 0xab, 0x8a, 0x20, 0x33, 0x35, 0x34, 0x33, 0x24, - 0x23, 0x00, 0xa8, 0xbb, 0xbd, 0xbc, 0xcc, 0xbb, 0xac, 0x9a, 0x88, 0x10, 0x11, 0x11, 0x01, 0x01, - 0x88, 0xba, 0xcd, 0xcc, 0xcb, 0xbc, 0xbc, 0xab, 0x89, 0x42, 0x45, 0x34, 0x33, 0x44, 0x23, 0x13, - 0x02, 0x80, 0xaa, 0xbb, 0xbd, 0xbc, 0xaa, 0x99, 0x48, 0x65, 0x44, 0x53, 0x33, 0x43, 0x32, 0x23, - 0x11, 0x98, 0xdb, 0xdb, 0xbb, 0xcc, 0xcb, 0xbb, 0xac, 0x9a, 0x08, 0x20, 0x42, 0x43, 0x43, 0x33, - 0x23, 0x02, 0xa0, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbc, 0xab, 0x99, 0x10, 0x21, 0x21, 0x21, 0x21, - 0x11, 0x90, 0xca, 0xdd, 0xcc, 0xcb, 0xbc, 0xbb, 0xab, 0x88, 0x52, 0x44, 0x43, 0x34, 0x43, 0x32, - 0x22, 0x11, 0x08, 0x98, 0xaa, 0xbb, 0xcb, 0xbc, 0x9b, 0x40, 0x47, 0x45, 0x43, 0x23, 0x43, 0x32, - 0x22, 0x81, 0xa8, 0xdb, 0xcb, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0x9a, 0x18, 0x31, 0x45, 0x33, 0x34, - 0x22, 0x12, 0x88, 0x98, 0xa9, 0xba, 0xce, 0xcc, 0xcb, 0xab, 0x9a, 0x00, 0x20, 0x21, 0x11, 0x00, - 0x11, 0x01, 0x00, 0xc9, 0xce, 0xbd, 0xbd, 0xac, 0xab, 0xaa, 0x08, 0x42, 0x54, 0x34, 0x34, 0x32, - 0x22, 0x12, 0x22, 0x23, 0x12, 0xa8, 0xcc, 0xcb, 0xcb, 0x8a, 0x30, 0x57, 0x43, 0x24, 0x33, 0x43, - 0x22, 0x12, 0x90, 0xb9, 0xdb, 0xbc, 0xcd, 0xca, 0xbb, 0xcb, 0xaa, 0x09, 0x20, 0x34, 0x34, 0x43, - 0x22, 0x11, 0x80, 0x80, 0x90, 0xa9, 0xdc, 0xcd, 0xcb, 0xbb, 0xab, 0x88, 0x21, 0x32, 0x12, 0x01, - 0x11, 0x32, 0x34, 0x82, 0xfa, 0xcd, 0xcc, 0xcb, 0xab, 0xab, 0x9a, 0x18, 0x62, 0x34, 0x34, 0x33, - 0x43, 0x22, 0x33, 0x34, 0x24, 0x01, 0x98, 0xca, 0xbb, 0xad, 0x9b, 0x20, 0x54, 0x34, 0x34, 0x34, - 0x43, 0x32, 0x11, 0x00, 0xa8, 0xda, 0xcc, 0xbc, 0xdb, 0xab, 0xbb, 0xaa, 0x08, 0x32, 0x53, 0x33, - 0x33, 0x22, 0x22, 0x43, 0x33, 0x02, 0xfa, 0xcd, 0xbc, 0xbc, 0xab, 0x99, 0x18, 0x20, 0x02, 0x80, - 0x08, 0x41, 0x34, 0x33, 0xa0, 0xdd, 0xcd, 0xbc, 0xcb, 0xaa, 0x9a, 0x09, 0x30, 0x45, 0x33, 0x34, - 0x23, 0x43, 0x33, 0x36, 0x33, 0x23, 0x81, 0xba, 0xcb, 0xcc, 0xaa, 0x8a, 0x28, 0x43, 0x45, 0x53, - 0x43, 0x33, 0x22, 0x11, 0x10, 0xa9, 0xcd, 0xbc, 0xbc, 0xbc, 0xac, 0x9b, 0x99, 0x10, 0x21, 0x42, - 0x22, 0x22, 0x32, 0x44, 0x44, 0x22, 0x91, 0xda, 0xcc, 0xbc, 0xbb, 0xaa, 0x99, 0x08, 0x81, 0x98, - 0x89, 0x28, 0x55, 0x24, 0x02, 0xa8, 0xec, 0xbc, 0xac, 0xab, 0xaa, 0x9a, 0x19, 0x42, 0x34, 0x53, - 0x33, 0x43, 0x34, 0x44, 0x34, 0x32, 0x11, 0x80, 0xa9, 0xcb, 0xcb, 0xba, 0x99, 0x18, 0x32, 0x56, - 0x34, 0x34, 0x33, 0x22, 0x12, 0x01, 0xca, 0xdc, 0xcb, 0xbc, 0xbb, 0xbb, 0x9a, 0x89, 0x11, 0x42, - 0x22, 0x11, 0x20, 0x45, 0x45, 0x34, 0x02, 0x98, 0xdb, 0xdb, 0xbb, 0xba, 0x9a, 0x9a, 0x98, 0xa9, - 0xbb, 0x8b, 0x52, 0x36, 0x24, 0x81, 0xc9, 0xcd, 0xcb, 0xba, 0xba, 0xba, 0x9b, 0x28, 0x34, 0x44, - 0x33, 0x34, 0x53, 0x44, 0x34, 0x33, 0x14, 0x11, 0x98, 0xba, 0xcb, 0xab, 0xab, 0xa9, 0x88, 0x41, - 0x46, 0x44, 0x33, 0x42, 0x22, 0x12, 0x81, 0xba, 0xcd, 0xdb, 0xbb, 0xbc, 0xaa, 0x99, 0x09, 0x00, - 0x11, 0x80, 0x08, 0x73, 0x45, 0x44, 0x22, 0x01, 0xa8, 0xcb, 0xbc, 0xbb, 0xab, 0xab, 0xa9, 0xca, - 0xcb, 0xaa, 0x18, 0x44, 0x24, 0x12, 0xa8, 0xcd, 0xbc, 0xcb, 0xba, 0xbb, 0xab, 0x8a, 0x21, 0x34, - 0x35, 0x43, 0x43, 0x54, 0x53, 0x43, 0x23, 0x13, 0x01, 0xb8, 0xcb, 0xcb, 0xaa, 0xa9, 0xa9, 0x99, - 0x31, 0x56, 0x34, 0x25, 0x33, 0x23, 0x12, 0x80, 0xb9, 0xcd, 0xcc, 0xcb, 0xaa, 0xaa, 0x89, 0x08, - 0x00, 0x88, 0x99, 0x28, 0x57, 0x54, 0x23, 0x13, 0x80, 0xb9, 0xbc, 0xac, 0xab, 0xab, 0xb9, 0xca, - 0xac, 0xab, 0x8a, 0x30, 0x44, 0x22, 0x02, 0xca, 0xbe, 0xbc, 0xac, 0xbb, 0xbb, 0x9a, 0x08, 0x33, - 0x43, 0x13, 0x32, 0x57, 0x45, 0x34, 0x34, 0x22, 0x12, 0x90, 0xaa, 0xac, 0xab, 0xab, 0xba, 0xba, - 0x9b, 0x41, 0x57, 0x34, 0x35, 0x22, 0x22, 0x11, 0x90, 0xca, 0xcc, 0xbc, 0xac, 0x9a, 0x99, 0x80, - 0x88, 0x98, 0x9a, 0x18, 0x73, 0x45, 0x34, 0x24, 0x02, 0x90, 0xaa, 0xbc, 0xbb, 0xbb, 0xcb, 0xba, - 0xbc, 0xbb, 0xab, 0x19, 0x41, 0x22, 0x23, 0x80, 0xea, 0xcd, 0xbc, 0xcb, 0xba, 0x9a, 0x89, 0x10, - 0x21, 0x02, 0x00, 0x73, 0x55, 0x35, 0x35, 0x43, 0x12, 0x01, 0x98, 0xaa, 0xbb, 0xcb, 0xba, 0xbb, - 0xab, 0x09, 0x73, 0x45, 0x35, 0x43, 0x32, 0x21, 0x00, 0xa9, 0xdb, 0xbc, 0xbc, 0xac, 0xa9, 0x98, - 0x08, 0x88, 0x98, 0x08, 0x31, 0x56, 0x45, 0x33, 0x23, 0x01, 0xaa, 0xbc, 0xbb, 0xbc, 0xca, 0xba, - 0xcb, 0xbb, 0xbb, 0x99, 0x10, 0x12, 0x12, 0x12, 0x81, 0xed, 0xcd, 0xcb, 0xaa, 0x9a, 0x89, 0x89, - 0x88, 0x98, 0x98, 0x31, 0x67, 0x45, 0x34, 0x34, 0x33, 0x12, 0x01, 0xa9, 0xcb, 0xbb, 0xbc, 0xcb, - 0xaa, 0x8a, 0x28, 0x54, 0x36, 0x35, 0x33, 0x23, 0x11, 0x90, 0xba, 0xcd, 0xdb, 0xba, 0xba, 0x9a, - 0x89, 0x88, 0x88, 0x88, 0x28, 0x74, 0x44, 0x34, 0x24, 0x02, 0x90, 0xa9, 0xbb, 0xcb, 0xba, 0xbc, - 0xbc, 0xcb, 0xba, 0x9a, 0x08, 0x08, 0x98, 0x89, 0x80, 0xc9, 0xce, 0xbc, 0xac, 0x9a, 0x98, 0x98, - 0x99, 0x99, 0x88, 0x10, 0x64, 0x65, 0x53, 0x34, 0x33, 0x33, 0x22, 0x00, 0xaa, 0xbc, 0xbd, 0xbb, - 0xbb, 0xab, 0x9a, 0x52, 0x46, 0x44, 0x24, 0x33, 0x12, 0x01, 0x98, 0xba, 0xcc, 0xbc, 0xbc, 0xba, - 0x9a, 0x88, 0x98, 0x88, 0x00, 0x63, 0x45, 0x35, 0x33, 0x23, 0x01, 0xb9, 0xba, 0xac, 0xbc, 0xdb, - 0xcb, 0xbb, 0xac, 0xaa, 0x89, 0x80, 0xa8, 0xaa, 0x99, 0x98, 0xcb, 0xcd, 0xbc, 0x9a, 0x98, 0x98, - 0xbb, 0xdb, 0xbb, 0x9a, 0x41, 0x56, 0x45, 0x43, 0x34, 0x33, 0x33, 0x12, 0x81, 0xb9, 0xbd, 0xad, - 0xab, 0xab, 0x9c, 0x89, 0x52, 0x45, 0x34, 0x24, 0x23, 0x12, 0x00, 0xa8, 0xaa, 0xbd, 0xcc, 0xbb, - 0xbb, 0xaa, 0x98, 0x89, 0x08, 0x53, 0x55, 0x53, 0x33, 0x33, 0x01, 0x98, 0xab, 0xbb, 0xcb, 0xcc, - 0xcb, 0xcb, 0xcb, 0xaa, 0x99, 0x88, 0x90, 0xbb, 0xac, 0xab, 0xab, 0xbc, 0xbb, 0x8a, 0x08, 0xb8, - 0xbe, 0xcc, 0xcb, 0xbb, 0x89, 0x62, 0x55, 0x34, 0x44, 0x33, 0x33, 0x13, 0x22, 0x80, 0xda, 0xbc, - 0xac, 0xba, 0xbb, 0xab, 0x28, 0x65, 0x44, 0x33, 0x24, 0x22, 0x11, 0x08, 0x89, 0xaa, 0xbc, 0xcd, - 0xbc, 0xaa, 0x9a, 0x89, 0x88, 0x31, 0x45, 0x35, 0x34, 0x24, 0x01, 0x88, 0xa9, 0x9a, 0x9a, 0xca, - 0xbc, 0xbd, 0xcb, 0xbb, 0xaa, 0x8a, 0x88, 0xca, 0xcb, 0xbb, 0x9b, 0x09, 0x88, 0xa9, 0x9a, 0xcb, - 0xcc, 0xbc, 0xbd, 0xbb, 0xab, 0x20, 0x57, 0x44, 0x34, 0x34, 0x32, 0x23, 0x22, 0x22, 0x90, 0xeb, - 0xbc, 0xbc, 0xbb, 0xba, 0x8a, 0x51, 0x45, 0x34, 0x43, 0x22, 0x22, 0x01, 0x81, 0x90, 0xa8, 0xdc, - 0xbd, 0xbc, 0xab, 0x9a, 0x88, 0x21, 0x34, 0x36, 0x25, 0x24, 0x11, 0x80, 0x99, 0xaa, 0x99, 0xaa, - 0xbc, 0xbd, 0xdb, 0xba, 0xbb, 0xaa, 0x89, 0xa9, 0xbc, 0xbd, 0xac, 0x89, 0x10, 0x21, 0x11, 0xb8, - 0xdc, 0xcb, 0xcc, 0xba, 0x9a, 0x08, 0x43, 0x46, 0x53, 0x43, 0x33, 0x33, 0x32, 0x33, 0x13, 0xc8, - 0xbe, 0xbd, 0xac, 0xaa, 0x99, 0x00, 0x44, 0x44, 0x33, 0x33, 0x33, 0x32, 0x11, 0x00, 0x88, 0xd9, - 0xdd, 0xbc, 0xac, 0xaa, 0x88, 0x10, 0x32, 0x35, 0x35, 0x34, 0x22, 0x01, 0xa8, 0xba, 0xba, 0xba, - 0xeb, 0xdb, 0xbb, 0xbb, 0xac, 0xaa, 0x9a, 0xaa, 0xcb, 0xcc, 0xcb, 0x99, 0x21, 0x43, 0x13, 0xa0, - 0xcc, 0xbc, 0xbc, 0xac, 0x9b, 0x09, 0x31, 0x54, 0x44, 0x34, 0x34, 0x23, 0x43, 0x22, 0x22, 0x91, - 0xeb, 0xcc, 0xcb, 0xaa, 0x99, 0x88, 0x21, 0x54, 0x43, 0x33, 0x24, 0x22, 0x12, 0x02, 0x01, 0x88, - 0xeb, 0xbd, 0xad, 0xbb, 0x99, 0x00, 0x22, 0x34, 0x35, 0x34, 0x33, 0x23, 0x80, 0xa9, 0xca, 0xcb, - 0xbc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xbb, 0xbc, 0xbc, 0xbe, 0x9a, 0x10, 0x44, 0x33, 0x81, - 0xea, 0xbc, 0xbc, 0xbb, 0x9a, 0x08, 0x20, 0x34, 0x44, 0x44, 0x44, 0x32, 0x43, 0x32, 0x23, 0x01, - 0xa8, 0xec, 0xbc, 0xbc, 0x9a, 0x8a, 0x00, 0x31, 0x44, 0x44, 0x32, 0x43, 0x32, 0x23, 0x02, 0x90, - 0xca, 0xcd, 0xcb, 0xba, 0x9a, 0x08, 0x12, 0x43, 0x43, 0x34, 0x34, 0x33, 0x22, 0x88, 0xaa, 0xcc, - 0xdb, 0xdb, 0xbb, 0xbb, 0xaa, 0x98, 0xa8, 0xca, 0xdb, 0xbc, 0xba, 0x99, 0x30, 0x44, 0x25, 0x02, - 0xa8, 0xbe, 0xac, 0xbb, 0x9a, 0x89, 0x00, 0x11, 0x32, 0x55, 0x54, 0x43, 0x43, 0x23, 0x33, 0x11, - 0x90, 0xc9, 0xcd, 0xbc, 0xba, 0x9a, 0x08, 0x10, 0x11, 0x63, 0x53, 0x34, 0x34, 0x24, 0x02, 0x80, - 0xa9, 0xbc, 0xac, 0xbb, 0x9b, 0x0a, 0x10, 0x43, 0x42, 0x43, 0x44, 0x33, 0x34, 0x11, 0x90, 0xc9, - 0xdb, 0xcc, 0xcb, 0xaa, 0x9a, 0x80, 0x80, 0xa9, 0xcc, 0xbc, 0xaa, 0x88, 0x32, 0x34, 0x33, 0x12, - 0xc8, 0xdd, 0xcb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x90, 0x10, 0x56, 0x45, 0x34, 0x24, 0x23, 0x11, - 0x00, 0xa9, 0xcb, 0xdb, 0xcb, 0xaa, 0x9a, 0x89, 0x89, 0x09, 0x73, 0x45, 0x44, 0x32, 0x22, 0x81, - 0xa8, 0xcb, 0xbb, 0xaa, 0xa9, 0x98, 0x08, 0x10, 0x33, 0x44, 0x35, 0x36, 0x43, 0x23, 0x81, 0xa8, - 0xbc, 0xcd, 0xbc, 0xac, 0x99, 0x08, 0x00, 0x99, 0xbc, 0xcd, 0x9a, 0x09, 0x11, 0x33, 0x13, 0x80, - 0xb9, 0xdc, 0xcb, 0x9a, 0x89, 0x00, 0x00, 0x99, 0xcc, 0xaa, 0x28, 0x67, 0x44, 0x43, 0x32, 0x12, - 0x00, 0x80, 0x99, 0x99, 0xca, 0xdb, 0xcb, 0xbc, 0xba, 0xab, 0x19, 0x65, 0x44, 0x24, 0x23, 0x01, - 0x98, 0xba, 0xba, 0x8a, 0x08, 0x81, 0xa8, 0xaa, 0x08, 0x54, 0x35, 0x53, 0x33, 0x43, 0x12, 0x80, - 0xca, 0xcd, 0xdb, 0xba, 0xaa, 0x88, 0x80, 0xa9, 0xcd, 0xbc, 0xbb, 0x09, 0x22, 0x34, 0x02, 0xa9, - 0xad, 0xbb, 0x99, 0x18, 0x21, 0x23, 0x11, 0xa9, 0xcc, 0xbb, 0x9c, 0x73, 0x47, 0x43, 0x33, 0x22, - 0x10, 0x00, 0x10, 0x31, 0x12, 0x01, 0xfc, 0xce, 0xbb, 0xac, 0x89, 0x30, 0x44, 0x44, 0x23, 0x12, - 0x98, 0xa9, 0x9b, 0x89, 0x11, 0x12, 0x81, 0xca, 0x9a, 0x40, 0x46, 0x34, 0x23, 0x22, 0x12, 0x81, - 0xb9, 0xfc, 0xbc, 0xbc, 0x9a, 0x89, 0x98, 0xb9, 0xce, 0xbc, 0xbb, 0x88, 0x32, 0x43, 0x81, 0xc9, - 0xdb, 0xab, 0x09, 0x31, 0x34, 0x23, 0x01, 0x01, 0x00, 0x99, 0xcb, 0x8b, 0x50, 0x56, 0x34, 0x33, - 0x12, 0x11, 0x31, 0x55, 0x43, 0x23, 0x91, 0xec, 0xcc, 0xbb, 0xab, 0x08, 0x32, 0x44, 0x23, 0x23, - 0x01, 0x98, 0x89, 0x30, 0x32, 0x22, 0x11, 0x81, 0x9a, 0x61, 0x56, 0x34, 0x33, 0x12, 0x10, 0x01, - 0x80, 0xfb, 0xbd, 0xac, 0x9b, 0x88, 0x98, 0xeb, 0xcd, 0xcb, 0xab, 0x89, 0x21, 0x33, 0x02, 0xca, - 0xcd, 0xba, 0x09, 0x20, 0x34, 0x24, 0x22, 0x22, 0x33, 0x13, 0xb0, 0xcd, 0xbb, 0x8a, 0x20, 0x43, - 0x32, 0x34, 0x44, 0x45, 0x35, 0x44, 0x11, 0xa0, 0xdb, 0xcc, 0xab, 0x9b, 0x00, 0x11, 0x01, 0x10, - 0x20, 0x21, 0x43, 0x34, 0x43, 0x12, 0x00, 0x11, 0x54, 0x33, 0x24, 0x22, 0x43, 0x32, 0x35, 0x02, - 0xb9, 0xdd, 0xac, 0x9b, 0x08, 0x12, 0x91, 0xed, 0xcc, 0xbb, 0xab, 0x8a, 0x00, 0x12, 0x02, 0xb8, - 0xcc, 0xac, 0x9b, 0x08, 0x31, 0x36, 0x46, 0x43, 0x32, 0x11, 0xa0, 0xca, 0xcb, 0x9a, 0x09, 0x00, - 0x08, 0x08, 0x20, 0x55, 0x45, 0x53, 0x32, 0x01, 0xa9, 0xcc, 0xbc, 0xba, 0xab, 0xaa, 0x99, 0x89, - 0x08, 0x32, 0x44, 0x33, 0x44, 0x33, 0x24, 0x24, 0x33, 0x35, 0x22, 0x00, 0x00, 0x52, 0x44, 0x03, - 0xc8, 0xcc, 0xcb, 0x89, 0x20, 0x33, 0x03, 0xea, 0xcd, 0xcb, 0xaa, 0x99, 0x88, 0x88, 0x80, 0x88, - 0x88, 0x99, 0xcb, 0xbc, 0x0a, 0x64, 0x55, 0x53, 0x22, 0x12, 0xa8, 0xaa, 0xbb, 0x99, 0x08, 0x80, - 0xc9, 0xcb, 0xaa, 0x20, 0x46, 0x44, 0x43, 0x12, 0x81, 0xaa, 0xcc, 0xcb, 0xcb, 0xac, 0x9b, 0x89, - 0x00, 0x00, 0x00, 0x08, 0x42, 0x54, 0x44, 0x24, 0x23, 0x11, 0x01, 0x08, 0x10, 0x42, 0x43, 0x12, - 0xb9, 0xbf, 0xad, 0x8a, 0x21, 0x43, 0x23, 0xa0, 0xdc, 0xbc, 0xac, 0x9a, 0x89, 0x98, 0x98, 0x09, - 0x00, 0xa0, 0xeb, 0xcb, 0x8a, 0x72, 0x45, 0x34, 0x33, 0x01, 0xa8, 0xbb, 0x9a, 0x88, 0x21, 0x00, - 0xfb, 0xcc, 0xab, 0x8a, 0x21, 0x53, 0x34, 0x32, 0x02, 0x98, 0xbc, 0xbd, 0xcc, 0xcb, 0xab, 0x9a, - 0x88, 0x88, 0xaa, 0xba, 0x18, 0x66, 0x44, 0x34, 0x23, 0x12, 0x08, 0x08, 0x21, 0x43, 0x34, 0x82, - 0xba, 0xcd, 0xac, 0x8a, 0x31, 0x34, 0x33, 0x91, 0xfb, 0xcb, 0xbb, 0xab, 0x89, 0x99, 0x99, 0x99, - 0x88, 0x80, 0xca, 0xcc, 0x9b, 0x72, 0x47, 0x34, 0x32, 0x81, 0xa8, 0x9a, 0x8a, 0x21, 0x32, 0x82, - 0xdd, 0xbd, 0xac, 0x99, 0x00, 0x12, 0x11, 0x11, 0x00, 0x80, 0xa8, 0xec, 0xcc, 0xbc, 0xbc, 0xaa, - 0x99, 0x98, 0xa9, 0xbb, 0x09, 0x75, 0x44, 0x43, 0x23, 0x12, 0x00, 0x10, 0x31, 0x35, 0x34, 0x81, - 0xba, 0xbe, 0xab, 0x18, 0x43, 0x24, 0x12, 0xb8, 0xdc, 0xab, 0xab, 0xba, 0xaa, 0xa9, 0x99, 0x00, - 0x80, 0x80, 0xca, 0xbf, 0x8c, 0x72, 0x36, 0x35, 0x12, 0x81, 0xaa, 0x9a, 0x08, 0x32, 0x24, 0x90, - 0xdc, 0xac, 0x9b, 0x89, 0x01, 0x80, 0xca, 0xcb, 0x9c, 0x08, 0x12, 0xc8, 0xdd, 0xbc, 0xac, 0xa9, - 0x88, 0x89, 0x98, 0x99, 0x18, 0x55, 0x44, 0x24, 0x23, 0x12, 0x22, 0x42, 0x34, 0x34, 0x12, 0x90, - 0xdb, 0xbb, 0x9c, 0x21, 0x35, 0x23, 0x81, 0xda, 0xcb, 0xab, 0x9a, 0xbb, 0xbb, 0xac, 0x08, 0x33, - 0x33, 0x24, 0x90, 0xdb, 0xab, 0x72, 0x57, 0x43, 0x12, 0x80, 0xa9, 0xa9, 0x88, 0x21, 0x32, 0x92, - 0xfb, 0xbb, 0xaa, 0x89, 0x88, 0xda, 0xbd, 0xbd, 0xaa, 0x08, 0x12, 0xb8, 0xdf, 0xbc, 0xbb, 0x9a, - 0x89, 0x98, 0x99, 0x9b, 0x28, 0x47, 0x44, 0x33, 0x32, 0x22, 0x33, 0x44, 0x34, 0x25, 0x11, 0x99, - 0xba, 0xba, 0x89, 0x43, 0x35, 0x22, 0x90, 0xdb, 0xbc, 0xab, 0xbb, 0xbd, 0xac, 0x9a, 0x20, 0x34, - 0x25, 0x22, 0x81, 0xaa, 0x9a, 0x50, 0x56, 0x34, 0x23, 0x81, 0x98, 0xba, 0x9a, 0x09, 0x21, 0x12, - 0x88, 0xba, 0xbe, 0xbd, 0xcb, 0xcc, 0xbb, 0xcb, 0x9a, 0x00, 0x01, 0xfb, 0xcd, 0xcc, 0xab, 0x8a, - 0x09, 0x88, 0x99, 0xaa, 0x19, 0x73, 0x43, 0x34, 0x33, 0x33, 0x33, 0x44, 0x34, 0x25, 0x11, 0x88, - 0xaa, 0x89, 0x18, 0x21, 0x43, 0x22, 0x80, 0xdb, 0xbd, 0xbb, 0xdc, 0xbc, 0xbc, 0x99, 0x18, 0x43, - 0x34, 0x33, 0x13, 0x98, 0x89, 0x40, 0x47, 0x35, 0x33, 0x02, 0xa0, 0xba, 0xbc, 0xab, 0x09, 0x08, - 0x10, 0x01, 0xb8, 0xdd, 0xbc, 0xbd, 0xaa, 0x89, 0x00, 0x22, 0xa1, 0xef, 0xcc, 0xcb, 0xbb, 0x99, - 0x88, 0x90, 0xa9, 0xcb, 0x9a, 0x20, 0x44, 0x35, 0x34, 0x43, 0x33, 0x42, 0x43, 0x23, 0x13, 0x81, - 0x98, 0x88, 0x00, 0x10, 0x12, 0x22, 0x12, 0x98, 0xcb, 0xdc, 0xee, 0xcc, 0xac, 0x9b, 0x89, 0x31, - 0x53, 0x43, 0x23, 0x01, 0x98, 0x20, 0x54, 0x45, 0x33, 0x12, 0x90, 0xb9, 0xbc, 0xab, 0x89, 0x00, - 0x08, 0x99, 0xeb, 0xcc, 0xbb, 0xcb, 0x8a, 0x20, 0x43, 0x43, 0x81, 0xec, 0xcc, 0xbc, 0xbb, 0x8a, - 0x09, 0x98, 0xca, 0xbc, 0x9c, 0x09, 0x21, 0x44, 0x34, 0x24, 0x33, 0x32, 0x34, 0x34, 0x22, 0x12, - 0x10, 0x10, 0x08, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01, 0xd0, 0xff, 0xcd, 0xcb, 0xbb, 0x9a, 0x08, - 0x33, 0x35, 0x34, 0x22, 0x01, 0x31, 0x54, 0x35, 0x34, 0x22, 0x00, 0xa9, 0xba, 0xbb, 0xa9, 0x99, - 0xb9, 0xdd, 0xdb, 0xbc, 0xbb, 0x9a, 0x08, 0x52, 0x34, 0x43, 0x02, 0xba, 0xbf, 0xbd, 0xbb, 0x9a, - 0x88, 0x99, 0xdb, 0xbc, 0xac, 0x99, 0x08, 0x31, 0x45, 0x34, 0x32, 0x32, 0x53, 0x43, 0x22, 0x12, - 0x10, 0x11, 0x00, 0x01, 0x00, 0x00, 0x21, 0x11, 0x12, 0xa0, 0xfd, 0xde, 0xbc, 0xbd, 0xab, 0x99, - 0x10, 0x33, 0x35, 0x23, 0x21, 0x42, 0x54, 0x53, 0x33, 0x23, 0x02, 0x80, 0xa9, 0x99, 0x99, 0xba, - 0xbd, 0xbe, 0xcc, 0xbc, 0xbb, 0xab, 0x09, 0x41, 0x44, 0x34, 0x22, 0x90, 0xca, 0xbd, 0xac, 0x9a, - 0x89, 0xa9, 0xdb, 0xbd, 0xbb, 0xab, 0x99, 0x18, 0x53, 0x44, 0x32, 0x33, 0x44, 0x43, 0x23, 0x13, - 0x12, 0x12, 0x00, 0x80, 0x89, 0x89, 0x21, 0x43, 0x34, 0x03, 0xc8, 0xde, 0xcd, 0xdb, 0xbb, 0xaa, - 0x88, 0x11, 0x23, 0x33, 0x33, 0x44, 0x54, 0x53, 0x34, 0x23, 0x23, 0x11, 0x01, 0x80, 0x89, 0xba, - 0xcc, 0xbd, 0xcc, 0xbc, 0xcb, 0xab, 0x9a, 0x19, 0x43, 0x34, 0x34, 0x12, 0x88, 0xba, 0xbc, 0xab, - 0xaa, 0xeb, 0xdc, 0xbb, 0xbc, 0xbb, 0xab, 0x9b, 0x09, 0x42, 0x34, 0x35, 0x34, 0x44, 0x32, 0x33, - 0x23, 0x22, 0x02, 0x81, 0x80, 0x99, 0x08, 0x63, 0x34, 0x23, 0xa0, 0xdc, 0xcd, 0xcc, 0xbb, 0xac, - 0x9a, 0x88, 0x10, 0x21, 0x32, 0x43, 0x53, 0x54, 0x34, 0x34, 0x43, 0x22, 0x12, 0x01, 0x88, 0x99, - 0xca, 0xdb, 0xcb, 0xbc, 0xbc, 0xac, 0xbb, 0xa9, 0x00, 0x43, 0x44, 0x23, 0x12, 0x80, 0x98, 0x98, - 0xa9, 0xdc, 0xcc, 0xcb, 0xbb, 0xbc, 0xbb, 0xac, 0xaa, 0x89, 0x10, 0x63, 0x53, 0x43, 0x32, 0x23, - 0x43, 0x32, 0x22, 0x12, 0x00, 0x80, 0x00, 0x73, 0x34, 0x14, 0x01, 0xa9, 0xcc, 0xbc, 0xcd, 0xcb, - 0xaa, 0x9b, 0x99, 0x00, 0x21, 0x12, 0x33, 0x55, 0x45, 0x34, 0x34, 0x42, 0x22, 0x12, 0x00, 0x89, - 0xaa, 0xcb, 0xbc, 0xbc, 0xdb, 0xbb, 0xcb, 0xbb, 0x9b, 0x18, 0x62, 0x33, 0x24, 0x22, 0x11, 0x11, - 0x90, 0xda, 0xdc, 0xbb, 0xcb, 0xca, 0xbb, 0xcb, 0xbb, 0xab, 0x89, 0x30, 0x54, 0x34, 0x23, 0x23, - 0x43, 0x43, 0x32, 0x23, 0x11, 0x11, 0x22, 0x44, 0x36, 0x34, 0x22, 0x00, 0xa9, 0xdb, 0xcd, 0xbd, - 0xcb, 0xab, 0xaa, 0x8a, 0x10, 0x11, 0x01, 0x31, 0x47, 0x45, 0x34, 0x43, 0x23, 0x23, 0x11, 0x90, - 0xa8, 0xcb, 0xbb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbc, 0xab, 0x8a, 0x10, 0x44, 0x43, 0x32, 0x32, 0x32, - 0x02, 0xb8, 0xcd, 0xcc, 0xab, 0xcb, 0xbb, 0xbc, 0xac, 0xab, 0x99, 0x08, 0x42, 0x43, 0x23, 0x22, - 0x22, 0x34, 0x34, 0x33, 0x22, 0x32, 0x53, 0x45, 0x44, 0x24, 0x23, 0x12, 0x01, 0x98, 0xdb, 0xdc, - 0xbc, 0xad, 0xbb, 0xaa, 0x89, 0x08, 0x98, 0x80, 0x42, 0x56, 0x35, 0x34, 0x43, 0x22, 0x12, 0x01, - 0x80, 0x99, 0xbb, 0xbd, 0xbd, 0xcb, 0xca, 0xaa, 0xab, 0x99, 0x08, 0x31, 0x44, 0x33, 0x34, 0x32, - 0x22, 0x81, 0xb9, 0xcd, 0xbc, 0xad, 0xac, 0xcb, 0xaa, 0xaa, 0x9a, 0x88, 0x31, 0x33, 0x23, 0x02, - 0x11, 0x44, 0x35, 0x22, 0x88, 0x89, 0x31, 0x57, 0x45, 0x34, 0x33, 0x32, 0x22, 0x11, 0x88, 0xca, - 0xcd, 0xcd, 0xcb, 0xab, 0xaa, 0xa9, 0x99, 0xa9, 0x08, 0x73, 0x45, 0x34, 0x24, 0x33, 0x22, 0x21, - 0x11, 0x00, 0x98, 0xcc, 0xcc, 0xbc, 0xbb, 0xab, 0xaa, 0x99, 0x99, 0x00, 0x43, 0x44, 0x43, 0x23, - 0x23, 0x11, 0x80, 0xbb, 0xcc, 0xbd, 0xbd, 0xbc, 0xac, 0xaa, 0x89, 0x08, 0x00, 0x21, 0x11, 0x12, - 0x31, 0x42, 0x12, 0x90, 0xbc, 0xbd, 0x09, 0x54, 0x46, 0x44, 0x33, 0x24, 0x23, 0x22, 0x01, 0x98, - 0xba, 0xdd, 0xdb, 0xbc, 0xbb, 0xac, 0xab, 0x9a, 0x8a, 0x31, 0x56, 0x34, 0x34, 0x24, 0x23, 0x32, - 0x21, 0x12, 0x81, 0xb9, 0xce, 0xbc, 0xbc, 0xbb, 0xaa, 0x89, 0x89, 0x08, 0x21, 0x53, 0x34, 0x43, - 0x32, 0x12, 0x02, 0xa8, 0xca, 0xcc, 0xbd, 0xbd, 0xcb, 0xaa, 0x9a, 0x08, 0x00, 0x11, 0x00, 0x21, - 0x42, 0x33, 0x13, 0xda, 0xbe, 0xba, 0x99, 0x20, 0x55, 0x44, 0x43, 0x34, 0x33, 0x43, 0x22, 0x81, - 0x98, 0xca, 0xbc, 0xcd, 0xcb, 0xbb, 0xcb, 0xbb, 0x9a, 0x08, 0x53, 0x45, 0x43, 0x43, 0x23, 0x33, - 0x23, 0x23, 0x12, 0xa8, 0xbd, 0xbe, 0xcb, 0xbb, 0xbb, 0xba, 0x9a, 0x99, 0x11, 0x53, 0x34, 0x34, - 0x24, 0x21, 0x11, 0x80, 0x99, 0xda, 0xcc, 0xbd, 0xbc, 0xbb, 0x9a, 0x89, 0x08, 0x80, 0x00, 0x20, - 0x43, 0x25, 0x12, 0xca, 0xbd, 0xac, 0x88, 0x10, 0x11, 0x44, 0x54, 0x53, 0x43, 0x43, 0x22, 0x12, - 0x80, 0x99, 0xaa, 0xcc, 0xdb, 0xbc, 0xbc, 0xbc, 0xaa, 0x89, 0x30, 0x63, 0x34, 0x34, 0x24, 0x43, - 0x22, 0x23, 0x11, 0x88, 0xca, 0xcb, 0xcb, 0xbb, 0xcb, 0xcb, 0xaa, 0x9b, 0x08, 0x22, 0x34, 0x34, - 0x24, 0x23, 0x22, 0x11, 0x90, 0xdb, 0xdc, 0xcc, 0xbb, 0xbb, 0xaa, 0xa9, 0xa8, 0x99, 0x89, 0x31, - 0x54, 0x24, 0x02, 0xd9, 0xcc, 0xab, 0x0a, 0x10, 0x01, 0x11, 0x53, 0x46, 0x44, 0x34, 0x23, 0x13, - 0x01, 0x90, 0x88, 0x99, 0xcc, 0xcd, 0xcc, 0xba, 0xab, 0x99, 0x18, 0x32, 0x44, 0x35, 0x53, 0x33, - 0x34, 0x23, 0x12, 0x80, 0xaa, 0xbc, 0xbb, 0xbc, 0xdb, 0xcb, 0xac, 0xab, 0x89, 0x20, 0x42, 0x32, - 0x33, 0x34, 0x34, 0x33, 0x81, 0xda, 0xdc, 0xcb, 0xab, 0xbb, 0x9a, 0x9a, 0xba, 0xbb, 0xab, 0x19, - 0x54, 0x34, 0x12, 0xb9, 0xcf, 0xbb, 0x9a, 0x10, 0x12, 0x10, 0x20, 0x64, 0x46, 0x34, 0x24, 0x13, - 0x11, 0x80, 0x01, 0x01, 0xb8, 0xdd, 0xcd, 0xbb, 0xaa, 0x8a, 0x88, 0x21, 0x32, 0x35, 0x45, 0x34, - 0x34, 0x24, 0x22, 0x80, 0x99, 0xba, 0xbb, 0xab, 0xbc, 0xcc, 0xbc, 0xbb, 0xaa, 0x18, 0x21, 0x23, - 0x32, 0x54, 0x44, 0x34, 0x02, 0xa8, 0xcd, 0xcb, 0xaa, 0xaa, 0x99, 0xa9, 0xaa, 0xbc, 0xaa, 0x19, - 0x42, 0x43, 0x02, 0xc8, 0xdc, 0xbb, 0xbb, 0x88, 0x00, 0x88, 0x08, 0x72, 0x56, 0x34, 0x34, 0x32, - 0x12, 0x12, 0x22, 0x21, 0x90, 0xdd, 0xcd, 0xcb, 0xaa, 0x89, 0x08, 0x10, 0x01, 0x31, 0x45, 0x35, - 0x35, 0x33, 0x23, 0x11, 0x98, 0xa9, 0xbb, 0xdb, 0xcb, 0xcb, 0xcb, 0xbb, 0xaa, 0x99, 0x00, 0x11, - 0x10, 0x62, 0x54, 0x44, 0x12, 0x91, 0xcb, 0xbc, 0xba, 0x9a, 0x9a, 0xba, 0xdb, 0xaa, 0x99, 0x08, - 0x32, 0x23, 0xa1, 0xdb, 0xcc, 0xbb, 0xbc, 0xaa, 0xba, 0xcc, 0x89, 0x41, 0x56, 0x53, 0x43, 0x32, - 0x33, 0x32, 0x33, 0x24, 0x01, 0xca, 0xce, 0xbc, 0xbb, 0xa9, 0x88, 0x80, 0x00, 0x20, 0x55, 0x44, - 0x43, 0x24, 0x22, 0x12, 0x01, 0x88, 0x98, 0xcb, 0xdb, 0xcb, 0xca, 0xaa, 0xaa, 0x99, 0x8a, 0x89, - 0x00, 0x32, 0x37, 0x45, 0x23, 0x02, 0xa9, 0xcd, 0xba, 0xba, 0xaa, 0xbb, 0xbc, 0xbb, 0x89, 0x21, - 0x32, 0x13, 0xd9, 0xbe, 0xab, 0x9a, 0x99, 0xcb, 0xcc, 0xbc, 0x9a, 0x20, 0x73, 0x53, 0x34, 0x34, - 0x24, 0x43, 0x32, 0x32, 0x02, 0xa0, 0xdc, 0xdb, 0xba, 0xab, 0xaa, 0x9a, 0x8a, 0x28, 0x64, 0x44, - 0x34, 0x43, 0x22, 0x22, 0x12, 0x12, 0x00, 0xa9, 0xbd, 0xbd, 0xbc, 0xbb, 0xbb, 0xbb, 0xbc, 0xaa, - 0x89, 0x31, 0x45, 0x34, 0x25, 0x23, 0x80, 0xb9, 0xdb, 0xbb, 0xbc, 0xcc, 0xbb, 0xab, 0x88, 0x11, - 0x23, 0x80, 0xeb, 0xbc, 0xac, 0x09, 0x11, 0x80, 0xda, 0xbc, 0xcb, 0x99, 0x21, 0x63, 0x53, 0x53, - 0x43, 0x53, 0x23, 0x33, 0x12, 0x00, 0xa8, 0xca, 0xcc, 0xcb, 0xcb, 0xab, 0xab, 0x89, 0x31, 0x47, - 0x43, 0x33, 0x33, 0x32, 0x43, 0x33, 0x24, 0x01, 0xa8, 0xcc, 0xcc, 0xbb, 0xbb, 0xcb, 0xdb, 0xab, - 0x9b, 0x09, 0x42, 0x33, 0x34, 0x33, 0x14, 0x12, 0x80, 0xb9, 0xed, 0xdb, 0xcb, 0xaa, 0x88, 0x00, - 0x11, 0x81, 0xba, 0xcd, 0xaa, 0x89, 0x21, 0x01, 0x98, 0xcc, 0xbc, 0xab, 0x89, 0x21, 0x44, 0x44, - 0x54, 0x44, 0x43, 0x23, 0x21, 0x10, 0x10, 0x00, 0xa8, 0xfb, 0xdb, 0xcb, 0xab, 0x9a, 0x10, 0x43, - 0x44, 0x33, 0x32, 0x33, 0x44, 0x43, 0x43, 0x12, 0x01, 0x99, 0xdb, 0xcb, 0xcb, 0xbb, 0xcc, 0xbb, - 0xbb, 0x9a, 0x00, 0x21, 0x43, 0x34, 0x34, 0x34, 0x23, 0x82, 0xda, 0xbd, 0xad, 0x9b, 0x8a, 0x88, - 0x80, 0x98, 0xca, 0xcb, 0xab, 0x8a, 0x10, 0x11, 0x01, 0xb9, 0xbc, 0xcc, 0xaa, 0x8a, 0x31, 0x43, - 0x57, 0x54, 0x34, 0x24, 0x23, 0x12, 0x32, 0x32, 0x12, 0xc9, 0xdd, 0xbc, 0xac, 0x9b, 0x08, 0x21, - 0x32, 0x23, 0x32, 0x45, 0x45, 0x53, 0x33, 0x22, 0x02, 0x80, 0xa9, 0xcb, 0xcc, 0xcb, 0xcb, 0xcb, - 0xbb, 0xba, 0xa9, 0x98, 0x10, 0x42, 0x45, 0x43, 0x33, 0x13, 0x98, 0xca, 0xbc, 0xbb, 0xba, 0xaa, - 0xcb, 0xab, 0xcb, 0xbb, 0xac, 0xab, 0x88, 0x11, 0x22, 0x01, 0xd9, 0xbc, 0xbb, 0x08, 0x63, 0x24, - 0x33, 0x55, 0x63, 0x53, 0x33, 0x34, 0x33, 0x43, 0x12, 0x98, 0xda, 0xcc, 0xcb, 0xaa, 0x89, 0x00, - 0x00, 0x90, 0x88, 0x51, 0x46, 0x44, 0x43, 0x23, 0x22, 0x01, 0x90, 0x98, 0xcb, 0xcc, 0xbc, 0xcb, - 0xbb, 0xac, 0xbb, 0xab, 0x99, 0x10, 0x44, 0x44, 0x43, 0x22, 0x01, 0x80, 0x99, 0x9a, 0xaa, 0xbc, - 0xbd, 0xbc, 0xac, 0xba, 0xaa, 0xaa, 0x9a, 0x88, 0x20, 0x23, 0x01, 0xca, 0xab, 0x30, 0x57, 0x34, - 0x22, 0x00, 0x21, 0x64, 0x45, 0x53, 0x33, 0x24, 0x22, 0x81, 0xa8, 0xdb, 0xdb, 0xaa, 0x9a, 0x89, - 0x88, 0xa9, 0xbb, 0x9b, 0x73, 0x47, 0x34, 0x34, 0x32, 0x21, 0x01, 0x90, 0xa9, 0xbc, 0xbd, 0xbc, - 0xbc, 0xcb, 0xbb, 0xcc, 0x9a, 0x89, 0x20, 0x52, 0x33, 0x34, 0x22, 0x12, 0x12, 0x01, 0x80, 0xdb, - 0xbd, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xab, 0x99, 0x10, 0x53, 0x12, 0x81, 0xaa, 0x29, 0x66, 0x34, - 0x33, 0x81, 0x98, 0x19, 0x73, 0x54, 0x34, 0x24, 0x22, 0x12, 0x00, 0xa9, 0xbc, 0xbc, 0xba, 0xaa, - 0x9a, 0xaa, 0xec, 0xbb, 0x8a, 0x73, 0x45, 0x34, 0x43, 0x22, 0x12, 0x00, 0xa8, 0xb9, 0xdb, 0xbb, - 0xbd, 0xcb, 0xbc, 0xbc, 0xbc, 0x9a, 0x89, 0x21, 0x53, 0x33, 0x34, 0x33, 0x24, 0x23, 0x02, 0xa0, - 0xdb, 0xcc, 0xbc, 0xbb, 0xac, 0xbb, 0xbb, 0x99, 0x18, 0x32, 0x33, 0x12, 0x80, 0x20, 0x66, 0x44, - 0x23, 0x12, 0x98, 0x9a, 0x09, 0x62, 0x45, 0x43, 0x24, 0x22, 0x12, 0x00, 0xaa, 0xca, 0xab, 0xbb, - 0xab, 0xbb, 0xdd, 0xcc, 0xbb, 0x0a, 0x63, 0x45, 0x24, 0x24, 0x22, 0x11, 0x88, 0x99, 0xa9, 0xaa, - 0xdb, 0xcc, 0xcb, 0xcc, 0xbb, 0xac, 0x8a, 0x88, 0x21, 0x33, 0x44, 0x34, 0x24, 0x33, 0x22, 0x01, - 0xa8, 0xdb, 0xbc, 0xbd, 0xbb, 0xdb, 0xba, 0x9a, 0x88, 0x11, 0x22, 0x11, 0x00, 0x31, 0x55, 0x35, - 0x34, 0x12, 0x90, 0xa9, 0xaa, 0x88, 0x42, 0x55, 0x53, 0x32, 0x33, 0x21, 0x88, 0xa9, 0xba, 0xba, - 0xac, 0xab, 0xfb, 0xdc, 0xdb, 0xaa, 0x08, 0x53, 0x44, 0x43, 0x33, 0x22, 0x10, 0x98, 0x88, 0x99, - 0xa9, 0xcd, 0xdc, 0xcb, 0xbc, 0xbc, 0x9a, 0x8a, 0x00, 0x11, 0x43, 0x44, 0x43, 0x33, 0x33, 0x13, - 0x01, 0xa9, 0xcc, 0xbd, 0xbc, 0xcb, 0xbb, 0xab, 0x8a, 0x10, 0x11, 0x01, 0x01, 0x31, 0x46, 0x45, - 0x33, 0x23, 0x81, 0xa9, 0xbb, 0xaa, 0x08, 0x63, 0x45, 0x43, 0x33, 0x23, 0x11, 0x90, 0x99, 0x99, - 0x9a, 0x99, 0xdb, 0xcf, 0xbd, 0xad, 0x9a, 0x10, 0x53, 0x34, 0x34, 0x33, 0x22, 0x01, 0x00, 0x10, - 0x80, 0xc9, 0xbf, 0xbe, 0xbc, 0xbc, 0xab, 0x9b, 0x8a, 0x08, 0x21, 0x45, 0x53, 0x24, 0x23, 0x23, - 0x21, 0x80, 0xb9, 0xbd, 0xbd, 0xdb, 0xbb, 0xbb, 0x9b, 0x88, 0x00, 0x01, 0x10, 0x41, 0x45, 0x44, - 0x43, 0x12, 0x81, 0x98, 0xaa, 0xaa, 0x99, 0x20, 0x73, 0x43, 0x34, 0x34, 0x22, 0x01, 0x00, 0x08, - 0x88, 0x80, 0xa8, 0xdf, 0xdc, 0xcb, 0xab, 0x89, 0x31, 0x63, 0x43, 0x33, 0x23, 0x12, 0x12, 0x22, - 0x22, 0xa1, 0xed, 0xcc, 0xbc, 0xbc, 0xcb, 0xaa, 0x9b, 0x89, 0x18, 0x42, 0x44, 0x34, 0x24, 0x32, - 0x22, 0x01, 0x88, 0xca, 0xbc, 0xcc, 0xcb, 0xbb, 0xab, 0x99, 0x09, 0x08, 0x00, 0x42, 0x44, 0x35, - 0x34, 0x22, 0x81, 0x98, 0xba, 0xab, 0x9a, 0x18, 0x53, 0x45, 0x53, 0x43, 0x32, 0x12, 0x02, 0x01, - 0x10, 0x10, 0x80, 0xfc, 0xcd, 0xbc, 0xbb, 0xaa, 0x08, 0x42, 0x34, 0x44, 0x22, 0x23, 0x32, 0x33, - 0x33, 0x82, 0xd9, 0xbe, 0xcd, 0xcb, 0xbb, 0xac, 0xbb, 0xaa, 0x09, 0x30, 0x54, 0x43, 0x24, 0x33, - 0x23, 0x12, 0x81, 0xa9, 0xda, 0xdb, 0xbc, 0xbc, 0xba, 0xba, 0x99, 0x99, 0x08, 0x42, 0x44, 0x44, - 0x43, 0x12, 0x81, 0x98, 0xaa, 0xaa, 0x99, 0x10, 0x42, 0x34, 0x45, 0x34, 0x33, 0x24, 0x22, 0x21, - 0x21, 0x11, 0x01, 0xfa, 0xdd, 0xbc, 0xcb, 0x9a, 0x89, 0x10, 0x42, 0x43, 0x33, 0x43, 0x33, 0x34, - 0x24, 0x11, 0x98, 0xdb, 0xcc, 0xbc, 0xbc, 0xbc, 0xbb, 0xac, 0x9a, 0x18, 0x32, 0x45, 0x43, 0x33, - 0x33, 0x22, 0x12, 0x80, 0xa8, 0xdc, 0xcc, 0xbb, 0xac, 0xbb, 0xaa, 0xaa, 0x8a, 0x30, 0x54, 0x35, - 0x34, 0x22, 0x01, 0x98, 0xaa, 0x9a, 0x8a, 0x10, 0x31, 0x53, 0x54, 0x34, 0x34, 0x43, 0x32, 0x23, - 0x32, 0x33, 0x22, 0xb0, 0xff, 0xbc, 0xcb, 0xba, 0x99, 0x09, 0x20, 0x42, 0x33, 0x34, 0x44, 0x43, - 0x33, 0x22, 0x80, 0xa8, 0xcc, 0xbd, 0xbd, 0xbc, 0xbc, 0xac, 0xaa, 0x89, 0x11, 0x42, 0x43, 0x24, - 0x33, 0x24, 0x22, 0x12, 0x81, 0xb9, 0xce, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xab, 0x18, 0x73, 0x34, - 0x25, 0x23, 0x01, 0x80, 0x98, 0x89, 0x99, 0x88, 0x88, 0x21, 0x65, 0x44, 0x43, 0x33, 0x33, 0x43, - 0x32, 0x34, 0x43, 0x02, 0xea, 0xcc, 0xbc, 0xab, 0xaa, 0x9a, 0x88, 0x10, 0x33, 0x53, 0x35, 0x44, - 0x23, 0x23, 0x11, 0x00, 0x98, 0xdc, 0xcc, 0xbd, 0xbc, 0xbb, 0xab, 0x9a, 0x08, 0x20, 0x42, 0x34, - 0x35, 0x34, 0x33, 0x24, 0x01, 0xa8, 0xdb, 0xbc, 0xbb, 0xac, 0xbb, 0xba, 0xab, 0x89, 0x31, 0x45, - 0x44, 0x32, 0x22, 0x11, 0x00, 0x88, 0xa9, 0xca, 0xaa, 0x19, 0x65, 0x44, 0x24, 0x23, 0x23, 0x22, - 0x34, 0x34, 0x35, 0x13, 0xa0, 0xdd, 0xcb, 0xbb, 0xab, 0xaa, 0xa9, 0x88, 0x10, 0x42, 0x35, 0x44, - 0x33, 0x32, 0x33, 0x33, 0x13, 0xd9, 0xdd, 0xbd, 0xbc, 0xac, 0x9b, 0x9a, 0x99, 0x98, 0x00, 0x31, - 0x36, 0x45, 0x33, 0x33, 0x13, 0x98, 0xca, 0xbc, 0xbc, 0xab, 0xbb, 0xbb, 0xcb, 0x9a, 0x09, 0x31, - 0x35, 0x45, 0x33, 0x33, 0x23, 0x82, 0xa9, 0xbd, 0xbc, 0x19, 0x72, 0x53, 0x33, 0x32, 0x22, 0x22, - 0x44, 0x44, 0x34, 0x33, 0x81, 0xcb, 0xcd, 0xba, 0xbb, 0xaa, 0xaa, 0xaa, 0x89, 0x28, 0x53, 0x34, - 0x34, 0x43, 0x34, 0x24, 0x22, 0x80, 0xeb, 0xdc, 0xbb, 0xbc, 0xaa, 0xab, 0xaa, 0xbb, 0xaa, 0x19, - 0x54, 0x45, 0x34, 0x33, 0x12, 0x81, 0xaa, 0xca, 0xbb, 0xac, 0xab, 0xbb, 0xcc, 0xba, 0x9a, 0x8a, - 0x20, 0x54, 0x44, 0x24, 0x23, 0x02, 0x90, 0xba, 0xac, 0x0a, 0x42, 0x36, 0x43, 0x22, 0x22, 0x21, - 0x44, 0x35, 0x35, 0x23, 0x02, 0xb8, 0xeb, 0xbb, 0xbc, 0xba, 0xba, 0xbb, 0xbb, 0x89, 0x21, 0x34, - 0x44, 0x43, 0x44, 0x43, 0x23, 0x02, 0xa8, 0xcd, 0xcc, 0xcb, 0xba, 0xbb, 0xbb, 0xbd, 0xba, 0x89, - 0x31, 0x37, 0x35, 0x23, 0x13, 0x01, 0x98, 0xa8, 0x99, 0xbb, 0xcc, 0xdb, 0xbb, 0xbc, 0xba, 0x9a, - 0x89, 0x41, 0x54, 0x34, 0x43, 0x12, 0x81, 0x99, 0xaa, 0x88, 0x32, 0x45, 0x24, 0x23, 0x22, 0x33, - 0x55, 0x44, 0x43, 0x23, 0x02, 0x80, 0xaa, 0xbc, 0xbc, 0xcb, 0xcb, 0xbb, 0xac, 0x9a, 0x09, 0x10, - 0x10, 0x22, 0x45, 0x35, 0x35, 0x32, 0x01, 0xc9, 0xeb, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xcb, 0x99, - 0x18, 0x43, 0x44, 0x32, 0x32, 0x12, 0x12, 0x02, 0x81, 0xb8, 0xdc, 0xcb, 0xac, 0xbb, 0xba, 0xbb, - 0xbb, 0x8b, 0x42, 0x47, 0x43, 0x23, 0x02, 0x80, 0x98, 0x08, 0x21, 0x33, 0x35, 0x43, 0x43, 0x43, - 0x35, 0x45, 0x33, 0x33, 0x12, 0x10, 0x08, 0xa9, 0xdc, 0xdb, 0xcb, 0xbb, 0xac, 0x9b, 0x9a, 0x98, - 0x99, 0x99, 0x42, 0x46, 0x35, 0x33, 0x22, 0x90, 0xcb, 0xdb, 0xbb, 0xbd, 0xcc, 0xbc, 0xbb, 0xaa, - 0x89, 0x20, 0x53, 0x43, 0x43, 0x33, 0x33, 0x23, 0x12, 0x90, 0xcb, 0xbc, 0xbc, 0xbb, 0xdb, 0xdb, - 0xbb, 0xbb, 0x89, 0x43, 0x36, 0x24, 0x13, 0x11, 0x08, 0x08, 0x20, 0x31, 0x34, 0x34, 0x53, 0x33, - 0x45, 0x43, 0x34, 0x32, 0x32, 0x32, 0x22, 0x81, 0xda, 0xdc, 0xcb, 0xbb, 0xac, 0xab, 0xbb, 0xca, - 0xcb, 0xba, 0x19, 0x63, 0x45, 0x23, 0x23, 0x00, 0x88, 0xa9, 0xcb, 0xbd, 0xcd, 0xcb, 0xcb, 0xba, - 0xaa, 0x89, 0x18, 0x42, 0x34, 0x35, 0x43, 0x22, 0x02, 0x81, 0x80, 0x89, 0xa9, 0xba, 0xdc, 0xdc, - 0xcb, 0xab, 0x9b, 0x08, 0x43, 0x34, 0x23, 0x13, 0x11, 0x11, 0x21, 0x44, 0x43, 0x43, 0x33, 0x24, - 0x33, 0x34, 0x34, 0x35, 0x43, 0x42, 0x22, 0x01, 0xa8, 0xdb, 0xbb, 0xac, 0xac, 0xcb, 0xbc, 0xbc, - 0xbc, 0xbb, 0x9a, 0x20, 0x46, 0x43, 0x32, 0x11, 0x00, 0x10, 0x98, 0xcb, 0xbd, 0xbe, 0xbc, 0xbc, - 0xcb, 0xab, 0x8a, 0x18, 0x52, 0x43, 0x34, 0x23, 0x22, 0x21, 0x11, 0x21, 0x12, 0x80, 0xeb, 0xcd, - 0xcc, 0xbb, 0xbb, 0x8a, 0x10, 0x42, 0x33, 0x33, 0x23, 0x22, 0x43, 0x44, 0x43, 0x34, 0x43, 0x23, - 0x13, 0x22, 0x31, 0x63, 0x53, 0x33, 0x24, 0x12, 0x98, 0xaa, 0xbb, 0xba, 0xcb, 0xec, 0xcc, 0xcc, - 0xbb, 0xbb, 0x9c, 0x89, 0x20, 0x44, 0x33, 0x23, 0x33, 0x32, 0x13, 0x90, 0xcc, 0xcd, 0xeb, 0xcb, - 0xdb, 0xba, 0xab, 0x89, 0x10, 0x43, 0x44, 0x32, 0x32, 0x22, 0x33, 0x43, 0x33, 0x13, 0xa8, 0xdd, - 0xcc, 0xbc, 0xbb, 0xab, 0x8a, 0x18, 0x32, 0x33, 0x34, 0x33, 0x43, 0x34, 0x36, 0x34, 0x43, 0x22, - 0x22, 0x01, 0x10, 0x10, 0x43, 0x35, 0x43, 0x12, 0x00, 0x99, 0x08, 0x11, 0x81, 0xfb, 0xde, 0xdb, - 0xcb, 0xbb, 0xbb, 0x9b, 0x0a, 0x31, 0x34, 0x35, 0x43, 0x33, 0x33, 0x12, 0x88, 0xca, 0xcc, 0xcd, - 0xbc, 0xbd, 0xbb, 0xab, 0x89, 0x20, 0x34, 0x34, 0x33, 0x43, 0x34, 0x34, 0x43, 0x22, 0x81, 0xb8, - 0xdc, 0xbc, 0xcc, 0xaa, 0xaa, 0x89, 0x08, 0x21, 0x21, 0x33, 0x43, 0x34, 0x45, 0x43, 0x24, 0x32, - 0x21, 0x10, 0x08, 0x00, 0x20, 0x32, 0x34, 0x23, 0x01, 0x88, 0x31, 0x55, 0x23, 0x91, 0xfb, 0xbf, - 0xcc, 0xcb, 0xbb, 0xab, 0xaa, 0x08, 0x21, 0x53, 0x53, 0x42, 0x22, 0x23, 0x12, 0x80, 0x99, 0xdc, - 0xcd, 0xdb, 0xcb, 0xaa, 0x9a, 0x09, 0x20, 0x22, 0x43, 0x43, 0x34, 0x34, 0x25, 0x23, 0x11, 0x80, - 0xba, 0xcd, 0xbc, 0xbc, 0xbb, 0xaa, 0x99, 0x00, 0x20, 0x22, 0x34, 0x44, 0x44, 0x53, 0x32, 0x33, - 0x23, 0x11, 0x10, 0x80, 0x01, 0x10, 0x10, 0x12, 0x21, 0x10, 0x63, 0x45, 0x24, 0x13, 0xa0, 0xce, - 0xcd, 0xbc, 0xcb, 0xab, 0xab, 0x8a, 0x09, 0x21, 0x43, 0x44, 0x43, 0x33, 0x14, 0x12, 0x80, 0xb9, - 0xcc, 0xcd, 0xbc, 0xbc, 0xab, 0x9a, 0x09, 0x10, 0x31, 0x53, 0x44, 0x43, 0x34, 0x33, 0x23, 0x02, - 0x98, 0xcc, 0xcc, 0xcb, 0xbb, 0xab, 0xab, 0xa9, 0x88, 0x11, 0x52, 0x53, 0x53, 0x43, 0x43, 0x32, - 0x33, 0x22, 0x12, 0x00, 0x01, 0x88, 0x99, 0x99, 0x99, 0x80, 0x32, 0x67, 0x43, 0x33, 0x02, 0xc9, - 0xdd, 0xbc, 0xbc, 0xac, 0xbb, 0xba, 0x99, 0x89, 0x10, 0x43, 0x45, 0x34, 0x33, 0x23, 0x02, 0x80, - 0xba, 0xdd, 0xcc, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x80, 0x31, 0x63, 0x44, 0x24, 0x24, 0x22, 0x12, - 0x01, 0xa9, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0xba, 0x9b, 0x89, 0x21, 0x54, 0x34, 0x35, 0x43, 0x33, - 0x34, 0x33, 0x23, 0x11, 0x01, 0x90, 0x99, 0xbb, 0xab, 0x9a, 0x08, 0x54, 0x46, 0x43, 0x22, 0x90, - 0xeb, 0xdb, 0xcb, 0xbb, 0xac, 0xbb, 0xcb, 0xaa, 0x89, 0x18, 0x44, 0x44, 0x33, 0x24, 0x12, 0x00, - 0x90, 0xa9, 0xeb, 0xdb, 0xbc, 0xbc, 0xbb, 0xba, 0xaa, 0x08, 0x31, 0x56, 0x53, 0x33, 0x33, 0x33, - 0x12, 0x90, 0xca, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0xbc, 0x9a, 0x08, 0x31, 0x35, 0x35, 0x34, 0x43, - 0x43, 0x24, 0x33, 0x22, 0x12, 0x80, 0xa8, 0xaa, 0xbb, 0xaa, 0x8a, 0x20, 0x46, 0x35, 0x24, 0x01, - 0xc9, 0xdb, 0xbc, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xba, 0x8a, 0x30, 0x45, 0x53, 0x32, 0x32, 0x11, - 0x01, 0x80, 0xa8, 0xda, 0xdc, 0xdb, 0xcb, 0xbb, 0xbb, 0xaa, 0x08, 0x42, 0x45, 0x43, 0x24, 0x23, - 0x22, 0x01, 0x80, 0xb9, 0xbd, 0xcc, 0xcb, 0xbb, 0xac, 0xab, 0x99, 0x00, 0x32, 0x44, 0x34, 0x53, - 0x33, 0x35, 0x34, 0x24, 0x12, 0x01, 0x90, 0xa9, 0xaa, 0x9a, 0x8a, 0x09, 0x31, 0x54, 0x43, 0x13, - 0x90, 0xeb, 0xbc, 0xcb, 0xbb, 0xcb, 0xcc, 0xdb, 0xbb, 0xba, 0x09, 0x31, 0x54, 0x33, 0x23, 0x33, - 0x32, 0x22, 0x02, 0xa0, 0xdc, 0xcd, 0xcc, 0xbc, 0xba, 0xbb, 0x99, 0x18, 0x43, 0x54, 0x33, 0x34, - 0x23, 0x13, 0x12, 0x80, 0xb9, 0xcd, 0xbd, 0xbc, 0xcb, 0xab, 0x9a, 0x88, 0x18, 0x21, 0x34, 0x35, - 0x44, 0x34, 0x35, 0x24, 0x23, 0x22, 0x00, 0x99, 0xa9, 0xaa, 0x9a, 0x99, 0x10, 0x41, 0x33, 0x33, - 0x81, 0xeb, 0xcd, 0xbb, 0xac, 0xba, 0xdc, 0xbc, 0xbd, 0xbc, 0x9a, 0x08, 0x31, 0x43, 0x23, 0x33, - 0x43, 0x44, 0x22, 0x12, 0x98, 0xdb, 0xcd, 0xcb, 0xbc, 0xba, 0xba, 0x99, 0x00, 0x43, 0x35, 0x34, - 0x24, 0x23, 0x22, 0x12, 0x00, 0xb9, 0xdd, 0xbc, 0xad, 0xab, 0x9b, 0x8a, 0x89, 0x00, 0x00, 0x42, - 0x54, 0x44, 0x44, 0x33, 0x34, 0x23, 0x12, 0x80, 0x99, 0x99, 0x99, 0x89, 0x08, 0x00, 0x80, 0x01, - 0x88, 0xb9, 0xde, 0xbc, 0xac, 0xab, 0xcb, 0xec, 0xdb, 0xcb, 0xaa, 0x9a, 0x00, 0x21, 0x22, 0x21, - 0x53, 0x44, 0x34, 0x33, 0x01, 0xb8, 0xcc, 0xbd, 0xdb, 0xba, 0xbb, 0xbb, 0x99, 0x18, 0x43, 0x35, - 0x44, 0x32, 0x33, 0x23, 0x22, 0x82, 0xc9, 0xce, 0xdb, 0xab, 0xab, 0x9a, 0x99, 0x98, 0x99, 0x8a, - 0x41, 0x56, 0x44, 0x34, 0x34, 0x33, 0x32, 0x11, 0x00, 0x98, 0x89, 0x88, 0x08, 0x01, 0x88, 0xba, - 0xac, 0xcb, 0xba, 0xbd, 0xbd, 0xbb, 0xba, 0xfb, 0xcc, 0xdb, 0xbb, 0xbb, 0x99, 0x08, 0x88, 0x80, - 0x31, 0x57, 0x34, 0x34, 0x22, 0x80, 0xb9, 0xcc, 0xbb, 0xad, 0xcb, 0xbb, 0xba, 0x9a, 0x18, 0x41, - 0x53, 0x43, 0x43, 0x32, 0x33, 0x22, 0x82, 0xea, 0xcc, 0xcb, 0xba, 0xaa, 0x99, 0x98, 0x99, 0xcb, - 0x9b, 0x41, 0x47, 0x44, 0x43, 0x43, 0x32, 0x12, 0x12, 0x00, 0x08, 0x08, 0x20, 0x21, 0x02, 0xa9, - 0xdc, 0xbb, 0xbb, 0xac, 0xcb, 0xbb, 0xbb, 0xdb, 0xcc, 0xbc, 0xad, 0xab, 0xaa, 0x99, 0x99, 0xba, - 0x9b, 0x51, 0x47, 0x34, 0x24, 0x12, 0x98, 0xab, 0xbc, 0xbb, 0xbc, 0xbc, 0xcb, 0xbb, 0xab, 0x88, - 0x32, 0x44, 0x53, 0x33, 0x24, 0x23, 0x12, 0x90, 0xdb, 0xbd, 0xbc, 0xab, 0x99, 0x89, 0x90, 0xeb, - 0xac, 0x0a, 0x42, 0x46, 0x53, 0x43, 0x32, 0x32, 0x22, 0x22, 0x22, 0x11, 0x31, 0x43, 0x24, 0x01, - 0xb9, 0xcd, 0xbb, 0xac, 0xab, 0xbb, 0xab, 0xdb, 0xcc, 0xbb, 0xbd, 0xaa, 0xaa, 0x89, 0xa9, 0xdb, - 0xbb, 0x8a, 0x62, 0x55, 0x43, 0x23, 0x81, 0xa9, 0xab, 0xcb, 0xba, 0xcb, 0xbc, 0xac, 0xcb, 0xba, - 0x89, 0x10, 0x33, 0x36, 0x24, 0x23, 0x22, 0x00, 0x99, 0xcb, 0xdc, 0xac, 0x9a, 0x89, 0x88, 0xb9, - 0xbe, 0x9b, 0x31, 0x55, 0x54, 0x33, 0x34, 0x23, 0x33, 0x33, 0x25, 0x43, 0x22, 0x32, 0x23, 0x23, - 0x00, 0xc9, 0xdc, 0xcb, 0xab, 0xbb, 0xab, 0xba, 0xce, 0xcb, 0xbb, 0xac, 0x88, 0x08, 0x88, 0xb9, - 0xcc, 0xab, 0x19, 0x64, 0x35, 0x33, 0x12, 0xa9, 0xbb, 0xac, 0x9a, 0xaa, 0xcc, 0xbc, 0xbc, 0xbb, - 0x9c, 0x09, 0x10, 0x33, 0x35, 0x23, 0x02, 0x80, 0x89, 0x89, 0xfb, 0xbd, 0xbb, 0x9a, 0x88, 0x90, - 0xca, 0x9a, 0x51, 0x55, 0x63, 0x43, 0x33, 0x33, 0x32, 0x53, 0x34, 0x25, 0x33, 0x33, 0x32, 0x22, - 0x12, 0x81, 0xc9, 0xcc, 0xac, 0xba, 0xbb, 0xbb, 0xdd, 0xcc, 0xbb, 0xbb, 0x89, 0x08, 0x80, 0xa8, - 0xdc, 0xbb, 0x09, 0x52, 0x45, 0x24, 0x02, 0xa0, 0xaa, 0x9b, 0x99, 0x98, 0xcb, 0xcc, 0xcc, 0xbb, - 0xac, 0x9a, 0x00, 0x10, 0x42, 0x23, 0x01, 0x89, 0x89, 0x00, 0x91, 0xde, 0xbc, 0xab, 0x9a, 0x99, - 0x8a, 0x51, 0x45, 0x34, 0x35, 0x34, 0x33, 0x33, 0x12, 0x53, 0x44, 0x43, 0x24, 0x33, 0x22, 0x22, - 0x22, 0x12, 0x90, 0xcb, 0xaa, 0xab, 0xba, 0xbc, 0xef, 0xbc, 0xbc, 0xbb, 0x99, 0x88, 0x98, 0xb8, - 0xdc, 0xbb, 0x8a, 0x31, 0x56, 0x43, 0x02, 0x80, 0xaa, 0x8a, 0x08, 0x81, 0xb8, 0xbe, 0xcd, 0xcb, - 0xac, 0x9b, 0x99, 0x08, 0x20, 0x23, 0x12, 0x99, 0x8a, 0x40, 0x24, 0xa8, 0xbd, 0xcb, 0xbb, 0xbc, - 0x9b, 0x38, 0x57, 0x43, 0x43, 0x43, 0x24, 0x12, 0x11, 0x21, 0x35, 0x34, 0x34, 0x24, 0x22, 0x12, - 0x22, 0x12, 0x90, 0xab, 0x8a, 0x98, 0x99, 0xca, 0xdf, 0xcd, 0xcb, 0xab, 0x89, 0x08, 0x98, 0xb9, - 0xdd, 0xbb, 0x9a, 0x28, 0x45, 0x43, 0x12, 0x88, 0x99, 0x99, 0x10, 0x11, 0x80, 0xdb, 0xdd, 0xcc, - 0xac, 0xab, 0x9a, 0x99, 0x80, 0x21, 0x02, 0x98, 0x89, 0x51, 0x34, 0x12, 0x90, 0x98, 0xda, 0xbc, - 0xbd, 0x8a, 0x31, 0x35, 0x45, 0x34, 0x24, 0x23, 0x12, 0x32, 0x45, 0x44, 0x33, 0x24, 0x12, 0x01, - 0x00, 0x00, 0x98, 0x9a, 0x89, 0x80, 0x88, 0xcb, 0xdd, 0xcd, 0xcb, 0xaa, 0x89, 0x00, 0x00, 0xa8, - 0xce, 0xbd, 0xba, 0x08, 0x52, 0x24, 0x12, 0x90, 0xaa, 0x99, 0x20, 0x23, 0x33, 0x91, 0xed, 0xce, - 0xcb, 0xab, 0xaa, 0xaa, 0x89, 0x08, 0x80, 0x98, 0x09, 0x52, 0x34, 0x33, 0x33, 0x25, 0x02, 0xb9, - 0xde, 0xab, 0x89, 0x28, 0x42, 0x44, 0x33, 0x22, 0x22, 0x63, 0x36, 0x45, 0x43, 0x23, 0x22, 0x00, - 0x80, 0x80, 0x99, 0xaa, 0x9a, 0x89, 0xa9, 0xdb, 0xbe, 0xcd, 0xbb, 0xaa, 0x10, 0x32, 0x24, 0x81, - 0xec, 0xbc, 0xab, 0x0a, 0x32, 0x35, 0x12, 0xa8, 0xbb, 0x9b, 0x28, 0x43, 0x45, 0x22, 0xa0, 0xce, - 0xcc, 0xcb, 0xba, 0xba, 0xaa, 0x8a, 0x89, 0xaa, 0x8a, 0x30, 0x45, 0x53, 0x43, 0x43, 0x23, 0x02, - 0xa9, 0xbc, 0xab, 0x99, 0x19, 0x21, 0x22, 0x01, 0x08, 0x74, 0x67, 0x34, 0x35, 0x33, 0x32, 0x21, - 0x10, 0x00, 0x98, 0xaa, 0xab, 0xaa, 0xaa, 0xdc, 0xbe, 0xbd, 0xbc, 0x9a, 0x19, 0x32, 0x34, 0x22, - 0xa8, 0xbe, 0xac, 0x89, 0x21, 0x24, 0x03, 0xa9, 0xcc, 0xaa, 0x99, 0x00, 0x33, 0x34, 0x23, 0xb0, - 0xcf, 0xbd, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0xaa, 0xaa, 0x9a, 0x20, 0x54, 0x44, 0x34, 0x34, 0x33, - 0x12, 0x98, 0xa9, 0x9a, 0x88, 0x99, 0xb9, 0xdd, 0xcb, 0x8a, 0x62, 0x55, 0x53, 0x33, 0x34, 0x32, - 0x23, 0x11, 0x80, 0x98, 0x89, 0x99, 0x99, 0xdb, 0xdd, 0xcc, 0xcb, 0xab, 0x8a, 0x10, 0x32, 0x14, - 0x81, 0xb9, 0xbb, 0x0a, 0x52, 0x43, 0x13, 0x98, 0xdb, 0xbb, 0xbb, 0x9b, 0x20, 0x53, 0x43, 0x23, - 0xa1, 0xed, 0xcd, 0xcb, 0xbb, 0xab, 0xab, 0xaa, 0xbb, 0xbb, 0x9a, 0x30, 0x56, 0x54, 0x43, 0x33, - 0x32, 0x21, 0x00, 0x80, 0x88, 0x99, 0xba, 0xbe, 0xcd, 0xbb, 0x8a, 0x20, 0x56, 0x34, 0x35, 0x43, - 0x32, 0x12, 0x11, 0x01, 0x00, 0x00, 0x80, 0xa9, 0xdd, 0xdc, 0xdb, 0xab, 0xab, 0x89, 0x11, 0x21, - 0x01, 0x99, 0xaa, 0x28, 0x44, 0x35, 0x23, 0x01, 0xa9, 0xbc, 0xad, 0xab, 0x9a, 0x00, 0x42, 0x25, - 0x13, 0xa8, 0xcf, 0xbc, 0xbc, 0xaa, 0xa9, 0xba, 0xbc, 0xbc, 0xaa, 0x89, 0x31, 0x46, 0x44, 0x43, - 0x32, 0x23, 0x12, 0x11, 0x10, 0x00, 0x80, 0xba, 0xee, 0xdb, 0xbb, 0xaa, 0x18, 0x44, 0x35, 0x35, - 0x32, 0x33, 0x22, 0x23, 0x22, 0x33, 0x33, 0x02, 0xda, 0xde, 0xcc, 0xcb, 0xab, 0x9a, 0x89, 0x08, - 0x80, 0x98, 0x98, 0x10, 0x54, 0x34, 0x43, 0x12, 0x80, 0xaa, 0xbb, 0xbc, 0xbb, 0x8a, 0x21, 0x35, - 0x24, 0xa0, 0xdc, 0xbd, 0xac, 0x9b, 0xa9, 0xa9, 0xbc, 0xbd, 0xac, 0x9a, 0x00, 0x33, 0x45, 0x44, - 0x33, 0x33, 0x23, 0x32, 0x32, 0x34, 0x24, 0x81, 0xc9, 0xce, 0xcc, 0xab, 0x9b, 0x10, 0x53, 0x34, - 0x33, 0x25, 0x32, 0x33, 0x43, 0x33, 0x43, 0x22, 0x90, 0xea, 0xcc, 0xcb, 0xac, 0xab, 0x9a, 0x99, - 0x99, 0xaa, 0x9a, 0x09, 0x53, 0x44, 0x34, 0x22, 0x11, 0x98, 0xb9, 0xca, 0xaa, 0x9a, 0x30, 0x53, - 0x23, 0xa0, 0xcd, 0xbd, 0xac, 0x99, 0x88, 0x99, 0xcc, 0xbd, 0xbc, 0xaa, 0x89, 0x28, 0x52, 0x53, - 0x34, 0x23, 0x33, 0x42, 0x53, 0x33, 0x43, 0x11, 0x90, 0xda, 0xcd, 0xcb, 0xaa, 0x8a, 0x10, 0x32, - 0x34, 0x34, 0x44, 0x42, 0x32, 0x43, 0x33, 0x33, 0x12, 0x90, 0xcc, 0xcd, 0xcb, 0xab, 0xba, 0xaa, - 0xbb, 0xbc, 0xba, 0xab, 0x19, 0x52, 0x44, 0x24, 0x12, 0x01, 0x98, 0xa9, 0xa9, 0x08, 0x31, 0x45, - 0x23, 0x91, 0xdb, 0xbd, 0xab, 0xaa, 0x88, 0x98, 0xeb, 0xcd, 0xcb, 0xab, 0x9b, 0x89, 0x10, 0x34, - 0x35, 0x35, 0x42, 0x33, 0x34, 0x34, 0x24, 0x23, 0x01, 0xa8, 0xcd, 0xcc, 0xba, 0x9b, 0x99, 0x00, - 0x20, 0x43, 0x44, 0x43, 0x43, 0x34, 0x34, 0x24, 0x13, 0x02, 0x98, 0xdb, 0xcb, 0xac, 0xbb, 0xba, - 0xbc, 0xbc, 0xbb, 0xac, 0x99, 0x08, 0x31, 0x34, 0x24, 0x12, 0x01, 0x98, 0xa9, 0x09, 0x63, 0x44, - 0x24, 0x12, 0x90, 0xb9, 0xbb, 0x9c, 0x88, 0xa8, 0xdc, 0xcd, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x00, - 0x52, 0x44, 0x53, 0x32, 0x43, 0x33, 0x34, 0x33, 0x12, 0x80, 0xeb, 0xbc, 0xbc, 0xbb, 0xab, 0x99, - 0x09, 0x21, 0x52, 0x53, 0x44, 0x53, 0x43, 0x33, 0x24, 0x12, 0x01, 0xa8, 0xcb, 0xbc, 0xcb, 0xbb, - 0xdb, 0xbb, 0xcb, 0xbb, 0xab, 0xab, 0x89, 0x11, 0x22, 0x32, 0x02, 0xb8, 0xcb, 0x18, 0x66, 0x44, - 0x34, 0x33, 0x23, 0x00, 0x89, 0x09, 0x08, 0xa8, 0xec, 0xcc, 0xcb, 0xcb, 0xcb, 0xcb, 0xaa, 0x8a, - 0x20, 0x53, 0x44, 0x32, 0x43, 0x33, 0x34, 0x33, 0x23, 0x81, 0xca, 0xbd, 0xbc, 0xcb, 0xba, 0xaa, - 0x98, 0x00, 0x22, 0x44, 0x63, 0x53, 0x43, 0x33, 0x43, 0x33, 0x12, 0x90, 0xba, 0xbd, 0xcb, 0xbb, - 0xbc, 0xbb, 0xcc, 0xba, 0xac, 0xbb, 0xaa, 0x99, 0x89, 0x89, 0xba, 0xbe, 0xbc, 0x8a, 0x41, 0x54, - 0x44, 0x24, 0x23, 0x13, 0x21, 0x21, 0x21, 0x81, 0xb9, 0xce, 0xbc, 0xbc, 0xbd, 0xbc, 0xbb, 0x9a, - 0x09, 0x32, 0x35, 0x35, 0x43, 0x43, 0x33, 0x33, 0x23, 0x02, 0xb8, 0xdc, 0xbc, 0xcb, 0xab, 0xaa, - 0x89, 0x08, 0x11, 0x43, 0x44, 0x35, 0x34, 0x34, 0x43, 0x33, 0x22, 0x00, 0xa9, 0xbc, 0xcc, 0xbb, - 0xbb, 0xaa, 0xba, 0xcb, 0xbd, 0xbc, 0xbb, 0x9a, 0xa8, 0xda, 0xcc, 0xcc, 0xbb, 0xaa, 0x08, 0x41, - 0x44, 0x44, 0x32, 0x24, 0x23, 0x33, 0x33, 0x02, 0x90, 0xbb, 0xdd, 0xdb, 0xdb, 0xbb, 0xac, 0xab, - 0x89, 0x00, 0x32, 0x44, 0x43, 0x43, 0x34, 0x42, 0x22, 0x11, 0x80, 0xbb, 0xbd, 0xbc, 0xbb, 0xbb, - 0xaa, 0x99, 0x28, 0x53, 0x44, 0x53, 0x43, 0x43, 0x33, 0x33, 0x13, 0x11, 0x99, 0xcc, 0xdb, 0xca, - 0x9a, 0x8a, 0x89, 0x98, 0xba, 0xbc, 0xbc, 0x9a, 0x89, 0xdb, 0xed, 0xdb, 0xbb, 0xab, 0x9a, 0x08, - 0x32, 0x54, 0x53, 0x43, 0x33, 0x34, 0x24, 0x22, 0x11, 0x88, 0xb9, 0xcc, 0xcc, 0xcb, 0xcb, 0xba, - 0xa9, 0x88, 0x11, 0x33, 0x53, 0x43, 0x44, 0x33, 0x24, 0x22, 0x80, 0xaa, 0xbc, 0xbc, 0xcb, 0xbb, - 0xba, 0xaa, 0x09, 0x31, 0x36, 0x45, 0x43, 0x33, 0x43, 0x23, 0x22, 0x11, 0x88, 0xca, 0xdb, 0xac, - 0xac, 0x99, 0x89, 0x80, 0x99, 0xaa, 0xab, 0x89, 0x88, 0xfb, 0xec, 0xcc, 0xbc, 0xbb, 0xab, 0x9b, - 0x88, 0x21, 0x44, 0x35, 0x35, 0x44, 0x33, 0x23, 0x23, 0x11, 0x88, 0xca, 0xcc, 0xbc, 0xbc, 0xac, - 0xab, 0x99, 0x00, 0x20, 0x42, 0x43, 0x44, 0x43, 0x43, 0x12, 0x01, 0x98, 0xba, 0xdb, 0xbb, 0xbc, - 0xcb, 0xba, 0x9a, 0x18, 0x43, 0x35, 0x35, 0x43, 0x43, 0x33, 0x32, 0x02, 0x80, 0xb9, 0xdb, 0xcc, - 0xbb, 0xba, 0xaa, 0x99, 0x98, 0x98, 0x08, 0x10, 0x22, 0x03, 0xfc, 0xbf, 0xcd, 0xbb, 0xcb, 0xab, - 0xab, 0x99, 0x08, 0x53, 0x36, 0x44, 0x33, 0x34, 0x33, 0x32, 0x02, 0x80, 0xcb, 0xbd, 0xcc, 0xcb, - 0xba, 0x9a, 0x8a, 0x18, 0x21, 0x44, 0x43, 0x34, 0x43, 0x23, 0x22, 0x00, 0x99, 0xdb, 0xcb, 0xdb, - 0xbb, 0xbb, 0xac, 0x99, 0x10, 0x53, 0x34, 0x35, 0x43, 0x43, 0x32, 0x22, 0x01, 0x98, 0xba, 0xcd, - 0xcb, 0xbb, 0xab, 0xaa, 0x89, 0x80, 0x11, 0x22, 0x33, 0x14, 0xb8, 0xdf, 0xdb, 0xcb, 0xcb, 0xcb, - 0xbb, 0xbb, 0xab, 0x28, 0x54, 0x35, 0x34, 0x34, 0x33, 0x43, 0x23, 0x12, 0x88, 0xcb, 0xbd, 0xcc, - 0xba, 0xab, 0xaa, 0x89, 0x18, 0x43, 0x35, 0x44, 0x32, 0x33, 0x32, 0x12, 0x81, 0xa9, 0xcc, 0xdc, - 0xcb, 0xcb, 0xaa, 0x9a, 0x08, 0x20, 0x34, 0x53, 0x34, 0x34, 0x34, 0x24, 0x11, 0x00, 0x99, 0xca, - 0xcb, 0xcb, 0xbb, 0xac, 0x99, 0x08, 0x21, 0x32, 0x22, 0x01, 0x98, 0xcb, 0xdc, 0xdb, 0xcc, 0xcb, - 0xdb, 0xab, 0xab, 0x99, 0x21, 0x44, 0x34, 0x44, 0x33, 0x43, 0x43, 0x22, 0x02, 0xa8, 0xcb, 0xbc, - 0xbc, 0xbc, 0xba, 0xba, 0x09, 0x31, 0x45, 0x34, 0x33, 0x43, 0x22, 0x22, 0x11, 0x81, 0xa9, 0xce, - 0xcc, 0xac, 0xab, 0x9a, 0x99, 0x18, 0x20, 0x43, 0x35, 0x35, 0x44, 0x33, 0x23, 0x11, 0x81, 0xa9, - 0xcb, 0xcc, 0xdb, 0xba, 0xab, 0x88, 0x20, 0x32, 0x12, 0x80, 0x80, 0xa0, 0xda, 0xdc, 0xdb, 0xbc, - 0xad, 0xbc, 0xba, 0x9a, 0x89, 0x21, 0x45, 0x34, 0x34, 0x43, 0x33, 0x43, 0x23, 0x11, 0xa8, 0xdb, - 0xbc, 0xbd, 0xbb, 0xbb, 0xaa, 0x10, 0x63, 0x43, 0x33, 0x34, 0x43, 0x12, 0x12, 0x10, 0x98, 0xca, - 0xdc, 0xdb, 0xcb, 0xaa, 0x99, 0x09, 0x10, 0x21, 0x43, 0x44, 0x44, 0x24, 0x24, 0x12, 0x01, 0x88, - 0x9a, 0xcb, 0xbb, 0xcc, 0xbb, 0xab, 0x09, 0x22, 0x33, 0x02, 0x98, 0x98, 0xb9, 0xdc, 0xdc, 0xcc, - 0xcc, 0xbb, 0xcb, 0xaa, 0x89, 0x00, 0x32, 0x53, 0x44, 0x34, 0x34, 0x33, 0x33, 0x13, 0x01, 0x98, - 0xeb, 0xdc, 0xbb, 0xbc, 0x9a, 0x89, 0x21, 0x44, 0x43, 0x32, 0x32, 0x34, 0x33, 0x12, 0x91, 0xb9, - 0xbd, 0xcd, 0xbc, 0xba, 0xbb, 0xab, 0x99, 0x20, 0x63, 0x53, 0x43, 0x53, 0x33, 0x24, 0x23, 0x01, - 0x99, 0xba, 0xbd, 0xca, 0xbb, 0xbb, 0x8b, 0x08, 0x11, 0x10, 0x20, 0x02, 0xd9, 0xdc, 0xdb, 0xbb, - 0xbe, 0xcd, 0xcb, 0xab, 0x99, 0x08, 0x20, 0x31, 0x44, 0x44, 0x33, 0x34, 0x24, 0x22, 0x12, 0x00, - 0xa9, 0xdc, 0xcb, 0xcb, 0xbb, 0x9b, 0x18, 0x52, 0x33, 0x43, 0x32, 0x44, 0x43, 0x22, 0x11, 0x80, - 0xa9, 0xdc, 0xcb, 0xab, 0xbb, 0xac, 0xab, 0x89, 0x30, 0x53, 0x44, 0x53, 0x33, 0x35, 0x23, 0x13, - 0x98, 0xca, 0xba, 0x9a, 0xba, 0xbb, 0xcb, 0x9a, 0xaa, 0x09, 0x30, 0x33, 0xc0, 0xde, 0xbc, 0xba, - 0xdb, 0xdd, 0xbc, 0xac, 0xaa, 0x89, 0x10, 0x20, 0x32, 0x44, 0x43, 0x44, 0x33, 0x33, 0x33, 0x11, - 0xa9, 0xdb, 0xbc, 0xbc, 0xbb, 0xbc, 0xaa, 0x10, 0x34, 0x34, 0x32, 0x54, 0x43, 0x34, 0x32, 0x11, - 0x80, 0xca, 0xbc, 0xac, 0xab, 0xcb, 0xba, 0xaa, 0x99, 0x08, 0x52, 0x45, 0x53, 0x34, 0x24, 0x13, - 0x01, 0xa8, 0xaa, 0x9a, 0x99, 0x98, 0xba, 0xeb, 0xbb, 0xab, 0x09, 0x12, 0x90, 0xde, 0xac, 0xaa, - 0xa9, 0xdc, 0xdd, 0xcb, 0xba, 0xa9, 0x89, 0x10, 0x11, 0x22, 0x42, 0x45, 0x44, 0x33, 0x24, 0x02, - 0x80, 0xa9, 0xba, 0xbb, 0xbc, 0xbc, 0xab, 0xab, 0x89, 0x10, 0x44, 0x45, 0x34, 0x34, 0x34, 0x33, - 0x13, 0x90, 0xca, 0xac, 0xa9, 0xbb, 0xcb, 0xcb, 0xaa, 0xac, 0xab, 0x20, 0x56, 0x44, 0x43, 0x33, - 0x11, 0x88, 0xaa, 0x99, 0x18, 0x31, 0x12, 0xc8, 0xcd, 0xbc, 0x99, 0x10, 0xa0, 0xcc, 0xcb, 0x9a, - 0x88, 0xda, 0xcd, 0xbc, 0xbb, 0xac, 0x9a, 0x08, 0x00, 0x90, 0x08, 0x51, 0x47, 0x53, 0x23, 0x12, - 0x00, 0x98, 0x9a, 0xa9, 0x9a, 0xaa, 0xcb, 0xbb, 0xcc, 0xac, 0x89, 0x31, 0x46, 0x43, 0x53, 0x43, - 0x22, 0x00, 0x98, 0x98, 0x08, 0x98, 0x98, 0xdb, 0xbc, 0xcc, 0xdb, 0x9a, 0x08, 0x53, 0x35, 0x34, - 0x13, 0x81, 0xa8, 0x8a, 0x18, 0x42, 0x24, 0x03, 0xc9, 0xcc, 0xbb, 0x88, 0x98, 0xda, 0xcb, 0x9b, - 0x89, 0x99, 0xcd, 0xdb, 0xba, 0xbb, 0xac, 0xab, 0x99, 0xaa, 0xcb, 0x0a, 0x65, 0x54, 0x33, 0x33, - 0x01, 0x88, 0x99, 0x89, 0x08, 0x98, 0x99, 0xc9, 0xdc, 0xcd, 0xba, 0x09, 0x31, 0x34, 0x44, 0x44, - 0x32, 0x22, 0x01, 0x00, 0x21, 0x23, 0x12, 0xb8, 0xec, 0xbc, 0xcd, 0xbb, 0xaa, 0x20, 0x54, 0x43, - 0x33, 0x12, 0x90, 0x98, 0x88, 0x22, 0x35, 0x24, 0x91, 0xdb, 0xbc, 0xaa, 0x98, 0xca, 0xcc, 0xba, - 0x99, 0x09, 0x99, 0xab, 0xaa, 0xea, 0xcd, 0xbc, 0xbb, 0xcb, 0xcb, 0xaa, 0x20, 0x45, 0x35, 0x23, - 0x22, 0x00, 0x00, 0x18, 0x10, 0x11, 0x80, 0x98, 0xec, 0xcd, 0xbc, 0x9b, 0x09, 0x21, 0x42, 0x35, - 0x25, 0x33, 0x32, 0x33, 0x44, 0x33, 0x33, 0x82, 0xb9, 0xce, 0xdb, 0xcb, 0xab, 0x8a, 0x20, 0x53, - 0x53, 0x22, 0x11, 0x80, 0x09, 0x10, 0x32, 0x34, 0x13, 0xa8, 0xce, 0xac, 0x9a, 0xaa, 0xcc, 0xac, - 0xab, 0x89, 0x11, 0x22, 0x22, 0xa1, 0xef, 0xbc, 0xbb, 0xbc, 0xbb, 0xbb, 0x8a, 0x31, 0x46, 0x33, - 0x43, 0x32, 0x32, 0x13, 0x22, 0x31, 0x22, 0x00, 0xda, 0xcf, 0xdb, 0xbb, 0x9b, 0x88, 0x08, 0x42, - 0x44, 0x43, 0x34, 0x35, 0x43, 0x24, 0x12, 0x02, 0x80, 0xba, 0xbc, 0xcd, 0xbb, 0xbb, 0x99, 0x10, - 0x54, 0x33, 0x23, 0x02, 0x08, 0x08, 0x31, 0x44, 0x33, 0x81, 0xd9, 0xdb, 0xba, 0xca, 0xdc, 0xbb, - 0xac, 0x89, 0x20, 0x43, 0x33, 0x02, 0xda, 0xbd, 0xbc, 0xac, 0xbb, 0xcb, 0xab, 0x8a, 0x20, 0x31, - 0x45, 0x43, 0x43, 0x32, 0x23, 0x23, 0x22, 0x12, 0x88, 0xda, 0xdd, 0xbc, 0xbb, 0xba, 0x9a, 0x19, - 0x53, 0x44, 0x53, 0x34, 0x44, 0x42, 0x22, 0x21, 0x00, 0x90, 0xaa, 0xcc, 0xcc, 0xbb, 0xab, 0x8a, - 0x32, 0x35, 0x32, 0x12, 0x80, 0x00, 0x32, 0x36, 0x24, 0x01, 0x99, 0xbb, 0xbd, 0xdc, 0xbc, 0xbc, - 0xaa, 0x89, 0x30, 0x44, 0x32, 0x23, 0xa8, 0xdc, 0xca, 0xba, 0xcb, 0xbc, 0xcb, 0x9b, 0x9a, 0x00, - 0x32, 0x34, 0x44, 0x43, 0x32, 0x43, 0x32, 0x22, 0x12, 0x80, 0xea, 0xcd, 0xbb, 0xac, 0xaa, 0x09, - 0x21, 0x43, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x23, 0x80, 0xa9, 0xdc, 0xbd, 0xbc, 0xac, 0x99, - 0x20, 0x32, 0x22, 0x12, 0x11, 0x10, 0x42, 0x35, 0x34, 0x12, 0x98, 0xba, 0xcd, 0xeb, 0xcb, 0xbb, - 0x9b, 0x89, 0x32, 0x44, 0x33, 0x13, 0x90, 0xcb, 0xcb, 0xcc, 0xbc, 0xbc, 0xcc, 0xaa, 0xaa, 0x88, - 0x10, 0x32, 0x43, 0x35, 0x43, 0x43, 0x32, 0x33, 0x22, 0x02, 0xb9, 0xcf, 0xcb, 0xcb, 0xaa, 0x09, - 0x20, 0x22, 0x35, 0x35, 0x44, 0x33, 0x34, 0x34, 0x22, 0x00, 0x98, 0xda, 0xdb, 0xac, 0xab, 0x9a, - 0x18, 0x21, 0x12, 0x02, 0x01, 0x21, 0x44, 0x45, 0x33, 0x23, 0x80, 0xba, 0xdc, 0xcc, 0xbc, 0xba, - 0xaa, 0x08, 0x32, 0x34, 0x33, 0x22, 0x90, 0xba, 0xeb, 0xdb, 0xcc, 0xdb, 0xbc, 0xbb, 0xbb, 0x9a, - 0x08, 0x22, 0x43, 0x44, 0x34, 0x43, 0x24, 0x33, 0x32, 0x12, 0xa9, 0xcd, 0xcb, 0xbc, 0xab, 0x89, - 0x20, 0x42, 0x34, 0x43, 0x53, 0x34, 0x44, 0x33, 0x32, 0x01, 0x98, 0xda, 0xdb, 0xcb, 0xba, 0x9a, - 0x08, 0x11, 0x11, 0x11, 0x00, 0x20, 0x73, 0x44, 0x43, 0x22, 0x00, 0x98, 0xdb, 0xbd, 0xbc, 0xbb, - 0x9a, 0x08, 0x31, 0x23, 0x33, 0x22, 0x11, 0x00, 0x98, 0xfa, 0xce, 0xcd, 0xcb, 0xcb, 0xaa, 0x9a, - 0x89, 0x08, 0x31, 0x53, 0x34, 0x43, 0x34, 0x43, 0x32, 0x22, 0x88, 0xbb, 0xcd, 0xcb, 0xaa, 0x89, - 0x10, 0x22, 0x43, 0x32, 0x45, 0x44, 0x34, 0x25, 0x23, 0x01, 0x88, 0xba, 0xdb, 0xcb, 0xcb, 0x9a, - 0x88, 0x08, 0x80, 0x80, 0x88, 0x10, 0x54, 0x54, 0x43, 0x23, 0x02, 0x90, 0xdb, 0xdb, 0xbb, 0xac, - 0xaa, 0x09, 0x00, 0x21, 0x01, 0x08, 0x18, 0x32, 0x53, 0x02, 0xfa, 0xdd, 0xbc, 0xbc, 0xbb, 0xbb, - 0xaa, 0x99, 0x20, 0x52, 0x43, 0x44, 0x42, 0x32, 0x34, 0x33, 0x11, 0x98, 0xca, 0xbc, 0xab, 0x8a, - 0x11, 0x21, 0x11, 0x21, 0x46, 0x55, 0x34, 0x34, 0x33, 0x11, 0x80, 0xa9, 0xbb, 0xcd, 0xbb, 0xab, - 0x9a, 0x99, 0xaa, 0xba, 0xbb, 0x09, 0x73, 0x56, 0x43, 0x43, 0x12, 0x01, 0xb9, 0xbb, 0xcc, 0xba, - 0xab, 0xbb, 0xab, 0xa9, 0xba, 0xcb, 0x8a, 0x40, 0x44, 0x33, 0x90, 0xde, 0xbd, 0xbd, 0xbb, 0xbb, - 0xab, 0x8a, 0x88, 0x20, 0x42, 0x35, 0x35, 0x43, 0x43, 0x24, 0x33, 0x12, 0x88, 0xca, 0xab, 0x0a, - 0x21, 0x02, 0x88, 0x0a, 0x61, 0x46, 0x45, 0x32, 0x33, 0x22, 0x81, 0x90, 0xa9, 0xca, 0xbc, 0xac, - 0xbb, 0xbc, 0xbb, 0xbc, 0xbb, 0xaa, 0x09, 0x65, 0x35, 0x44, 0x22, 0x12, 0x01, 0x98, 0xaa, 0xcb, - 0xcb, 0xbc, 0xbb, 0xbb, 0xbc, 0xbc, 0xbb, 0x0a, 0x42, 0x44, 0x02, 0xb8, 0xdd, 0xbc, 0xac, 0xba, - 0xa9, 0x89, 0x98, 0x89, 0x09, 0x20, 0x43, 0x35, 0x36, 0x35, 0x44, 0x22, 0x12, 0x00, 0x98, 0x88, - 0x10, 0x10, 0x88, 0x80, 0x31, 0x55, 0x53, 0x43, 0x33, 0x24, 0x22, 0x22, 0x12, 0x91, 0xdb, 0xcc, - 0xcb, 0xab, 0xba, 0xbc, 0xbd, 0xac, 0x9a, 0x20, 0x44, 0x45, 0x33, 0x43, 0x21, 0x00, 0x90, 0xa9, - 0xba, 0xbd, 0xcc, 0xbb, 0xbc, 0xcb, 0xcb, 0x9a, 0x08, 0x31, 0x33, 0x81, 0xfb, 0xcd, 0xbb, 0xab, - 0x89, 0x08, 0x88, 0xb9, 0xcd, 0xba, 0x9a, 0x18, 0x55, 0x44, 0x53, 0x33, 0x33, 0x22, 0x00, 0x80, - 0x08, 0x10, 0x00, 0x80, 0x89, 0x88, 0x21, 0x44, 0x45, 0x44, 0x43, 0x32, 0x23, 0x01, 0xa9, 0xcb, - 0xbb, 0xbb, 0xeb, 0xcc, 0xcc, 0xcb, 0xab, 0x89, 0x21, 0x54, 0x34, 0x24, 0x23, 0x12, 0x11, 0x11, - 0x80, 0xa8, 0xdd, 0xcc, 0xcb, 0xbb, 0xcb, 0xab, 0x89, 0x18, 0x22, 0x22, 0xa8, 0xdd, 0xbb, 0x9b, - 0x09, 0x08, 0xb8, 0xcf, 0xcc, 0xbc, 0xab, 0x09, 0x41, 0x44, 0x34, 0x43, 0x33, 0x32, 0x11, 0x11, - 0x00, 0x10, 0x21, 0x00, 0xb8, 0xeb, 0xcb, 0x89, 0x31, 0x36, 0x34, 0x23, 0x12, 0x81, 0x98, 0x89, - 0x32, 0x22, 0xc8, 0xdf, 0xdc, 0xbc, 0xbb, 0x9b, 0x19, 0x42, 0x45, 0x33, 0x24, 0x23, 0x21, 0x21, - 0x22, 0x13, 0xa8, 0xed, 0xbd, 0xbc, 0xbc, 0xaa, 0x9a, 0x08, 0x21, 0x12, 0x01, 0xa9, 0xbb, 0x9b, - 0x08, 0x02, 0xea, 0xef, 0xcc, 0xcb, 0xba, 0x8a, 0x28, 0x43, 0x35, 0x34, 0x33, 0x23, 0x22, 0x12, - 0x32, 0x32, 0x23, 0x82, 0xb9, 0xde, 0xcb, 0xaa, 0x18, 0x32, 0x44, 0x23, 0x02, 0x88, 0x89, 0x40, - 0x45, 0x43, 0x02, 0xa8, 0xce, 0xdb, 0xcb, 0xab, 0x99, 0x10, 0x43, 0x35, 0x33, 0x24, 0x22, 0x22, - 0x33, 0x34, 0x12, 0xa0, 0xce, 0xcd, 0xbb, 0xbc, 0xaa, 0x99, 0x00, 0x11, 0x10, 0x08, 0x88, 0x01, - 0x12, 0x81, 0xda, 0xde, 0xdc, 0xdb, 0xab, 0xab, 0x89, 0x21, 0x45, 0x53, 0x32, 0x22, 0x12, 0x11, - 0x21, 0x32, 0x33, 0x33, 0x80, 0xfa, 0xdb, 0xbb, 0x99, 0x20, 0x32, 0x24, 0x12, 0x98, 0x89, 0x52, - 0x56, 0x43, 0x32, 0x81, 0xc9, 0xcc, 0xbc, 0xbc, 0xab, 0x89, 0x20, 0x63, 0x43, 0x32, 0x32, 0x23, - 0x33, 0x35, 0x43, 0x11, 0xb0, 0xed, 0xdb, 0xab, 0xbb, 0x9a, 0x89, 0x08, 0x01, 0x01, 0x00, 0x11, - 0x21, 0x01, 0xa8, 0xfb, 0xce, 0xdc, 0xcb, 0xbb, 0x9a, 0x18, 0x43, 0x35, 0x34, 0x32, 0x21, 0x10, - 0x21, 0x42, 0x33, 0x24, 0x22, 0x98, 0xcc, 0xbc, 0xab, 0x89, 0x11, 0x33, 0x33, 0x80, 0xcb, 0x8a, - 0x73, 0x47, 0x33, 0x23, 0x91, 0xda, 0xcc, 0xbc, 0xbb, 0xaa, 0x08, 0x42, 0x35, 0x33, 0x24, 0x22, - 0x21, 0x43, 0x34, 0x33, 0x02, 0xeb, 0xcd, 0xcb, 0xbb, 0xaa, 0x89, 0x88, 0x00, 0x00, 0x88, 0x00, - 0x01, 0x90, 0xaa, 0xcb, 0xec, 0xcd, 0xbd, 0xad, 0xab, 0x88, 0x31, 0x44, 0x34, 0x33, 0x22, 0x10, - 0x00, 0x21, 0x53, 0x43, 0x23, 0x12, 0xa9, 0xcc, 0xcb, 0xaa, 0x09, 0x21, 0x23, 0x02, 0xca, 0xbb, - 0x2a, 0x57, 0x35, 0x34, 0x12, 0x90, 0xcc, 0xdb, 0xbb, 0xba, 0x8a, 0x20, 0x44, 0x53, 0x32, 0x22, - 0x12, 0x32, 0x36, 0x34, 0x13, 0xa0, 0xec, 0xdb, 0xba, 0xab, 0x99, 0x88, 0x00, 0x98, 0x99, 0x8a, - 0x88, 0x90, 0xa9, 0xcb, 0xba, 0xde, 0xdd, 0xcb, 0xac, 0x9a, 0x10, 0x52, 0x43, 0x43, 0x11, 0x01, - 0x08, 0x11, 0x32, 0x44, 0x33, 0x23, 0x81, 0xba, 0xcc, 0xbb, 0xaa, 0x08, 0x32, 0x13, 0xda, 0xdc, - 0x8a, 0x31, 0x47, 0x34, 0x23, 0x02, 0xb9, 0xcd, 0xbb, 0xac, 0x9a, 0x09, 0x21, 0x35, 0x34, 0x33, - 0x22, 0x53, 0x44, 0x43, 0x33, 0x81, 0xca, 0xbe, 0xbc, 0xbb, 0xaa, 0x98, 0x80, 0x90, 0xa9, 0x9a, - 0x89, 0x08, 0xa0, 0xcb, 0xbb, 0xcd, 0xce, 0xcc, 0xac, 0x9b, 0x09, 0x31, 0x45, 0x33, 0x33, 0x01, - 0x00, 0x11, 0x44, 0x34, 0x34, 0x22, 0x01, 0xa8, 0xba, 0xbb, 0xbc, 0xaa, 0x10, 0x11, 0xd8, 0xdc, - 0xbb, 0x28, 0x65, 0x44, 0x33, 0x02, 0x90, 0xcb, 0xbc, 0xab, 0xab, 0x99, 0x08, 0x42, 0x44, 0x43, - 0x23, 0x34, 0x54, 0x43, 0x33, 0x12, 0xa9, 0xdd, 0xcb, 0xab, 0xab, 0x99, 0x89, 0x89, 0xa9, 0xba, - 0x99, 0x18, 0x13, 0x90, 0xcc, 0xcc, 0xbc, 0xbd, 0xbd, 0xac, 0x9a, 0x18, 0x43, 0x35, 0x23, 0x12, - 0x01, 0x21, 0x64, 0x53, 0x32, 0x22, 0x01, 0xa9, 0xaa, 0x8a, 0x99, 0xba, 0xaa, 0xab, 0xcb, 0xce, - 0xac, 0x0a, 0x54, 0x54, 0x33, 0x32, 0x80, 0xb9, 0xbc, 0xac, 0x99, 0x99, 0xaa, 0x89, 0x18, 0x44, - 0x35, 0x45, 0x34, 0x44, 0x32, 0x13, 0x91, 0xdb, 0xcc, 0xbb, 0xba, 0xa9, 0x9a, 0xa9, 0xaa, 0xbc, - 0xaa, 0x18, 0x42, 0x13, 0x80, 0xcc, 0xcc, 0xac, 0xcb, 0xba, 0x9a, 0x89, 0x21, 0x44, 0x43, 0x12, - 0x21, 0x41, 0x55, 0x53, 0x43, 0x12, 0x11, 0xa8, 0xa9, 0x98, 0x80, 0xa0, 0xcb, 0xcc, 0xbb, 0xbb, - 0xcb, 0x0a, 0x63, 0x55, 0x33, 0x33, 0x02, 0x98, 0xcb, 0xac, 0x89, 0x98, 0xa9, 0xcb, 0xab, 0x09, - 0x73, 0x45, 0x34, 0x44, 0x32, 0x33, 0x01, 0xb9, 0xcd, 0xac, 0xbb, 0xaa, 0xaa, 0xba, 0xbb, 0xbc, - 0xab, 0x09, 0x42, 0x24, 0x12, 0xa9, 0xcd, 0xcb, 0xaa, 0xaa, 0xa9, 0xa9, 0x9a, 0x09, 0x31, 0x42, - 0x43, 0x54, 0x46, 0x44, 0x34, 0x23, 0x12, 0x80, 0xa9, 0x9a, 0x00, 0x80, 0xda, 0xcd, 0xcb, 0xaa, - 0x9a, 0x89, 0x20, 0x45, 0x45, 0x23, 0x13, 0x80, 0xa9, 0xab, 0x9a, 0x80, 0xa8, 0xcd, 0xbc, 0xaa, - 0x30, 0x65, 0x34, 0x35, 0x33, 0x24, 0x11, 0x80, 0xbb, 0xcd, 0xca, 0xaa, 0xbb, 0xbb, 0xbc, 0xbb, - 0xaa, 0x09, 0x21, 0x53, 0x23, 0x81, 0xca, 0xcc, 0x9a, 0x9a, 0x88, 0x98, 0xdb, 0xbc, 0xbb, 0x8a, - 0x31, 0x45, 0x54, 0x44, 0x43, 0x43, 0x22, 0x02, 0x80, 0x98, 0x80, 0x00, 0xa9, 0xde, 0xdb, 0xab, - 0x9a, 0x89, 0x18, 0x41, 0x63, 0x43, 0x32, 0x12, 0x01, 0x98, 0x9a, 0x99, 0xba, 0xcd, 0xbc, 0x9c, - 0x19, 0x62, 0x44, 0x43, 0x24, 0x23, 0x22, 0x11, 0xa8, 0xcb, 0xcc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, - 0xaa, 0x8a, 0x00, 0x31, 0x23, 0x13, 0x80, 0xaa, 0xab, 0x89, 0x00, 0xc9, 0xee, 0xcc, 0xcb, 0x9a, - 0x09, 0x31, 0x44, 0x44, 0x43, 0x53, 0x33, 0x23, 0x22, 0x00, 0x00, 0x88, 0xa8, 0xcd, 0xbe, 0xbc, - 0xab, 0x8a, 0x10, 0x11, 0x32, 0x53, 0x45, 0x33, 0x23, 0x02, 0x90, 0xba, 0xbc, 0xbd, 0xbc, 0xab, - 0x8a, 0x42, 0x46, 0x44, 0x33, 0x24, 0x22, 0x13, 0x01, 0x98, 0xdb, 0xbc, 0xbd, 0xbc, 0xbc, 0xac, - 0xaa, 0x89, 0x09, 0x08, 0x01, 0x21, 0x21, 0x33, 0x32, 0x11, 0x99, 0xdb, 0xbd, 0xbe, 0xbc, 0xbb, - 0x89, 0x31, 0x45, 0x33, 0x33, 0x45, 0x34, 0x35, 0x33, 0x23, 0x11, 0x90, 0xa8, 0xcb, 0xcd, 0xbc, - 0xcb, 0xaa, 0x88, 0x18, 0x00, 0x00, 0x53, 0x36, 0x35, 0x22, 0x01, 0x99, 0xca, 0xbb, 0xac, 0x9a, - 0x09, 0x30, 0x54, 0x35, 0x35, 0x43, 0x32, 0x32, 0x32, 0x01, 0xa9, 0xdc, 0xcc, 0xbc, 0xbc, 0xac, - 0xab, 0x99, 0x99, 0x98, 0x98, 0x00, 0x31, 0x45, 0x32, 0x12, 0x80, 0xb9, 0xbc, 0xcc, 0xcb, 0xaa, - 0x8a, 0x20, 0x63, 0x23, 0x22, 0x22, 0x44, 0x46, 0x34, 0x33, 0x22, 0x01, 0x98, 0xa9, 0xbb, 0xcc, - 0xcc, 0xcb, 0xba, 0x9a, 0x9a, 0x98, 0x10, 0x65, 0x34, 0x34, 0x12, 0x80, 0xca, 0xbb, 0xbb, 0x89, - 0x11, 0x43, 0x33, 0x45, 0x44, 0x34, 0x34, 0x32, 0x32, 0x12, 0x00, 0xca, 0xdc, 0xcc, 0xcb, 0xbb, - 0xbb, 0xac, 0xa9, 0xaa, 0x9b, 0x8a, 0x20, 0x54, 0x34, 0x23, 0x81, 0xa9, 0xcb, 0xbb, 0xab, 0x9a, - 0x88, 0x21, 0x73, 0x43, 0x32, 0x22, 0x21, 0x56, 0x44, 0x43, 0x22, 0x11, 0x08, 0x88, 0x08, 0x80, - 0xc9, 0xeb, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x31, 0x54, 0x43, 0x23, 0x81, 0xca, 0xbb, 0xac, 0x09, - 0x31, 0x34, 0x24, 0x33, 0x53, 0x35, 0x35, 0x43, 0x12, 0x11, 0x00, 0xa8, 0xca, 0xdc, 0xbc, 0xbc, - 0xcb, 0xba, 0xbb, 0xbb, 0xcb, 0xaa, 0x09, 0x53, 0x44, 0x32, 0x11, 0x98, 0xaa, 0xbb, 0x9a, 0x00, - 0x11, 0x22, 0x43, 0x45, 0x43, 0x32, 0x11, 0x21, 0x63, 0x35, 0x34, 0x33, 0x12, 0x11, 0x21, 0x34, - 0x13, 0xb0, 0xef, 0xbc, 0xad, 0xab, 0x99, 0x08, 0x21, 0x32, 0x32, 0x13, 0xb0, 0xcd, 0xac, 0x08, - 0x31, 0x44, 0x35, 0x33, 0x33, 0x35, 0x35, 0x24, 0x23, 0x12, 0x01, 0x90, 0xa9, 0xcd, 0xbd, 0xbd, - 0xca, 0xba, 0xac, 0xac, 0xbb, 0x9c, 0x8a, 0x20, 0x43, 0x34, 0x22, 0x81, 0xa9, 0xba, 0x99, 0x20, - 0x42, 0x23, 0x34, 0x35, 0x44, 0x23, 0x02, 0x88, 0x99, 0x08, 0x31, 0x45, 0x42, 0x33, 0x35, 0x34, - 0x34, 0x33, 0xb8, 0xcf, 0xbc, 0xbc, 0xab, 0x9a, 0x88, 0x90, 0xa8, 0x99, 0x18, 0x88, 0x98, 0x30, - 0x46, 0x44, 0x44, 0x43, 0x34, 0x43, 0x32, 0x32, 0x43, 0x22, 0x23, 0x81, 0xca, 0xcc, 0xbc, 0xbc, - 0xba, 0xcb, 0xeb, 0xcb, 0xcb, 0xba, 0x9a, 0x08, 0x21, 0x33, 0x24, 0x13, 0x80, 0x99, 0x99, 0x08, - 0x63, 0x63, 0x34, 0x44, 0x32, 0x11, 0x80, 0xa9, 0xba, 0xaa, 0x08, 0x01, 0x01, 0x31, 0x45, 0x55, - 0x43, 0x24, 0x13, 0xa0, 0xdc, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbb, 0xac, 0x8a, 0x08, 0x01, 0x21, - 0x45, 0x45, 0x53, 0x33, 0x34, 0x43, 0x23, 0x32, 0x32, 0x43, 0x33, 0x01, 0xeb, 0xcc, 0xbb, 0xaa, - 0x88, 0x88, 0xdb, 0xce, 0xcb, 0xbb, 0x9b, 0x8a, 0x00, 0x10, 0x21, 0x22, 0x11, 0x11, 0x80, 0x09, - 0x73, 0x46, 0x44, 0x53, 0x22, 0x02, 0x88, 0xaa, 0xa9, 0x88, 0x00, 0x88, 0xdb, 0xcb, 0x8a, 0x21, - 0x54, 0x34, 0x34, 0x11, 0xa8, 0xcb, 0xcd, 0xcb, 0xcb, 0xcb, 0xab, 0x9a, 0x99, 0x88, 0x89, 0x08, - 0x42, 0x46, 0x44, 0x24, 0x32, 0x22, 0x23, 0x33, 0x43, 0x33, 0x23, 0x90, 0xeb, 0xcd, 0xab, 0x9a, - 0x00, 0x12, 0x88, 0xdc, 0xbd, 0xbc, 0xab, 0x8a, 0x88, 0x00, 0x08, 0x00, 0x10, 0x80, 0x89, 0x08, - 0x73, 0x56, 0x44, 0x34, 0x32, 0x01, 0x98, 0x99, 0x88, 0x10, 0x10, 0xa8, 0xed, 0xbc, 0xbb, 0x8a, - 0x10, 0x33, 0x35, 0x22, 0x02, 0xa8, 0xeb, 0xdb, 0xcc, 0xbc, 0xcb, 0x9a, 0x99, 0x9a, 0xa9, 0xaa, - 0x18, 0x64, 0x45, 0x43, 0x33, 0x23, 0x22, 0x42, 0x33, 0x34, 0x13, 0xa0, 0xdb, 0xcc, 0xba, 0x99, - 0x10, 0x11, 0x81, 0xda, 0xcd, 0xbb, 0xac, 0x99, 0x88, 0x00, 0x98, 0x98, 0x88, 0x80, 0x00, 0x01, - 0x51, 0x67, 0x44, 0x43, 0x22, 0x02, 0x88, 0x08, 0x10, 0x32, 0x22, 0xc0, 0xde, 0xdb, 0xba, 0x99, - 0x08, 0x00, 0x80, 0x00, 0x80, 0x11, 0x81, 0xda, 0xdd, 0xcc, 0xcb, 0x9a, 0x9a, 0xa9, 0xb9, 0xba, - 0x8b, 0x61, 0x45, 0x35, 0x33, 0x24, 0x22, 0x33, 0x44, 0x23, 0x23, 0x98, 0xdb, 0xcb, 0xaa, 0x09, - 0x21, 0x00, 0xb8, 0xec, 0xcb, 0xbb, 0x9a, 0x9a, 0x89, 0x00, 0x08, 0x00, 0x08, 0x08, 0x80, 0xcb, - 0x40, 0x77, 0x35, 0x34, 0x22, 0x00, 0x89, 0x18, 0x43, 0x34, 0x22, 0xa8, 0xce, 0xac, 0xab, 0x9a, - 0x98, 0xb8, 0xcb, 0xcb, 0xab, 0x10, 0x23, 0xb8, 0xcf, 0xcc, 0xab, 0x9a, 0x99, 0x99, 0xba, 0xbc, - 0x9a, 0x40, 0x45, 0x35, 0x34, 0x43, 0x43, 0x43, 0x24, 0x23, 0x12, 0x98, 0xbb, 0xbc, 0xaa, 0x20, - 0x23, 0x91, 0xeb, 0xcd, 0xcb, 0x9a, 0x99, 0x99, 0x99, 0x08, 0x20, 0x43, 0x32, 0x14, 0x82, 0xa8, - 0x09, 0x73, 0x47, 0x24, 0x12, 0x80, 0x99, 0x00, 0x32, 0x35, 0x24, 0x80, 0xdb, 0xbb, 0xbc, 0x9a, - 0xaa, 0xcc, 0xbc, 0xdb, 0x9a, 0x09, 0x00, 0xb8, 0xcd, 0xbd, 0xbb, 0x88, 0x08, 0x98, 0xba, 0xbc, - 0x9b, 0x42, 0x54, 0x34, 0x34, 0x34, 0x43, 0x44, 0x43, 0x23, 0x11, 0x98, 0xaa, 0xa9, 0x09, 0x31, - 0x23, 0xa8, 0xce, 0xcd, 0xbb, 0xba, 0xaa, 0xcb, 0x99, 0x08, 0x52, 0x53, 0x23, 0x22, 0x01, 0x98, - 0x08, 0x51, 0x45, 0x34, 0x23, 0x90, 0x99, 0x99, 0x10, 0x52, 0x34, 0x22, 0x88, 0xca, 0xcc, 0xcb, - 0xbb, 0xbd, 0xbc, 0xba, 0xab, 0x99, 0xa9, 0xec, 0xdc, 0xcb, 0x9b, 0x09, 0x00, 0x80, 0xa8, 0xcb, - 0x9a, 0x10, 0x44, 0x35, 0x34, 0x24, 0x43, 0x43, 0x44, 0x32, 0x12, 0x88, 0x99, 0x88, 0x00, 0x12, - 0x12, 0xa8, 0xdc, 0xdc, 0xbb, 0xbb, 0xcc, 0xac, 0xab, 0x08, 0x31, 0x44, 0x34, 0x32, 0x12, 0x00, - 0x08, 0x32, 0x47, 0x44, 0x22, 0x80, 0x98, 0xba, 0xba, 0x99, 0x21, 0x22, 0x32, 0x01, 0xfa, 0xcc, - 0xcb, 0xbc, 0xaa, 0x98, 0x98, 0x88, 0xea, 0xce, 0xbc, 0xbc, 0xab, 0x0a, 0x00, 0x80, 0xa9, 0xbc, - 0x9c, 0x09, 0x42, 0x45, 0x43, 0x33, 0x33, 0x44, 0x43, 0x24, 0x12, 0x01, 0x08, 0x08, 0x00, 0x11, - 0x00, 0x98, 0xa9, 0xcc, 0xbd, 0xdb, 0xbd, 0xcd, 0xba, 0x9a, 0x18, 0x42, 0x43, 0x34, 0x22, 0x11, - 0x00, 0x21, 0x45, 0x35, 0x33, 0x02, 0x98, 0xcb, 0xcb, 0xa9, 0x18, 0x10, 0x01, 0xa8, 0xcc, 0xbd, - 0xcb, 0xba, 0x09, 0x21, 0x33, 0x22, 0xf9, 0xce, 0xcc, 0xcb, 0xaa, 0x89, 0x88, 0x90, 0xc9, 0xcb, - 0xaa, 0x89, 0x21, 0x45, 0x34, 0x33, 0x24, 0x33, 0x44, 0x33, 0x23, 0x13, 0x12, 0x01, 0x00, 0x01, - 0x01, 0x88, 0x99, 0xbb, 0xeb, 0xec, 0xec, 0xdb, 0xcb, 0xaa, 0x8a, 0x10, 0x32, 0x35, 0x24, 0x22, - 0x21, 0x32, 0x45, 0x44, 0x32, 0x12, 0x90, 0xa9, 0xbb, 0x9b, 0x9a, 0x89, 0xba, 0xdd, 0xcc, 0xac, - 0xab, 0x8a, 0x20, 0x53, 0x34, 0x22, 0x80, 0xdc, 0xcc, 0xcb, 0xbb, 0x99, 0x89, 0x99, 0xbc, 0xbd, - 0xab, 0x9a, 0x00, 0x42, 0x45, 0x24, 0x23, 0x32, 0x53, 0x43, 0x23, 0x12, 0x12, 0x11, 0x00, 0x00, - 0x10, 0x00, 0x01, 0x00, 0x99, 0xec, 0xdc, 0xcd, 0xcc, 0xcb, 0x9a, 0x99, 0x11, 0x32, 0x53, 0x32, - 0x22, 0x53, 0x34, 0x35, 0x43, 0x22, 0x81, 0x90, 0x99, 0x98, 0x99, 0xba, 0xcc, 0xcc, 0xcc, 0xcb, - 0xba, 0x9a, 0x18, 0x43, 0x44, 0x23, 0x12, 0x98, 0xeb, 0xbc, 0xbb, 0x9b, 0x9a, 0xba, 0xdd, 0xcb, - 0xab, 0xab, 0x89, 0x28, 0x53, 0x44, 0x32, 0x33, 0x53, 0x34, 0x33, 0x23, 0x22, 0x12, 0x01, 0x88, - 0x89, 0x08, 0x21, 0x43, 0x14, 0x91, 0xec, 0xdc, 0xcc, 0xbc, 0xac, 0x9a, 0x09, 0x11, 0x22, 0x32, - 0x34, 0x53, 0x44, 0x53, 0x33, 0x24, 0x12, 0x11, 0x00, 0x90, 0x98, 0xaa, 0xcc, 0xcc, 0xdb, 0xcb, - 0xbb, 0xbb, 0x99, 0x20, 0x44, 0x43, 0x33, 0x11, 0x98, 0xbb, 0xbd, 0xab, 0xab, 0xcd, 0xcc, 0xcb, - 0xbb, 0xbb, 0xbb, 0xaa, 0x18, 0x53, 0x34, 0x34, 0x44, 0x33, 0x25, 0x33, 0x22, 0x22, 0x02, 0x00, - 0x88, 0x88, 0x18, 0x53, 0x44, 0x01, 0xa8, 0xcd, 0xcc, 0xbd, 0xcb, 0xab, 0x99, 0x89, 0x10, 0x31, - 0x33, 0x34, 0x45, 0x44, 0x34, 0x34, 0x33, 0x33, 0x22, 0x00, 0x88, 0xaa, 0xdb, 0xcc, 0xcb, 0xbc, - 0xbc, 0xac, 0xab, 0x89, 0x28, 0x43, 0x44, 0x22, 0x02, 0x80, 0x98, 0x98, 0xaa, 0xdd, 0xdb, 0xbb, - 0xbc, 0xbb, 0xbc, 0xbb, 0x9b, 0x89, 0x21, 0x45, 0x44, 0x33, 0x43, 0x33, 0x33, 0x43, 0x22, 0x12, - 0x00, 0x80, 0x20, 0x73, 0x34, 0x23, 0x80, 0xc9, 0xbd, 0xbd, 0xcd, 0xba, 0xbb, 0x9b, 0x8a, 0x00, - 0x22, 0x32, 0x53, 0x54, 0x45, 0x43, 0x24, 0x23, 0x33, 0x12, 0x80, 0x99, 0xab, 0xcc, 0xcb, 0xcb, - 0xac, 0xcb, 0xbb, 0xbb, 0xaa, 0x10, 0x44, 0x34, 0x33, 0x22, 0x21, 0x11, 0xa0, 0xdc, 0xcc, 0xcb, - 0xba, 0xcb, 0xcb, 0xbb, 0xbb, 0xab, 0x89, 0x32, 0x55, 0x43, 0x22, 0x23, 0x33, 0x34, 0x24, 0x22, - 0x10, 0x21, 0x31, 0x44, 0x45, 0x23, 0x13, 0x00, 0xb9, 0xdc, 0xdc, 0xdb, 0xab, 0xbb, 0xaa, 0x0a, - 0x10, 0x11, 0x01, 0x42, 0x56, 0x54, 0x33, 0x34, 0x23, 0x23, 0x11, 0x88, 0xb9, 0xcb, 0xcb, 0xbc, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0x89, 0x30, 0x44, 0x34, 0x32, 0x33, 0x32, 0x11, 0xc9, 0xdc, 0xcb, - 0xca, 0xba, 0xcb, 0x7b, 0x02, 0x01, 0x02, 0x7d, 0x0b, 0x02, 0xf4, 0x01, 0xae, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0xf7, 0xff, 0xa1, 0x8f, 0xa1, 0x74, 0x62, 0xa3, 0xbd, 0x8a, 0x15, - 0x9a, 0x80, 0x18, 0x00, 0x98, 0x9b, 0xb8, 0xbf, 0xad, 0x51, 0x34, 0x80, 0x81, 0xca, 0x18, 0x0a, - 0x24, 0x12, 0x10, 0xfa, 0x8f, 0x00, 0x01, 0x31, 0x15, 0x53, 0x11, 0xa0, 0xac, 0xdb, 0x1a, 0x23, - 0x14, 0xb9, 0x19, 0x41, 0x26, 0x01, 0xa9, 0xba, 0x3b, 0x27, 0x44, 0x23, 0x91, 0xbb, 0xaa, 0xc9, - 0xbf, 0x09, 0x30, 0x45, 0x81, 0xfb, 0xbb, 0x89, 0x20, 0x23, 0xc8, 0xdc, 0xbb, 0x89, 0x11, 0x12, - 0x10, 0x42, 0x33, 0x92, 0xdd, 0xbc, 0x9b, 0x20, 0x33, 0x90, 0x89, 0x40, 0x56, 0x33, 0x82, 0xca, - 0x9b, 0x40, 0x45, 0x33, 0x11, 0x98, 0xaa, 0xca, 0xbc, 0xbd, 0x8a, 0x31, 0x34, 0x82, 0xda, 0xac, - 0x08, 0x53, 0x23, 0x98, 0xcc, 0x9a, 0x10, 0x44, 0x43, 0x32, 0x42, 0x12, 0x90, 0xdb, 0xbc, 0x9a, - 0x10, 0x11, 0xa8, 0xbb, 0x1a, 0x56, 0x23, 0x81, 0xba, 0x89, 0x73, 0x35, 0x33, 0x02, 0x98, 0xa9, - 0xcb, 0xbc, 0xac, 0x19, 0x63, 0x22, 0xa8, 0xcd, 0xbb, 0x8a, 0x10, 0x90, 0xdd, 0xbc, 0xaa, 0x88, - 0x21, 0x21, 0x32, 0x34, 0x13, 0xc8, 0xce, 0xab, 0x09, 0x31, 0x22, 0x80, 0x89, 0x72, 0x35, 0x23, - 0x90, 0xba, 0x89, 0x64, 0x24, 0x13, 0x80, 0xb9, 0xbc, 0xbd, 0xbc, 0x9b, 0x28, 0x44, 0x23, 0xa8, - 0xcc, 0x8a, 0x31, 0x44, 0x01, 0xb8, 0xcb, 0x09, 0x42, 0x44, 0x33, 0x34, 0x24, 0x11, 0xc9, 0xbc, - 0xac, 0x88, 0x11, 0x80, 0xb9, 0x99, 0x52, 0x35, 0x12, 0xa9, 0xbb, 0x48, 0x46, 0x34, 0x22, 0x81, - 0x98, 0xca, 0xdb, 0xbb, 0x8a, 0x31, 0x35, 0x82, 0xeb, 0xbc, 0x9b, 0x08, 0x81, 0xda, 0xcd, 0xab, - 0x9a, 0x18, 0x20, 0x33, 0x34, 0x24, 0x90, 0xfb, 0xbb, 0x9b, 0x10, 0x32, 0x81, 0x88, 0x51, 0x55, - 0x33, 0x02, 0xa8, 0x9a, 0x41, 0x55, 0x32, 0x11, 0x88, 0xbb, 0xcd, 0xcc, 0xaa, 0x09, 0x31, 0x43, - 0x81, 0xca, 0xaa, 0x18, 0x44, 0x22, 0xa0, 0xcb, 0x9a, 0x30, 0x46, 0x43, 0x34, 0x24, 0x13, 0xa0, - 0xdb, 0xbb, 0x9a, 0x08, 0x90, 0xa9, 0x9a, 0x41, 0x46, 0x22, 0x90, 0xaa, 0x18, 0x55, 0x35, 0x23, - 0x13, 0x81, 0xb9, 0xcd, 0xcb, 0x9b, 0x18, 0x43, 0x12, 0xc9, 0xbd, 0xbb, 0x8a, 0x88, 0xca, 0xce, - 0xcb, 0xaa, 0x89, 0x08, 0x31, 0x53, 0x33, 0x02, 0xd9, 0xcc, 0x9a, 0x09, 0x10, 0x00, 0x08, 0x51, - 0x44, 0x24, 0x12, 0x98, 0x89, 0x31, 0x46, 0x33, 0x22, 0x01, 0xa9, 0xce, 0xcc, 0xab, 0x8a, 0x20, - 0x33, 0x82, 0xba, 0x9d, 0x18, 0x43, 0x23, 0x91, 0xcb, 0x9a, 0x30, 0x45, 0x54, 0x63, 0x33, 0x14, - 0x81, 0xb9, 0xac, 0x9b, 0x88, 0x98, 0xbb, 0x9a, 0x51, 0x44, 0x22, 0x80, 0x9b, 0x28, 0x65, 0x43, - 0x33, 0x22, 0x22, 0x90, 0xeb, 0xcc, 0xab, 0x19, 0x32, 0x03, 0xd9, 0xcc, 0xaa, 0x89, 0x98, 0xdb, - 0xcd, 0xbb, 0xaa, 0x9a, 0x99, 0x18, 0x63, 0x34, 0x12, 0xa9, 0xcd, 0xaa, 0x08, 0x10, 0x98, 0x9a, - 0x40, 0x46, 0x24, 0x12, 0x98, 0x88, 0x41, 0x34, 0x24, 0x02, 0x01, 0x81, 0xc9, 0xce, 0xbc, 0x9b, - 0x28, 0x32, 0x01, 0xcb, 0xab, 0x38, 0x35, 0x14, 0xa8, 0xbc, 0x09, 0x41, 0x43, 0x32, 0x54, 0x45, - 0x33, 0x11, 0xa9, 0xbc, 0x8a, 0x08, 0x98, 0xcc, 0xab, 0x28, 0x36, 0x23, 0x91, 0xcb, 0x19, 0x54, - 0x34, 0x23, 0x12, 0x21, 0x12, 0xa8, 0xcf, 0xcb, 0x89, 0x31, 0x23, 0xc9, 0xcd, 0x9a, 0x08, 0x00, - 0xca, 0xdd, 0xab, 0x9b, 0x88, 0x98, 0x9a, 0x10, 0x45, 0x23, 0xa1, 0xcc, 0xbb, 0x19, 0x21, 0x90, - 0xcc, 0x0a, 0x64, 0x34, 0x12, 0x90, 0x9a, 0x38, 0x46, 0x33, 0x11, 0x88, 0x08, 0x90, 0xeb, 0xcd, - 0xab, 0x19, 0x32, 0x02, 0xda, 0xac, 0x19, 0x53, 0x23, 0x90, 0xbc, 0x9b, 0x40, 0x34, 0x23, 0x21, - 0x55, 0x34, 0x13, 0x90, 0xcb, 0x9b, 0x28, 0x01, 0xe9, 0xbc, 0x0b, 0x52, 0x24, 0x81, 0xb9, 0x9b, - 0x51, 0x36, 0x23, 0x81, 0x80, 0x11, 0x02, 0xd9, 0xcc, 0x9b, 0x21, 0x24, 0xa1, 0xce, 0xbb, 0x08, - 0x22, 0x90, 0xed, 0xbc, 0xaa, 0x08, 0x00, 0x98, 0x89, 0x30, 0x44, 0x01, 0xda, 0xac, 0x0a, 0x31, - 0x12, 0xda, 0xbb, 0x38, 0x57, 0x23, 0x81, 0xaa, 0x0a, 0x73, 0x43, 0x11, 0x88, 0x99, 0x80, 0x90, - 0xcc, 0xbc, 0x8b, 0x32, 0x24, 0xc8, 0xcc, 0x8b, 0x41, 0x34, 0x01, 0xca, 0xbb, 0x19, 0x63, 0x33, - 0x11, 0x21, 0x44, 0x24, 0x82, 0xc9, 0xab, 0x18, 0x42, 0x90, 0xec, 0xab, 0x10, 0x44, 0x13, 0xb8, - 0xcb, 0x18, 0x54, 0x24, 0x02, 0x88, 0x09, 0x00, 0x91, 0xda, 0xbb, 0x18, 0x35, 0x03, 0xfb, 0xbd, - 0x8a, 0x20, 0x13, 0xd8, 0xcd, 0xab, 0x89, 0x10, 0x81, 0x98, 0x09, 0x31, 0x23, 0xd8, 0xcd, 0x8b, - 0x30, 0x43, 0xa1, 0xcc, 0x8a, 0x61, 0x34, 0x02, 0xa8, 0xab, 0x40, 0x55, 0x22, 0x81, 0xa9, 0x99, - 0x88, 0xb8, 0xcc, 0xab, 0x30, 0x44, 0x91, 0xdc, 0xac, 0x18, 0x53, 0x23, 0xa8, 0xdb, 0x9a, 0x30, - 0x44, 0x22, 0x01, 0x31, 0x43, 0x13, 0xb9, 0xbd, 0x0a, 0x43, 0x14, 0xc9, 0xbd, 0x8a, 0x41, 0x34, - 0x81, 0xcb, 0x8b, 0x41, 0x36, 0x23, 0x91, 0x99, 0x89, 0x00, 0xa8, 0xbc, 0x8a, 0x54, 0x14, 0xb0, - 0xcf, 0x9b, 0x19, 0x32, 0x01, 0xec, 0xbc, 0x9a, 0x18, 0x11, 0x00, 0x99, 0x18, 0x21, 0xa0, 0xdd, - 0xac, 0x18, 0x53, 0x02, 0xb8, 0xad, 0x29, 0x44, 0x24, 0x91, 0xba, 0x0a, 0x54, 0x34, 0x12, 0x98, - 0xba, 0x99, 0x99, 0xca, 0xbb, 0x2a, 0x55, 0x03, 0xc9, 0xbe, 0x9b, 0x32, 0x36, 0x02, 0xca, 0xbb, - 0x09, 0x63, 0x33, 0x21, 0x01, 0x22, 0x33, 0x90, 0xcd, 0x9b, 0x40, 0x34, 0x81, 0xcc, 0xac, 0x18, - 0x53, 0x22, 0xa9, 0xad, 0x08, 0x54, 0x24, 0x02, 0xa8, 0x99, 0x09, 0x88, 0xa9, 0x9a, 0x52, 0x35, - 0x81, 0xec, 0xbc, 0x8a, 0x20, 0x23, 0xb0, 0xcf, 0xac, 0x89, 0x10, 0x02, 0x00, 0x88, 0x08, 0x80, - 0xdb, 0xbd, 0x89, 0x41, 0x24, 0x81, 0xca, 0x9a, 0x41, 0x35, 0x12, 0xb9, 0xbb, 0x51, 0x46, 0x23, - 0x81, 0xaa, 0xba, 0x9a, 0xa9, 0xba, 0x1a, 0x64, 0x33, 0xb1, 0xcf, 0xbb, 0x18, 0x63, 0x23, 0xa0, - 0xdb, 0xaa, 0x20, 0x44, 0x23, 0x22, 0x21, 0x11, 0x80, 0xdb, 0xac, 0x29, 0x63, 0x22, 0xa8, 0xcc, - 0x8a, 0x21, 0x25, 0x91, 0xca, 0x9b, 0x52, 0x45, 0x22, 0x00, 0x9a, 0xaa, 0x89, 0x99, 0x99, 0x31, - 0x47, 0x12, 0xc9, 0xbe, 0xac, 0x18, 0x31, 0x01, 0xeb, 0xcc, 0x9a, 0x08, 0x11, 0x02, 0x81, 0x80, - 0x98, 0xcb, 0xbe, 0x9b, 0x38, 0x44, 0x13, 0xb8, 0xbb, 0x19, 0x46, 0x33, 0x90, 0xca, 0x1a, 0x64, - 0x34, 0x12, 0x90, 0xba, 0xbb, 0xbb, 0xba, 0x89, 0x73, 0x25, 0x02, 0xea, 0xcb, 0x8b, 0x30, 0x35, - 0x02, 0xb9, 0xad, 0x0a, 0x42, 0x34, 0x33, 0x22, 0x12, 0x90, 0xca, 0xcc, 0x89, 0x41, 0x24, 0x82, - 0xc9, 0xab, 0x19, 0x44, 0x02, 0xb9, 0xbc, 0x28, 0x56, 0x34, 0x02, 0x90, 0xaa, 0xbb, 0xaa, 0x99, - 0x41, 0x45, 0x24, 0x90, 0xcd, 0xbc, 0x99, 0x20, 0x22, 0xa8, 0xce, 0xbb, 0x9b, 0x10, 0x32, 0x22, - 0x01, 0x98, 0xdc, 0xcc, 0xbb, 0x09, 0x42, 0x24, 0x01, 0xa9, 0x8a, 0x41, 0x34, 0x02, 0xc9, 0x9a, - 0x72, 0x54, 0x22, 0x82, 0xa8, 0xbb, 0xad, 0xaa, 0x89, 0x32, 0x46, 0x12, 0xb8, 0xcd, 0xab, 0x18, - 0x42, 0x33, 0x90, 0xdb, 0x9b, 0x28, 0x44, 0x34, 0x24, 0x22, 0x80, 0xb9, 0xbd, 0x9b, 0x20, 0x45, - 0x12, 0x98, 0xaa, 0x09, 0x31, 0x33, 0xb0, 0xbe, 0x8a, 0x55, 0x45, 0x22, 0x00, 0x98, 0xbb, 0xbc, - 0xab, 0x28, 0x55, 0x33, 0x03, 0xeb, 0xbc, 0x9c, 0x08, 0x20, 0x80, 0xdb, 0xbc, 0xab, 0x89, 0x11, - 0x33, 0x33, 0x82, 0xfb, 0xcd, 0xbb, 0x8a, 0x21, 0x34, 0x12, 0x98, 0x89, 0x21, 0x35, 0x12, 0xb8, - 0xbb, 0x51, 0x47, 0x34, 0x22, 0x00, 0xaa, 0xcd, 0xbb, 0x9b, 0x20, 0x55, 0x23, 0x81, 0xbc, 0xad, - 0x8a, 0x21, 0x32, 0x01, 0xc9, 0xab, 0x0a, 0x52, 0x54, 0x53, 0x32, 0x11, 0xa9, 0xcc, 0xab, 0x18, - 0x42, 0x23, 0x01, 0x99, 0x08, 0x31, 0x23, 0xb8, 0xbf, 0x8a, 0x62, 0x45, 0x33, 0x12, 0x01, 0xc9, - 0xcc, 0xbb, 0x8a, 0x52, 0x35, 0x23, 0xb8, 0xcd, 0xbb, 0x89, 0x00, 0x00, 0xca, 0xcc, 0xab, 0x9b, - 0x09, 0x30, 0x44, 0x14, 0xa1, 0xdc, 0xbd, 0x9a, 0x18, 0x22, 0x13, 0x81, 0x08, 0x32, 0x34, 0x82, - 0xca, 0x9c, 0x38, 0x47, 0x43, 0x22, 0x11, 0x98, 0xda, 0xcc, 0xbb, 0x09, 0x53, 0x25, 0x02, 0xc8, - 0xbb, 0x9b, 0x28, 0x32, 0x02, 0xb9, 0xbb, 0x8a, 0x41, 0x45, 0x45, 0x35, 0x23, 0x91, 0xdb, 0xbc, - 0x8a, 0x31, 0x43, 0x11, 0x98, 0x00, 0x32, 0x14, 0xa8, 0xcd, 0x8a, 0x31, 0x46, 0x32, 0x12, 0x11, - 0x90, 0xea, 0xcc, 0xab, 0x28, 0x54, 0x14, 0x81, 0xca, 0xbb, 0x9a, 0x00, 0x80, 0xca, 0xcc, 0xaa, - 0xa9, 0x98, 0x09, 0x42, 0x35, 0x13, 0xf9, 0xcc, 0xab, 0x0a, 0x31, 0x32, 0x00, 0x88, 0x41, 0x34, - 0x12, 0xb9, 0xae, 0x09, 0x44, 0x34, 0x22, 0x01, 0x10, 0x98, 0xec, 0xcc, 0x9a, 0x38, 0x54, 0x22, - 0x90, 0xcb, 0x9b, 0x08, 0x22, 0x81, 0xb9, 0x9c, 0x18, 0x32, 0x33, 0x54, 0x55, 0x34, 0x12, 0xb9, - 0xcd, 0x9b, 0x18, 0x33, 0x12, 0x90, 0x08, 0x53, 0x24, 0x92, 0xeb, 0xab, 0x28, 0x54, 0x23, 0x12, - 0x00, 0x10, 0xa0, 0xec, 0xbc, 0x9a, 0x42, 0x36, 0x12, 0xb9, 0xbc, 0xab, 0x08, 0x80, 0xc9, 0xbd, - 0xab, 0x89, 0x88, 0xa9, 0x09, 0x54, 0x25, 0x92, 0xec, 0xac, 0x9b, 0x10, 0x22, 0x01, 0x88, 0x20, - 0x45, 0x23, 0x90, 0xbd, 0x9b, 0x41, 0x45, 0x12, 0x01, 0x08, 0x88, 0xa8, 0xdd, 0xcb, 0x09, 0x52, - 0x24, 0x02, 0xc9, 0xba, 0x89, 0x31, 0x11, 0xc9, 0xbb, 0x09, 0x43, 0x24, 0x11, 0x52, 0x45, 0x24, - 0x81, 0xdb, 0xcb, 0x89, 0x30, 0x22, 0x81, 0x88, 0x41, 0x35, 0x13, 0xc9, 0xbd, 0x0a, 0x42, 0x25, - 0x12, 0x80, 0x08, 0x00, 0xb8, 0xce, 0xbb, 0x29, 0x55, 0x23, 0x91, 0xdb, 0xab, 0x09, 0x01, 0xa8, - 0xdd, 0xab, 0x89, 0x10, 0x80, 0x99, 0x18, 0x54, 0x23, 0xd8, 0xce, 0xab, 0x89, 0x22, 0x02, 0x80, - 0x09, 0x63, 0x34, 0x02, 0xca, 0xac, 0x19, 0x63, 0x33, 0x01, 0x98, 0x88, 0x80, 0xc9, 0xce, 0xaa, - 0x20, 0x45, 0x23, 0xa0, 0xcb, 0x9a, 0x20, 0x23, 0xb0, 0xbe, 0x9b, 0x40, 0x43, 0x13, 0x10, 0x52, - 0x44, 0x13, 0xb8, 0xdd, 0xaa, 0x18, 0x32, 0x11, 0x89, 0x28, 0x55, 0x33, 0x91, 0xeb, 0xab, 0x28, - 0x54, 0x13, 0x81, 0x98, 0x08, 0x88, 0xd9, 0xbc, 0x9b, 0x51, 0x35, 0x03, 0xb9, 0xbd, 0x8a, 0x10, - 0x80, 0xfb, 0xbc, 0x9a, 0x18, 0x12, 0x90, 0x99, 0x30, 0x35, 0x02, 0xed, 0xad, 0x9b, 0x18, 0x12, - 0x81, 0x89, 0x31, 0x47, 0x13, 0x90, 0xcc, 0x9a, 0x30, 0x35, 0x23, 0x90, 0x99, 0x89, 0x98, 0xeb, - 0xbc, 0x0a, 0x73, 0x43, 0x01, 0xb9, 0xbb, 0x18, 0x43, 0x82, 0xeb, 0xac, 0x19, 0x42, 0x24, 0x10, - 0x00, 0x43, 0x43, 0x82, 0xeb, 0xac, 0x8a, 0x11, 0x13, 0x80, 0x09, 0x63, 0x35, 0x13, 0xc8, 0xbc, - 0x8a, 0x42, 0x35, 0x02, 0x98, 0x99, 0x89, 0x90, 0xeb, 0xbb, 0x18, 0x55, 0x23, 0x90, 0xcc, 0xaa, - 0x00, 0x02, 0xc8, 0xce, 0xab, 0x89, 0x22, 0x12, 0x98, 0x09, 0x31, 0x24, 0xd9, 0xde, 0xba, 0x89, - 0x11, 0x11, 0x99, 0x18, 0x55, 0x34, 0x01, 0xc9, 0xcb, 0x19, 0x52, 0x33, 0x82, 0xa9, 0x9a, 0x89, - 0xa9, 0xcc, 0x9b, 0x50, 0x45, 0x12, 0xa0, 0xcb, 0x09, 0x32, 0x24, 0xb9, 0xbf, 0xab, 0x21, 0x45, - 0x22, 0x10, 0x20, 0x32, 0x14, 0xc8, 0xcc, 0xab, 0x18, 0x21, 0x82, 0x89, 0x40, 0x47, 0x24, 0x81, - 0xbb, 0xac, 0x18, 0x54, 0x22, 0x81, 0xa9, 0x99, 0x99, 0xa9, 0xdb, 0x8a, 0x53, 0x44, 0x01, 0xca, - 0xbb, 0x0a, 0x22, 0x91, 0xdf, 0xbc, 0xaa, 0x10, 0x22, 0x12, 0x88, 0x18, 0x11, 0xa0, 0xdf, 0xbc, - 0xaa, 0x00, 0x01, 0x98, 0x09, 0x72, 0x35, 0x33, 0x90, 0xbd, 0x9b, 0x30, 0x36, 0x23, 0x90, 0xba, - 0xaa, 0x9a, 0xcb, 0xab, 0x38, 0x47, 0x24, 0x81, 0xab, 0x9b, 0x41, 0x25, 0x81, 0xdc, 0xac, 0x09, - 0x32, 0x35, 0x22, 0x11, 0x21, 0x12, 0xa0, 0xdc, 0xac, 0x8a, 0x11, 0x81, 0x98, 0x39, 0x57, 0x34, - 0x13, 0xa8, 0xbc, 0x8b, 0x52, 0x34, 0x12, 0x90, 0xab, 0xab, 0xbb, 0xcb, 0x8a, 0x52, 0x35, 0x03, - 0xc9, 0xbd, 0x8a, 0x21, 0x12, 0xfa, 0xce, 0xba, 0x09, 0x20, 0x22, 0x11, 0x81, 0x00, 0xa8, 0xdc, - 0xbd, 0xab, 0x89, 0x00, 0xa0, 0x9a, 0x41, 0x57, 0x33, 0x02, 0xb9, 0xbc, 0x09, 0x44, 0x43, 0x01, - 0xa8, 0xbb, 0xbb, 0xbb, 0x9b, 0x48, 0x46, 0x33, 0x82, 0xca, 0x9b, 0x30, 0x37, 0x03, 0xd9, 0xcc, - 0x9a, 0x28, 0x53, 0x33, 0x23, 0x22, 0x01, 0xa0, 0xcc, 0xbb, 0x8b, 0x10, 0x80, 0xbb, 0x0b, 0x67, - 0x35, 0x24, 0x81, 0xaa, 0x9b, 0x38, 0x45, 0x23, 0x01, 0xb9, 0xcb, 0xac, 0xbb, 0x89, 0x42, 0x35, - 0x12, 0xc9, 0xcc, 0x8a, 0x10, 0x23, 0xc0, 0xcf, 0xcb, 0xaa, 0x18, 0x21, 0x23, 0x13, 0x01, 0xa9, - 0xcd, 0xad, 0x9b, 0x09, 0x08, 0xa9, 0xcb, 0x19, 0x55, 0x35, 0x22, 0x98, 0xba, 0x8a, 0x41, 0x44, - 0x12, 0x90, 0xb9, 0xbd, 0xcb, 0xaa, 0x28, 0x45, 0x33, 0x02, 0xca, 0xab, 0x30, 0x55, 0x13, 0xa0, - 0xcd, 0xab, 0x89, 0x42, 0x43, 0x34, 0x32, 0x02, 0xa8, 0xdb, 0xbb, 0x89, 0x21, 0x01, 0xdb, 0xab, - 0x40, 0x47, 0x24, 0x02, 0x98, 0x99, 0x18, 0x42, 0x24, 0x11, 0x90, 0xba, 0xbe, 0xbc, 0x9b, 0x40, - 0x44, 0x22, 0xb8, 0xbd, 0xab, 0x20, 0x33, 0x92, 0xde, 0xbd, 0xba, 0x89, 0x10, 0x32, 0x34, 0x23, - 0x90, 0xdc, 0xcc, 0x9a, 0x09, 0x11, 0x98, 0xbc, 0x9b, 0x52, 0x35, 0x24, 0x81, 0xa9, 0x89, 0x30, - 0x43, 0x13, 0x81, 0xa8, 0xcd, 0xbd, 0xbc, 0x09, 0x53, 0x35, 0x02, 0xa9, 0xac, 0x09, 0x63, 0x23, - 0x82, 0xcb, 0xbc, 0x9a, 0x10, 0x43, 0x44, 0x34, 0x22, 0x91, 0xcb, 0xbc, 0x8a, 0x21, 0x12, 0xb8, - 0xbe, 0x09, 0x73, 0x24, 0x13, 0x80, 0x99, 0x10, 0x43, 0x32, 0x01, 0x80, 0xa8, 0xec, 0xcc, 0xbb, - 0x18, 0x73, 0x23, 0x90, 0xdb, 0xbb, 0x08, 0x43, 0x12, 0xd9, 0xcc, 0xbb, 0x9a, 0x08, 0x20, 0x43, - 0x44, 0x02, 0xb8, 0xce, 0xba, 0x09, 0x21, 0x81, 0xc9, 0xac, 0x19, 0x63, 0x33, 0x02, 0xa8, 0x89, - 0x31, 0x35, 0x11, 0x98, 0x8a, 0xba, 0xde, 0xcc, 0x9a, 0x30, 0x45, 0x23, 0x90, 0xbc, 0x8b, 0x42, - 0x35, 0x12, 0xb8, 0xcc, 0x9a, 0x08, 0x21, 0x43, 0x54, 0x33, 0x03, 0xb9, 0xbf, 0x9a, 0x28, 0x22, - 0x82, 0xdb, 0xab, 0x30, 0x46, 0x23, 0x01, 0x89, 0x28, 0x53, 0x23, 0x81, 0x98, 0x89, 0xa9, 0xcf, - 0xcc, 0x8a, 0x31, 0x45, 0x02, 0xc9, 0xac, 0x8a, 0x30, 0x33, 0x90, 0xdd, 0xbb, 0x9b, 0x89, 0x00, - 0x20, 0x45, 0x24, 0x81, 0xeb, 0xbc, 0x8a, 0x28, 0x22, 0x90, 0xbd, 0x8b, 0x40, 0x44, 0x12, 0x98, - 0x99, 0x21, 0x44, 0x12, 0xa8, 0xaa, 0x99, 0xb9, 0xcf, 0xbc, 0x09, 0x63, 0x34, 0x02, 0xba, 0xad, - 0x18, 0x53, 0x33, 0x80, 0xcb, 0xab, 0x09, 0x11, 0x22, 0x63, 0x45, 0x23, 0x91, 0xeb, 0xbb, 0x8a, - 0x32, 0x14, 0xb0, 0xbc, 0x0a, 0x63, 0x24, 0x02, 0x98, 0x08, 0x53, 0x43, 0x02, 0xa8, 0x99, 0x89, - 0xc9, 0xcd, 0xac, 0x19, 0x44, 0x24, 0xa0, 0xeb, 0xaa, 0x18, 0x32, 0x03, 0xd9, 0xbc, 0xab, 0x89, - 0x80, 0x08, 0x41, 0x45, 0x13, 0xa8, 0xbf, 0xac, 0x88, 0x22, 0x12, 0xc9, 0xbb, 0x19, 0x63, 0x23, - 0x80, 0x9a, 0x29, 0x64, 0x23, 0x91, 0xba, 0xab, 0xa9, 0xca, 0xce, 0x9b, 0x30, 0x37, 0x14, 0xa0, - 0xcb, 0x8a, 0x41, 0x34, 0x12, 0xa9, 0xac, 0x8a, 0x10, 0x12, 0x21, 0x45, 0x35, 0x13, 0xc8, 0xcd, - 0x9a, 0x18, 0x23, 0x02, 0xba, 0x9d, 0x28, 0x35, 0x23, 0x80, 0x89, 0x51, 0x45, 0x22, 0x90, 0xaa, - 0x9a, 0x98, 0xda, 0xcc, 0x8b, 0x50, 0x34, 0x02, 0xd9, 0xbc, 0x8a, 0x21, 0x24, 0x90, 0xcc, 0xab, - 0x8a, 0x08, 0x08, 0x08, 0x63, 0x34, 0x02, 0xeb, 0xbd, 0x9a, 0x20, 0x22, 0x81, 0xbc, 0x9b, 0x40, - 0x34, 0x02, 0xa9, 0x8a, 0x72, 0x44, 0x11, 0x99, 0xbb, 0xaa, 0x99, 0xdb, 0xad, 0x0a, 0x54, 0x43, - 0x02, 0xba, 0xbc, 0x18, 0x44, 0x14, 0x91, 0xb9, 0x9a, 0x18, 0x21, 0x11, 0x41, 0x55, 0x33, 0x82, - 0xdc, 0xbc, 0x89, 0x21, 0x23, 0x90, 0xbc, 0x0a, 0x62, 0x33, 0x02, 0xa9, 0x38, 0x56, 0x24, 0x02, - 0xa8, 0xba, 0x99, 0xa9, 0xdc, 0xbb, 0x19, 0x55, 0x23, 0xa0, 0xdc, 0xab, 0x18, 0x32, 0x03, 0xd9, - 0xbc, 0xaa, 0x08, 0x80, 0x88, 0x21, 0x55, 0x33, 0xb0, 0xcf, 0xbb, 0x09, 0x22, 0x13, 0xb8, 0xbc, - 0x19, 0x53, 0x13, 0xa0, 0xbb, 0x58, 0x46, 0x33, 0x81, 0xcb, 0xbb, 0xaa, 0xaa, 0xcc, 0x9b, 0x50, - 0x45, 0x13, 0xa0, 0xdb, 0x99, 0x41, 0x43, 0x12, 0xa9, 0xba, 0x09, 0x31, 0x22, 0x21, 0x54, 0x35, - 0x23, 0xc8, 0xce, 0xaa, 0x08, 0x32, 0x02, 0xb8, 0xaa, 0x30, 0x36, 0x23, 0xa8, 0x0a, 0x74, 0x35, - 0x33, 0x90, 0xba, 0xbb, 0xaa, 0xcb, 0xbc, 0x9b, 0x62, 0x25, 0x02, 0xca, 0xbd, 0x99, 0x21, 0x22, - 0xa1, 0xcd, 0xab, 0x89, 0x00, 0x00, 0x08, 0x52, 0x34, 0x03, 0xfb, 0xbd, 0x9b, 0x10, 0x32, 0x81, - 0xba, 0x9b, 0x41, 0x34, 0x91, 0xcb, 0x0a, 0x65, 0x44, 0x02, 0x98, 0xcb, 0xba, 0xa9, 0xba, 0xbb, - 0x18, 0x56, 0x24, 0x01, 0xb9, 0x9c, 0x29, 0x44, 0x23, 0x80, 0xba, 0x8b, 0x21, 0x34, 0x22, 0x41, - 0x44, 0x24, 0x92, 0xdc, 0xbc, 0x9a, 0x11, 0x23, 0x80, 0x9a, 0x19, 0x54, 0x23, 0x80, 0xaa, 0x61, - 0x47, 0x33, 0x03, 0x98, 0xcb, 0xba, 0xba, 0xcb, 0xaa, 0x30, 0x55, 0x22, 0xb8, 0xdc, 0xab, 0x08, - 0x22, 0x82, 0xda, 0xbc, 0x9a, 0x00, 0x01, 0x08, 0x31, 0x44, 0x14, 0xb0, 0xcf, 0xbb, 0x8a, 0x21, - 0x11, 0x98, 0x99, 0x21, 0x44, 0x91, 0xeb, 0x9b, 0x51, 0x46, 0x23, 0x01, 0xba, 0xbc, 0xbc, 0xba, - 0xaa, 0x09, 0x62, 0x44, 0x02, 0x98, 0xab, 0x0a, 0x53, 0x34, 0x11, 0x99, 0x9b, 0x28, 0x43, 0x33, - 0x42, 0x53, 0x43, 0x02, 0xda, 0xcd, 0xaa, 0x88, 0x21, 0x00, 0x88, 0x20, 0x53, 0x24, 0x90, 0xba, - 0x28, 0x77, 0x34, 0x23, 0x00, 0xa9, 0xcb, 0xbb, 0xcb, 0x9a, 0x18, 0x34, 0x24, 0x90, 0xdc, 0xab, - 0x89, 0x20, 0x01, 0xca, 0xcc, 0x9b, 0x09, 0x01, 0x11, 0x21, 0x53, 0x23, 0xb8, 0xdf, 0xbb, 0xab, - 0x00, 0x01, 0x88, 0x09, 0x42, 0x34, 0x82, 0xec, 0xac, 0x28, 0x64, 0x34, 0x12, 0x98, 0xca, 0xdb, - 0xba, 0xba, 0x09, 0x31, 0x36, 0x22, 0x90, 0xba, 0x0a, 0x52, 0x44, 0x11, 0x98, 0x9a, 0x18, 0x53, - 0x33, 0x42, 0x33, 0x24, 0x02, 0xda, 0xcd, 0xaa, 0x89, 0x08, 0x88, 0x89, 0x31, 0x37, 0x24, 0x91, - 0xbb, 0x0c, 0x73, 0x45, 0x33, 0x12, 0x80, 0xba, 0xcc, 0xbb, 0x9c, 0x09, 0x42, 0x23, 0x81, 0xcc, - 0xbb, 0x8a, 0x10, 0x01, 0xda, 0xbd, 0xaa, 0x09, 0x20, 0x11, 0x21, 0x35, 0x23, 0xb0, 0xdf, 0xbb, - 0x9a, 0x08, 0x80, 0xaa, 0x8b, 0x54, 0x35, 0x12, 0xda, 0xbd, 0x89, 0x42, 0x45, 0x22, 0x01, 0x99, - 0xdb, 0xbc, 0xcb, 0x8a, 0x10, 0x34, 0x14, 0x91, 0xaa, 0x8a, 0x42, 0x34, 0x12, 0xa8, 0xaa, 0x28, - 0x44, 0x34, 0x32, 0x43, 0x24, 0x02, 0xd9, 0xcc, 0x9b, 0x89, 0x01, 0xa8, 0xbb, 0x2a, 0x57, 0x33, - 0x02, 0xca, 0xac, 0x20, 0x46, 0x34, 0x23, 0x01, 0x98, 0xca, 0xcc, 0xbb, 0x8a, 0x31, 0x34, 0x83, - 0xda, 0xbc, 0x8a, 0x20, 0x02, 0xc9, 0xcd, 0xaa, 0x08, 0x11, 0x12, 0x11, 0x33, 0x25, 0x90, 0xdd, - 0xac, 0x8a, 0x10, 0x01, 0xc8, 0xbb, 0x28, 0x47, 0x13, 0xa0, 0xdc, 0xaa, 0x20, 0x44, 0x33, 0x12, - 0x80, 0xba, 0xdd, 0xbc, 0xbb, 0x09, 0x53, 0x33, 0x82, 0xc9, 0xaa, 0x40, 0x34, 0x23, 0xa8, 0xcb, - 0x09, 0x43, 0x44, 0x12, 0x22, 0x43, 0x12, 0xb8, 0xde, 0xba, 0x08, 0x21, 0x91, 0xcb, 0x9c, 0x40, - 0x35, 0x14, 0x98, 0xac, 0x8a, 0x53, 0x35, 0x33, 0x11, 0x00, 0xa8, 0xcc, 0xbd, 0xab, 0x18, 0x53, - 0x22, 0xb8, 0xbd, 0xab, 0x10, 0x33, 0xa0, 0xce, 0xac, 0x89, 0x21, 0x21, 0x11, 0x31, 0x53, 0x82, - 0xea, 0xbd, 0xaa, 0x20, 0x23, 0xa1, 0xcc, 0x9b, 0x52, 0x35, 0x02, 0xca, 0xad, 0x0a, 0x32, 0x35, - 0x12, 0x81, 0x98, 0xba, 0xcf, 0xcb, 0x9a, 0x20, 0x44, 0x12, 0xa9, 0xab, 0x09, 0x54, 0x23, 0x81, - 0xca, 0x9a, 0x30, 0x35, 0x33, 0x22, 0x42, 0x33, 0x91, 0xed, 0xac, 0x8a, 0x20, 0x13, 0xb8, 0xbd, - 0x0a, 0x73, 0x43, 0x81, 0xb9, 0x9c, 0x28, 0x54, 0x33, 0x22, 0x01, 0x80, 0xa9, 0xce, 0xcb, 0x9a, - 0x41, 0x33, 0x91, 0xeb, 0xbb, 0x09, 0x32, 0x13, 0xfa, 0xdb, 0x8a, 0x18, 0x22, 0x02, 0x11, 0x32, - 0x14, 0xb0, 0xcf, 0xac, 0x08, 0x31, 0x13, 0xc9, 0xcb, 0x08, 0x54, 0x32, 0xa0, 0xcc, 0xaa, 0x28, - 0x34, 0x14, 0x01, 0x88, 0x99, 0xda, 0xdc, 0xbb, 0x09, 0x43, 0x34, 0x80, 0xcb, 0x9a, 0x31, 0x36, - 0x13, 0xb9, 0xbc, 0x09, 0x53, 0x24, 0x22, 0x21, 0x23, 0x13, 0xea, 0xcd, 0x9b, 0x19, 0x33, 0x82, - 0xda, 0x9c, 0x28, 0x54, 0x13, 0xa0, 0xcb, 0x8a, 0x52, 0x34, 0x23, 0x10, 0x00, 0x80, 0xca, 0xce, - 0xaa, 0x19, 0x43, 0x23, 0xc9, 0xbd, 0x9a, 0x20, 0x33, 0xa1, 0xde, 0xab, 0x89, 0x31, 0x23, 0x12, - 0x32, 0x43, 0x82, 0xec, 0xbd, 0x9a, 0x30, 0x43, 0x81, 0xda, 0x9a, 0x30, 0x36, 0x02, 0xc9, 0xac, - 0x8a, 0x32, 0x25, 0x02, 0x88, 0x98, 0xa9, 0xec, 0xbc, 0x9b, 0x20, 0x45, 0x02, 0xb8, 0xac, 0x19, - 0x44, 0x33, 0x91, 0xcb, 0xab, 0x30, 0x45, 0x23, 0x22, 0x23, 0x23, 0xa0, 0xcf, 0xbc, 0x8a, 0x21, - 0x14, 0x90, 0xbc, 0x8b, 0x62, 0x43, 0x02, 0xaa, 0xac, 0x28, 0x54, 0x23, 0x02, 0x00, 0x01, 0xa8, - 0xfb, 0xbc, 0x8a, 0x31, 0x34, 0x91, 0xdc, 0xac, 0x08, 0x31, 0x12, 0xca, 0xbe, 0x9b, 0x10, 0x32, - 0x33, 0x22, 0x43, 0x12, 0xc8, 0xcf, 0xab, 0x09, 0x42, 0x23, 0xa8, 0xbc, 0x09, 0x73, 0x23, 0x80, - 0xbc, 0xac, 0x10, 0x43, 0x13, 0x80, 0x98, 0x99, 0xda, 0xcd, 0xac, 0x89, 0x42, 0x24, 0x80, 0xdb, - 0x9a, 0x31, 0x45, 0x02, 0xa8, 0xbb, 0x0a, 0x52, 0x34, 0x23, 0x32, 0x33, 0x82, 0xfa, 0xbd, 0x9c, - 0x19, 0x22, 0x12, 0xba, 0xbc, 0x28, 0x55, 0x13, 0x90, 0xba, 0x0b, 0x63, 0x34, 0x23, 0x81, 0x00, - 0x80, 0xc9, 0xcd, 0xbb, 0x18, 0x63, 0x02, 0xc9, 0xcc, 0x9a, 0x20, 0x23, 0x91, 0xdd, 0xbb, 0x8a, - 0x31, 0x33, 0x24, 0x33, 0x33, 0x91, 0xde, 0xcc, 0x9a, 0x20, 0x23, 0x02, 0xc9, 0xaa, 0x31, 0x45, - 0x12, 0xb9, 0xbd, 0x89, 0x42, 0x23, 0x82, 0xa8, 0x9a, 0xca, 0xdc, 0xcc, 0x9a, 0x20, 0x25, 0x02, - 0xc9, 0xbb, 0x29, 0x55, 0x23, 0x81, 0xca, 0xab, 0x20, 0x44, 0x34, 0x32, 0x33, 0x22, 0xb8, 0xdf, - 0xbb, 0x8a, 0x30, 0x32, 0x90, 0xdb, 0x8a, 0x42, 0x35, 0x02, 0xa9, 0xaa, 0x30, 0x37, 0x24, 0x01, - 0x00, 0x00, 0x98, 0xeb, 0xac, 0x9a, 0x32, 0x24, 0xa0, 0xcf, 0xab, 0x19, 0x22, 0x03, 0xda, 0xcd, - 0x9a, 0x19, 0x22, 0x43, 0x32, 0x33, 0x03, 0xda, 0xce, 0xab, 0x09, 0x32, 0x23, 0xa0, 0xbb, 0x19, - 0x55, 0x23, 0x91, 0xdb, 0x9b, 0x20, 0x53, 0x11, 0x88, 0xaa, 0xaa, 0xdc, 0xcc, 0xbb, 0x19, 0x53, - 0x23, 0xb8, 0xcd, 0x8a, 0x51, 0x34, 0x12, 0xa8, 0xcb, 0x89, 0x42, 0x44, 0x33, 0x43, 0x23, 0x81, - 0xeb, 0xcc, 0xaa, 0x08, 0x11, 0x02, 0x99, 0xaa, 0x20, 0x45, 0x23, 0x90, 0x9a, 0x28, 0x65, 0x33, - 0x13, 0x01, 0x80, 0x90, 0xca, 0xbd, 0x9c, 0x30, 0x43, 0x91, 0xce, 0xad, 0x8a, 0x10, 0x22, 0xb0, - 0xcd, 0xac, 0x8a, 0x10, 0x42, 0x43, 0x43, 0x12, 0x90, 0xdc, 0xbc, 0x99, 0x28, 0x22, 0x02, 0x98, - 0x08, 0x41, 0x43, 0x81, 0xba, 0xac, 0x20, 0x54, 0x02, 0xa0, 0xba, 0xbc, 0xdb, 0xeb, 0xba, 0x09, - 0x42, 0x23, 0xb0, 0xce, 0x9a, 0x20, 0x45, 0x33, 0x80, 0xba, 0xaa, 0x30, 0x45, 0x35, 0x44, 0x32, - 0x02, 0xb9, 0xcd, 0xac, 0x89, 0x00, 0x11, 0x90, 0x98, 0x18, 0x42, 0x33, 0x80, 0x99, 0x40, 0x55, - 0x34, 0x02, 0x01, 0x00, 0x08, 0xa9, 0xbd, 0x9c, 0x30, 0x34, 0x92, 0xde, 0xad, 0x9b, 0x00, 0x12, - 0x90, 0xcc, 0xbc, 0xaa, 0x09, 0x22, 0x44, 0x35, 0x24, 0x81, 0xca, 0xcc, 0x9b, 0x08, 0x11, 0x02, - 0x80, 0x18, 0x42, 0x43, 0x01, 0xba, 0xac, 0x20, 0x35, 0x12, 0xb9, 0xbc, 0xcb, 0xcb, 0xcc, 0xac, - 0x0a, 0x41, 0x33, 0x90, 0xce, 0x9b, 0x18, 0x44, 0x33, 0x82, 0xa9, 0x89, 0x30, 0x54, 0x43, 0x45, - 0x43, 0x13, 0x91, 0xeb, 0xbb, 0xab, 0x08, 0x00, 0x90, 0x89, 0x21, 0x35, 0x23, 0xa0, 0xbb, 0x48, - 0x57, 0x33, 0x22, 0x08, 0x08, 0x80, 0x99, 0xcc, 0xab, 0x40, 0x36, 0x02, 0xfa, 0xbc, 0xab, 0x08, - 0x21, 0x90, 0xea, 0xbb, 0xab, 0x89, 0x00, 0x41, 0x55, 0x34, 0x23, 0xa8, 0xcd, 0xac, 0x88, 0x00, - 0x01, 0x88, 0x10, 0x53, 0x33, 0x91, 0xda, 0xab, 0x38, 0x45, 0x22, 0x98, 0xbc, 0xba, 0xbb, 0xcc, - 0xac, 0x8a, 0x51, 0x34, 0x81, 0xcc, 0xac, 0x09, 0x33, 0x25, 0x82, 0xa8, 0x89, 0x20, 0x43, 0x33, - 0x45, 0x45, 0x24, 0x02, 0xb9, 0xbd, 0xab, 0x89, 0x00, 0x98, 0x9a, 0x20, 0x45, 0x33, 0xa0, 0xbc, - 0x0a, 0x64, 0x34, 0x13, 0x80, 0x99, 0x08, 0x88, 0xca, 0xbb, 0x38, 0x57, 0x13, 0xc0, 0xbd, 0xac, - 0x09, 0x20, 0x81, 0xda, 0xcb, 0x9a, 0x08, 0x00, 0x00, 0x41, 0x46, 0x33, 0x82, 0xeb, 0xbb, 0x9a, - 0x10, 0x11, 0xa9, 0x89, 0x73, 0x34, 0x13, 0xb9, 0xbd, 0x0a, 0x62, 0x23, 0x81, 0xbb, 0xbc, 0xaa, - 0xca, 0xbc, 0xab, 0x30, 0x47, 0x12, 0xb9, 0xbe, 0x8a, 0x31, 0x34, 0x02, 0xa9, 0xab, 0x38, 0x45, - 0x23, 0x21, 0x54, 0x44, 0x22, 0x90, 0xdb, 0xbb, 0x8a, 0x00, 0x98, 0xbc, 0x89, 0x63, 0x34, 0x02, - 0xca, 0xbb, 0x30, 0x47, 0x23, 0x81, 0xa8, 0x89, 0x08, 0xa8, 0xbb, 0x0b, 0x56, 0x44, 0x81, 0xda, - 0xbc, 0x9a, 0x11, 0x12, 0xa9, 0xbe, 0xab, 0x09, 0x21, 0x00, 0x08, 0x73, 0x34, 0x14, 0xa8, 0xcc, - 0x9b, 0x08, 0x11, 0x90, 0xbb, 0x38, 0x57, 0x33, 0x90, 0xdb, 0xab, 0x30, 0x35, 0x14, 0xa8, 0xcb, - 0xab, 0x9a, 0xbb, 0xad, 0x19, 0x54, 0x33, 0x91, 0xcd, 0xbb, 0x29, 0x53, 0x23, 0x98, 0xba, 0x8a, - 0x53, 0x34, 0x12, 0x21, 0x45, 0x34, 0x02, 0xc9, 0xcc, 0x8a, 0x08, 0x80, 0xb9, 0x9c, 0x28, 0x55, - 0x22, 0xa0, 0xbc, 0x0a, 0x62, 0x34, 0x12, 0x88, 0x9a, 0x8a, 0x98, 0xb9, 0xaa, 0x62, 0x46, 0x22, - 0xb8, 0xce, 0xaa, 0x08, 0x12, 0x81, 0xdb, 0xac, 0x8a, 0x20, 0x21, 0x80, 0x10, 0x54, 0x33, 0x82, - 0xcc, 0xbc, 0x09, 0x21, 0x01, 0xcb, 0x9b, 0x63, 0x36, 0x12, 0xa9, 0xbd, 0x09, 0x42, 0x24, 0x81, - 0xba, 0xbc, 0xaa, 0xba, 0xdb, 0x9a, 0x51, 0x44, 0x12, 0xb9, 0xbe, 0x9a, 0x31, 0x34, 0x82, 0xc9, - 0x9b, 0x20, 0x35, 0x24, 0x11, 0x31, 0x44, 0x23, 0x90, 0xcd, 0xab, 0x08, 0x10, 0xa8, 0xbe, 0x8a, - 0x52, 0x34, 0x03, 0xda, 0xab, 0x28, 0x45, 0x24, 0x81, 0xa8, 0x99, 0x99, 0x98, 0xab, 0x29, 0x56, - 0x34, 0x82, 0xeb, 0xac, 0x8a, 0x10, 0x12, 0xb8, 0xbe, 0xab, 0x08, 0x22, 0x12, 0x80, 0x41, 0x44, - 0x13, 0xb8, 0xcd, 0x8b, 0x10, 0x22, 0xa8, 0xbd, 0x29, 0x56, 0x33, 0x81, 0xcc, 0xaa, 0x28, 0x35, - 0x23, 0x98, 0xcc, 0xab, 0xab, 0xbb, 0xbb, 0x28, 0x47, 0x24, 0x91, 0xeb, 0xba, 0x18, 0x42, 0x22, - 0xa0, 0xcb, 0x89, 0x52, 0x43, 0x12, 0x21, 0x32, 0x34, 0x02, 0xda, 0xbc, 0x9a, 0x11, 0x91, 0xeb, - 0xac, 0x18, 0x54, 0x23, 0xa0, 0xdb, 0x8a, 0x41, 0x35, 0x13, 0x80, 0xaa, 0xab, 0xa9, 0xba, 0x8a, - 0x73, 0x37, 0x12, 0xb0, 0xcd, 0xab, 0x08, 0x21, 0x81, 0xfb, 0xbb, 0x89, 0x20, 0x22, 0x02, 0x11, - 0x42, 0x33, 0xa1, 0xdd, 0xab, 0x18, 0x33, 0x82, 0xcd, 0x9b, 0x51, 0x36, 0x13, 0xa8, 0xbd, 0x89, - 0x42, 0x34, 0x01, 0xb9, 0xbd, 0xac, 0xba, 0xab, 0x8a, 0x62, 0x44, 0x02, 0xb8, 0xbd, 0x9a, 0x21, - 0x34, 0x82, 0xca, 0xab, 0x20, 0x36, 0x34, 0x22, 0x21, 0x23, 0x13, 0xb8, 0xce, 0x9a, 0x18, 0x11, - 0xc9, 0xcd, 0x8a, 0x40, 0x34, 0x03, 0xc9, 0xbb, 0x28, 0x46, 0x24, 0x11, 0xa8, 0xb9, 0xba, 0xba, - 0x9a, 0x30, 0x67, 0x33, 0x81, 0xdb, 0xbc, 0x8a, 0x10, 0x11, 0xc9, 0xdc, 0xaa, 0x08, 0x21, 0x23, - 0x11, 0x12, 0x23, 0x81, 0xfb, 0xbb, 0x0a, 0x52, 0x12, 0xc8, 0xcb, 0x29, 0x64, 0x33, 0x82, 0xcb, - 0xbb, 0x20, 0x46, 0x22, 0x90, 0xda, 0xcb, 0xbb, 0xbb, 0x9b, 0x31, 0x46, 0x14, 0x80, 0xcb, 0xbb, - 0x18, 0x42, 0x13, 0xb0, 0xdb, 0x89, 0x52, 0x34, 0x24, 0x32, 0x21, 0x12, 0xa8, 0xdb, 0xab, 0x19, - 0x22, 0xa0, 0xcf, 0xbb, 0x18, 0x44, 0x24, 0x90, 0xbb, 0x8b, 0x63, 0x35, 0x14, 0x81, 0x99, 0xbb, - 0xbc, 0xba, 0x19, 0x55, 0x34, 0x13, 0xb9, 0xbd, 0xac, 0x88, 0x11, 0xa8, 0xdc, 0xcb, 0x99, 0x20, - 0x22, 0x32, 0x32, 0x12, 0x91, 0xeb, 0xbc, 0x89, 0x41, 0x24, 0x90, 0xcb, 0x9a, 0x62, 0x34, 0x23, - 0xa8, 0xbc, 0x0a, 0x53, 0x34, 0x02, 0xa9, 0xcd, 0xcc, 0xbb, 0xab, 0x18, 0x53, 0x34, 0x02, 0xc9, - 0xcb, 0x89, 0x21, 0x23, 0x91, 0xdb, 0xaa, 0x20, 0x46, 0x43, 0x33, 0x24, 0x11, 0x90, 0xcb, 0xbb, - 0x08, 0x32, 0x02, 0xfb, 0xbc, 0x89, 0x31, 0x44, 0x01, 0xaa, 0x9a, 0x40, 0x46, 0x33, 0x12, 0x80, - 0xba, 0xbe, 0xad, 0x8a, 0x41, 0x44, 0x23, 0x91, 0xdb, 0xab, 0x8a, 0x18, 0x98, 0xfb, 0xcb, 0xaa, - 0x09, 0x11, 0x33, 0x44, 0x32, 0x00, 0xda, 0xcb, 0x9a, 0x31, 0x34, 0x02, 0xb9, 0xac, 0x30, 0x36, - 0x14, 0x91, 0xaa, 0x0a, 0x52, 0x34, 0x13, 0x88, 0xeb, 0xdc, 0xbc, 0xcb, 0x99, 0x31, 0x44, 0x12, - 0x98, 0xbb, 0x9b, 0x20, 0x24, 0x81, 0xca, 0xbb, 0x08, 0x64, 0x53, 0x43, 0x43, 0x22, 0x90, 0xca, - 0xbb, 0x89, 0x32, 0x24, 0xb8, 0xcd, 0x9a, 0x28, 0x33, 0x12, 0xb9, 0xaa, 0x51, 0x46, 0x33, 0x23, - 0x21, 0x90, 0xec, 0xcc, 0xab, 0x19, 0x54, 0x33, 0x02, 0xb9, 0xbc, 0x9a, 0x88, 0xa0, 0xec, 0xcb, - 0x9b, 0x8a, 0x00, 0x31, 0x63, 0x43, 0x12, 0xa9, 0xcd, 0x9b, 0x28, 0x53, 0x12, 0xa0, 0xaa, 0x29, - 0x53, 0x24, 0x80, 0xa9, 0x09, 0x42, 0x25, 0x02, 0x80, 0x99, 0xdc, 0xdd, 0xbc, 0xab, 0x19, 0x44, - 0x23, 0x80, 0xbb, 0x9b, 0x20, 0x33, 0x81, 0xcc, 0xac, 0x08, 0x42, 0x34, 0x35, 0x35, 0x25, 0x02, - 0xa9, 0xcc, 0x8a, 0x10, 0x23, 0x82, 0xcb, 0xbb, 0x18, 0x33, 0x03, 0xda, 0xab, 0x51, 0x45, 0x33, - 0x11, 0x11, 0x11, 0xb0, 0xcf, 0xbd, 0x9a, 0x51, 0x53, 0x12, 0xa8, 0xba, 0x9a, 0x18, 0x80, 0xfa, - 0xbc, 0xab, 0x9a, 0x80, 0x10, 0x31, 0x37, 0x34, 0x91, 0xeb, 0xcb, 0x09, 0x31, 0x24, 0x01, 0x9a, - 0x0a, 0x42, 0x24, 0x91, 0xba, 0x8a, 0x73, 0x43, 0x02, 0x98, 0x9a, 0xa9, 0xdc, 0xdd, 0xbb, 0x8b, - 0x41, 0x24, 0x02, 0xaa, 0xab, 0x18, 0x34, 0x03, 0xda, 0xbc, 0x89, 0x41, 0x33, 0x43, 0x44, 0x35, - 0x23, 0x91, 0xbd, 0xbc, 0x08, 0x33, 0x23, 0xb8, 0xad, 0x8a, 0x32, 0x13, 0xc9, 0xbc, 0x29, 0x46, - 0x24, 0x02, 0x88, 0x18, 0x01, 0xb8, 0xdf, 0xab, 0x19, 0x54, 0x23, 0x80, 0xca, 0x9a, 0x00, 0x12, - 0xc9, 0xce, 0xbb, 0x99, 0x00, 0x00, 0x10, 0x42, 0x45, 0x12, 0xb8, 0xce, 0x9a, 0x28, 0x43, 0x12, - 0xa0, 0x99, 0x30, 0x44, 0x02, 0xb9, 0x9c, 0x38, 0x46, 0x22, 0x98, 0xb9, 0x9a, 0xa8, 0xdd, 0xbd, - 0xac, 0x18, 0x43, 0x13, 0xa8, 0xcb, 0x09, 0x43, 0x23, 0xb0, 0xbe, 0xab, 0x20, 0x44, 0x22, 0x31, - 0x55, 0x33, 0x03, 0xc9, 0xbd, 0x9a, 0x30, 0x43, 0x81, 0xba, 0xaa, 0x31, 0x34, 0xa0, 0xce, 0x9a, - 0x42, 0x36, 0x12, 0x90, 0x99, 0x00, 0x80, 0xd9, 0xbd, 0x9b, 0x42, 0x26, 0x02, 0xb9, 0xbb, 0x19, - 0x43, 0x82, 0xdd, 0xbd, 0x9a, 0x09, 0x01, 0x00, 0x10, 0x63, 0x33, 0x82, 0xec, 0xcb, 0x09, 0x31, - 0x43, 0x81, 0x99, 0x00, 0x43, 0x23, 0xb0, 0xbe, 0x09, 0x73, 0x33, 0x02, 0xba, 0xbb, 0x9b, 0xaa, - 0xde, 0xbc, 0x89, 0x31, 0x24, 0x91, 0xcb, 0x9b, 0x51, 0x34, 0x82, 0xda, 0xac, 0x0a, 0x31, 0x24, - 0x22, 0x43, 0x44, 0x33, 0x90, 0xdc, 0xbb, 0x19, 0x42, 0x13, 0xa0, 0xaa, 0x19, 0x43, 0x03, 0xfb, - 0xac, 0x18, 0x54, 0x33, 0x81, 0xa9, 0x99, 0x08, 0x90, 0xfb, 0xab, 0x18, 0x54, 0x23, 0xa8, 0xbc, - 0x8a, 0x42, 0x23, 0xd8, 0xce, 0xbb, 0x89, 0x10, 0x11, 0x80, 0x31, 0x54, 0x12, 0xc8, 0xdc, 0x9a, - 0x18, 0x43, 0x12, 0x90, 0x09, 0x42, 0x24, 0x82, 0xda, 0xab, 0x48, 0x35, 0x24, 0x98, 0xba, 0xbb, - 0xa9, 0xca, 0xcd, 0xab, 0x28, 0x43, 0x03, 0xca, 0xbc, 0x28, 0x45, 0x13, 0xb0, 0xcd, 0x9a, 0x28, - 0x43, 0x22, 0x21, 0x53, 0x24, 0x03, 0xc8, 0xcc, 0x9a, 0x20, 0x33, 0x01, 0xaa, 0x09, 0x52, 0x14, - 0xb0, 0xce, 0x8a, 0x41, 0x44, 0x22, 0x98, 0x9a, 0x8a, 0x88, 0xa9, 0xcb, 0x0b, 0x63, 0x34, 0x91, - 0xdb, 0xab, 0x38, 0x44, 0x82, 0xfb, 0xbc, 0xab, 0x08, 0x21, 0x10, 0x10, 0x42, 0x43, 0x81, 0xdc, - 0xbc, 0x0a, 0x31, 0x24, 0x02, 0x88, 0x31, 0x36, 0x12, 0xb9, 0xbe, 0x0a, 0x54, 0x43, 0x02, 0xb9, - 0xcb, 0xaa, 0xa9, 0xba, 0xbc, 0x09, 0x42, 0x13, 0xd8, 0xcc, 0x89, 0x52, 0x24, 0x02, 0xda, 0xbb, - 0x8a, 0x32, 0x34, 0x33, 0x34, 0x34, 0x33, 0xa0, 0xdd, 0xab, 0x09, 0x32, 0x22, 0x90, 0x99, 0x42, - 0x35, 0x91, 0xec, 0xbb, 0x29, 0x55, 0x33, 0x02, 0xaa, 0xba, 0xaa, 0xa8, 0xa9, 0x9a, 0x62, 0x35, - 0x01, 0xdb, 0xbc, 0x19, 0x53, 0x23, 0xc8, 0xce, 0xab, 0x8a, 0x10, 0x11, 0x11, 0x21, 0x43, 0x11, - 0xda, 0xbd, 0xab, 0x28, 0x34, 0x22, 0x00, 0x30, 0x56, 0x23, 0x80, 0xbc, 0xac, 0x30, 0x46, 0x22, - 0x80, 0xba, 0xbc, 0xbb, 0xba, 0xbb, 0x8a, 0x32, 0x25, 0xb0, 0xcf, 0xaa, 0x21, 0x36, 0x23, 0xa8, - 0xcd, 0x9a, 0x18, 0x42, 0x33, 0x33, 0x24, 0x24, 0x81, 0xc9, 0xbc, 0x8a, 0x10, 0x23, 0x80, 0x88, - 0x51, 0x45, 0x12, 0xc9, 0xbd, 0x8b, 0x51, 0x44, 0x22, 0x80, 0xaa, 0xbb, 0xaa, 0xaa, 0x89, 0x52, - 0x44, 0x02, 0xc9, 0xbd, 0x9a, 0x41, 0x24, 0x82, 0xeb, 0xcc, 0x9a, 0x09, 0x10, 0x11, 0x21, 0x22, - 0x12, 0xc8, 0xdc, 0xab, 0x09, 0x31, 0x23, 0x11, 0x52, 0x45, 0x24, 0x02, 0xba, 0xbd, 0x09, 0x44, - 0x25, 0x02, 0x98, 0xdb, 0xab, 0xbb, 0xab, 0x09, 0x32, 0x34, 0xb0, 0xde, 0xab, 0x19, 0x63, 0x33, - 0x82, 0xca, 0xac, 0x8a, 0x20, 0x34, 0x34, 0x34, 0x23, 0x02, 0xba, 0xbd, 0x9b, 0x18, 0x22, 0x80, - 0x89, 0x62, 0x45, 0x23, 0xa0, 0xcd, 0xab, 0x29, 0x45, 0x24, 0x11, 0x98, 0xba, 0xbc, 0xbb, 0x99, - 0x42, 0x45, 0x12, 0xa9, 0xcd, 0x9a, 0x18, 0x34, 0x12, 0xc8, 0xbd, 0xbc, 0x8a, 0x08, 0x21, 0x32, - 0x33, 0x13, 0xc9, 0xdd, 0x9b, 0x09, 0x21, 0x12, 0x88, 0x30, 0x57, 0x34, 0x13, 0xa0, 0xbc, 0x8b, - 0x31, 0x46, 0x22, 0x81, 0xb9, 0xcd, 0xbb, 0xbc, 0x99, 0x31, 0x24, 0x82, 0xeb, 0xbc, 0x8a, 0x32, - 0x45, 0x11, 0xa8, 0xbb, 0x9b, 0x18, 0x43, 0x44, 0x34, 0x24, 0x11, 0xa9, 0xcb, 0x9a, 0x10, 0x12, - 0xa0, 0xbb, 0x48, 0x47, 0x34, 0x81, 0xca, 0xac, 0x09, 0x32, 0x36, 0x12, 0x01, 0xa9, 0xeb, 0xcb, - 0x9b, 0x18, 0x54, 0x23, 0x91, 0xcc, 0xac, 0x08, 0x31, 0x33, 0x90, 0xdc, 0xbb, 0xbb, 0x99, 0x00, - 0x31, 0x36, 0x23, 0x90, 0xdd, 0xab, 0x89, 0x22, 0x12, 0x98, 0x8a, 0x74, 0x35, 0x14, 0x81, 0xba, - 0x9b, 0x28, 0x35, 0x24, 0x02, 0x88, 0xdb, 0xdc, 0xbb, 0xab, 0x28, 0x44, 0x13, 0xb9, 0xce, 0x9a, - 0x18, 0x43, 0x23, 0x90, 0xba, 0xaa, 0x09, 0x11, 0x53, 0x45, 0x25, 0x13, 0x98, 0xcb, 0x9b, 0x18, - 0x33, 0x81, 0xbc, 0x8c, 0x63, 0x44, 0x12, 0xa8, 0xbc, 0x8a, 0x31, 0x34, 0x24, 0x10, 0x80, 0xc9, - 0xcd, 0xcb, 0x8a, 0x42, 0x35, 0x02, 0xc9, 0xbc, 0x8b, 0x20, 0x43, 0x01, 0xca, 0xcb, 0xaa, 0x99, - 0x98, 0x18, 0x63, 0x43, 0x01, 0xea, 0xbb, 0x9b, 0x41, 0x23, 0x80, 0xbb, 0x3a, 0x57, 0x34, 0x02, - 0xa8, 0xba, 0x19, 0x43, 0x24, 0x01, 0x80, 0xa8, 0xfb, 0xcd, 0xab, 0x8a, 0x42, 0x43, 0x81, 0xcc, - 0xcb, 0x09, 0x31, 0x24, 0x81, 0xa9, 0x9a, 0x08, 0x11, 0x11, 0x63, 0x45, 0x33, 0x82, 0xda, 0xac, - 0x09, 0x32, 0x23, 0xb9, 0xbd, 0x18, 0x46, 0x33, 0x81, 0xca, 0xab, 0x28, 0x34, 0x14, 0x01, 0x80, - 0x80, 0xeb, 0xcd, 0xab, 0x18, 0x45, 0x33, 0xa0, 0xcc, 0xac, 0x08, 0x32, 0x12, 0xa8, 0xbc, 0xab, - 0x99, 0x98, 0xa9, 0x30, 0x47, 0x23, 0xb0, 0xbf, 0x9c, 0x08, 0x33, 0x03, 0xb9, 0xab, 0x72, 0x45, - 0x22, 0x80, 0xaa, 0x8a, 0x31, 0x35, 0x02, 0x98, 0x98, 0xb9, 0xde, 0xbd, 0xab, 0x28, 0x35, 0x23, - 0xc9, 0xbd, 0x9b, 0x28, 0x34, 0x12, 0xa8, 0xaa, 0x09, 0x32, 0x12, 0x21, 0x75, 0x34, 0x13, 0xb8, - 0xcd, 0x8b, 0x20, 0x24, 0x92, 0xda, 0x8a, 0x41, 0x35, 0x22, 0xa9, 0xac, 0x09, 0x42, 0x33, 0x00, - 0x89, 0x08, 0xa0, 0xee, 0xbc, 0x9a, 0x51, 0x34, 0x03, 0xc9, 0xbd, 0x99, 0x20, 0x23, 0x91, 0xdb, - 0xaa, 0x09, 0x00, 0x99, 0x8a, 0x61, 0x34, 0x02, 0xec, 0xac, 0x8a, 0x31, 0x24, 0x91, 0xba, 0x1a, - 0x74, 0x43, 0x02, 0x99, 0x9a, 0x10, 0x34, 0x22, 0xa8, 0xa9, 0x89, 0xda, 0xed, 0xcb, 0x89, 0x31, - 0x35, 0x91, 0xdb, 0xac, 0x09, 0x31, 0x23, 0x90, 0xab, 0x8a, 0x42, 0x24, 0x00, 0x21, 0x55, 0x24, - 0x81, 0xdb, 0xac, 0x09, 0x33, 0x14, 0xb0, 0xcb, 0x19, 0x54, 0x24, 0x80, 0xb9, 0x8a, 0x40, 0x43, - 0x02, 0xa9, 0x99, 0x80, 0xb9, 0xdf, 0xbb, 0x29, 0x64, 0x23, 0x90, 0xcc, 0xab, 0x08, 0x32, 0x02, - 0xca, 0xcb, 0x99, 0x11, 0x01, 0xa9, 0x19, 0x54, 0x14, 0xb8, 0xcf, 0x9b, 0x18, 0x43, 0x12, 0xa8, - 0xab, 0x51, 0x35, 0x24, 0x91, 0x9a, 0x19, 0x53, 0x33, 0x91, 0xca, 0xaa, 0x99, 0xea, 0xdc, 0x9b, - 0x18, 0x44, 0x12, 0xb8, 0xcd, 0x9a, 0x10, 0x32, 0x82, 0xb9, 0x9c, 0x30, 0x44, 0x12, 0x01, 0x41, - 0x34, 0x23, 0xe9, 0xcc, 0x9a, 0x21, 0x43, 0x01, 0xca, 0x9a, 0x41, 0x44, 0x22, 0xa8, 0x9b, 0x18, - 0x54, 0x22, 0x98, 0xaa, 0x8a, 0x98, 0xfa, 0xbc, 0x9b, 0x52, 0x44, 0x02, 0xb9, 0xae, 0x9a, 0x11, - 0x12, 0xa8, 0xcc, 0x9a, 0x10, 0x23, 0x81, 0x99, 0x20, 0x35, 0xa2, 0xdf, 0xbc, 0x89, 0x31, 0x34, - 0x81, 0xba, 0x09, 0x55, 0x24, 0x12, 0xa8, 0x89, 0x41, 0x34, 0x12, 0xb9, 0xbc, 0x9a, 0xaa, 0xec, - 0xbc, 0x89, 0x51, 0x33, 0x91, 0xcc, 0xac, 0x89, 0x22, 0x13, 0xa9, 0xad, 0x19, 0x63, 0x23, 0x12, - 0x10, 0x42, 0x33, 0xa1, 0xde, 0xbb, 0x09, 0x53, 0x22, 0x98, 0xab, 0x19, 0x46, 0x23, 0x81, 0xaa, - 0x19, 0x54, 0x24, 0x81, 0xb9, 0xbb, 0x9a, 0xa9, 0xcd, 0xac, 0x29, 0x45, 0x23, 0xa0, 0xcd, 0xab, - 0x08, 0x22, 0x80, 0xcc, 0xac, 0x88, 0x32, 0x22, 0x81, 0x00, 0x32, 0x03, 0xfd, 0xcd, 0xaa, 0x10, - 0x42, 0x12, 0x98, 0x89, 0x41, 0x54, 0x22, 0x80, 0x89, 0x40, 0x44, 0x13, 0x90, 0xcb, 0xbb, 0xba, - 0xba, 0xbe, 0xab, 0x30, 0x45, 0x02, 0xca, 0xcc, 0x8a, 0x20, 0x22, 0xa0, 0xbc, 0x8c, 0x31, 0x27, - 0x23, 0x12, 0x22, 0x22, 0x91, 0xdd, 0xbc, 0x9a, 0x31, 0x34, 0x01, 0xaa, 0x8a, 0x62, 0x34, 0x03, - 0x98, 0x09, 0x72, 0x34, 0x12, 0xa8, 0xbc, 0xab, 0xaa, 0xbb, 0xbd, 0x0a, 0x54, 0x24, 0x81, 0xeb, - 0xab, 0x89, 0x20, 0x80, 0xeb, 0xbc, 0x8a, 0x21, 0x34, 0x13, 0x11, 0x11, 0x80, 0xfb, 0xcd, 0xac, - 0x88, 0x22, 0x23, 0x81, 0x89, 0x30, 0x46, 0x24, 0x01, 0x88, 0x28, 0x45, 0x24, 0x82, 0xb9, 0xdb, - 0xba, 0xba, 0xcb, 0x9b, 0x29, 0x44, 0x13, 0xc8, 0xbd, 0xab, 0x10, 0x23, 0x90, 0xbe, 0xac, 0x28, - 0x54, 0x24, 0x22, 0x22, 0x11, 0x81, 0xdb, 0xbd, 0xab, 0x28, 0x42, 0x12, 0x88, 0x09, 0x52, 0x44, - 0x02, 0xa0, 0x09, 0x52, 0x46, 0x22, 0x80, 0xaa, 0xbc, 0xab, 0xbb, 0xbb, 0x0a, 0x54, 0x43, 0x82, - 0xeb, 0xbb, 0x8a, 0x11, 0x01, 0xfb, 0xbc, 0xab, 0x18, 0x53, 0x32, 0x32, 0x22, 0x81, 0xda, 0xce, - 0xbb, 0x8b, 0x20, 0x33, 0x02, 0x00, 0x42, 0x36, 0x24, 0x81, 0x98, 0x20, 0x56, 0x34, 0x12, 0x98, - 0xcb, 0xbc, 0xab, 0xac, 0x9a, 0x10, 0x53, 0x12, 0xb8, 0xbe, 0x9b, 0x28, 0x32, 0x92, 0xdd, 0xbb, - 0x8a, 0x53, 0x44, 0x23, 0x43, 0x22, 0x80, 0xca, 0xbd, 0xbb, 0x08, 0x32, 0x13, 0x90, 0x08, 0x73, - 0x43, 0x12, 0x98, 0x9a, 0x62, 0x45, 0x33, 0x82, 0xb8, 0xcb, 0xbc, 0xbb, 0xac, 0x0a, 0x42, 0x25, - 0x01, 0xcb, 0xad, 0x89, 0x11, 0x02, 0xd9, 0xcd, 0xaa, 0x09, 0x22, 0x24, 0x23, 0x24, 0x02, 0xb8, - 0xce, 0xbc, 0x9a, 0x10, 0x22, 0x01, 0x98, 0x30, 0x47, 0x23, 0x01, 0xa9, 0x09, 0x73, 0x35, 0x22, - 0x91, 0xb9, 0xcb, 0xbc, 0xbc, 0xab, 0x19, 0x44, 0x23, 0xa0, 0xcd, 0xab, 0x28, 0x42, 0x01, 0xca, - 0xbd, 0x9a, 0x21, 0x44, 0x33, 0x34, 0x43, 0x02, 0xb8, 0xdd, 0xba, 0x09, 0x21, 0x11, 0x90, 0x8a, - 0x52, 0x45, 0x12, 0x98, 0xab, 0x29, 0x46, 0x34, 0x13, 0x98, 0xb9, 0xbb, 0xbe, 0xcb, 0x9a, 0x30, - 0x45, 0x12, 0xb9, 0xae, 0x8b, 0x10, 0x23, 0xa0, 0xdd, 0xbb, 0x8a, 0x10, 0x33, 0x34, 0x53, 0x33, - 0x81, 0xfb, 0xbc, 0xab, 0x19, 0x22, 0x01, 0xa8, 0x18, 0x65, 0x43, 0x01, 0xb8, 0xaa, 0x40, 0x46, - 0x23, 0x01, 0x98, 0xbb, 0xcb, 0xcc, 0xbb, 0x89, 0x42, 0x25, 0x82, 0xcb, 0xad, 0x09, 0x31, 0x14, - 0xa0, 0xcc, 0xab, 0x08, 0x42, 0x33, 0x53, 0x43, 0x23, 0x80, 0xdc, 0xcb, 0x9a, 0x11, 0x22, 0x90, - 0xa9, 0x28, 0x55, 0x33, 0x81, 0xcb, 0x9a, 0x62, 0x35, 0x23, 0x00, 0xa9, 0xab, 0xdb, 0xbc, 0xac, - 0x18, 0x53, 0x14, 0xa1, 0xeb, 0xaa, 0x08, 0x32, 0x02, 0xda, 0xbd, 0x9b, 0x08, 0x22, 0x33, 0x34, - 0x44, 0x12, 0xb0, 0xde, 0xba, 0x09, 0x21, 0x11, 0xa0, 0x9a, 0x50, 0x45, 0x22, 0x90, 0xba, 0x0a, - 0x73, 0x34, 0x22, 0x88, 0xaa, 0xba, 0xcc, 0xbc, 0x9c, 0x28, 0x44, 0x13, 0xb8, 0xbd, 0x8c, 0x28, - 0x24, 0x82, 0xca, 0xbc, 0x8a, 0x21, 0x24, 0x33, 0x53, 0x24, 0x03, 0xc8, 0xdc, 0xaa, 0x08, 0x22, - 0x01, 0xaa, 0x8b, 0x62, 0x35, 0x12, 0xa8, 0xbc, 0x18, 0x45, 0x24, 0x12, 0x98, 0x99, 0xba, 0xcc, - 0xbc, 0x9a, 0x41, 0x44, 0x02, 0xc9, 0xbc, 0x8b, 0x21, 0x24, 0x90, 0xcd, 0xab, 0x0a, 0x20, 0x22, - 0x32, 0x35, 0x34, 0x02, 0xfa, 0xbc, 0x9a, 0x18, 0x32, 0x81, 0xba, 0x09, 0x55, 0x34, 0x02, 0xba, - 0xac, 0x30, 0x46, 0x23, 0x82, 0xa8, 0xaa, 0xcb, 0xbc, 0xad, 0x0a, 0x42, 0x25, 0x81, 0xda, 0xbb, - 0x09, 0x52, 0x22, 0xa0, 0xcc, 0xaa, 0x19, 0x22, 0x43, 0x42, 0x53, 0x32, 0x91, 0xfb, 0xbb, 0x9a, - 0x11, 0x23, 0x90, 0xbb, 0x29, 0x47, 0x24, 0x91, 0xba, 0x9b, 0x52, 0x45, 0x22, 0x80, 0x98, 0xaa, - 0xba, 0xcd, 0xab, 0x19, 0x73, 0x22, 0xa1, 0xcc, 0xbb, 0x08, 0x43, 0x02, 0xd9, 0xbc, 0x9b, 0x18, - 0x22, 0x32, 0x43, 0x35, 0x23, 0xb0, 0xde, 0xab, 0x0a, 0x31, 0x12, 0xa8, 0xab, 0x40, 0x37, 0x24, - 0xa0, 0xba, 0x8a, 0x63, 0x34, 0x13, 0x90, 0xa9, 0xab, 0xcc, 0xcc, 0xaa, 0x28, 0x35, 0x14, 0xa0, - 0xbd, 0x9b, 0x20, 0x44, 0x01, 0xca, 0xcb, 0x89, 0x20, 0x32, 0x33, 0x44, 0x34, 0x12, 0xc8, 0xcd, - 0xab, 0x08, 0x22, 0x82, 0xb9, 0x8b, 0x61, 0x35, 0x13, 0xa8, 0xac, 0x19, 0x64, 0x33, 0x12, 0x98, - 0x99, 0xbb, 0xcc, 0xcc, 0x8a, 0x30, 0x35, 0x03, 0xca, 0xae, 0x9a, 0x20, 0x23, 0x91, 0xcd, 0xbb, - 0x8a, 0x20, 0x32, 0x33, 0x45, 0x34, 0x01, 0xca, 0xbe, 0xaa, 0x10, 0x22, 0x81, 0xb9, 0x1a, 0x64, - 0x34, 0x11, 0xba, 0x9c, 0x38, 0x55, 0x23, 0x01, 0x99, 0xaa, 0xcb, 0xdb, 0xac, 0x89, 0x52, 0x43, - 0x81, 0xca, 0xac, 0x09, 0x41, 0x13, 0x90, 0xcc, 0xab, 0x08, 0x31, 0x43, 0x43, 0x53, 0x23, 0x91, - 0xfb, 0xbb, 0x9b, 0x20, 0x22, 0xa0, 0xba, 0x29, 0x47, 0x24, 0x81, 0xb9, 0x9b, 0x52, 0x45, 0x22, - 0x81, 0x98, 0xaa, 0xca, 0xcc, 0xab, 0x08, 0x44, 0x23, 0xa1, 0xcd, 0xac, 0x08, 0x22, 0x02, 0xc9, - 0xbd, 0xaa, 0x08, 0x21, 0x33, 0x63, 0x43, 0x13, 0xa0, 0xcd, 0xac, 0x89, 0x21, 0x11, 0x98, 0x9a, - 0x40, 0x55, 0x22, 0x80, 0xab, 0x8a, 0x63, 0x34, 0x23, 0x80, 0xaa, 0xbb, 0xcd, 0xbc, 0xab, 0x20, - 0x36, 0x23, 0xb8, 0xcd, 0x9a, 0x28, 0x34, 0x01, 0xca, 0xbc, 0x9a, 0x20, 0x33, 0x44, 0x34, 0x24, - 0x03, 0xb9, 0xbf, 0xbb, 0x88, 0x12, 0x01, 0xaa, 0x8a, 0x72, 0x44, 0x12, 0xa0, 0x9a, 0x18, 0x55, - 0x43, 0x11, 0x80, 0xa8, 0xba, 0xbd, 0xad, 0x8a, 0x30, 0x35, 0x82, 0xda, 0xbc, 0x9a, 0x10, 0x23, - 0xa0, 0xcd, 0xbc, 0x8a, 0x00, 0x32, 0x53, 0x34, 0x24, 0x82, 0xca, 0xbd, 0x9a, 0x08, 0x12, 0x91, - 0x99, 0x18, 0x55, 0x34, 0x01, 0xb8, 0x9a, 0x40, 0x36, 0x24, 0x02, 0x98, 0xaa, 0xcc, 0xbc, 0xac, - 0x08, 0x52, 0x23, 0x81, 0xdb, 0xbb, 0x09, 0x42, 0x23, 0xa8, 0xdc, 0xab, 0x09, 0x21, 0x53, 0x44, - 0x43, 0x22, 0x90, 0xcc, 0xac, 0x8a, 0x08, 0x01, 0x99, 0x99, 0x31, 0x47, 0x32, 0x00, 0xa9, 0x19, - 0x72, 0x43, 0x23, 0x02, 0x90, 0xc9, 0xcc, 0xdb, 0x9a, 0x18, 0x43, 0x12, 0xb8, 0xcd, 0xab, 0x09, - 0x21, 0x80, 0xeb, 0xcb, 0xaa, 0x09, 0x20, 0x52, 0x44, 0x24, 0x12, 0xa8, 0xcc, 0xaa, 0x89, 0x10, - 0x80, 0x99, 0x08, 0x54, 0x35, 0x12, 0x90, 0x9a, 0x20, 0x64, 0x33, 0x12, 0x01, 0xa8, 0xcc, 0xcd, - 0xbb, 0x8b, 0x32, 0x35, 0x12, 0xca, 0xac, 0x8a, 0x31, 0x23, 0x90, 0xcd, 0xab, 0x9a, 0x18, 0x42, - 0x55, 0x34, 0x33, 0x82, 0xda, 0xbc, 0x9b, 0x09, 0x80, 0xa9, 0x9b, 0x31, 0x47, 0x33, 0x02, 0x98, - 0x10, 0x54, 0x34, 0x24, 0x12, 0x10, 0xa8, 0xeb, 0xbd, 0xbb, 0x09, 0x42, 0x13, 0xb0, 0xdd, 0xaa, - 0x89, 0x00, 0x80, 0xdb, 0xbc, 0xaa, 0x9a, 0x09, 0x30, 0x47, 0x25, 0x23, 0x80, 0xcb, 0xbb, 0x89, - 0x00, 0x90, 0xba, 0x1a, 0x74, 0x43, 0x22, 0x88, 0x8a, 0x30, 0x46, 0x23, 0x12, 0x10, 0x80, 0xca, - 0xdd, 0xbc, 0xaa, 0x20, 0x44, 0x11, 0xa9, 0xcb, 0x89, 0x21, 0x23, 0xa0, 0xdc, 0xaa, 0x89, 0x00, - 0x00, 0x62, 0x46, 0x24, 0x12, 0xa9, 0xcc, 0x9a, 0x88, 0x80, 0xba, 0xbc, 0x18, 0x45, 0x43, 0x11, - 0x89, 0x08, 0x63, 0x53, 0x12, 0x01, 0x11, 0x10, 0xa9, 0xbf, 0xbd, 0x99, 0x31, 0x32, 0xa0, 0xdd, - 0xaa, 0x89, 0x10, 0xa0, 0xcc, 0xbc, 0x9a, 0x08, 0x08, 0x09, 0x51, 0x46, 0x33, 0x02, 0xba, 0xad, - 0x89, 0x11, 0x90, 0xdb, 0x9b, 0x41, 0x45, 0x13, 0x91, 0x9a, 0x18, 0x55, 0x23, 0x01, 0x80, 0x08, - 0x00, 0xea, 0xcd, 0xab, 0x19, 0x43, 0x23, 0xb8, 0xbd, 0x8a, 0x41, 0x33, 0xa1, 0xdc, 0xab, 0x08, - 0x12, 0x01, 0x08, 0x64, 0x35, 0x33, 0x98, 0xbd, 0xac, 0x08, 0x01, 0xb9, 0xbe, 0x8a, 0x42, 0x35, - 0x02, 0xa8, 0x89, 0x52, 0x45, 0x22, 0x01, 0x88, 0x00, 0x81, 0xca, 0xbe, 0xab, 0x38, 0x34, 0x81, - 0xdd, 0xbb, 0x0a, 0x21, 0x02, 0xeb, 0xcc, 0x9a, 0x08, 0x01, 0x80, 0x08, 0x62, 0x44, 0x12, 0xa8, - 0xbb, 0x8a, 0x31, 0x04, 0xd9, 0xbc, 0x08, 0x54, 0x33, 0x91, 0xba, 0x0a, 0x73, 0x34, 0x03, 0x98, - 0x99, 0x09, 0x90, 0xdc, 0xcc, 0x89, 0x32, 0x34, 0x90, 0xbd, 0x9c, 0x30, 0x34, 0x02, 0xda, 0xcb, - 0x89, 0x21, 0x23, 0x80, 0x18, 0x45, 0x34, 0x81, 0xdb, 0xac, 0x09, 0x22, 0x80, 0xec, 0xab, 0x18, - 0x44, 0x13, 0x91, 0xab, 0x28, 0x56, 0x33, 0x02, 0x98, 0x89, 0x10, 0x90, 0xfb, 0xbb, 0x1a, 0x43, - 0x23, 0xfb, 0xbc, 0x9b, 0x20, 0x33, 0xb8, 0xdf, 0xaa, 0x09, 0x20, 0x02, 0x88, 0x10, 0x63, 0x33, - 0x91, 0xdb, 0x9b, 0x31, 0x35, 0x90, 0xdc, 0x9b, 0x31, 0x45, 0x12, 0xa9, 0xab, 0x20, 0x37, 0x24, - 0x80, 0xaa, 0x89, 0x88, 0xa8, 0xdc, 0x9b, 0x30, 0x35, 0x03, 0xfa, 0xbb, 0x19, 0x53, 0x33, 0xa8, - 0xbd, 0x9c, 0x28, 0x32, 0x03, 0x80, 0x20, 0x54, 0x12, 0xc8, 0xcc, 0x8a, 0x20, 0x23, 0xc9, 0xbe, - 0x8b, 0x41, 0x34, 0x02, 0xba, 0x8b, 0x72, 0x44, 0x13, 0x91, 0x99, 0x88, 0x08, 0xa8, 0xcc, 0x8a, - 0x41, 0x24, 0xa0, 0xde, 0xab, 0x09, 0x42, 0x01, 0xc9, 0xbd, 0x9b, 0x10, 0x22, 0x01, 0x08, 0x21, - 0x35, 0x13, 0xca, 0xad, 0x19, 0x44, 0x22, 0xb9, 0xbd, 0x0a, 0x44, 0x24, 0x90, 0xca, 0x0a, 0x52, - 0x35, 0x11, 0xa8, 0xaa, 0x9a, 0x88, 0xb9, 0xbc, 0x29, 0x46, 0x23, 0xb8, 0xbf, 0x9b, 0x31, 0x36, - 0x02, 0xca, 0xac, 0x8a, 0x31, 0x43, 0x01, 0x00, 0x21, 0x12, 0xa0, 0xcf, 0xab, 0x28, 0x43, 0x82, - 0xcc, 0xad, 0x08, 0x43, 0x23, 0x98, 0xbb, 0x29, 0x57, 0x33, 0x02, 0x98, 0xaa, 0x88, 0x88, 0xc9, - 0xaa, 0x30, 0x36, 0x83, 0xfc, 0xbc, 0x9a, 0x21, 0x33, 0xa0, 0xcf, 0xab, 0x89, 0x21, 0x23, 0x01, - 0x10, 0x31, 0x13, 0xc8, 0xcd, 0x8a, 0x53, 0x34, 0x81, 0xdb, 0x9b, 0x20, 0x45, 0x02, 0xb8, 0xbb, - 0x38, 0x56, 0x23, 0x81, 0xb9, 0xab, 0x9a, 0x99, 0xcb, 0x89, 0x73, 0x34, 0x81, 0xeb, 0xac, 0x09, - 0x53, 0x23, 0xa0, 0xeb, 0xaa, 0x18, 0x33, 0x33, 0x01, 0x10, 0x21, 0x90, 0xfc, 0xac, 0x0a, 0x32, - 0x33, 0xc8, 0xcd, 0x9a, 0x21, 0x35, 0x01, 0xba, 0x9b, 0x72, 0x44, 0x23, 0x81, 0xa9, 0xa9, 0x99, - 0x99, 0x9a, 0x29, 0x56, 0x13, 0xc8, 0xdd, 0xab, 0x09, 0x32, 0x03, 0xd9, 0xbd, 0xab, 0x08, 0x23, - 0x23, 0x12, 0x21, 0x12, 0xa0, 0xce, 0xbb, 0x30, 0x37, 0x14, 0x98, 0xbb, 0x0a, 0x63, 0x23, 0x91, - 0xcc, 0x89, 0x52, 0x35, 0x12, 0x90, 0xcb, 0xaa, 0xaa, 0x99, 0x09, 0x52, 0x35, 0x13, 0xd9, 0xcc, - 0x8b, 0x30, 0x35, 0x12, 0xb9, 0xae, 0x9a, 0x20, 0x24, 0x23, 0x12, 0x01, 0x90, 0xcc, 0xbd, 0xab, - 0x20, 0x25, 0x02, 0xca, 0xac, 0x1a, 0x42, 0x23, 0xa8, 0xac, 0x28, 0x57, 0x33, 0x13, 0x98, 0xaa, - 0xab, 0xaa, 0x99, 0x18, 0x46, 0x34, 0x90, 0xdd, 0xbc, 0x9a, 0x20, 0x32, 0xa0, 0xdd, 0xbb, 0x9a, - 0x11, 0x43, 0x32, 0x12, 0x11, 0xa8, 0xdc, 0xbb, 0x19, 0x54, 0x34, 0x01, 0xb9, 0xaa, 0x30, 0x35, - 0x03, 0xc9, 0xac, 0x30, 0x46, 0x33, 0x01, 0xb8, 0xbc, 0xbc, 0xaa, 0x8a, 0x41, 0x45, 0x33, 0xa0, - 0xdc, 0xbb, 0x08, 0x53, 0x14, 0x91, 0xca, 0xab, 0x09, 0x42, 0x43, 0x23, 0x12, 0x80, 0xdb, 0xbd, - 0xac, 0x08, 0x32, 0x23, 0xa8, 0xbd, 0x9a, 0x30, 0x34, 0x81, 0xcb, 0x8a, 0x74, 0x35, 0x33, 0x11, - 0x99, 0xbb, 0xbc, 0xab, 0x19, 0x73, 0x34, 0x12, 0xea, 0xbc, 0x9c, 0x09, 0x11, 0x02, 0xca, 0xcc, - 0xab, 0x88, 0x21, 0x43, 0x24, 0x12, 0x90, 0xda, 0xcb, 0x8a, 0x41, 0x53, 0x22, 0x88, 0x89, 0x18, - 0x32, 0x12, 0xc8, 0xbc, 0x19, 0x56, 0x43, 0x13, 0x80, 0xca, 0xbc, 0xac, 0x9b, 0x20, 0x45, 0x33, - 0x02, 0xdb, 0xbc, 0x99, 0x31, 0x34, 0x03, 0xb8, 0xbd, 0x9b, 0x10, 0x44, 0x34, 0x24, 0x02, 0xb9, - 0xce, 0xbb, 0x8a, 0x21, 0x33, 0x81, 0xb9, 0x9b, 0x18, 0x33, 0x91, 0xcd, 0x8a, 0x72, 0x46, 0x23, - 0x13, 0x81, 0xa9, 0xcc, 0xbb, 0x9a, 0x52, 0x35, 0x23, 0xa8, 0xbf, 0xac, 0x99, 0x10, 0x01, 0xa8, - 0xbd, 0xcb, 0x9a, 0x18, 0x32, 0x45, 0x33, 0x01, 0xd9, 0xbc, 0xab, 0x20, 0x44, 0x33, 0x01, 0x88, - 0x10, 0x32, 0x12, 0xb9, 0xbe, 0x09, 0x73, 0x34, 0x22, 0x02, 0x98, 0xeb, 0xbd, 0xac, 0x0a, 0x52, - 0x34, 0x13, 0xb8, 0xbc, 0x9c, 0x10, 0x32, 0x13, 0xa0, 0xcb, 0xaa, 0x09, 0x42, 0x45, 0x35, 0x33, - 0x90, 0xdd, 0xcb, 0xaa, 0x10, 0x22, 0x01, 0x98, 0x8a, 0x20, 0x22, 0xa0, 0xcd, 0x9b, 0x52, 0x45, - 0x24, 0x22, 0x11, 0x81, 0xc9, 0xcc, 0xbb, 0x19, 0x45, 0x34, 0x81, 0xda, 0xac, 0xaa, 0x08, 0x00, - 0x98, 0xcb, 0xac, 0xaa, 0x99, 0x18, 0x63, 0x35, 0x23, 0xa1, 0xcd, 0xbb, 0x0a, 0x42, 0x24, 0x12, - 0x08, 0x20, 0x43, 0x12, 0xb9, 0xbd, 0x0b, 0x52, 0x35, 0x22, 0x01, 0x88, 0xb8, 0xdd, 0xcc, 0x9b, - 0x38, 0x45, 0x23, 0x81, 0xcb, 0xab, 0x19, 0x32, 0x22, 0x90, 0xba, 0x8a, 0x88, 0x01, 0x62, 0x47, - 0x35, 0x12, 0xc9, 0xcd, 0xba, 0x09, 0x11, 0x12, 0x88, 0x99, 0x21, 0x33, 0x82, 0xdd, 0x9c, 0x29, - 0x44, 0x34, 0x12, 0x11, 0x11, 0x90, 0xfa, 0xdb, 0x8a, 0x40, 0x44, 0x12, 0xa9, 0xbc, 0xac, 0x88, - 0x00, 0x98, 0xbc, 0xab, 0x9a, 0x89, 0x99, 0x28, 0x47, 0x35, 0x12, 0xd9, 0xbc, 0xaa, 0x20, 0x34, - 0x22, 0x00, 0x10, 0x44, 0x23, 0x91, 0xcc, 0xab, 0x20, 0x45, 0x22, 0x00, 0x88, 0x88, 0xb8, 0xde, - 0xbc, 0x8a, 0x52, 0x44, 0x11, 0xa8, 0xbb, 0x8a, 0x31, 0x23, 0x90, 0xbc, 0x8a, 0x32, 0x23, 0x00, - 0x72, 0x55, 0x24, 0x81, 0xcc, 0xad, 0x8b, 0x18, 0x12, 0x80, 0x99, 0x28, 0x53, 0x22, 0xb9, 0xaf, - 0x8a, 0x41, 0x35, 0x12, 0x01, 0x18, 0x10, 0x90, 0xcd, 0xad, 0x19, 0x53, 0x34, 0x91, 0xda, 0xbb, - 0x99, 0x10, 0x98, 0xeb, 0xbb, 0x8a, 0x08, 0x80, 0x99, 0x40, 0x46, 0x24, 0x91, 0xeb, 0xbb, 0x89, - 0x42, 0x23, 0x01, 0x00, 0x43, 0x35, 0x03, 0xc9, 0xad, 0x89, 0x43, 0x43, 0x01, 0x98, 0x99, 0x88, - 0xca, 0xce, 0xab, 0x20, 0x45, 0x33, 0x80, 0xcb, 0x9b, 0x20, 0x33, 0x82, 0xbc, 0xac, 0x20, 0x34, - 0x12, 0x08, 0x62, 0x45, 0x22, 0xc8, 0xcd, 0xab, 0x0a, 0x11, 0x01, 0x99, 0x09, 0x52, 0x34, 0x81, - 0xeb, 0xbb, 0x18, 0x45, 0x33, 0x01, 0x88, 0x00, 0x10, 0xc9, 0xcd, 0xaa, 0x41, 0x35, 0x23, 0xb9, - 0xbe, 0x9a, 0x08, 0x00, 0xda, 0xbc, 0xab, 0x08, 0x12, 0x90, 0x89, 0x52, 0x36, 0x23, 0xc9, 0xbe, - 0x9b, 0x20, 0x33, 0x13, 0x80, 0x41, 0x46, 0x33, 0x91, 0xcc, 0x9b, 0x38, 0x44, 0x12, 0x90, 0x9a, - 0x99, 0x88, 0xfb, 0xbc, 0x8a, 0x52, 0x25, 0x12, 0xa9, 0xbb, 0x08, 0x53, 0x12, 0xc9, 0xac, 0x0a, - 0x33, 0x25, 0x01, 0x08, 0x43, 0x35, 0x01, 0xec, 0xbc, 0x9a, 0x00, 0x11, 0x98, 0x99, 0x48, 0x44, - 0x23, 0xc8, 0xbc, 0x9b, 0x52, 0x34, 0x13, 0x90, 0x98, 0x00, 0x81, 0xda, 0xbc, 0x1a, 0x45, 0x25, - 0x80, 0xcb, 0xab, 0x89, 0x11, 0xa8, 0xcf, 0xbb, 0x8a, 0x11, 0x12, 0x90, 0x08, 0x63, 0x34, 0x91, - 0xfb, 0xbb, 0x89, 0x32, 0x33, 0x81, 0x20, 0x56, 0x34, 0x12, 0xb9, 0xbd, 0x0a, 0x52, 0x33, 0x82, - 0xb9, 0xab, 0x9a, 0xa9, 0xce, 0xab, 0x38, 0x55, 0x33, 0x90, 0xbb, 0x8b, 0x43, 0x25, 0x90, 0xcc, - 0xab, 0x20, 0x35, 0x23, 0x00, 0x20, 0x53, 0x22, 0xc9, 0xbf, 0xbc, 0x89, 0x01, 0x80, 0xaa, 0x08, - 0x54, 0x34, 0x01, 0xdb, 0xbb, 0x29, 0x54, 0x33, 0x01, 0x99, 0x98, 0x00, 0xa8, 0xeb, 0x9a, 0x51, - 0x44, 0x12, 0xb9, 0xbd, 0x8a, 0x10, 0x80, 0xdd, 0xcc, 0x9a, 0x18, 0x21, 0x01, 0x80, 0x10, 0x43, - 0x12, 0xd9, 0xcc, 0x9b, 0x10, 0x33, 0x02, 0x18, 0x73, 0x36, 0x24, 0x91, 0xba, 0xac, 0x28, 0x34, - 0x14, 0xa0, 0xaa, 0xab, 0xa9, 0xcb, 0xbc, 0x09, 0x73, 0x24, 0x02, 0xb9, 0xaa, 0x40, 0x44, 0x82, - 0xd9, 0xcb, 0x89, 0x42, 0x43, 0x12, 0x00, 0x11, 0x22, 0x90, 0xde, 0xcb, 0xaa, 0x08, 0x80, 0xaa, - 0x8a, 0x61, 0x44, 0x13, 0xb0, 0xcc, 0x8a, 0x31, 0x36, 0x12, 0x80, 0xa9, 0x89, 0x98, 0xa9, 0xaa, - 0x41, 0x37, 0x14, 0xa0, 0xbd, 0x9b, 0x18, 0x12, 0xea, 0xce, 0xbb, 0x8a, 0x20, 0x32, 0x11, 0x00, - 0x21, 0x13, 0xc0, 0xcd, 0xac, 0x88, 0x22, 0x02, 0x00, 0x52, 0x47, 0x43, 0x12, 0xa8, 0xcb, 0x89, - 0x42, 0x33, 0x02, 0xba, 0xbd, 0xab, 0xba, 0xbb, 0x89, 0x73, 0x34, 0x03, 0xb8, 0xbb, 0x30, 0x57, - 0x22, 0xa8, 0xdc, 0xaa, 0x28, 0x53, 0x33, 0x22, 0x11, 0x01, 0x98, 0xdc, 0xbc, 0xbb, 0x99, 0x98, - 0xda, 0xaa, 0x28, 0x46, 0x34, 0x81, 0xc9, 0xab, 0x18, 0x44, 0x33, 0x02, 0x98, 0xaa, 0xaa, 0xab, - 0x9b, 0x61, 0x45, 0x23, 0xa0, 0xcc, 0xab, 0x19, 0x32, 0xc0, 0xef, 0xbb, 0xab, 0x19, 0x31, 0x32, - 0x22, 0x11, 0x00, 0xb9, 0xbf, 0xab, 0x19, 0x31, 0x01, 0xb9, 0x48, 0x77, 0x44, 0x22, 0x00, 0xaa, - 0x9a, 0x10, 0x53, 0x12, 0x88, 0xcb, 0xcb, 0xcb, 0xaa, 0x0a, 0x42, 0x44, 0x02, 0x98, 0x9c, 0x19, - 0x54, 0x33, 0x81, 0xeb, 0xbb, 0x8a, 0x42, 0x44, 0x32, 0x23, 0x01, 0xa0, 0xdb, 0xbc, 0xbb, 0x89, - 0x99, 0xeb, 0xcb, 0x09, 0x52, 0x34, 0x13, 0xa8, 0xbb, 0x8a, 0x53, 0x35, 0x12, 0x81, 0xa9, 0xdb, - 0xba, 0x9a, 0x40, 0x46, 0x32, 0x90, 0xeb, 0xaa, 0x09, 0x22, 0x02, 0xec, 0xcc, 0xbb, 0x9a, 0x18, - 0x22, 0x43, 0x23, 0x01, 0xc9, 0xdb, 0xab, 0x08, 0x22, 0x02, 0xc9, 0x8a, 0x74, 0x44, 0x24, 0x02, - 0x98, 0x99, 0x18, 0x32, 0x23, 0x81, 0xca, 0xcd, 0xbc, 0xcb, 0x8a, 0x41, 0x34, 0x22, 0xb8, 0xbc, - 0x0a, 0x73, 0x43, 0x02, 0xb8, 0xbc, 0x9b, 0x18, 0x53, 0x44, 0x33, 0x23, 0x91, 0xdb, 0xcc, 0x9a, - 0x09, 0x81, 0xb9, 0xcd, 0x9a, 0x20, 0x44, 0x23, 0x80, 0xa9, 0x89, 0x31, 0x35, 0x22, 0x01, 0x80, - 0xcb, 0xbe, 0xbc, 0x18, 0x45, 0x25, 0x81, 0xc9, 0xac, 0x09, 0x21, 0x13, 0xc8, 0xce, 0xbb, 0xab, - 0x88, 0x20, 0x42, 0x43, 0x13, 0x98, 0xcd, 0xbb, 0x09, 0x32, 0x24, 0xa8, 0xac, 0x19, 0x56, 0x34, - 0x12, 0x81, 0x89, 0x18, 0x22, 0x12, 0x88, 0xa9, 0xdb, 0xcd, 0xcc, 0xab, 0x18, 0x54, 0x23, 0x91, - 0xcb, 0xab, 0x40, 0x35, 0x23, 0xa0, 0xcb, 0xbb, 0x88, 0x32, 0x44, 0x35, 0x34, 0x12, 0xb8, 0xdd, - 0xaa, 0x89, 0x11, 0x80, 0xcc, 0xac, 0x09, 0x33, 0x25, 0x01, 0x99, 0x89, 0x41, 0x33, 0x12, 0x80, - 0x08, 0xa0, 0xdd, 0xbd, 0x9b, 0x61, 0x35, 0x13, 0xb8, 0xbd, 0xab, 0x20, 0x34, 0x81, 0xdc, 0xbc, - 0xba, 0x99, 0x88, 0x11, 0x53, 0x34, 0x02, 0xd9, 0xcc, 0x8a, 0x10, 0x33, 0x01, 0xca, 0x9a, 0x52, - 0x45, 0x22, 0x81, 0x88, 0x28, 0x42, 0x13, 0x90, 0xaa, 0xbb, 0xdb, 0xdd, 0xcb, 0x89, 0x41, 0x35, - 0x11, 0xc9, 0xbb, 0x09, 0x63, 0x24, 0x01, 0xb9, 0xba, 0x99, 0x11, 0x32, 0x44, 0x36, 0x24, 0x81, - 0xdb, 0xbc, 0x9a, 0x20, 0x12, 0xc8, 0xbc, 0xab, 0x30, 0x44, 0x12, 0x98, 0x8a, 0x41, 0x34, 0x13, - 0x98, 0xaa, 0x08, 0xb8, 0xde, 0xbc, 0x18, 0x55, 0x43, 0x91, 0xca, 0xac, 0x08, 0x31, 0x13, 0xc8, - 0xcd, 0xba, 0x99, 0x88, 0x80, 0x21, 0x35, 0x24, 0x90, 0xdd, 0xab, 0x19, 0x32, 0x24, 0x98, 0xbb, - 0x1a, 0x55, 0x24, 0x12, 0x88, 0x08, 0x43, 0x33, 0x81, 0xca, 0xab, 0x9a, 0xdb, 0xbe, 0xac, 0x18, - 0x54, 0x33, 0x90, 0xcc, 0x9a, 0x30, 0x44, 0x13, 0x98, 0xbb, 0x9a, 0x10, 0x22, 0x32, 0x46, 0x35, - 0x23, 0xb8, 0xce, 0xbb, 0x08, 0x31, 0x81, 0xdb, 0xbc, 0x09, 0x42, 0x23, 0x90, 0xaa, 0x20, 0x46, - 0x33, 0x80, 0xaa, 0x9a, 0x88, 0xd9, 0xcd, 0x9a, 0x51, 0x35, 0x23, 0xc8, 0xbc, 0x9b, 0x20, 0x24, - 0x81, 0xeb, 0xcb, 0x9a, 0x88, 0x98, 0x08, 0x42, 0x44, 0x12, 0xc9, 0xcd, 0x9a, 0x20, 0x33, 0x02, - 0xb9, 0x9b, 0x51, 0x35, 0x14, 0x80, 0x09, 0x41, 0x35, 0x13, 0xa8, 0xcb, 0xab, 0xa9, 0xeb, 0xbc, - 0x8a, 0x62, 0x43, 0x02, 0xb9, 0xad, 0x1a, 0x52, 0x33, 0x82, 0xb9, 0xab, 0x09, 0x32, 0x12, 0x53, - 0x46, 0x24, 0x82, 0xea, 0xcb, 0x9a, 0x10, 0x22, 0xa0, 0xcc, 0x9a, 0x28, 0x42, 0x01, 0xaa, 0x09, - 0x54, 0x25, 0x03, 0xa8, 0xab, 0x9a, 0x98, 0xdb, 0xbc, 0x29, 0x56, 0x33, 0x81, 0xcc, 0xbb, 0x09, - 0x33, 0x14, 0xb9, 0xbe, 0xbb, 0x89, 0x88, 0x88, 0x28, 0x64, 0x23, 0x91, 0xdd, 0xbb, 0x0a, 0x42, - 0x33, 0x80, 0xbb, 0x19, 0x45, 0x34, 0x01, 0x98, 0x20, 0x46, 0x33, 0x82, 0xca, 0xbb, 0xab, 0xba, - 0xdc, 0x9c, 0x18, 0x54, 0x23, 0x90, 0xdb, 0x9b, 0x30, 0x35, 0x13, 0xa0, 0xbb, 0x89, 0x41, 0x22, - 0x12, 0x63, 0x35, 0x14, 0xa0, 0xcd, 0xac, 0x88, 0x21, 0x01, 0xc9, 0xbb, 0x89, 0x32, 0x14, 0xa9, - 0xab, 0x61, 0x36, 0x24, 0x81, 0xba, 0xba, 0x99, 0xaa, 0xcc, 0x9a, 0x62, 0x35, 0x23, 0xb9, 0xcd, - 0x9a, 0x10, 0x23, 0x81, 0xdc, 0xbb, 0x9a, 0x09, 0x88, 0x89, 0x41, 0x45, 0x12, 0xc9, 0xbe, 0x9b, - 0x28, 0x43, 0x12, 0x98, 0x8a, 0x41, 0x44, 0x12, 0x98, 0x08, 0x64, 0x44, 0x12, 0x90, 0xbb, 0xac, - 0xaa, 0xba, 0xbc, 0x89, 0x63, 0x34, 0x02, 0xc9, 0xac, 0x09, 0x43, 0x34, 0x81, 0xa9, 0x9a, 0x10, - 0x24, 0x22, 0x32, 0x55, 0x43, 0x82, 0xea, 0xbc, 0xaa, 0x10, 0x11, 0x90, 0xcb, 0x9b, 0x10, 0x23, - 0xa8, 0xbd, 0x2a, 0x67, 0x43, 0x12, 0xa8, 0xba, 0xab, 0xaa, 0xbb, 0xab, 0x58, 0x46, 0x24, 0x80, - 0xcb, 0xbb, 0x89, 0x42, 0x02, 0xd9, 0xdb, 0x9a, 0x09, 0x08, 0x98, 0x00, 0x43, 0x24, 0xa1, 0xde, - 0xbb, 0x89, 0x31, 0x24, 0x81, 0x88, 0x30, 0x54, 0x13, 0x80, 0x99, 0x62, 0x46, 0x33, 0x01, 0xb9, - 0xbc, 0xcb, 0xaa, 0xbb, 0x9a, 0x40, 0x45, 0x22, 0xa0, 0xbc, 0x9a, 0x41, 0x34, 0x13, 0xa8, 0xaa, - 0x18, 0x44, 0x33, 0x32, 0x53, 0x44, 0x12, 0xb8, 0xce, 0xbb, 0x8a, 0x11, 0x80, 0xb9, 0xbb, 0x18, - 0x32, 0xb0, 0xdf, 0x8a, 0x62, 0x45, 0x23, 0x81, 0xa9, 0xac, 0xab, 0xab, 0xab, 0x18, 0x45, 0x35, - 0x01, 0xb9, 0xbd, 0x99, 0x20, 0x12, 0xb8, 0xce, 0xab, 0x8a, 0x08, 0x90, 0x80, 0x22, 0x35, 0x81, - 0xec, 0xcc, 0x9a, 0x18, 0x31, 0x02, 0x11, 0x42, 0x34, 0x24, 0x90, 0xaa, 0x48, 0x67, 0x43, 0x12, - 0x80, 0xba, 0xbc, 0xac, 0xba, 0x9a, 0x20, 0x63, 0x32, 0x80, 0xcb, 0x9a, 0x28, 0x44, 0x23, 0x80, - 0x9a, 0x19, 0x53, 0x34, 0x23, 0x34, 0x34, 0x23, 0xa0, 0xde, 0xbb, 0xaa, 0x08, 0x88, 0xba, 0x8a, - 0x20, 0x33, 0xd1, 0xcf, 0xab, 0x30, 0x47, 0x34, 0x02, 0x90, 0xb9, 0xbc, 0xac, 0xab, 0x09, 0x43, - 0x35, 0x12, 0xa9, 0xcc, 0x99, 0x18, 0x11, 0xb8, 0xcd, 0xbb, 0x8a, 0x08, 0x00, 0x09, 0x31, 0x24, - 0x81, 0xde, 0xcc, 0xaa, 0x08, 0x21, 0x00, 0x00, 0x63, 0x35, 0x24, 0x80, 0xba, 0x0a, 0x64, 0x45, - 0x22, 0x02, 0x99, 0xca, 0xdb, 0xba, 0xab, 0x18, 0x52, 0x23, 0x81, 0xba, 0x9c, 0x28, 0x34, 0x14, - 0x90, 0xa9, 0x08, 0x44, 0x34, 0x33, 0x43, 0x34, 0x22, 0xa0, 0xdc, 0xac, 0x9a, 0x88, 0xa8, 0xcb, - 0x9b, 0x31, 0x26, 0x92, 0xfb, 0xac, 0x09, 0x53, 0x44, 0x22, 0x01, 0x99, 0xca, 0xcb, 0xac, 0x8a, - 0x30, 0x35, 0x22, 0xa8, 0xbc, 0x9b, 0x20, 0x22, 0xb8, 0xcf, 0xab, 0x8a, 0x08, 0x01, 0x80, 0x21, - 0x24, 0x92, 0xfc, 0xbc, 0x9b, 0x08, 0x12, 0x90, 0xaa, 0x51, 0x47, 0x33, 0x01, 0xca, 0x9b, 0x31, - 0x57, 0x23, 0x13, 0x80, 0xb9, 0xdb, 0xcc, 0xba, 0x89, 0x41, 0x33, 0x01, 0xc9, 0xab, 0x29, 0x44, - 0x23, 0x90, 0xca, 0x09, 0x41, 0x25, 0x23, 0x33, 0x34, 0x24, 0x80, 0xcc, 0xbc, 0x8a, 0x10, 0x90, - 0xdb, 0xac, 0x19, 0x44, 0x12, 0xb8, 0xce, 0x9a, 0x30, 0x35, 0x24, 0x02, 0x80, 0xa8, 0xdb, 0xcc, - 0x9b, 0x19, 0x53, 0x23, 0x91, 0xcb, 0xab, 0x18, 0x33, 0x81, 0xce, 0xbc, 0x8a, 0x10, 0x11, 0x00, - 0x00, 0x42, 0x02, 0xfa, 0xdc, 0x9a, 0x19, 0x22, 0x81, 0xca, 0x8a, 0x63, 0x45, 0x12, 0x98, 0xbb, - 0x09, 0x73, 0x43, 0x22, 0x01, 0x88, 0xb9, 0xdc, 0xbc, 0x9b, 0x28, 0x53, 0x13, 0xa8, 0xbc, 0x0a, - 0x42, 0x25, 0x81, 0xb9, 0xab, 0x30, 0x45, 0x33, 0x22, 0x33, 0x35, 0x02, 0xda, 0xbd, 0x9b, 0x10, - 0x22, 0xb9, 0xbf, 0x9a, 0x41, 0x34, 0x81, 0xeb, 0xbb, 0x19, 0x53, 0x34, 0x12, 0x81, 0x90, 0xb9, - 0xdd, 0xcb, 0x8a, 0x40, 0x43, 0x02, 0xba, 0xad, 0x09, 0x31, 0x23, 0xc9, 0xcd, 0x9b, 0x19, 0x11, - 0x11, 0x00, 0x31, 0x33, 0xb0, 0xff, 0xac, 0x09, 0x20, 0x13, 0xa8, 0xbb, 0x39, 0x47, 0x24, 0x01, - 0xca, 0x9a, 0x30, 0x45, 0x33, 0x11, 0x08, 0x99, 0xca, 0xcd, 0xcb, 0x89, 0x32, 0x34, 0x91, 0xcb, - 0x9c, 0x38, 0x44, 0x12, 0xa8, 0xbb, 0x8a, 0x53, 0x34, 0x23, 0x33, 0x53, 0x22, 0xa8, 0xce, 0xac, - 0x08, 0x22, 0x01, 0xea, 0xab, 0x19, 0x53, 0x23, 0xb8, 0xcd, 0x9a, 0x30, 0x44, 0x22, 0x01, 0x08, - 0x88, 0xca, 0xbe, 0xac, 0x19, 0x43, 0x24, 0x98, 0xcc, 0x9a, 0x20, 0x43, 0x91, 0xeb, 0xbb, 0x8a, - 0x21, 0x22, 0x11, 0x20, 0x32, 0x82, 0xfd, 0xbd, 0xaa, 0x20, 0x33, 0x83, 0xdb, 0x9b, 0x51, 0x45, - 0x22, 0x98, 0xbb, 0x0a, 0x63, 0x24, 0x22, 0x00, 0x08, 0x99, 0xeb, 0xcc, 0xab, 0x10, 0x34, 0x04, - 0xb8, 0xbc, 0x0a, 0x53, 0x24, 0x81, 0xca, 0xaa, 0x10, 0x44, 0x33, 0x12, 0x33, 0x24, 0x82, 0xfb, - 0xbc, 0x9a, 0x21, 0x23, 0xa0, 0xbe, 0x9b, 0x40, 0x34, 0x02, 0xdb, 0xac, 0x09, 0x43, 0x24, 0x11, - 0x08, 0x08, 0x99, 0xdc, 0xbc, 0x9b, 0x41, 0x34, 0x02, 0xdb, 0xac, 0x09, 0x32, 0x14, 0xb8, 0xbe, - 0xbb, 0x18, 0x31, 0x22, 0x21, 0x32, 0x14, 0xd0, 0xce, 0xac, 0x0a, 0x31, 0x23, 0xa0, 0xcb, 0x1a, - 0x45, 0x25, 0x01, 0xaa, 0x9b, 0x30, 0x46, 0x22, 0x01, 0x88, 0x88, 0xb9, 0xec, 0xcb, 0x89, 0x32, - 0x34, 0xa1, 0xeb, 0x9b, 0x20, 0x35, 0x23, 0xb8, 0xbc, 0x8b, 0x42, 0x35, 0x33, 0x42, 0x32, 0x12, - 0xb9, 0xcf, 0x9c, 0x19, 0x31, 0x11, 0xc9, 0xac, 0x09, 0x42, 0x14, 0x90, 0xbc, 0x9b, 0x30, 0x45, - 0x12, 0x80, 0x08, 0x88, 0xb9, 0xce, 0xac, 0x19, 0x43, 0x23, 0xc8, 0xcc, 0x9a, 0x20, 0x24, 0x92, - 0xfb, 0xbb, 0x99, 0x21, 0x32, 0x22, 0x22, 0x33, 0xa1, 0xdf, 0xbd, 0xaa, 0x10, 0x24, 0x02, 0xb9, - 0xab, 0x41, 0x46, 0x22, 0x98, 0xaa, 0x09, 0x53, 0x34, 0x12, 0x80, 0x08, 0x98, 0xeb, 0xcc, 0xab, - 0x10, 0x44, 0x02, 0xb9, 0xae, 0x89, 0x43, 0x24, 0x82, 0xbb, 0xac, 0x18, 0x44, 0x24, 0x23, 0x23, - 0x14, 0x91, 0xfb, 0xbb, 0x9b, 0x21, 0x33, 0xa1, 0xcc, 0xab, 0x31, 0x35, 0x02, 0xda, 0xac, 0x08, - 0x43, 0x33, 0x02, 0x88, 0x88, 0xa9, 0xed, 0xcb, 0x8b, 0x31, 0x35, 0x91, 0xdc, 0xbb, 0x09, 0x43, - 0x13, 0xb8, 0xbf, 0x9c, 0x09, 0x21, 0x22, 0x33, 0x33, 0x13, 0xea, 0xce, 0xac, 0x09, 0x20, 0x23, - 0x80, 0xaa, 0x19, 0x54, 0x43, 0x01, 0xa9, 0x8a, 0x41, 0x45, 0x22, 0x00, 0x89, 0x98, 0xa9, 0xcd, - 0xcb, 0x09, 0x43, 0x23, 0xb8, 0xce, 0x9a, 0x30, 0x35, 0x23, 0xa8, 0xad, 0x9a, 0x41, 0x53, 0x43, - 0x33, 0x33, 0x01, 0xe9, 0xbc, 0x9c, 0x09, 0x22, 0x02, 0xa9, 0xbb, 0x0a, 0x63, 0x22, 0xa8, 0xbc, - 0x9a, 0x52, 0x34, 0x02, 0x80, 0x89, 0x99, 0xeb, 0xcc, 0xab, 0x10, 0x44, 0x01, 0xeb, 0xbc, 0x8a, - 0x30, 0x24, 0x91, 0xcd, 0xcb, 0x99, 0x10, 0x32, 0x43, 0x24, 0x13, 0xa8, 0xed, 0xbb, 0x9b, 0x18, - 0x33, 0x12, 0x99, 0x8a, 0x52, 0x45, 0x12, 0x90, 0x89, 0x20, 0x45, 0x23, 0x11, 0x88, 0x88, 0xa9, - 0xdc, 0xcc, 0x89, 0x31, 0x43, 0xa1, 0xcd, 0xbb, 0x18, 0x54, 0x23, 0x91, 0xba, 0x9c, 0x18, 0x44, - 0x44, 0x43, 0x33, 0x13, 0xa8, 0xcd, 0xac, 0x8a, 0x10, 0x12, 0x90, 0xa9, 0x0a, 0x31, 0x24, 0x90, - 0xbd, 0x99, 0x42, 0x44, 0x12, 0x80, 0x99, 0xa9, 0xdb, 0xdc, 0xab, 0x28, 0x53, 0x12, 0xeb, 0xcc, - 0xaa, 0x18, 0x32, 0x02, 0xda, 0xcc, 0xaa, 0x89, 0x11, 0x43, 0x35, 0x24, 0x82, 0xda, 0xcc, 0xab, - 0x09, 0x20, 0x11, 0x00, 0x18, 0x31, 0x35, 0x13, 0x90, 0x89, 0x62, 0x35, 0x24, 0x01, 0x88, 0x98, - 0xa9, 0xdb, 0xbc, 0x8a, 0x53, 0x24, 0x91, 0xcd, 0xac, 0x09, 0x32, 0x35, 0x01, 0xa9, 0xaa, 0x89, - 0x42, 0x45, 0x44, 0x34, 0x14, 0x81, 0xba, 0xbd, 0x9b, 0x08, 0x01, 0x81, 0x99, 0x08, 0x22, 0x33, - 0xc8, 0xbd, 0x0a, 0x63, 0x34, 0x02, 0xa8, 0xaa, 0x99, 0xcb, 0xcd, 0xab, 0x28, 0x45, 0x12, 0xda, - 0xcd, 0xaa, 0x08, 0x21, 0x02, 0xc9, 0xbc, 0x9c, 0x99, 0x80, 0x31, 0x55, 0x34, 0x13, 0xb8, 0xce, - 0xab, 0x8a, 0x18, 0x11, 0x80, 0x08, 0x42, 0x44, 0x02, 0x90, 0x9a, 0x41, 0x36, 0x24, 0x81, 0x89, - 0x99, 0x88, 0xba, 0xbd, 0x9b, 0x62, 0x25, 0x02, 0xdb, 0xad, 0x8a, 0x31, 0x24, 0x02, 0xa9, 0xaa, - 0x18, 0x42, 0x43, 0x44, 0x45, 0x34, 0x02, 0xa8, 0xcc, 0xab, 0x09, 0x10, 0x88, 0xa9, 0x08, 0x34, - 0x24, 0x90, 0xbd, 0xab, 0x42, 0x36, 0x12, 0x98, 0xab, 0x99, 0xaa, 0xcc, 0xbc, 0x09, 0x54, 0x14, - 0x90, 0xbe, 0xbc, 0x09, 0x11, 0x12, 0xb8, 0xbd, 0xab, 0x88, 0x08, 0x08, 0x61, 0x45, 0x24, 0x82, - 0xda, 0xbc, 0x9a, 0x08, 0x10, 0x98, 0x89, 0x42, 0x45, 0x12, 0x98, 0xbb, 0x29, 0x55, 0x34, 0x02, - 0xa8, 0xa9, 0x89, 0xa9, 0xdb, 0x9b, 0x50, 0x45, 0x12, 0xb8, 0xcd, 0x9b, 0x20, 0x43, 0x02, 0x98, - 0xab, 0x19, 0x42, 0x23, 0x33, 0x56, 0x35, 0x24, 0x80, 0xca, 0xac, 0x99, 0x10, 0x80, 0xaa, 0x8a, - 0x52, 0x34, 0x82, 0xda, 0xac, 0x18, 0x63, 0x23, 0x80, 0xaa, 0xab, 0x9a, 0xba, 0xbd, 0x9b, 0x73, - 0x34, 0x82, 0xeb, 0xad, 0x9a, 0x10, 0x22, 0x90, 0xbc, 0xac, 0x09, 0x01, 0x81, 0x18, 0x73, 0x44, - 0x22, 0xb8, 0xcd, 0x9b, 0x09, 0x10, 0x90, 0xaa, 0x19, 0x46, 0x24, 0x01, 0xba, 0x9c, 0x41, 0x44, - 0x23, 0x90, 0xaa, 0x9a, 0x99, 0xc9, 0xbb, 0x29, 0x47, 0x34, 0x81, 0xcc, 0xac, 0x19, 0x41, 0x22, - 0x88, 0xbb, 0x8a, 0x41, 0x24, 0x12, 0x22, 0x55, 0x34, 0x12, 0xb9, 0xcc, 0x9b, 0x00, 0x01, 0xb9, - 0xbc, 0x28, 0x46, 0x13, 0xa0, 0xbd, 0x8b, 0x51, 0x53, 0x02, 0xa8, 0xba, 0x9a, 0x9a, 0xcb, 0xbb, - 0x48, 0x55, 0x23, 0xb8, 0xce, 0xab, 0x08, 0x31, 0x82, 0xd9, 0xcb, 0x99, 0x20, 0x11, 0x80, 0x20, - 0x64, 0x43, 0x81, 0xda, 0xac, 0x8a, 0x10, 0x81, 0xb9, 0x9b, 0x61, 0x35, 0x14, 0xb8, 0xbb, 0x1a, - 0x64, 0x24, 0x01, 0xa8, 0xaa, 0xa9, 0x99, 0xba, 0x8b, 0x73, 0x36, 0x13, 0xb9, 0xbe, 0x9b, 0x21, - 0x34, 0x02, 0xba, 0xac, 0x18, 0x34, 0x24, 0x11, 0x32, 0x46, 0x23, 0x91, 0xeb, 0xaa, 0x09, 0x10, - 0x90, 0xbc, 0x8c, 0x51, 0x34, 0x02, 0xca, 0xbc, 0x18, 0x63, 0x23, 0x81, 0xba, 0xbb, 0xab, 0xcb, - 0xcb, 0x89, 0x54, 0x25, 0x82, 0xea, 0xcb, 0x99, 0x10, 0x22, 0x98, 0xbd, 0xab, 0x18, 0x32, 0x12, - 0x08, 0x42, 0x45, 0x22, 0xc8, 0xcc, 0xaa, 0x00, 0x11, 0xa8, 0xbd, 0x19, 0x64, 0x43, 0x81, 0xba, - 0xab, 0x40, 0x45, 0x22, 0x91, 0xb9, 0xab, 0xaa, 0xba, 0xbb, 0x40, 0x67, 0x32, 0x91, 0xda, 0xbb, - 0x09, 0x43, 0x22, 0xa0, 0xbc, 0x9a, 0x42, 0x34, 0x23, 0x21, 0x52, 0x34, 0x02, 0xc9, 0xbc, 0x8a, - 0x20, 0x01, 0xeb, 0xbb, 0x29, 0x55, 0x33, 0xa0, 0xcc, 0x9a, 0x31, 0x36, 0x12, 0xa0, 0xcb, 0xba, - 0xba, 0xbb, 0x9c, 0x50, 0x54, 0x13, 0xa8, 0xbe, 0x9c, 0x09, 0x21, 0x01, 0xca, 0xbc, 0x8a, 0x20, - 0x33, 0x02, 0x11, 0x53, 0x43, 0x91, 0xdc, 0xbb, 0x09, 0x21, 0x81, 0xdc, 0x9b, 0x41, 0x45, 0x13, - 0xa0, 0xbc, 0x0a, 0x63, 0x34, 0x02, 0x98, 0xbb, 0xcb, 0xaa, 0xaa, 0x09, 0x55, 0x35, 0x12, 0xb8, - 0xbd, 0x9b, 0x30, 0x34, 0x82, 0xca, 0xac, 0x18, 0x53, 0x33, 0x22, 0x22, 0x34, 0x22, 0xa0, 0xbe, - 0xab, 0x28, 0x22, 0xd8, 0xbd, 0x9b, 0x52, 0x35, 0x12, 0xba, 0xad, 0x09, 0x63, 0x33, 0x01, 0xb9, - 0xbc, 0xac, 0xcb, 0xaa, 0x18, 0x54, 0x43, 0x81, 0xda, 0xbc, 0x8a, 0x28, 0x11, 0xa8, 0xcd, 0x9b, - 0x19, 0x32, 0x23, 0x22, 0x22, 0x43, 0x82, 0xeb, 0xbc, 0x8b, 0x31, 0x12, 0xfa, 0xcb, 0x09, 0x54, - 0x33, 0x02, 0xca, 0xab, 0x30, 0x46, 0x23, 0x81, 0xa9, 0xbc, 0xbb, 0xbc, 0x8a, 0x41, 0x37, 0x24, - 0x81, 0xcb, 0xab, 0x09, 0x42, 0x13, 0xa8, 0xbd, 0x8a, 0x41, 0x34, 0x24, 0x22, 0x32, 0x12, 0x91, - 0xcc, 0xbb, 0x19, 0x33, 0x91, 0xde, 0xbb, 0x28, 0x54, 0x14, 0x91, 0xbb, 0x9b, 0x51, 0x44, 0x22, - 0x88, 0xca, 0xcb, 0xcb, 0xab, 0x0a, 0x51, 0x34, 0x23, 0xb9, 0xbf, 0xab, 0x09, 0x11, 0x91, 0xeb, - 0xcb, 0x8a, 0x20, 0x32, 0x43, 0x32, 0x22, 0x81, 0xda, 0xbc, 0x9b, 0x20, 0x24, 0xa0, 0xcd, 0x9b, - 0x41, 0x54, 0x12, 0x90, 0xbb, 0x09, 0x54, 0x34, 0x13, 0x90, 0xcb, 0xcc, 0xba, 0xab, 0x38, 0x55, - 0x24, 0x12, 0xa9, 0xac, 0x8a, 0x20, 0x33, 0x91, 0xeb, 0xab, 0x18, 0x63, 0x24, 0x24, 0x32, 0x11, - 0x90, 0xcb, 0xbb, 0x09, 0x43, 0x12, 0xda, 0xbd, 0x89, 0x41, 0x34, 0x12, 0xb9, 0xbb, 0x29, 0x56, - 0x23, 0x02, 0x98, 0xdc, 0xdb, 0xcb, 0x9a, 0x10, 0x34, 0x24, 0x91, 0xdb, 0xbb, 0x9a, 0x18, 0x90, - 0xea, 0xcb, 0xab, 0x18, 0x41, 0x42, 0x33, 0x33, 0x01, 0xda, 0xbc, 0x9b, 0x20, 0x34, 0x82, 0xcc, - 0xac, 0x18, 0x63, 0x23, 0x82, 0xaa, 0x8a, 0x51, 0x44, 0x22, 0x02, 0xa0, 0xcc, 0xcd, 0xab, 0x8a, - 0x52, 0x44, 0x22, 0x80, 0xba, 0x9b, 0x10, 0x32, 0x81, 0xdb, 0xac, 0x89, 0x42, 0x44, 0x34, 0x34, - 0x22, 0x81, 0xcb, 0xac, 0x8a, 0x32, 0x23, 0xa0, 0xce, 0x9a, 0x20, 0x53, 0x12, 0xa0, 0x9a, 0x18, - 0x54, 0x33, 0x23, 0x00, 0xca, 0xcf, 0xbc, 0xbc, 0x09, 0x42, 0x24, 0x02, 0xba, 0xad, 0x9b, 0x08, - 0x90, 0xd9, 0xcb, 0xbb, 0x99, 0x10, 0x43, 0x54, 0x33, 0x23, 0xb8, 0xcd, 0xab, 0x19, 0x43, 0x12, - 0xa8, 0xbc, 0x0a, 0x52, 0x33, 0x01, 0xaa, 0x09, 0x73, 0x53, 0x22, 0x01, 0x00, 0xc9, 0xdd, 0xbc, - 0xab, 0x30, 0x55, 0x23, 0x81, 0xa9, 0x9a, 0x10, 0x22, 0x82, 0xda, 0xac, 0x8a, 0x20, 0x34, 0x45, - 0x44, 0x33, 0x12, 0xc9, 0xbc, 0x9b, 0x20, 0x34, 0x82, 0xca, 0xbb, 0x19, 0x34, 0x23, 0x98, 0x9b, - 0x30, 0x47, 0x23, 0x02, 0x80, 0x80, 0xea, 0xde, 0xbc, 0xaa, 0x20, 0x44, 0x12, 0xa8, 0xac, 0x9b, - 0x08, 0x90, 0xda, 0xbd, 0xbb, 0x89, 0x00, 0x21, 0x63, 0x34, 0x25, 0x81, 0xcb, 0xbc, 0x0a, 0x41, - 0x23, 0x81, 0xcb, 0x9a, 0x21, 0x34, 0x02, 0xb9, 0x8a, 0x73, 0x43, 0x22, 0x08, 0x08, 0x00, 0xe9, - 0xce, 0xbc, 0x89, 0x52, 0x24, 0x03, 0x98, 0x9a, 0x18, 0x33, 0x12, 0xdb, 0xad, 0x8a, 0x20, 0x32, - 0x43, 0x54, 0x44, 0x23, 0x90, 0xeb, 0xab, 0x08, 0x32, 0x23, 0xa8, 0xbc, 0x0a, 0x42, 0x14, 0x90, - 0xbb, 0x29, 0x46, 0x24, 0x02, 0x99, 0x88, 0x90, 0xfb, 0xcd, 0xac, 0x09, 0x32, 0x24, 0x80, 0xdb, - 0xaa, 0x08, 0x11, 0xb9, 0xce, 0xac, 0x89, 0x08, 0x10, 0x10, 0x53, 0x35, 0x23, 0xb8, 0xbe, 0xab, - 0x28, 0x53, 0x12, 0x99, 0x9b, 0x28, 0x43, 0x03, 0xda, 0x9b, 0x30, 0x47, 0x23, 0x90, 0x99, 0x89, - 0x80, 0xeb, 0xcd, 0xab, 0x20, 0x36, 0x23, 0x80, 0xab, 0x19, 0x53, 0x14, 0xa0, 0xcc, 0xaa, 0x18, - 0x32, 0x22, 0x43, 0x55, 0x43, 0x02, 0xc9, 0xbc, 0x9a, 0x20, 0x34, 0x01, 0xba, 0x9a, 0x30, 0x34, - 0x92, 0xcc, 0x9a, 0x63, 0x35, 0x12, 0xa8, 0x9a, 0x89, 0x90, 0xfc, 0xbc, 0x9b, 0x20, 0x34, 0x02, - 0xcb, 0xbc, 0x09, 0x22, 0x92, 0xed, 0xbc, 0xaa, 0x18, 0x11, 0x00, 0x31, 0x64, 0x23, 0x82, 0xdb, - 0xad, 0x89, 0x31, 0x24, 0x81, 0xaa, 0x89, 0x42, 0x23, 0xb0, 0xbd, 0x0a, 0x64, 0x43, 0x01, 0xa9, - 0x9a, 0x08, 0x88, 0xec, 0xcb, 0x0a, 0x52, 0x43, 0x01, 0xa9, 0x89, 0x41, 0x25, 0x82, 0xda, 0xbb, - 0x0a, 0x31, 0x24, 0x21, 0x42, 0x45, 0x23, 0x91, 0xdc, 0xbb, 0x09, 0x33, 0x14, 0xa0, 0xaa, 0x18, - 0x44, 0x12, 0xca, 0xac, 0x39, 0x55, 0x33, 0x81, 0xba, 0x9a, 0x89, 0xb8, 0xcf, 0xac, 0x09, 0x32, - 0x23, 0xc8, 0xbd, 0x9a, 0x30, 0x23, 0xd8, 0xce, 0x9c, 0x89, 0x00, 0x11, 0x00, 0x31, 0x45, 0x22, - 0xb0, 0xcd, 0xaa, 0x18, 0x24, 0x03, 0xa0, 0x89, 0x31, 0x34, 0x92, 0xcd, 0x9c, 0x20, 0x36, 0x14, - 0x80, 0xba, 0x9a, 0x88, 0xa9, 0xdc, 0x9b, 0x30, 0x45, 0x13, 0x98, 0xbb, 0x30, 0x47, 0x23, 0xa8, - 0xcc, 0x9b, 0x18, 0x32, 0x23, 0x32, 0x54, 0x34, 0x12, 0xca, 0xcd, 0x8a, 0x28, 0x23, 0x82, 0x99, - 0x0a, 0x52, 0x33, 0xa0, 0xce, 0x8a, 0x51, 0x35, 0x12, 0x98, 0xab, 0xaa, 0x98, 0xca, 0xcc, 0x9b, - 0x20, 0x24, 0x90, 0xdd, 0xaa, 0x18, 0x33, 0x83, 0xed, 0xbc, 0x9b, 0x08, 0x21, 0x11, 0x20, 0x53, - 0x34, 0x81, 0xea, 0xcb, 0x89, 0x31, 0x24, 0x81, 0x89, 0x18, 0x34, 0x14, 0xc9, 0xcc, 0x09, 0x52, - 0x24, 0x02, 0xa9, 0xbb, 0x9a, 0x98, 0xca, 0xbb, 0x1a, 0x46, 0x24, 0x80, 0xbb, 0x09, 0x55, 0x25, - 0x01, 0xba, 0xad, 0x8a, 0x31, 0x23, 0x23, 0x32, 0x45, 0x23, 0x90, 0xcd, 0xac, 0x09, 0x21, 0x13, - 0x90, 0x89, 0x41, 0x35, 0x02, 0xeb, 0xbb, 0x18, 0x56, 0x23, 0x01, 0xa9, 0xbb, 0xaa, 0xaa, 0xdb, - 0xab, 0x19, 0x43, 0x92, 0xfc, 0xbb, 0x8a, 0x42, 0x23, 0xc8, 0xce, 0xac, 0x89, 0x10, 0x11, 0x11, - 0x21, 0x53, 0x12, 0xa8, 0xcd, 0xaa, 0x18, 0x43, 0x12, 0x80, 0x28, 0x63, 0x23, 0xa1, 0xdd, 0x9b, - 0x38, 0x45, 0x33, 0x80, 0xbb, 0xbc, 0xaa, 0xa9, 0xa9, 0x09, 0x44, 0x25, 0x82, 0xca, 0x9b, 0x61, - 0x35, 0x14, 0x90, 0xcb, 0xab, 0x19, 0x42, 0x32, 0x23, 0x43, 0x24, 0x01, 0xcb, 0xbd, 0x9b, 0x28, - 0x32, 0x81, 0x88, 0x41, 0x36, 0x14, 0xa8, 0xcd, 0x8a, 0x51, 0x34, 0x14, 0x90, 0xb9, 0xbb, 0xab, - 0xab, 0xab, 0x18, 0x42, 0x02, 0xfd, 0xbc, 0x9a, 0x20, 0x43, 0x82, 0xdc, 0xbd, 0xaa, 0x08, 0x20, - 0x21, 0x32, 0x33, 0x24, 0x90, 0xbd, 0xad, 0x09, 0x31, 0x23, 0x01, 0x20, 0x55, 0x34, 0x01, 0xda, - 0xac, 0x8a, 0x53, 0x34, 0x12, 0xa8, 0xdb, 0xba, 0xab, 0x9a, 0x18, 0x62, 0x33, 0x02, 0xda, 0xbb, - 0x38, 0x57, 0x33, 0x01, 0xc9, 0xbb, 0x9a, 0x30, 0x53, 0x33, 0x33, 0x24, 0x02, 0xc9, 0xbd, 0xab, - 0x08, 0x11, 0x81, 0x88, 0x51, 0x46, 0x33, 0x91, 0xcc, 0xab, 0x28, 0x55, 0x24, 0x01, 0xa0, 0xca, - 0xba, 0xac, 0xa9, 0x00, 0x32, 0x03, 0xea, 0xbe, 0xac, 0x08, 0x32, 0x22, 0xb9, 0xcf, 0xbb, 0x9a, - 0x18, 0x21, 0x42, 0x23, 0x23, 0x81, 0xdb, 0xac, 0x0a, 0x20, 0x23, 0x00, 0x20, 0x57, 0x53, 0x12, - 0xa8, 0xcc, 0x9a, 0x20, 0x44, 0x14, 0x81, 0xb8, 0xbc, 0xbc, 0xab, 0x09, 0x43, 0x35, 0x02, 0xb9, - 0xcc, 0x09, 0x52, 0x35, 0x22, 0x90, 0xbb, 0xbb, 0x09, 0x32, 0x45, 0x34, 0x33, 0x11, 0xb9, 0xbe, - 0x9b, 0x09, 0x01, 0x90, 0xba, 0x40, 0x47, 0x24, 0x12, 0xc9, 0xbb, 0x09, 0x52, 0x35, 0x23, 0x00, - 0xa9, 0xcd, 0xcb, 0xab, 0x08, 0x42, 0x23, 0xb8, 0xde, 0xbb, 0x8a, 0x21, 0x23, 0x91, 0xcd, 0xbc, - 0xba, 0x89, 0x18, 0x32, 0x45, 0x22, 0x81, 0xba, 0xad, 0x0a, 0x31, 0x13, 0x98, 0x9a, 0x74, 0x35, - 0x24, 0x81, 0xcb, 0xab, 0x19, 0x42, 0x34, 0x02, 0x80, 0xda, 0xdc, 0xbb, 0x9a, 0x30, 0x45, 0x23, - 0xa0, 0xbc, 0x9c, 0x21, 0x45, 0x23, 0x81, 0xa9, 0x9a, 0x99, 0x10, 0x41, 0x54, 0x43, 0x12, 0xa0, - 0xbc, 0xac, 0x08, 0x21, 0x90, 0xda, 0x8a, 0x63, 0x44, 0x22, 0x98, 0xbb, 0x9a, 0x41, 0x44, 0x32, - 0x02, 0x81, 0xda, 0xdc, 0xbb, 0x9b, 0x31, 0x35, 0x02, 0xdc, 0xbc, 0x9b, 0x18, 0x22, 0x02, 0xca, - 0xcc, 0xaa, 0xaa, 0x98, 0x10, 0x73, 0x33, 0x12, 0xc9, 0xbc, 0x8a, 0x31, 0x24, 0x91, 0xba, 0x29, - 0x57, 0x34, 0x11, 0xb9, 0xbb, 0x8a, 0x42, 0x33, 0x13, 0x81, 0xa8, 0xde, 0xbd, 0xbc, 0x09, 0x53, - 0x34, 0x01, 0xca, 0xbb, 0x19, 0x63, 0x33, 0x03, 0x90, 0x9a, 0x09, 0x08, 0x00, 0x63, 0x45, 0x33, - 0x81, 0xeb, 0xbb, 0x8a, 0x32, 0x12, 0xca, 0xbc, 0x28, 0x56, 0x23, 0x82, 0xb9, 0xab, 0x28, 0x35, - 0x24, 0x01, 0x11, 0x80, 0xdc, 0xcd, 0xbb, 0x08, 0x53, 0x23, 0xb0, 0xce, 0xbb, 0x89, 0x21, 0x02, - 0xa8, 0xcc, 0xaa, 0x99, 0x99, 0x9a, 0x31, 0x47, 0x23, 0x90, 0xcc, 0xab, 0x28, 0x53, 0x12, 0xb9, - 0xab, 0x71, 0x44, 0x23, 0x90, 0xba, 0x9b, 0x20, 0x33, 0x03, 0x80, 0x88, 0xc8, 0xdf, 0xbd, 0xab, - 0x30, 0x36, 0x14, 0x90, 0xbc, 0x9a, 0x30, 0x35, 0x23, 0x80, 0x99, 0x08, 0x21, 0x00, 0x18, 0x64, - 0x35, 0x23, 0xc9, 0xdc, 0x9a, 0x10, 0x32, 0x80, 0xbc, 0x9b, 0x52, 0x36, 0x12, 0xa0, 0xba, 0x08, - 0x52, 0x33, 0x01, 0x00, 0x10, 0xa8, 0xee, 0xbd, 0x9a, 0x30, 0x35, 0x02, 0xeb, 0xbc, 0x9a, 0x18, - 0x12, 0x80, 0xcb, 0xbb, 0x99, 0x90, 0xb9, 0x8a, 0x73, 0x35, 0x12, 0xca, 0xbd, 0x0a, 0x41, 0x33, - 0x81, 0xcb, 0x09, 0x45, 0x34, 0x02, 0xb8, 0xab, 0x29, 0x53, 0x12, 0xa8, 0x9a, 0x89, 0xc9, 0xdf, - 0xcb, 0x09, 0x42, 0x25, 0x82, 0xc9, 0xab, 0x09, 0x53, 0x33, 0x01, 0x99, 0x08, 0x31, 0x23, 0x80, - 0x30, 0x57, 0x33, 0x92, 0xcd, 0xad, 0x09, 0x22, 0x12, 0xb8, 0xad, 0x19, 0x73, 0x23, 0x82, 0xa9, - 0x8a, 0x40, 0x24, 0x03, 0x98, 0x09, 0x01, 0xc8, 0xcf, 0xbc, 0x09, 0x43, 0x24, 0xa8, 0xcd, 0xbb, - 0x89, 0x21, 0x81, 0xca, 0xbb, 0x9a, 0x10, 0x91, 0xba, 0x19, 0x56, 0x33, 0xb1, 0xde, 0xaa, 0x20, - 0x53, 0x12, 0xa9, 0x9b, 0x40, 0x55, 0x22, 0x80, 0xaa, 0x89, 0x31, 0x33, 0xa0, 0xcb, 0x8b, 0x98, - 0xfa, 0xce, 0xaa, 0x28, 0x45, 0x13, 0x90, 0xbc, 0x9a, 0x30, 0x35, 0x12, 0x98, 0x89, 0x41, 0x43, - 0x12, 0x88, 0x21, 0x46, 0x12, 0xc9, 0xcd, 0x9a, 0x10, 0x23, 0x82, 0xdb, 0xaa, 0x41, 0x35, 0x23, - 0x98, 0x9b, 0x28, 0x36, 0x23, 0x91, 0xaa, 0x89, 0x81, 0xfb, 0xbe, 0x9c, 0x20, 0x44, 0x01, 0xda, - 0xbc, 0xaa, 0x00, 0x11, 0xa8, 0xcc, 0x9a, 0x08, 0x11, 0x90, 0x9a, 0x30, 0x46, 0x02, 0xea, 0xbc, - 0x89, 0x32, 0x35, 0x81, 0xa9, 0x1a, 0x73, 0x43, 0x02, 0x99, 0x9a, 0x30, 0x35, 0x01, 0xc9, 0xac, - 0x99, 0x89, 0xeb, 0xbc, 0x0a, 0x62, 0x43, 0x01, 0xc9, 0xba, 0x08, 0x53, 0x23, 0x91, 0x99, 0x28, - 0x54, 0x23, 0x02, 0x10, 0x32, 0x25, 0xa1, 0xde, 0xac, 0x09, 0x31, 0x22, 0xa8, 0xbc, 0x19, 0x73, - 0x33, 0x01, 0x99, 0x09, 0x44, 0x34, 0x82, 0xb9, 0xaa, 0x09, 0x98, 0xce, 0xad, 0x09, 0x42, 0x23, - 0xb8, 0xcf, 0xbb, 0x89, 0x00, 0xa0, 0xeb, 0xab, 0x09, 0x21, 0x12, 0x90, 0x09, 0x31, 0x15, 0xd8, - 0xbe, 0x9c, 0x28, 0x44, 0x12, 0x88, 0x9a, 0x31, 0x46, 0x23, 0x80, 0xa9, 0x18, 0x44, 0x22, 0xa8, - 0xbd, 0xbb, 0x99, 0xba, 0xce, 0xaa, 0x20, 0x36, 0x14, 0xa0, 0xbb, 0x8b, 0x42, 0x34, 0x02, 0xb9, - 0x09, 0x55, 0x34, 0x23, 0x01, 0x11, 0x22, 0x82, 0xfc, 0xbc, 0x9b, 0x10, 0x33, 0x81, 0xca, 0x9a, - 0x52, 0x35, 0x13, 0x88, 0x89, 0x63, 0x44, 0x22, 0x98, 0xba, 0xab, 0x99, 0xba, 0xbe, 0xab, 0x42, - 0x25, 0x91, 0xdd, 0xac, 0x9b, 0x08, 0x88, 0xcb, 0xbd, 0x9a, 0x20, 0x22, 0x02, 0x00, 0x10, 0x21, - 0xc8, 0xcf, 0xbc, 0x09, 0x42, 0x43, 0x01, 0x08, 0x28, 0x44, 0x24, 0x01, 0x98, 0x18, 0x54, 0x43, - 0x81, 0xca, 0xbc, 0xab, 0xaa, 0xba, 0xab, 0x29, 0x55, 0x24, 0x80, 0xca, 0x8a, 0x20, 0x44, 0x12, - 0xa8, 0x9a, 0x50, 0x36, 0x25, 0x22, 0x11, 0x11, 0x80, 0xda, 0xcc, 0xab, 0x89, 0x22, 0x12, 0xa8, - 0x9a, 0x21, 0x46, 0x33, 0x00, 0x19, 0x72, 0x54, 0x22, 0x81, 0xa9, 0xbb, 0xbb, 0xba, 0xbb, 0x9b, - 0x40, 0x35, 0xa2, 0xde, 0xbc, 0xab, 0x99, 0xa8, 0xdc, 0xcc, 0xaa, 0x08, 0x31, 0x32, 0x21, 0x11, - 0x80, 0xca, 0xce, 0xac, 0x8a, 0x31, 0x43, 0x03, 0x00, 0x31, 0x54, 0x24, 0x12, 0x88, 0x18, 0x73, - 0x43, 0x02, 0xa9, 0xcc, 0xcb, 0xaa, 0xab, 0x9a, 0x18, 0x34, 0x25, 0x80, 0xba, 0x9b, 0x42, 0x35, - 0x13, 0xc9, 0xab, 0x28, 0x57, 0x43, 0x33, 0x22, 0x22, 0x80, 0xda, 0xcc, 0xab, 0x89, 0x10, 0x01, - 0x98, 0x0a, 0x41, 0x35, 0x23, 0x90, 0x8a, 0x73, 0x46, 0x33, 0x11, 0x98, 0xbb, 0xbc, 0xcb, 0xaa, - 0x0a, 0x41, 0x43, 0x81, 0xec, 0xcb, 0xaa, 0x88, 0x88, 0xdb, 0xcd, 0xaa, 0x8a, 0x10, 0x32, 0x32, - 0x23, 0x13, 0xb9, 0xdf, 0xcb, 0x8a, 0x10, 0x22, 0x12, 0x01, 0x42, 0x36, 0x24, 0x01, 0x99, 0x89, - 0x44, 0x45, 0x22, 0x90, 0xba, 0xbd, 0xbc, 0xbb, 0xaa, 0x28, 0x44, 0x23, 0x91, 0xdb, 0x9b, 0x31, - 0x45, 0x12, 0xa0, 0xac, 0x0a, 0x42, 0x36, 0x34, 0x33, 0x24, 0x02, 0xb9, 0xcd, 0xbb, 0x9a, 0x11, - 0x10, 0xa9, 0x9a, 0x41, 0x36, 0x13, 0xa0, 0xab, 0x48, 0x57, 0x33, 0x13, 0x91, 0xb9, 0xca, 0xbc, - 0xcb, 0x8a, 0x31, 0x35, 0x83, 0xea, 0xcc, 0x9a, 0x08, 0x01, 0xb9, 0xce, 0xac, 0x9a, 0x00, 0x21, - 0x21, 0x43, 0x32, 0x80, 0xdc, 0xcc, 0x9a, 0x18, 0x22, 0x02, 0x80, 0x18, 0x55, 0x43, 0x12, 0x99, - 0x9a, 0x40, 0x45, 0x33, 0x81, 0xb9, 0xcb, 0xbc, 0xcc, 0xab, 0x0a, 0x51, 0x33, 0x02, 0xca, 0xad, - 0x18, 0x53, 0x23, 0x80, 0xdb, 0x9a, 0x10, 0x44, 0x24, 0x33, 0x34, 0x23, 0x91, 0xdc, 0xbc, 0x8a, - 0x18, 0x11, 0x98, 0xab, 0x19, 0x64, 0x33, 0x81, 0xbb, 0x8c, 0x63, 0x35, 0x14, 0x01, 0x98, 0x9a, - 0xca, 0xcb, 0xab, 0x19, 0x45, 0x23, 0xa0, 0xbe, 0xac, 0x89, 0x21, 0x80, 0xfb, 0xdb, 0x9a, 0x88, - 0x10, 0x11, 0x31, 0x43, 0x13, 0xb8, 0xcf, 0xbb, 0x09, 0x31, 0x22, 0x90, 0x89, 0x62, 0x45, 0x22, - 0x90, 0xba, 0x09, 0x73, 0x34, 0x02, 0x90, 0xba, 0xcb, 0xdb, 0xcb, 0x9b, 0x20, 0x54, 0x12, 0xa0, - 0xbc, 0x8b, 0x41, 0x34, 0x03, 0xb9, 0xad, 0x89, 0x42, 0x34, 0x42, 0x43, 0x33, 0x13, 0xc9, 0xcd, - 0xab, 0x09, 0x21, 0x81, 0xba, 0x9b, 0x51, 0x45, 0x02, 0xa8, 0xac, 0x28, 0x64, 0x33, 0x02, 0x90, - 0xa8, 0xb9, 0xdb, 0xbc, 0x9b, 0x42, 0x26, 0x02, 0xca, 0xbd, 0x9a, 0x20, 0x12, 0xb8, 0xde, 0xab, - 0x8a, 0x18, 0x11, 0x11, 0x43, 0x24, 0x82, 0xeb, 0xcc, 0x9a, 0x10, 0x32, 0x01, 0xa9, 0x19, 0x55, - 0x24, 0x12, 0xb9, 0xab, 0x40, 0x45, 0x23, 0x00, 0xa9, 0xbb, 0xdb, 0xbc, 0xbc, 0x0a, 0x52, 0x24, - 0x02, 0xcb, 0xac, 0x19, 0x53, 0x33, 0x90, 0xcb, 0x9b, 0x28, 0x44, 0x33, 0x43, 0x44, 0x22, 0x81, - 0xeb, 0xcb, 0x8a, 0x10, 0x02, 0xa0, 0xbb, 0x1a, 0x45, 0x34, 0x91, 0xca, 0x8b, 0x51, 0x35, 0x23, - 0x81, 0x98, 0xa9, 0xca, 0xbc, 0xad, 0x08, 0x44, 0x33, 0xa0, 0xdd, 0xab, 0x88, 0x22, 0x01, 0xdb, - 0xcd, 0x9a, 0x09, 0x10, 0x01, 0x31, 0x43, 0x33, 0xb8, 0xcf, 0xbb, 0x89, 0x32, 0x13, 0xa0, 0x9a, - 0x61, 0x45, 0x23, 0x90, 0xbb, 0x0a, 0x73, 0x24, 0x03, 0x90, 0xaa, 0xbb, 0xcc, 0xcc, 0x9a, 0x28, - 0x63, 0x13, 0xa0, 0xcc, 0x9a, 0x31, 0x44, 0x02, 0xb8, 0xbb, 0x8a, 0x42, 0x34, 0x24, 0x34, 0x34, - 0x22, 0xb9, 0xce, 0xab, 0x88, 0x22, 0x81, 0xba, 0x9c, 0x40, 0x44, 0x13, 0xb8, 0xac, 0x19, 0x64, - 0x33, 0x12, 0x90, 0xa8, 0xa9, 0xcc, 0xbc, 0x9a, 0x41, 0x35, 0x03, 0xda, 0xcc, 0x8a, 0x18, 0x22, - 0xa8, 0xcd, 0xac, 0x8a, 0x08, 0x01, 0x21, 0x42, 0x43, 0x82, 0xda, 0xbd, 0xab, 0x10, 0x33, 0x01, - 0xaa, 0x19, 0x56, 0x34, 0x02, 0xb8, 0xab, 0x38, 0x56, 0x22, 0x01, 0x99, 0xba, 0xcb, 0xcc, 0xcb, - 0x89, 0x42, 0x24, 0x02, 0xca, 0xbc, 0x08, 0x43, 0x24, 0x81, 0xbb, 0xbb, 0x10, 0x54, 0x32, 0x34, - 0x34, 0x24, 0x81, 0xda, 0xbc, 0x9a, 0x18, 0x12, 0x98, 0xbc, 0x19, 0x73, 0x33, 0x81, 0xbb, 0x8c, - 0x41, 0x45, 0x23, 0x01, 0x98, 0x99, 0xbb, 0xcd, 0xbb, 0x19, 0x45, 0x33, 0xa0, 0xdd, 0xab, 0x89, - 0x22, 0x01, 0xea, 0xbc, 0x9c, 0x89, 0x00, 0x01, 0x22, 0x44, 0x22, 0xa8, 0xcd, 0xac, 0x8a, 0x21, - 0x22, 0x90, 0x8a, 0x51, 0x45, 0x23, 0x80, 0xba, 0x89, 0x63, 0x25, 0x13, 0x90, 0xaa, 0xbb, 0xcd, - 0xcb, 0xaa, 0x28, 0x44, 0x23, 0xa8, 0xcc, 0x9b, 0x21, 0x45, 0x02, 0x98, 0xbb, 0x8a, 0x31, 0x45, - 0x43, 0x43, 0x43, 0x12, 0xa8, 0xbd, 0xac, 0x89, 0x11, 0x80, 0xb9, 0x9b, 0x41, 0x36, 0x13, 0xa8, - 0xbb, 0x29, 0x56, 0x34, 0x12, 0x81, 0xa8, 0xb9, 0xcc, 0xbc, 0x8a, 0x31, 0x36, 0x12, 0xda, 0xcc, - 0x9a, 0x18, 0x01, 0xb0, 0xdc, 0xac, 0x9a, 0x09, 0x00, 0x31, 0x43, 0x24, 0x82, 0xea, 0xdb, 0x9a, - 0x08, 0x12, 0x81, 0x98, 0x20, 0x55, 0x34, 0x02, 0x98, 0x9a, 0x20, 0x46, 0x23, 0x02, 0xa0, 0xca, - 0xdb, 0xcc, 0xba, 0x09, 0x41, 0x24, 0x01, 0xca, 0xbb, 0x08, 0x53, 0x14, 0x81, 0xb9, 0xaa, 0x28, - 0x53, 0x44, 0x53, 0x43, 0x23, 0x80, 0xca, 0xbc, 0xaa, 0x08, 0x81, 0xa8, 0xab, 0x28, 0x46, 0x24, - 0x80, 0xa9, 0x0a, 0x62, 0x35, 0x23, 0x12, 0x80, 0xb9, 0xcc, 0xcc, 0xaa, 0x28, 0x53, 0x13, 0xb0, - 0xcd, 0xac, 0x09, 0x00, 0x90, 0xdb, 0xcc, 0xba, 0x99, 0x88, 0x11, 0x53, 0x33, 0x23, 0xc8, 0xcd, - 0xbb, 0x89, 0x10, 0x01, 0x80, 0x28, 0x64, 0x34, 0x23, 0x81, 0x99, 0x20, 0x55, 0x43, 0x21, 0x80, - 0xa9, 0xcc, 0xbc, 0xbd, 0x99, 0x20, 0x43, 0x12, 0xb9, 0xbc, 0x8a, 0x41, 0x34, 0x12, 0x99, 0xbb, - 0x09, 0x52, 0x44, 0x45, 0x44, 0x22, 0x02, 0xa8, 0xbc, 0xab, 0x89, 0x88, 0xa9, 0x9c, 0x19, 0x63, - 0x43, 0x01, 0xa8, 0x09, 0x42, 0x36, 0x34, 0x22, 0x11, 0x90, 0xdb, 0xcc, 0xac, 0x09, 0x32, 0x24, - 0x90, 0xeb, 0xbb, 0x9a, 0x88, 0xa8, 0xcd, 0xbc, 0xac, 0xaa, 0x99, 0x09, 0x41, 0x35, 0x23, 0x90, - 0xdc, 0xab, 0x9a, 0x08, 0x80, 0xa9, 0x29, 0x55, 0x35, 0x33, 0x01, 0x89, 0x20, 0x54, 0x33, 0x23, - 0x11, 0x81, 0xda, 0xce, 0xbc, 0xab, 0x19, 0x43, 0x12, 0xb0, 0xcb, 0x8a, 0x31, 0x34, 0x02, 0xa9, - 0x9a, 0x20, 0x44, 0x24, 0x55, 0x54, 0x43, 0x12, 0x90, 0xba, 0xab, 0x99, 0x98, 0xda, 0xbb, 0x09, - 0x44, 0x24, 0x02, 0xa9, 0x89, 0x63, 0x44, 0x23, 0x12, 0x11, 0x12, 0xb8, 0xde, 0xcb, 0x99, 0x31, - 0x24, 0x91, 0xdb, 0xac, 0x8a, 0x08, 0xa8, 0xdc, 0xbc, 0xab, 0xaa, 0xaa, 0xaa, 0x29, 0x55, 0x24, - 0x01, 0xca, 0xcb, 0x8a, 0x08, 0x80, 0xba, 0x9b, 0x73, 0x45, 0x22, 0x00, 0x89, 0x28, 0x54, 0x33, - 0x12, 0x80, 0x08, 0x98, 0xfb, 0xcc, 0xac, 0x88, 0x22, 0x13, 0xa8, 0xbd, 0x8a, 0x41, 0x33, 0x02, - 0xca, 0xaa, 0x30, 0x44, 0x22, 0x32, 0x56, 0x35, 0x14, 0x81, 0xb9, 0xaa, 0x09, 0x81, 0xc9, 0xbd, - 0x9b, 0x41, 0x34, 0x03, 0xa9, 0x9b, 0x51, 0x45, 0x33, 0x11, 0x08, 0x11, 0x12, 0xda, 0xbe, 0xab, - 0x38, 0x44, 0x01, 0xdb, 0xbc, 0x89, 0x10, 0x91, 0xfb, 0xbc, 0xbb, 0x89, 0x90, 0xa9, 0x9a, 0x30, - 0x37, 0x03, 0xc8, 0xcc, 0x8a, 0x10, 0x11, 0xba, 0xbe, 0x18, 0x64, 0x33, 0x01, 0x98, 0x89, 0x53, - 0x35, 0x12, 0x80, 0x89, 0x08, 0x90, 0xdd, 0xbc, 0x9b, 0x30, 0x34, 0x90, 0xdc, 0xaa, 0x20, 0x25, - 0x03, 0xb9, 0xac, 0x09, 0x53, 0x33, 0x02, 0x31, 0x46, 0x34, 0x03, 0xb8, 0xbb, 0x89, 0x32, 0xa1, - 0xdf, 0xab, 0x19, 0x34, 0x24, 0xa0, 0xbb, 0x19, 0x55, 0x34, 0x02, 0x90, 0x08, 0x10, 0x80, 0xeb, - 0xbc, 0x08, 0x43, 0x14, 0xc8, 0xbd, 0x9b, 0x10, 0x22, 0xc0, 0xdd, 0xbb, 0x9a, 0x00, 0x80, 0xaa, - 0x09, 0x42, 0x34, 0x90, 0xdd, 0xaa, 0x18, 0x32, 0xa1, 0xdc, 0x9b, 0x51, 0x44, 0x12, 0x98, 0x9a, - 0x20, 0x46, 0x33, 0x81, 0x99, 0x9a, 0x08, 0xb9, 0xce, 0xab, 0x28, 0x53, 0x02, 0xea, 0xcb, 0x09, - 0x43, 0x33, 0x90, 0xdb, 0x9b, 0x30, 0x44, 0x22, 0x10, 0x41, 0x34, 0x24, 0x98, 0xbb, 0x9b, 0x41, - 0x14, 0xb8, 0xbf, 0x9b, 0x31, 0x35, 0x82, 0xc9, 0x9b, 0x41, 0x45, 0x23, 0x91, 0x99, 0x88, 0x01, - 0x98, 0xcd, 0x8a, 0x41, 0x34, 0xa1, 0xdd, 0xbb, 0x09, 0x32, 0x03, 0xec, 0xbc, 0xab, 0x08, 0x01, - 0x91, 0xa9, 0x18, 0x33, 0x02, 0xed, 0xac, 0x0a, 0x42, 0x13, 0xb9, 0xbe, 0x09, 0x63, 0x24, 0x81, - 0xa9, 0x89, 0x53, 0x35, 0x12, 0x98, 0x9a, 0x8a, 0x88, 0xca, 0xbd, 0x89, 0x43, 0x24, 0xb8, 0xce, - 0x9b, 0x21, 0x35, 0x12, 0xc9, 0xcb, 0x09, 0x42, 0x33, 0x13, 0x11, 0x42, 0x34, 0x01, 0xda, 0x9b, - 0x28, 0x44, 0x01, 0xeb, 0xbb, 0x1a, 0x53, 0x33, 0xa8, 0xbc, 0x1a, 0x64, 0x43, 0x02, 0x98, 0x99, - 0x88, 0x80, 0xb9, 0xac, 0x30, 0x46, 0x12, 0xda, 0xcd, 0x8a, 0x10, 0x23, 0xa0, 0xdd, 0xbb, 0x8a, - 0x10, 0x11, 0x98, 0x98, 0x11, 0x02, 0xd9, 0xbe, 0x8c, 0x20, 0x24, 0x82, 0xdb, 0xab, 0x40, 0x44, - 0x13, 0xa8, 0xab, 0x48, 0x55, 0x23, 0x01, 0xa9, 0xab, 0x99, 0x99, 0xdb, 0x9a, 0x41, 0x35, 0x81, - 0xdc, 0xac, 0x1a, 0x42, 0x24, 0x91, 0xda, 0x9a, 0x18, 0x53, 0x32, 0x11, 0x21, 0x32, 0x12, 0xc8, - 0xbd, 0x89, 0x53, 0x33, 0xb0, 0xdd, 0x9a, 0x20, 0x34, 0x82, 0xca, 0x9b, 0x40, 0x46, 0x22, 0x81, - 0xa9, 0x99, 0x89, 0x98, 0xaa, 0x29, 0x65, 0x23, 0xb0, 0xde, 0xab, 0x09, 0x32, 0x12, 0xea, 0xbd, - 0xab, 0x09, 0x21, 0x11, 0x08, 0x88, 0x00, 0xc9, 0xdd, 0xab, 0x19, 0x53, 0x23, 0xa8, 0xcc, 0x89, - 0x43, 0x25, 0x01, 0xaa, 0x8a, 0x73, 0x34, 0x13, 0x90, 0xba, 0xab, 0xaa, 0xba, 0xab, 0x40, 0x46, - 0x13, 0xc9, 0xbe, 0x9c, 0x20, 0x34, 0x13, 0xb9, 0xbd, 0x8a, 0x32, 0x36, 0x32, 0x21, 0x22, 0x11, - 0xb8, 0xdc, 0xaa, 0x31, 0x36, 0x02, 0xca, 0xcb, 0x09, 0x42, 0x23, 0xa8, 0xbd, 0x19, 0x54, 0x25, - 0x12, 0x88, 0xaa, 0x9a, 0xa9, 0x99, 0x19, 0x73, 0x34, 0x02, 0xdc, 0xbc, 0x9b, 0x10, 0x33, 0xa1, - 0xed, 0xcb, 0x8a, 0x18, 0x11, 0x11, 0x00, 0x08, 0xa9, 0xcd, 0xbc, 0x9a, 0x41, 0x43, 0x82, 0xb9, - 0xab, 0x30, 0x46, 0x12, 0xa8, 0xaa, 0x48, 0x47, 0x23, 0x02, 0xa8, 0xbb, 0xac, 0xba, 0x9a, 0x20, - 0x55, 0x33, 0x90, 0xdd, 0xbb, 0x0a, 0x43, 0x24, 0x92, 0xca, 0xbb, 0x18, 0x63, 0x43, 0x32, 0x22, - 0x02, 0x98, 0xcc, 0xab, 0x19, 0x44, 0x14, 0x80, 0xbb, 0x9b, 0x30, 0x34, 0x82, 0xcc, 0x9b, 0x61, - 0x45, 0x23, 0x01, 0xa8, 0xbb, 0xbb, 0xab, 0x09, 0x73, 0x35, 0x13, 0xc8, 0xbe, 0xbb, 0x09, 0x31, - 0x02, 0xe9, 0xcc, 0xbb, 0x89, 0x20, 0x31, 0x22, 0x01, 0xb8, 0xde, 0xbc, 0x9a, 0x18, 0x53, 0x12, - 0x90, 0xa9, 0x19, 0x52, 0x33, 0x90, 0xba, 0x19, 0x57, 0x35, 0x12, 0x81, 0xb9, 0xdb, 0xbb, 0xaa, - 0x19, 0x54, 0x24, 0x02, 0xda, 0xbc, 0x9a, 0x20, 0x34, 0x03, 0xb8, 0xbc, 0x8b, 0x31, 0x46, 0x34, - 0x33, 0x22, 0x90, 0xeb, 0xbb, 0x8a, 0x42, 0x34, 0x11, 0xa9, 0xaa, 0x18, 0x32, 0x03, 0xeb, 0xbb, - 0x40, 0x56, 0x24, 0x12, 0x81, 0xa9, 0xbc, 0xbc, 0x9a, 0x31, 0x37, 0x24, 0x90, 0xdb, 0xbc, 0x8a, - 0x18, 0x12, 0xa8, 0xdc, 0xac, 0x9b, 0x88, 0x11, 0x33, 0x24, 0x91, 0xeb, 0xcd, 0xaa, 0x09, 0x21, - 0x14, 0x01, 0x98, 0x08, 0x22, 0x14, 0x81, 0xbb, 0x09, 0x65, 0x35, 0x24, 0x11, 0x88, 0xca, 0xdb, - 0xbb, 0x8a, 0x51, 0x34, 0x14, 0xa8, 0xbc, 0xac, 0x08, 0x31, 0x23, 0x91, 0xcb, 0xaa, 0x19, 0x63, - 0x44, 0x35, 0x23, 0x02, 0xca, 0xbc, 0xab, 0x20, 0x34, 0x23, 0x90, 0x99, 0x20, 0x32, 0x82, 0xfb, - 0xbb, 0x28, 0x65, 0x34, 0x22, 0x11, 0x80, 0xda, 0xcc, 0xba, 0x19, 0x73, 0x33, 0x02, 0xc9, 0xbd, - 0xaa, 0x08, 0x10, 0x98, 0xcb, 0xad, 0xbb, 0x9a, 0x88, 0x32, 0x36, 0x14, 0xb0, 0xce, 0xbc, 0x8a, - 0x20, 0x22, 0x12, 0x88, 0x18, 0x43, 0x23, 0x90, 0xbc, 0x9b, 0x73, 0x35, 0x24, 0x12, 0x00, 0x98, - 0xeb, 0xcc, 0x9b, 0x18, 0x54, 0x23, 0x81, 0xda, 0xab, 0x8a, 0x21, 0x13, 0x91, 0xb9, 0x9b, 0x08, - 0x42, 0x54, 0x55, 0x43, 0x13, 0x90, 0xcc, 0xbb, 0x09, 0x32, 0x24, 0x81, 0x88, 0x20, 0x33, 0x13, - 0xfb, 0xac, 0x09, 0x53, 0x34, 0x23, 0x11, 0x10, 0x98, 0xec, 0xbc, 0x9c, 0x21, 0x36, 0x23, 0xa0, - 0xcc, 0xbb, 0x89, 0x01, 0x90, 0xdb, 0xcb, 0xaa, 0x99, 0x9a, 0x08, 0x63, 0x44, 0x01, 0xda, 0xbd, - 0x9c, 0x08, 0x21, 0x12, 0x08, 0x08, 0x32, 0x35, 0x81, 0xcb, 0x9c, 0x28, 0x55, 0x32, 0x11, 0x80, - 0x00, 0xa8, 0xdd, 0xbc, 0x8a, 0x41, 0x35, 0x13, 0xb8, 0xcc, 0x8a, 0x10, 0x12, 0x80, 0xba, 0x9a, - 0x20, 0x33, 0x33, 0x65, 0x55, 0x33, 0x03, 0xda, 0xbc, 0x8b, 0x20, 0x33, 0x02, 0x98, 0x28, 0x45, - 0x23, 0xa8, 0xcd, 0x9b, 0x31, 0x45, 0x13, 0x01, 0x00, 0x00, 0xa8, 0xce, 0xbc, 0x09, 0x63, 0x24, - 0x82, 0xc9, 0xbb, 0x9a, 0x00, 0x80, 0xea, 0xcb, 0x9a, 0x08, 0x98, 0x99, 0x29, 0x64, 0x33, 0xa0, - 0xcf, 0xcb, 0x99, 0x11, 0x12, 0x00, 0x09, 0x31, 0x45, 0x12, 0xb8, 0xcc, 0x89, 0x52, 0x43, 0x12, - 0x08, 0x08, 0x88, 0xb9, 0xcf, 0xab, 0x29, 0x54, 0x24, 0x80, 0xba, 0xbb, 0x08, 0x23, 0x82, 0xda, - 0xbb, 0x28, 0x34, 0x23, 0x21, 0x64, 0x45, 0x23, 0x90, 0xdc, 0xab, 0x09, 0x22, 0x13, 0x80, 0x19, - 0x62, 0x34, 0x82, 0xda, 0xac, 0x19, 0x53, 0x33, 0x11, 0x98, 0x08, 0x80, 0xc9, 0xce, 0x9b, 0x38, - 0x46, 0x22, 0xa8, 0xdb, 0x9a, 0x08, 0x01, 0xc8, 0xcc, 0xaa, 0x09, 0x01, 0x88, 0x8a, 0x30, 0x36, - 0x04, 0xe9, 0xcc, 0xab, 0x08, 0x21, 0x02, 0x88, 0x18, 0x45, 0x43, 0x91, 0xcb, 0xab, 0x38, 0x55, - 0x22, 0x81, 0x89, 0x88, 0x88, 0xda, 0xcc, 0x9a, 0x51, 0x34, 0x12, 0xb8, 0xbc, 0x0a, 0x31, 0x13, - 0xd8, 0xbc, 0x8a, 0x41, 0x24, 0x12, 0x10, 0x44, 0x35, 0x02, 0xc9, 0xbd, 0x9b, 0x20, 0x23, 0x82, - 0x89, 0x40, 0x46, 0x22, 0xa0, 0xcc, 0x9a, 0x30, 0x45, 0x12, 0x90, 0x98, 0x80, 0x88, 0xea, 0xcb, - 0x89, 0x53, 0x34, 0x82, 0xda, 0xab, 0x89, 0x11, 0x90, 0xdd, 0xcb, 0x89, 0x10, 0x01, 0x90, 0x89, - 0x41, 0x43, 0x90, 0xde, 0xcb, 0x8a, 0x10, 0x11, 0x90, 0x88, 0x52, 0x35, 0x23, 0xb9, 0xbd, 0x8b, - 0x52, 0x34, 0x12, 0x98, 0x99, 0x88, 0x99, 0xcd, 0xac, 0x18, 0x54, 0x14, 0x81, 0xba, 0x9b, 0x20, - 0x33, 0xa2, 0xde, 0xaa, 0x18, 0x34, 0x33, 0x01, 0x21, 0x45, 0x33, 0x91, 0xdd, 0xbb, 0x09, 0x21, - 0x03, 0x88, 0x29, 0x65, 0x34, 0x01, 0xc9, 0xac, 0x09, 0x53, 0x33, 0x01, 0x99, 0x9a, 0x88, 0xb8, - 0xdc, 0xab, 0x30, 0x47, 0x12, 0xa8, 0xbc, 0x9b, 0x20, 0x02, 0xfa, 0xcc, 0x9b, 0x09, 0x22, 0x01, - 0x88, 0x08, 0x42, 0x12, 0xfb, 0xbd, 0xac, 0x88, 0x11, 0x81, 0x98, 0x30, 0x46, 0x24, 0x81, 0xca, - 0x9c, 0x18, 0x34, 0x24, 0x80, 0xa9, 0x99, 0x89, 0xb9, 0xcc, 0x0a, 0x52, 0x35, 0x03, 0xb9, 0xbc, - 0x18, 0x53, 0x12, 0xca, 0xbe, 0x99, 0x31, 0x35, 0x22, 0x10, 0x22, 0x43, 0x02, 0xd9, 0xbd, 0x9b, - 0x10, 0x12, 0x91, 0x89, 0x72, 0x45, 0x23, 0x90, 0xdb, 0xaa, 0x30, 0x35, 0x23, 0x90, 0xb9, 0x9a, - 0x99, 0xca, 0xac, 0x1a, 0x45, 0x24, 0x81, 0xbc, 0xac, 0x08, 0x22, 0xc0, 0xed, 0xbb, 0x9a, 0x20, - 0x23, 0x01, 0x80, 0x18, 0x12, 0xc9, 0xdf, 0xbb, 0x8a, 0x18, 0x00, 0x99, 0x19, 0x74, 0x34, 0x23, - 0xa8, 0xbd, 0x8a, 0x41, 0x34, 0x13, 0x98, 0xab, 0x9b, 0xba, 0xdb, 0x9a, 0x50, 0x35, 0x24, 0x98, - 0xca, 0x89, 0x52, 0x23, 0xb0, 0xdd, 0xab, 0x19, 0x53, 0x33, 0x23, 0x21, 0x22, 0x12, 0xc8, 0xcd, - 0xab, 0x09, 0x11, 0x80, 0x9a, 0x50, 0x47, 0x34, 0x02, 0xb9, 0xac, 0x09, 0x52, 0x24, 0x02, 0x99, - 0xaa, 0xaa, 0xab, 0xac, 0x09, 0x63, 0x34, 0x01, 0xdb, 0xbb, 0x0a, 0x32, 0x02, 0xee, 0xcc, 0xab, - 0x88, 0x21, 0x23, 0x11, 0x00, 0x00, 0xb9, 0xde, 0xbb, 0x9c, 0x09, 0x80, 0xa8, 0x8a, 0x62, 0x55, - 0x32, 0x81, 0xba, 0x9c, 0x18, 0x44, 0x23, 0x81, 0xa9, 0xbc, 0xba, 0xbb, 0x8a, 0x51, 0x45, 0x23, - 0x90, 0xbb, 0x8b, 0x62, 0x34, 0x83, 0xeb, 0xbc, 0x9b, 0x31, 0x44, 0x43, 0x22, 0x21, 0x00, 0xa8, - 0xcc, 0xaa, 0x89, 0x10, 0xa0, 0xba, 0x19, 0x67, 0x44, 0x22, 0x80, 0xba, 0x9a, 0x31, 0x36, 0x13, - 0x81, 0xb9, 0xcc, 0xab, 0xbb, 0x19, 0x53, 0x25, 0x02, 0xda, 0xbb, 0x8a, 0x31, 0x14, 0xd9, 0xbf, - 0xbc, 0x9a, 0x00, 0x32, 0x32, 0x13, 0x81, 0xb9, 0xcf, 0xbb, 0xaa, 0x08, 0x80, 0xca, 0xbb, 0x39, - 0x67, 0x33, 0x12, 0xa8, 0xba, 0x0a, 0x52, 0x34, 0x11, 0x90, 0xca, 0xcc, 0xba, 0x9b, 0x30, 0x46, - 0x23, 0x81, 0xbb, 0xab, 0x51, 0x35, 0x23, 0xb9, 0xbf, 0xab, 0x09, 0x43, 0x34, 0x34, 0x33, 0x01, - 0xb8, 0xcc, 0xab, 0x09, 0x12, 0x91, 0xeb, 0x9b, 0x52, 0x45, 0x24, 0x01, 0x98, 0x8a, 0x28, 0x43, - 0x33, 0x11, 0x98, 0xcc, 0xcc, 0xbb, 0x8b, 0x51, 0x44, 0x02, 0xb9, 0xcc, 0x8a, 0x20, 0x32, 0xa0, - 0xed, 0xbc, 0xaa, 0x89, 0x20, 0x32, 0x34, 0x13, 0xa0, 0xcd, 0xbd, 0x9a, 0x18, 0x01, 0xb8, 0xbc, - 0x8b, 0x63, 0x35, 0x23, 0x80, 0xaa, 0x09, 0x41, 0x43, 0x02, 0x00, 0xb9, 0xdc, 0xbd, 0xbb, 0x19, - 0x45, 0x25, 0x01, 0xb9, 0xbb, 0x28, 0x45, 0x23, 0x91, 0xeb, 0xab, 0x8a, 0x11, 0x53, 0x53, 0x43, - 0x12, 0x90, 0xdb, 0xab, 0x0a, 0x31, 0x12, 0xca, 0xbc, 0x19, 0x55, 0x24, 0x12, 0x90, 0x89, 0x20, - 0x43, 0x13, 0x01, 0x80, 0xa9, 0xce, 0xbd, 0xab, 0x28, 0x45, 0x14, 0xa0, 0xdb, 0x9b, 0x18, 0x33, - 0x12, 0xeb, 0xbd, 0xbb, 0x9a, 0x18, 0x20, 0x44, 0x43, 0x02, 0xca, 0xcd, 0xaa, 0x19, 0x11, 0x81, - 0xda, 0xab, 0x28, 0x45, 0x23, 0x82, 0x99, 0x09, 0x32, 0x25, 0x82, 0x98, 0x99, 0xca, 0xdd, 0xbc, - 0x9a, 0x41, 0x36, 0x13, 0xa8, 0xbc, 0x0a, 0x52, 0x34, 0x02, 0xc9, 0xbb, 0x9b, 0x00, 0x32, 0x44, - 0x45, 0x33, 0x02, 0xca, 0xbd, 0x9a, 0x10, 0xa3, 0x02, 0x01, 0x0d, 0x7d, 0x0b, 0x02, 0xe3, 0x00, - 0xe1, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x4f, 0x77, 0x0b, 0x13, 0xa8, 0x51, - 0x82, 0x8b, 0x26, 0xb8, 0x38, 0x47, 0xc9, 0x11, 0xa0, 0x1a, 0x03, 0xbb, 0x61, 0xf8, 0x18, 0x18, - 0x06, 0xbd, 0x41, 0x13, 0xfb, 0x0a, 0x22, 0xa0, 0xad, 0xab, 0x55, 0xc9, 0x28, 0x04, 0xaa, 0x28, - 0x92, 0x28, 0x88, 0xbb, 0x76, 0xb0, 0x1b, 0x24, 0xa8, 0x9b, 0x21, 0x23, 0xbc, 0x40, 0xa2, 0xbf, - 0xbb, 0x41, 0x91, 0x18, 0x45, 0x04, 0xcb, 0x50, 0x23, 0x90, 0x08, 0xa9, 0xca, 0xce, 0x9a, 0x88, - 0xa9, 0x29, 0x54, 0x81, 0x89, 0x31, 0x12, 0x32, 0x33, 0xc8, 0xcf, 0x8a, 0x42, 0x14, 0x80, 0x20, - 0x02, 0xcb, 0x89, 0x80, 0x9a, 0x18, 0x43, 0x84, 0xcd, 0x8a, 0x21, 0x22, 0x47, 0x13, 0xb9, 0x9a, - 0x52, 0x35, 0x90, 0xaa, 0xa9, 0xfc, 0xab, 0xaa, 0x9a, 0x09, 0x20, 0x43, 0x90, 0x8b, 0x33, 0x02, - 0x73, 0x16, 0xc9, 0xbb, 0x19, 0x45, 0x12, 0x08, 0x31, 0x92, 0xaa, 0x98, 0x88, 0x20, 0x22, 0x45, - 0xa1, 0xbf, 0x18, 0x01, 0x51, 0x36, 0x82, 0xab, 0x8a, 0x64, 0x13, 0xb9, 0x8a, 0xd9, 0xbd, 0xcb, - 0xaa, 0x89, 0x08, 0x30, 0x13, 0xb8, 0x28, 0x13, 0x30, 0x77, 0x81, 0xca, 0x9b, 0x48, 0x34, 0x82, - 0x10, 0x24, 0x98, 0x99, 0xa9, 0x18, 0x23, 0x21, 0x36, 0xe9, 0x8b, 0x00, 0x19, 0x76, 0x12, 0x90, - 0xa9, 0x28, 0x45, 0x91, 0x9a, 0xa8, 0xec, 0xbb, 0xcb, 0xaa, 0x88, 0x80, 0x32, 0x83, 0x8a, 0x33, - 0xa0, 0x72, 0x27, 0xa8, 0xab, 0x9b, 0x73, 0x13, 0x80, 0x52, 0x81, 0x89, 0x80, 0xaa, 0x30, 0x83, - 0x40, 0x05, 0xbc, 0x19, 0xa1, 0x5b, 0x57, 0x81, 0x89, 0x90, 0x30, 0x34, 0xb9, 0x09, 0xd8, 0xbf, - 0x9a, 0xcb, 0x8b, 0x80, 0x18, 0x42, 0xa0, 0x18, 0x04, 0x8a, 0x74, 0x82, 0xaa, 0x99, 0x0a, 0x45, - 0x01, 0x18, 0x26, 0xa8, 0x19, 0x91, 0x8b, 0x22, 0x80, 0x61, 0xb2, 0x9d, 0x21, 0xc9, 0x78, 0x24, - 0x98, 0x08, 0x80, 0x42, 0x83, 0xbb, 0x30, 0xfa, 0xbf, 0x98, 0xbb, 0x0a, 0x90, 0x10, 0x14, 0xa9, - 0x51, 0x91, 0x1a, 0x37, 0xb1, 0xab, 0x80, 0x28, 0x26, 0x90, 0x61, 0x04, 0xaa, 0x20, 0xa1, 0x0b, - 0x13, 0x09, 0x34, 0xf8, 0x1b, 0x12, 0xac, 0x73, 0x85, 0x98, 0x18, 0x10, 0x32, 0xc1, 0x8b, 0x14, - 0xed, 0x9b, 0x98, 0xbb, 0x09, 0x80, 0x30, 0x83, 0x9b, 0x46, 0xb0, 0x49, 0x26, 0xb9, 0x8b, 0x10, - 0x40, 0x02, 0x8a, 0x75, 0x81, 0x9a, 0x11, 0xa0, 0x19, 0x01, 0x18, 0x04, 0xcc, 0x39, 0xa3, 0x8d, - 0x56, 0x91, 0x8a, 0x11, 0x21, 0x13, 0xea, 0x29, 0x93, 0xdf, 0x89, 0xa8, 0x9a, 0x08, 0x88, 0x31, - 0xa0, 0x2a, 0x17, 0xb8, 0x61, 0x03, 0xdb, 0x09, 0x11, 0x32, 0xa0, 0x2b, 0x67, 0xa0, 0x89, 0x11, - 0x98, 0x18, 0x80, 0x20, 0xa2, 0x9f, 0x30, 0xa0, 0x3b, 0x57, 0xa0, 0x0a, 0x31, 0x23, 0x92, 0xae, - 0x30, 0xc2, 0xcf, 0x88, 0xa8, 0x8a, 0x88, 0x18, 0x21, 0xb9, 0x50, 0x03, 0x9a, 0x55, 0x92, 0xad, - 0x18, 0x22, 0x13, 0xbb, 0x79, 0x25, 0xa9, 0x1a, 0x02, 0x98, 0x18, 0x08, 0x22, 0xf8, 0x0b, 0x23, - 0xb9, 0x78, 0x16, 0xa9, 0x09, 0x43, 0x23, 0xc9, 0x9b, 0x42, 0xe8, 0xad, 0x88, 0xa9, 0x99, 0x08, - 0x10, 0x81, 0x9a, 0x73, 0x81, 0x19, 0x45, 0xb8, 0xac, 0x30, 0x53, 0x91, 0xab, 0x72, 0x03, 0xaa, - 0x29, 0x02, 0x89, 0x80, 0x20, 0x83, 0xdd, 0x29, 0x03, 0x9a, 0x75, 0x82, 0xba, 0x28, 0x45, 0x02, - 0xda, 0x09, 0x12, 0xeb, 0x9c, 0x88, 0xa9, 0x89, 0x09, 0x21, 0xa8, 0x1a, 0x45, 0x90, 0x40, 0x14, - 0xea, 0x9a, 0x32, 0x25, 0xb0, 0x8b, 0x45, 0x92, 0x9a, 0x28, 0x01, 0x80, 0x98, 0x32, 0xc1, 0xae, - 0x21, 0x92, 0x39, 0x57, 0x90, 0xab, 0x40, 0x45, 0x91, 0xcb, 0x28, 0x81, 0xbd, 0xab, 0x99, 0x99, - 0xaa, 0x29, 0x03, 0xdb, 0x40, 0x04, 0x08, 0x44, 0x92, 0xbd, 0x8a, 0x54, 0x14, 0xba, 0x19, 0x25, - 0xa1, 0x99, 0x10, 0x11, 0x91, 0x89, 0x24, 0xf9, 0x8a, 0x13, 0x88, 0x71, 0x13, 0xaa, 0x9b, 0x71, - 0x26, 0xb0, 0xab, 0x21, 0xb8, 0xbd, 0xab, 0x9a, 0x90, 0xbb, 0x30, 0xa2, 0x9f, 0x52, 0x81, 0x20, - 0x25, 0xb9, 0xbc, 0x19, 0x47, 0x83, 0xbb, 0x48, 0x13, 0x98, 0x98, 0x00, 0x42, 0xa0, 0x2a, 0x04, - 0xcd, 0x29, 0x02, 0x19, 0x46, 0x91, 0xaa, 0x89, 0x74, 0x14, 0xc8, 0x8a, 0x01, 0xc9, 0xaa, 0xba, - 0x0a, 0x90, 0x9c, 0x31, 0xd8, 0x0a, 0x15, 0x80, 0x52, 0x83, 0xdb, 0x9a, 0x20, 0x47, 0x91, 0x9b, - 0x32, 0x82, 0x09, 0x88, 0x19, 0x25, 0xa8, 0x28, 0xc3, 0xaf, 0x21, 0x91, 0x58, 0x25, 0xa9, 0x9a, - 0x18, 0x56, 0x03, 0xcb, 0x1a, 0x90, 0xbb, 0xba, 0xbd, 0x18, 0xa0, 0x8c, 0x12, 0xdb, 0x28, 0x14, - 0x09, 0x46, 0xa0, 0xbb, 0x98, 0x61, 0x26, 0xa8, 0x0a, 0x22, 0x90, 0x28, 0x98, 0x3a, 0x26, 0xa9, - 0x30, 0xe8, 0x8c, 0x22, 0x98, 0x72, 0x03, 0xca, 0x88, 0x20, 0x46, 0x92, 0xac, 0x18, 0xa9, 0x9c, - 0xa8, 0xac, 0x28, 0xa8, 0x1a, 0x91, 0xae, 0x41, 0x81, 0x49, 0x26, 0xb9, 0x9c, 0x00, 0x62, 0x23, - 0xba, 0x28, 0x83, 0x99, 0x32, 0xc9, 0x58, 0x14, 0x99, 0x01, 0xfb, 0x19, 0x02, 0x1a, 0x56, 0x91, - 0xab, 0x18, 0x41, 0x35, 0xb0, 0x9c, 0x80, 0xdb, 0x0a, 0xb9, 0x9c, 0x20, 0xa8, 0x19, 0xc8, 0x8d, - 0x23, 0x90, 0x71, 0x05, 0xca, 0x89, 0x10, 0x63, 0x82, 0xa9, 0x21, 0x90, 0x0a, 0x14, 0xa9, 0x50, - 0x03, 0x09, 0xa0, 0xaf, 0x38, 0x91, 0x48, 0x37, 0xc0, 0x9a, 0x10, 0x43, 0x14, 0xb9, 0x8a, 0xb8, - 0xbf, 0x08, 0xb9, 0x8c, 0x11, 0x98, 0x80, 0xeb, 0x19, 0x13, 0x0a, 0x66, 0x91, 0xcb, 0x19, 0x31, - 0x34, 0x91, 0x0a, 0x13, 0xcb, 0x49, 0x13, 0x9b, 0x62, 0x02, 0x08, 0xda, 0x9b, 0x22, 0xa0, 0x72, - 0x27, 0xba, 0x8a, 0x22, 0x44, 0x81, 0xaa, 0x08, 0xfb, 0xab, 0x00, 0xba, 0x0b, 0x11, 0x00, 0xc9, - 0xae, 0x20, 0x92, 0x49, 0x37, 0xc0, 0x9c, 0x18, 0x33, 0x14, 0x98, 0x30, 0x91, 0x9e, 0x30, 0x83, - 0x8a, 0x42, 0x13, 0xb1, 0xce, 0x19, 0x01, 0x09, 0x57, 0x82, 0xbb, 0x0a, 0x53, 0x23, 0xa8, 0x89, - 0xa0, 0xef, 0x89, 0x80, 0x99, 0x09, 0x10, 0x81, 0xda, 0x8b, 0x12, 0x98, 0x71, 0x15, 0xc9, 0x9b, - 0x30, 0x25, 0x01, 0x09, 0x33, 0xd9, 0x9b, 0x33, 0x82, 0x09, 0x42, 0x24, 0xd8, 0xad, 0x20, 0x80, - 0x49, 0x27, 0xa1, 0xbb, 0x18, 0x45, 0x82, 0xa9, 0x10, 0xd8, 0xae, 0x09, 0x88, 0x99, 0x88, 0x31, - 0x91, 0xbf, 0x08, 0x82, 0x89, 0x55, 0x82, 0xbc, 0x9a, 0x62, 0x13, 0xa0, 0x30, 0x04, 0xdb, 0x09, - 0x22, 0x81, 0x80, 0x31, 0x25, 0xfa, 0x0b, 0x11, 0x99, 0x72, 0x13, 0xb8, 0xbb, 0x40, 0x26, 0xa1, - 0x8a, 0x12, 0xfb, 0xac, 0x08, 0x90, 0x88, 0x89, 0x42, 0xb0, 0xae, 0x20, 0x98, 0x39, 0x36, 0xb0, - 0xbc, 0x0a, 0x55, 0x02, 0x99, 0x42, 0x92, 0xad, 0x18, 0x11, 0x11, 0x88, 0x40, 0x04, 0xdc, 0x19, - 0x81, 0x09, 0x45, 0x82, 0xaa, 0x9a, 0x61, 0x14, 0xb8, 0x2a, 0x83, 0xde, 0x9a, 0x80, 0x08, 0x90, - 0x09, 0x33, 0xf8, 0x9b, 0x11, 0xb8, 0x61, 0x13, 0xba, 0xac, 0x29, 0x47, 0x91, 0x0a, 0x34, 0xb0, - 0xac, 0x10, 0x11, 0x12, 0x98, 0x71, 0xa2, 0xbc, 0x38, 0x90, 0x39, 0x47, 0x90, 0x9a, 0x89, 0x63, - 0x03, 0xcb, 0x20, 0xa2, 0xcf, 0x89, 0x08, 0x00, 0x88, 0x19, 0x14, 0xdb, 0x0a, 0x01, 0x8b, 0x73, - 0x92, 0xba, 0x9a, 0x40, 0x27, 0xa0, 0x29, 0x15, 0xc8, 0x8a, 0x10, 0x20, 0x02, 0x99, 0x44, 0xb0, - 0x9e, 0x11, 0x98, 0x60, 0x14, 0xa9, 0x89, 0x08, 0x54, 0x91, 0x9c, 0x31, 0xc8, 0xae, 0x88, 0x88, - 0x11, 0x98, 0x28, 0x84, 0xcc, 0x19, 0xa1, 0x1a, 0x36, 0xb8, 0xab, 0x89, 0x72, 0x15, 0xa9, 0x40, - 0x03, 0xca, 0x0a, 0x00, 0x31, 0x82, 0x09, 0x35, 0xe9, 0x0b, 0x11, 0x8a, 0x55, 0x83, 0xaa, 0x89, - 0x30, 0x36, 0xc8, 0x8b, 0x24, 0xfa, 0x9b, 0x89, 0x08, 0x12, 0x99, 0x31, 0xb2, 0xaf, 0x00, 0xb8, - 0x58, 0x14, 0xca, 0x8a, 0x18, 0x73, 0x02, 0x9a, 0x62, 0x92, 0xab, 0x09, 0x08, 0x43, 0x92, 0x19, - 0x05, 0xda, 0x19, 0x81, 0x3a, 0x47, 0x90, 0x9a, 0x00, 0x41, 0x23, 0xcc, 0x2a, 0x83, 0xdd, 0x9b, - 0x98, 0x28, 0x02, 0x98, 0x32, 0xd8, 0x9c, 0x81, 0xab, 0x72, 0x93, 0xbc, 0x89, 0x31, 0x36, 0x91, - 0x1b, 0x37, 0xa0, 0xab, 0x88, 0x18, 0x44, 0x80, 0x28, 0x81, 0xad, 0x10, 0xa8, 0x71, 0x16, 0xa8, - 0x89, 0x10, 0x43, 0x91, 0xbc, 0x30, 0xc1, 0xbe, 0x9b, 0x9a, 0x31, 0x03, 0x88, 0x13, 0xcc, 0x0b, - 0xc8, 0x0b, 0x37, 0xc0, 0xac, 0x00, 0x43, 0x23, 0xb8, 0x50, 0x15, 0xa8, 0x9b, 0x99, 0x30, 0x26, - 0x00, 0x00, 0xb0, 0x8a, 0x91, 0x0b, 0x77, 0x84, 0xa9, 0x19, 0x31, 0x33, 0xd9, 0x9b, 0x12, 0xf9, - 0xac, 0xaa, 0x89, 0x32, 0x12, 0x18, 0xa0, 0xac, 0x90, 0xcd, 0x38, 0x07, 0xc9, 0x9b, 0x21, 0x35, - 0x01, 0x8a, 0x63, 0x82, 0xa9, 0x99, 0x9b, 0x61, 0x23, 0x00, 0x90, 0xaa, 0x20, 0xd8, 0x59, 0x37, - 0xa1, 0xaa, 0x28, 0x44, 0x82, 0xcb, 0x09, 0x91, 0xdc, 0xab, 0xcb, 0x19, 0x32, 0x13, 0x81, 0xcb, - 0x19, 0xd8, 0x9d, 0x52, 0x91, 0xcc, 0x89, 0x42, 0x24, 0x98, 0x29, 0x25, 0x90, 0x89, 0xb9, 0x8b, - 0x63, 0x22, 0x02, 0xc9, 0x1a, 0x03, 0xbc, 0x72, 0x17, 0x99, 0x99, 0x21, 0x24, 0xa0, 0xac, 0x01, - 0xc8, 0xac, 0xb9, 0xbc, 0x10, 0x33, 0x33, 0xc1, 0x9c, 0x21, 0xfa, 0x1b, 0x43, 0xd8, 0xab, 0x19, - 0x54, 0x02, 0x99, 0x41, 0x03, 0x99, 0x00, 0xdb, 0x09, 0x33, 0x34, 0x82, 0xae, 0x38, 0x92, 0x8c, - 0x65, 0x82, 0xaa, 0x88, 0x42, 0x15, 0xc9, 0x0a, 0x81, 0xcb, 0x9a, 0xc9, 0xab, 0x21, 0x42, 0x24, - 0xd9, 0x0a, 0x03, 0xcc, 0x28, 0x84, 0xda, 0x9a, 0x20, 0x45, 0x91, 0x8a, 0x34, 0xa1, 0x09, 0x81, - 0xdb, 0x18, 0x23, 0x53, 0xa1, 0x9e, 0x41, 0xa0, 0x2a, 0x36, 0xa0, 0x9a, 0x18, 0x73, 0x83, 0xbc, - 0x29, 0xb1, 0xbd, 0x08, 0xca, 0x0b, 0x11, 0x52, 0x13, 0xeb, 0x18, 0x82, 0xad, 0x31, 0xa1, 0xbd, - 0x8a, 0x51, 0x25, 0xa8, 0x29, 0x24, 0xb8, 0x18, 0x92, 0xac, 0x10, 0x22, 0x27, 0xc0, 0x0c, 0x23, - 0xc8, 0x48, 0x15, 0xa9, 0x89, 0x20, 0x54, 0xa1, 0x9d, 0x10, 0xb8, 0x9d, 0x00, 0xba, 0x09, 0x11, - 0x63, 0x82, 0xbc, 0x31, 0xb1, 0x8e, 0x32, 0xd9, 0xab, 0x09, 0x63, 0x14, 0xaa, 0x40, 0x03, 0xab, - 0x30, 0xa1, 0x9c, 0x01, 0x42, 0x25, 0xea, 0x19, 0x13, 0xa9, 0x72, 0x02, 0xab, 0x88, 0x32, 0x27, - 0xc8, 0x8b, 0x11, 0xeb, 0x8a, 0x80, 0xaa, 0x08, 0x20, 0x45, 0xa1, 0x9c, 0x32, 0xd8, 0x1a, 0x03, - 0xfb, 0x8b, 0x28, 0x63, 0x82, 0xaa, 0x43, 0x92, 0x9b, 0x32, 0xc0, 0x8a, 0x10, 0x62, 0x84, 0xcb, - 0x38, 0x84, 0x0a, 0x45, 0xa1, 0xab, 0x10, 0x53, 0x14, 0xdb, 0x1a, 0x91, 0xbd, 0x1a, 0x90, 0x9b, - 0x08, 0x41, 0x26, 0xb0, 0x0c, 0x22, 0xca, 0x28, 0xa2, 0xcf, 0x89, 0x21, 0x34, 0x91, 0x0b, 0x35, - 0xb0, 0x0b, 0x14, 0xa8, 0x8a, 0x08, 0x45, 0x92, 0x9e, 0x31, 0x81, 0x39, 0x27, 0xb8, 0x8b, 0x30, - 0x54, 0x92, 0xbc, 0x19, 0xc0, 0xbd, 0x18, 0x90, 0x9a, 0x80, 0x62, 0x14, 0xb9, 0x2a, 0x82, 0xab, - 0x42, 0xf8, 0xad, 0x09, 0x42, 0x23, 0xa8, 0x39, 0x25, 0xba, 0x29, 0x13, 0xa9, 0xaa, 0x28, 0x47, - 0xb0, 0x8c, 0x33, 0x00, 0x72, 0x03, 0xda, 0x89, 0x42, 0x43, 0xa8, 0x9d, 0x00, 0xda, 0x9c, 0x00, - 0x90, 0x98, 0x18, 0x53, 0x03, 0xbb, 0x20, 0xa1, 0x1b, 0x05, 0xee, 0x9b, 0x18, 0x34, 0x03, 0x99, - 0x51, 0x82, 0xab, 0x20, 0x13, 0x99, 0xcb, 0x40, 0x25, 0xc9, 0x1a, 0x13, 0x41, 0x36, 0xa1, 0xbc, - 0x08, 0x45, 0x13, 0xda, 0x0a, 0xa0, 0xdc, 0x8a, 0x08, 0x00, 0x99, 0x28, 0x45, 0x91, 0x89, 0x00, - 0x99, 0x32, 0xe0, 0xbf, 0x9b, 0x31, 0x35, 0x91, 0x19, 0x43, 0xa0, 0x8b, 0x11, 0x23, 0xa0, 0xae, - 0x41, 0x83, 0xab, 0x21, 0x10, 0x67, 0x23, 0xc9, 0x9a, 0x28, 0x37, 0x91, 0xbb, 0x08, 0xda, 0xad, - 0x8a, 0x08, 0x01, 0xa8, 0x48, 0x25, 0x90, 0x18, 0xa8, 0x29, 0x16, 0xfb, 0xac, 0x89, 0x41, 0x14, - 0x98, 0x20, 0x03, 0xa9, 0x09, 0x00, 0x34, 0xb0, 0x9e, 0x23, 0xa1, 0x19, 0x92, 0x6a, 0x57, 0x81, - 0xaa, 0x89, 0x40, 0x25, 0xb0, 0x9b, 0x80, 0xec, 0x9a, 0x99, 0x18, 0x02, 0x9a, 0x51, 0x03, 0x18, - 0x02, 0xcc, 0x51, 0x93, 0xce, 0xaa, 0x09, 0x63, 0x82, 0x89, 0x32, 0x91, 0x9a, 0x81, 0x18, 0x44, - 0xb8, 0x0c, 0x13, 0xaa, 0x52, 0xb8, 0x78, 0x27, 0xa0, 0x9a, 0x08, 0x51, 0x13, 0xca, 0x09, 0xb0, - 0xbe, 0x8a, 0xaa, 0x30, 0x03, 0x9b, 0x44, 0x81, 0x30, 0xa4, 0x9e, 0x63, 0xa0, 0xbd, 0x8a, 0x18, - 0x25, 0x91, 0x19, 0x15, 0xa8, 0x09, 0x91, 0x18, 0x16, 0xb8, 0x19, 0xa1, 0x1a, 0x16, 0xc9, 0x71, - 0x05, 0xa8, 0x8a, 0x10, 0x42, 0x92, 0xbb, 0x10, 0xf9, 0xac, 0x88, 0x9a, 0x31, 0x82, 0x0a, 0x33, - 0x89, 0x55, 0xc0, 0x1b, 0x26, 0xd8, 0x9c, 0x89, 0x20, 0x14, 0x98, 0x48, 0x03, 0xba, 0x20, 0xa8, - 0x58, 0x14, 0xaa, 0x08, 0xb9, 0x58, 0x85, 0x9b, 0x75, 0x82, 0xaa, 0x88, 0x11, 0x43, 0xb0, 0x8c, - 0x11, 0xdd, 0x9a, 0x90, 0x9a, 0x33, 0x92, 0x19, 0x82, 0x29, 0x47, 0xc9, 0x39, 0x15, 0xeb, 0x8b, - 0x88, 0x41, 0x02, 0x8a, 0x52, 0x91, 0x9b, 0x12, 0xa8, 0x50, 0x04, 0xaa, 0x90, 0xba, 0x72, 0x92, - 0x0b, 0x57, 0x91, 0x9b, 0x18, 0x21, 0x14, 0xc9, 0x1a, 0x91, 0xbf, 0x8a, 0x98, 0x0a, 0x24, 0x80, - 0x10, 0x98, 0x58, 0x15, 0xbb, 0x60, 0x93, 0xcd, 0x8a, 0x00, 0x32, 0x91, 0x09, 0x36, 0xa8, 0x0b, - 0x02, 0x99, 0x62, 0x02, 0x9a, 0xc9, 0x8b, 0x45, 0xa0, 0x49, 0x27, 0xb0, 0x9a, 0x20, 0x42, 0x82, - 0xbc, 0x28, 0xd0, 0xae, 0x09, 0xa9, 0x18, 0x23, 0x01, 0x81, 0x9b, 0x73, 0x84, 0x9b, 0x53, 0xb1, - 0xaf, 0x8a, 0x21, 0x22, 0xa8, 0x38, 0x17, 0xb9, 0x19, 0x82, 0x89, 0x53, 0x82, 0xa8, 0xcc, 0x2a, - 0x25, 0xa8, 0x61, 0x15, 0xb9, 0x8a, 0x31, 0x24, 0xa0, 0x9d, 0x11, 0xfa, 0xab, 0x88, 0x99, 0x28, - 0x33, 0x12, 0xb8, 0x0b, 0x57, 0x91, 0x0a, 0x24, 0xe8, 0xac, 0x09, 0x22, 0x02, 0x9a, 0x62, 0x02, - 0xab, 0x18, 0x81, 0x08, 0x34, 0x13, 0xea, 0xbd, 0x30, 0x14, 0x09, 0x73, 0x83, 0xba, 0x0a, 0x63, - 0x12, 0xba, 0x1b, 0x91, 0xdf, 0x9a, 0x88, 0x89, 0x10, 0x43, 0x02, 0xca, 0x39, 0x35, 0x98, 0x38, - 0x03, 0xed, 0x9c, 0x29, 0x32, 0xa0, 0x1a, 0x35, 0xa1, 0x9b, 0x10, 0x81, 0x20, 0x53, 0x24, 0xfb, - 0x9d, 0x31, 0x01, 0x28, 0x25, 0x81, 0xbb, 0x19, 0x37, 0x92, 0xac, 0x18, 0xc0, 0xcd, 0x99, 0x89, - 0x08, 0x10, 0x44, 0x92, 0xbb, 0x50, 0x13, 0x08, 0x22, 0xb0, 0xcf, 0xab, 0x40, 0x13, 0xba, 0x40, - 0x15, 0x99, 0x0a, 0x08, 0x01, 0x01, 0x61, 0x04, 0xec, 0x0a, 0x12, 0x01, 0x32, 0x14, 0xa8, 0xaa, - 0x48, 0x27, 0xb0, 0x9b, 0x02, 0xfb, 0xbb, 0xa9, 0x89, 0x00, 0x20, 0x47, 0xa1, 0x8c, 0x31, 0x01, - 0x21, 0x03, 0xcc, 0xcb, 0x8c, 0x51, 0x81, 0xaa, 0x53, 0x81, 0x99, 0x88, 0x08, 0x21, 0x80, 0x72, - 0x95, 0xbd, 0x19, 0x12, 0x30, 0x25, 0x91, 0x89, 0x99, 0x61, 0x15, 0xca, 0x09, 0x92, 0xbd, 0x9b, - 0xba, 0x19, 0x81, 0x50, 0x36, 0xb8, 0x0b, 0x33, 0x10, 0x54, 0xa0, 0xbc, 0xaa, 0x0b, 0x54, 0xa0, - 0x0b, 0x26, 0xa0, 0x09, 0x90, 0x09, 0x23, 0x98, 0x75, 0xa1, 0xae, 0x10, 0x00, 0x51, 0x03, 0xa8, - 0x08, 0x88, 0x72, 0x82, 0xac, 0x28, 0xb8, 0xae, 0xa9, 0xaa, 0x28, 0x80, 0x61, 0x15, 0xb9, 0x29, - 0x02, 0x30, 0x27, 0xc8, 0x9b, 0x99, 0x19, 0x24, 0xd9, 0x28, 0x15, 0x9a, 0x18, 0xa8, 0x29, 0x14, - 0x89, 0x36, 0xd0, 0x9d, 0x01, 0x00, 0x54, 0x81, 0xa9, 0x10, 0x00, 0x43, 0xb1, 0x9e, 0x11, 0xda, - 0xab, 0xa8, 0x9c, 0x20, 0x80, 0x72, 0x03, 0xba, 0x20, 0x81, 0x72, 0x14, 0xcb, 0x9a, 0x88, 0x20, - 0x83, 0xbc, 0x61, 0x82, 0xaa, 0x11, 0xb8, 0x48, 0x83, 0x29, 0x27, 0xda, 0x8b, 0x00, 0x48, 0x37, - 0xa1, 0x8b, 0x11, 0x21, 0x23, 0xfa, 0x8a, 0x82, 0xcd, 0x8a, 0xa9, 0x8b, 0x12, 0x00, 0x74, 0x81, - 0x8a, 0x10, 0x08, 0x55, 0x93, 0xcc, 0x09, 0x08, 0x11, 0x90, 0x8c, 0x43, 0xb1, 0x8a, 0x03, 0xbb, - 0x52, 0x82, 0x38, 0x06, 0xeb, 0x89, 0x88, 0x71, 0x15, 0xa8, 0x89, 0x21, 0x21, 0x82, 0xcc, 0x19, - 0xb1, 0xaf, 0x89, 0xb9, 0x0a, 0x12, 0x20, 0x45, 0x91, 0x0a, 0x80, 0x38, 0x77, 0xa1, 0xbb, 0x08, - 0x01, 0x11, 0xba, 0x2a, 0x16, 0xb8, 0x19, 0x82, 0x8c, 0x42, 0x81, 0x40, 0x91, 0xbc, 0x9a, 0x8b, - 0x77, 0x05, 0xa9, 0x19, 0x21, 0x12, 0xa8, 0x9c, 0x10, 0xea, 0x9c, 0x98, 0xaa, 0x19, 0x12, 0x21, - 0x25, 0x91, 0x00, 0xb9, 0x71, 0x47, 0xb8, 0x9c, 0x18, 0x11, 0x91, 0xab, 0x40, 0x02, 0xbb, 0x30, - 0xa1, 0x0a, 0x34, 0x11, 0x22, 0xc8, 0xac, 0xeb, 0x3b, 0x77, 0x83, 0xaa, 0x29, 0x43, 0x01, 0xca, - 0x89, 0x91, 0xdc, 0x9a, 0x99, 0xaa, 0x10, 0x22, 0x33, 0x23, 0x31, 0xa2, 0xaf, 0x75, 0x04, 0xc9, - 0x9b, 0x21, 0x12, 0xb9, 0x8b, 0x43, 0xa0, 0x8c, 0x21, 0x98, 0x18, 0x32, 0x23, 0xb0, 0x8b, 0xa1, - 0xff, 0x5a, 0x27, 0x91, 0x9b, 0x38, 0x25, 0xa1, 0xab, 0x19, 0xc0, 0xbd, 0x9a, 0xa8, 0x9a, 0x10, - 0x43, 0x13, 0x10, 0x35, 0xc0, 0x1c, 0x56, 0x92, 0xda, 0x99, 0x32, 0x02, 0xbc, 0x29, 0x03, 0xb9, - 0x1a, 0x11, 0x08, 0x00, 0x61, 0x13, 0xdb, 0x38, 0xb2, 0xcf, 0x71, 0x13, 0xa0, 0x9b, 0x51, 0x24, - 0xb8, 0x8c, 0x00, 0xc9, 0x9c, 0x89, 0x99, 0x98, 0x18, 0x34, 0x92, 0x39, 0x27, 0xb9, 0x39, 0x37, - 0xa1, 0xbc, 0x0b, 0x44, 0xa2, 0xac, 0x30, 0x91, 0x9b, 0x10, 0x08, 0x11, 0x88, 0x71, 0x93, 0xbc, - 0x42, 0xc1, 0x8d, 0x54, 0x02, 0x99, 0x9a, 0x63, 0x04, 0xc9, 0x09, 0x91, 0xcb, 0x9a, 0xa8, 0x89, - 0x90, 0x28, 0x26, 0xa0, 0x58, 0x14, 0xba, 0x60, 0x13, 0xa9, 0xbc, 0x29, 0x45, 0xb0, 0x9c, 0x22, - 0xb0, 0x8a, 0x01, 0x08, 0x12, 0x99, 0x73, 0xc2, 0x8c, 0x33, 0xd8, 0x2b, 0x27, 0x81, 0x99, 0x09, - 0x64, 0x82, 0xcb, 0x18, 0xa0, 0xad, 0x89, 0x99, 0x08, 0x90, 0x38, 0x16, 0xa9, 0x61, 0x83, 0x9b, - 0x53, 0x82, 0xba, 0xbb, 0x58, 0x17, 0xb9, 0x0a, 0x13, 0xca, 0x19, 0x80, 0x28, 0x03, 0x8b, 0x36, - 0xe8, 0x1b, 0x24, 0xc9, 0x38, 0x25, 0x98, 0x98, 0x18, 0x57, 0x90, 0xab, 0x10, 0xd8, 0xab, 0x98, - 0x99, 0x10, 0x99, 0x61, 0x83, 0xab, 0x55, 0xa2, 0x09, 0x43, 0xa0, 0x9b, 0x9b, 0x71, 0x14, 0xdb, - 0x18, 0x82, 0xab, 0x18, 0x80, 0x20, 0x83, 0x2b, 0x26, 0xdc, 0x39, 0x04, 0xaa, 0x61, 0x02, 0x99, - 0x80, 0x40, 0x27, 0xc0, 0x9a, 0x01, 0xdb, 0x9a, 0x98, 0x8a, 0x11, 0x89, 0x62, 0x91, 0x1b, 0x46, - 0xa0, 0x28, 0x13, 0xba, 0x9a, 0x89, 0x65, 0x82, 0xad, 0x30, 0xb0, 0x9c, 0x01, 0x88, 0x32, 0x91, - 0x39, 0x85, 0xaf, 0x30, 0x83, 0x8a, 0x36, 0xa0, 0x09, 0x11, 0x73, 0x24, 0xda, 0x89, 0xa1, 0xbd, - 0x9a, 0xa8, 0x09, 0x02, 0x88, 0x35, 0xb8, 0x5a, 0x26, 0x88, 0x30, 0xa2, 0xac, 0x08, 0x10, 0x36, - 0xb1, 0x9d, 0x22, 0xea, 0x0a, 0x00, 0x08, 0x32, 0x90, 0x30, 0xd2, 0x9e, 0x32, 0x82, 0x38, 0x15, - 0xba, 0x39, 0x34, 0x45, 0x83, 0xbc, 0x09, 0xfa, 0xbc, 0x89, 0x99, 0x18, 0x01, 0x28, 0x13, 0xc9, - 0x71, 0x23, 0x10, 0x14, 0xc9, 0x8c, 0x20, 0x31, 0x15, 0xb9, 0x1a, 0x92, 0xcf, 0x09, 0x81, 0x18, - 0x23, 0x80, 0x11, 0xfa, 0x8a, 0x24, 0x11, 0x53, 0xa1, 0xad, 0x31, 0x44, 0x22, 0xb0, 0xab, 0xa8, - 0xef, 0x9b, 0x89, 0x89, 0x10, 0x01, 0x11, 0x81, 0x0a, 0x55, 0x22, 0x52, 0x92, 0xcc, 0x0a, 0x42, - 0x22, 0x91, 0x9a, 0x12, 0xf9, 0xac, 0x08, 0x80, 0x21, 0x22, 0x10, 0xb0, 0xae, 0x18, 0x23, 0x55, - 0x14, 0xd9, 0x8a, 0x51, 0x33, 0x81, 0xaa, 0x08, 0xfa, 0xbd, 0x9a, 0x99, 0x09, 0x11, 0x21, 0x02, - 0x9a, 0x50, 0x23, 0x54, 0x35, 0xb8, 0xbd, 0x28, 0x53, 0x12, 0x9a, 0x28, 0x92, 0xbe, 0x8b, 0x98, - 0x18, 0x22, 0x33, 0x12, 0xed, 0x0a, 0x11, 0x28, 0x67, 0x81, 0xbb, 0x09, 0x63, 0x23, 0xb8, 0x0a, - 0x01, 0xde, 0xaa, 0xa9, 0x99, 0x10, 0x10, 0x33, 0xa0, 0x0c, 0x34, 0x81, 0x75, 0x13, 0xca, 0xab, - 0x31, 0x35, 0x92, 0x9b, 0x42, 0xc1, 0xad, 0x88, 0x98, 0x10, 0x02, 0x22, 0xa3, 0xbf, 0x20, 0xa1, - 0x58, 0x37, 0xa0, 0xac, 0x18, 0x63, 0x12, 0xba, 0x29, 0xa2, 0xcf, 0x8a, 0x99, 0x09, 0x00, 0x11, - 0x23, 0xc9, 0x29, 0x15, 0x09, 0x66, 0x92, 0xca, 0x89, 0x21, 0x25, 0xb0, 0x0a, 0x24, 0xc9, 0x9b, - 0x90, 0x89, 0x21, 0x10, 0x52, 0xc0, 0x9d, 0x31, 0xa8, 0x70, 0x15, 0xb8, 0xab, 0x20, 0x45, 0x92, - 0xab, 0x30, 0xd1, 0xbd, 0x89, 0x99, 0x19, 0x01, 0x30, 0x14, 0xcb, 0x58, 0x82, 0x19, 0x47, 0xa1, - 0xac, 0x09, 0x42, 0x23, 0xc9, 0x29, 0x14, 0xdb, 0x89, 0x90, 0x09, 0x11, 0x00, 0x43, 0xe9, 0x0b, - 0x13, 0xaa, 0x73, 0x07, 0xaa, 0x89, 0x20, 0x34, 0xb1, 0x9c, 0x32, 0xe9, 0xab, 0x98, 0xa9, 0x10, - 0x01, 0x51, 0x92, 0x9c, 0x51, 0xa1, 0x38, 0x47, 0xb8, 0xab, 0x18, 0x63, 0x02, 0xba, 0x40, 0x93, - 0xbc, 0x09, 0xa8, 0x19, 0x02, 0x30, 0x15, 0xec, 0x19, 0x02, 0x8a, 0x56, 0x92, 0xbb, 0x89, 0x42, - 0x25, 0xb9, 0x0b, 0x23, 0xec, 0x8b, 0x98, 0x99, 0x11, 0x00, 0x43, 0xb1, 0x8c, 0x34, 0xa8, 0x70, - 0x15, 0xc9, 0x9a, 0x10, 0x44, 0x91, 0x9a, 0x32, 0xb2, 0xae, 0x08, 0x99, 0x10, 0x00, 0x31, 0x93, - 0xcf, 0x20, 0x91, 0x29, 0x47, 0xa1, 0xbb, 0x09, 0x44, 0x13, 0xda, 0x19, 0x82, 0xcd, 0x99, 0x98, - 0x88, 0x01, 0x11, 0x24, 0xb9, 0x2b, 0x15, 0x89, 0x74, 0x03, 0xbc, 0x9a, 0x41, 0x34, 0xa0, 0x0b, - 0x34, 0xc9, 0xab, 0x88, 0x99, 0x20, 0x10, 0x42, 0xd1, 0x9d, 0x30, 0x90, 0x78, 0x25, 0xb8, 0xbb, - 0x20, 0x45, 0x81, 0xbb, 0x20, 0xb0, 0xbf, 0x8a, 0x99, 0x19, 0x11, 0x41, 0x03, 0xbb, 0x49, 0x04, - 0x29, 0x57, 0x91, 0xcb, 0x0a, 0x52, 0x23, 0xa9, 0x29, 0x13, 0xea, 0x9a, 0x99, 0x88, 0x10, 0x20, - 0x23, 0xfa, 0x8c, 0x12, 0x08, 0x64, 0x04, 0xb9, 0xab, 0x41, 0x25, 0xa1, 0x9c, 0x10, 0xc9, 0xbc, - 0xa9, 0x89, 0x18, 0x21, 0x53, 0x92, 0xab, 0x32, 0x82, 0x72, 0x27, 0xa8, 0xac, 0x19, 0x63, 0x12, - 0x9a, 0x20, 0x82, 0xdb, 0x9a, 0x99, 0x08, 0x00, 0x32, 0x83, 0xce, 0x09, 0x01, 0x41, 0x37, 0x83, - 0xcb, 0x9b, 0x62, 0x14, 0xa9, 0x8a, 0x80, 0xeb, 0xab, 0x9b, 0x09, 0x00, 0x32, 0x26, 0x98, 0x0a, - 0x02, 0x20, 0x57, 0x02, 0xb9, 0xbc, 0x38, 0x37, 0x81, 0x09, 0x11, 0xa0, 0xbb, 0xad, 0x8a, 0x80, - 0x08, 0x34, 0xc0, 0xac, 0x10, 0x08, 0x75, 0x23, 0x91, 0xca, 0x8a, 0x54, 0x02, 0xaa, 0x88, 0xca, - 0xcb, 0xcb, 0xab, 0x00, 0x10, 0x62, 0x03, 0xa9, 0x11, 0x90, 0x70, 0x25, 0x91, 0xaa, 0xac, 0x61, - 0x33, 0x88, 0x20, 0x91, 0xaa, 0xba, 0xbf, 0x09, 0x80, 0x29, 0x15, 0xca, 0x1a, 0x90, 0x4a, 0x57, - 0x01, 0x88, 0xa9, 0x19, 0x35, 0xa0, 0x89, 0xa0, 0xbf, 0xa9, 0xda, 0x9a, 0x01, 0x10, 0x53, 0x91, - 0x09, 0x12, 0x9b, 0x75, 0x03, 0x99, 0xa9, 0x8a, 0x64, 0x02, 0x18, 0x22, 0xc8, 0x8a, 0xc0, 0xad, - 0x00, 0x98, 0x30, 0x93, 0xae, 0x11, 0xb8, 0x78, 0x26, 0x90, 0x88, 0x98, 0x20, 0x15, 0xaa, 0x10, - 0xe8, 0xac, 0x89, 0xdb, 0x09, 0x00, 0x20, 0x24, 0xa8, 0x38, 0xa3, 0x0d, 0x47, 0x91, 0x9a, 0x90, - 0x18, 0x35, 0x91, 0x40, 0x04, 0xcb, 0x08, 0xc0, 0xab, 0x00, 0x98, 0x32, 0xe1, 0x8b, 0x23, 0xbc, - 0x73, 0x17, 0x99, 0x80, 0x80, 0x21, 0x91, 0x8b, 0x23, 0xfc, 0x8d, 0x90, 0xaa, 0x08, 0x81, 0x31, - 0x04, 0x9a, 0x52, 0xb0, 0x3b, 0x47, 0xb0, 0x8a, 0x81, 0x21, 0x15, 0x89, 0x72, 0x92, 0xbb, 0x10, - 0xc8, 0x9b, 0x80, 0x88, 0x13, 0xfb, 0x29, 0x83, 0x9c, 0x66, 0x82, 0x9a, 0x10, 0x00, 0x12, 0xc9, - 0x2a, 0x04, 0xde, 0x0a, 0x90, 0xaa, 0x18, 0x10, 0x41, 0x92, 0x1b, 0x34, 0xd9, 0x58, 0x15, 0xaa, - 0x0a, 0x11, 0x32, 0x82, 0x1b, 0x67, 0xa0, 0x9b, 0x11, 0xc9, 0x0a, 0x88, 0x18, 0x81, 0xbd, 0x50, - 0xa1, 0x1a, 0x57, 0x91, 0x8a, 0x10, 0x12, 0x81, 0xcc, 0x30, 0xb2, 0xcf, 0x09, 0x90, 0x9a, 0x10, - 0x10, 0x33, 0xb8, 0x49, 0x15, 0xbb, 0x73, 0x84, 0xbb, 0x18, 0x32, 0x23, 0xc8, 0x48, 0x27, 0xc8, - 0x8a, 0x01, 0xb9, 0x89, 0x88, 0x10, 0xc8, 0x8d, 0x32, 0xc0, 0x68, 0x25, 0xa8, 0x8a, 0x32, 0x23, - 0xc8, 0x9e, 0x31, 0xc0, 0xae, 0x08, 0x98, 0x99, 0x10, 0x21, 0x13, 0xaa, 0x71, 0x82, 0x8b, 0x55, - 0xa1, 0xac, 0x10, 0x34, 0x01, 0xab, 0x71, 0x13, 0xca, 0x0a, 0x01, 0xba, 0x99, 0x08, 0x01, 0xdc, - 0x1a, 0x14, 0x99, 0x72, 0x15, 0xaa, 0x09, 0x53, 0x02, 0xda, 0x0a, 0x22, 0xea, 0x9c, 0x80, 0x90, - 0x89, 0x10, 0x32, 0x91, 0x0a, 0x45, 0xa0, 0x29, 0x27, 0xc8, 0xab, 0x41, 0x34, 0xa0, 0x8b, 0x54, - 0x82, 0xbb, 0x19, 0x81, 0xba, 0x9b, 0x10, 0xc0, 0xbe, 0x30, 0x83, 0x1a, 0x67, 0x01, 0xab, 0x28, - 0x45, 0x91, 0xdb, 0x19, 0x02, 0xdb, 0x9b, 0x08, 0x88, 0x89, 0x30, 0x24, 0xb8, 0x38, 0x16, 0x98, - 0x51, 0x03, 0xfb, 0x8b, 0x62, 0x23, 0xb9, 0x1a, 0x36, 0x90, 0xab, 0x08, 0x81, 0xb9, 0x8c, 0x10, - 0xe9, 0x9b, 0x32, 0x80, 0x60, 0x25, 0x90, 0x9c, 0x48, 0x35, 0xb0, 0xad, 0x20, 0x90, 0xcc, 0x9a, - 0x00, 0x08, 0x89, 0x41, 0x83, 0xaa, 0x62, 0x82, 0x08, 0x34, 0xb1, 0xce, 0x0a, 0x45, 0x03, 0xba, - 0x48, 0x14, 0x98, 0x9a, 0x88, 0x01, 0xca, 0x8a, 0x01, 0xce, 0x09, 0x12, 0x08, 0x54, 0x03, 0xa9, - 0x9b, 0x72, 0x26, 0xb9, 0x9c, 0x11, 0xb8, 0xbb, 0xab, 0x18, 0x82, 0x0a, 0x64, 0xa1, 0x0a, 0x34, - 0x90, 0x50, 0x03, 0xda, 0xbb, 0x3a, 0x77, 0x81, 0x9a, 0x21, 0x02, 0x98, 0xa9, 0x09, 0x11, 0xdb, - 0x09, 0xb1, 0xaf, 0x28, 0x81, 0x30, 0x27, 0x91, 0xa9, 0x09, 0x74, 0x13, 0xeb, 0x89, 0x81, 0xa9, - 0xaa, 0x9b, 0x20, 0x92, 0x19, 0x35, 0xc8, 0x39, 0x14, 0x88, 0x54, 0x91, 0xad, 0x9a, 0x40, 0x37, - 0xa0, 0x8a, 0x33, 0x91, 0x88, 0xb9, 0x0a, 0x04, 0xcc, 0x08, 0xd8, 0xac, 0x22, 0x88, 0x72, 0x23, - 0xa9, 0x8a, 0x18, 0x57, 0x92, 0xcb, 0x09, 0xa0, 0xaa, 0xb9, 0x9c, 0x31, 0x92, 0x39, 0x15, 0xca, - 0x41, 0x82, 0x29, 0x27, 0xc8, 0xab, 0x89, 0x72, 0x24, 0xa8, 0x19, 0x13, 0x98, 0x01, 0xca, 0x2a, - 0x83, 0xbd, 0x08, 0xfb, 0x8b, 0x12, 0x88, 0x56, 0x82, 0xaa, 0x80, 0x31, 0x46, 0xb1, 0xac, 0x08, - 0xba, 0x8b, 0xb9, 0x8e, 0x22, 0x81, 0x38, 0x93, 0x9c, 0x63, 0x90, 0x50, 0x14, 0xeb, 0x8a, 0x00, - 0x52, 0x04, 0x99, 0x20, 0x81, 0x09, 0x02, 0xcb, 0x28, 0x92, 0xad, 0x98, 0xce, 0x08, 0x82, 0x39, - 0x47, 0x90, 0x9a, 0x10, 0x41, 0x24, 0xc8, 0xab, 0xa0, 0xcc, 0x08, 0xb9, 0x8b, 0x34, 0x00, 0x30, - 0xb0, 0x2b, 0x26, 0x99, 0x65, 0x92, 0xbd, 0x09, 0x20, 0x44, 0x02, 0x8a, 0x22, 0xa8, 0x38, 0x83, - 0xbe, 0x30, 0x91, 0xac, 0xda, 0xad, 0x20, 0x88, 0x70, 0x15, 0xb8, 0x89, 0x21, 0x42, 0x03, 0xcb, - 0x9a, 0xe9, 0xab, 0x18, 0xca, 0x1a, 0x24, 0x10, 0x00, 0xa9, 0x58, 0x02, 0x2a, 0x67, 0xb0, 0xac, - 0x18, 0x31, 0x43, 0x80, 0x28, 0x82, 0xba, 0x61, 0x81, 0x9c, 0x20, 0x90, 0xba, 0xce, 0x8b, 0x01, - 0x89, 0x75, 0x03, 0xba, 0x1a, 0x42, 0x23, 0x91, 0xac, 0xa8, 0xde, 0x8a, 0x00, 0xaa, 0x18, 0x33, - 0x12, 0xa0, 0x8b, 0x44, 0x90, 0x70, 0x16, 0xc9, 0xab, 0x20, 0x43, 0x12, 0x80, 0x32, 0xa0, 0x9d, - 0x43, 0xa1, 0x9b, 0x30, 0x91, 0xfc, 0xac, 0x09, 0x80, 0x29, 0x57, 0x91, 0xaa, 0x18, 0x43, 0x03, - 0xa9, 0x89, 0xe9, 0xbd, 0x0a, 0x80, 0xa9, 0x28, 0x34, 0x03, 0xbb, 0x29, 0x15, 0x89, 0x65, 0x03, - 0xdc, 0x9a, 0x31, 0x24, 0x80, 0x20, 0x14, 0xba, 0x1b, 0x24, 0x90, 0x9b, 0x30, 0x92, 0xff, 0x9a, - 0x18, 0x89, 0x50, 0x34, 0xa8, 0xab, 0x48, 0x35, 0x91, 0x9a, 0x00, 0xfb, 0xad, 0x08, 0x80, 0x99, - 0x10, 0x34, 0x81, 0x9c, 0x30, 0x81, 0x29, 0x47, 0xa1, 0xcc, 0x0a, 0x42, 0x13, 0x89, 0x52, 0x82, - 0xbb, 0x29, 0x23, 0x90, 0xab, 0x41, 0xb3, 0xff, 0x8a, 0x80, 0x89, 0x63, 0x03, 0xb8, 0xaa, 0x52, - 0x15, 0xa8, 0x09, 0x92, 0xed, 0x9a, 0x08, 0x80, 0x88, 0x10, 0x35, 0xb0, 0x8b, 0x33, 0xa8, 0x60, - 0x25, 0xb9, 0xad, 0x1a, 0x44, 0x82, 0x89, 0x44, 0xa1, 0xab, 0x20, 0x12, 0x80, 0xba, 0x61, 0xb1, - 0xcf, 0x09, 0x80, 0x09, 0x45, 0x81, 0x9a, 0x8a, 0x63, 0x13, 0xca, 0x28, 0xa1, 0xcf, 0x89, 0x08, - 0x00, 0x88, 0x38, 0x34, 0xc9, 0x09, 0x13, 0x99, 0x73, 0x83, 0xcb, 0xab, 0x38, 0x37, 0xa0, 0x29, - 0x26, 0xb8, 0x9a, 0x21, 0x11, 0x91, 0x9b, 0x52, 0xf0, 0xac, 0x00, 0xa8, 0x30, 0x26, 0xa0, 0x99, - 0x19, 0x64, 0x82, 0x9c, 0x20, 0xc0, 0xbd, 0x89, 0x08, 0x10, 0x88, 0x50, 0x04, 0xb9, 0x39, 0x82, - 0x0a, 0x37, 0xb1, 0xcb, 0x9a, 0x50, 0x25, 0xa9, 0x40, 0x14, 0xba, 0x0a, 0x11, 0x21, 0xa2, 0x9b, - 0x34, 0xfb, 0x8f, 0x80, 0x98, 0x41, 0x03, 0xa9, 0x89, 0x38, 0x37, 0xa0, 0x9c, 0x23, 0xfa, 0xab, - 0x89, 0x08, 0x11, 0x98, 0x62, 0x83, 0xab, 0x30, 0xa1, 0x48, 0x27, 0xb9, 0xab, 0x8a, 0x73, 0x04, - 0x9a, 0x51, 0x83, 0xba, 0x09, 0x01, 0x33, 0xb1, 0x0c, 0x04, 0xdd, 0x0b, 0x90, 0x89, 0x45, 0x92, - 0x9a, 0x08, 0x41, 0x26, 0xc9, 0x1a, 0x02, 0xdc, 0xab, 0x98, 0x10, 0x12, 0x89, 0x73, 0x91, 0x8a, - 0x21, 0x99, 0x71, 0x03, 0xdb, 0x99, 0x18, 0x63, 0x81, 0x8a, 0x44, 0xa2, 0xaa, 0x08, 0x28, 0x43, - 0xb0, 0x1a, 0xa3, 0xdf, 0x89, 0x98, 0x28, 0x26, 0xa0, 0x8a, 0x10, 0x63, 0x03, 0xdb, 0x29, 0xa2, - 0xce, 0x9a, 0x89, 0x20, 0x02, 0x08, 0x34, 0xa0, 0x1a, 0x82, 0x0a, 0x67, 0xa1, 0xbb, 0x89, 0x31, - 0x26, 0xa0, 0x29, 0x37, 0x98, 0x9a, 0x88, 0x38, 0x24, 0xa8, 0x19, 0xd8, 0xbd, 0x98, 0xa9, 0x71, - 0x04, 0xa9, 0x09, 0x31, 0x44, 0xa1, 0xac, 0x11, 0xd0, 0xbd, 0xaa, 0x99, 0x32, 0x03, 0x10, 0x24, - 0x98, 0x10, 0xa8, 0x78, 0x26, 0xc8, 0xab, 0x18, 0x42, 0x13, 0xa9, 0x71, 0x23, 0xa9, 0xa9, 0x89, - 0x51, 0x14, 0x98, 0x99, 0xca, 0x9c, 0xaa, 0x0b, 0x56, 0x82, 0xbb, 0x28, 0x44, 0x13, 0xc9, 0x8a, - 0x01, 0xdc, 0xbc, 0xba, 0x0a, 0x43, 0x12, 0x20, 0x01, 0x10, 0x81, 0xab, 0x75, 0x04, 0xda, 0x9a, - 0x21, 0x43, 0x80, 0x1a, 0x44, 0x82, 0x98, 0xa9, 0x8b, 0x54, 0x12, 0x90, 0xca, 0xab, 0xa9, 0xbe, - 0x49, 0x26, 0xa8, 0x9a, 0x30, 0x36, 0x91, 0xba, 0x18, 0xb8, 0xbf, 0xbb, 0xad, 0x19, 0x33, 0x23, - 0x01, 0x09, 0x34, 0xc0, 0x1b, 0x57, 0x90, 0xcb, 0x89, 0x42, 0x13, 0xa9, 0x40, 0x24, 0x88, 0x00, - 0xba, 0x1b, 0x45, 0x22, 0xa0, 0xbe, 0x09, 0xb8, 0xae, 0x51, 0x03, 0xb9, 0x8a, 0x62, 0x24, 0xb8, - 0x8a, 0x01, 0xeb, 0x9b, 0xcb, 0xac, 0x10, 0x42, 0x22, 0xa0, 0x39, 0x25, 0xc9, 0x49, 0x15, 0xb9, - 0xbb, 0x29, 0x55, 0x91, 0x8a, 0x43, 0x82, 0x09, 0x02, 0xcb, 0x29, 0x43, 0x33, 0xd0, 0xae, 0x28, - 0xc8, 0x8c, 0x53, 0x91, 0xaa, 0x19, 0x73, 0x12, 0xca, 0x08, 0x91, 0xbc, 0x99, 0xda, 0x9b, 0x20, - 0x52, 0x13, 0xb9, 0x58, 0x13, 0xac, 0x51, 0x83, 0xcb, 0x9b, 0x40, 0x25, 0xb0, 0x1a, 0x35, 0x98, - 0x29, 0x82, 0xbb, 0x38, 0x53, 0x34, 0xf9, 0x9b, 0x11, 0xd9, 0x1a, 0x25, 0xb8, 0x9a, 0x20, 0x46, - 0x81, 0xac, 0x20, 0xc0, 0xac, 0x80, 0xca, 0x8a, 0x20, 0x43, 0x04, 0xab, 0x51, 0x93, 0x9b, 0x54, - 0x90, 0xac, 0x89, 0x51, 0x23, 0xca, 0x38, 0x15, 0x9a, 0x20, 0x92, 0xab, 0x11, 0x52, 0x24, 0xfb, - 0x8a, 0x02, 0xca, 0x38, 0x05, 0xba, 0x89, 0x31, 0x37, 0xb0, 0x9c, 0x12, 0xe9, 0x8b, 0x80, 0xcb, - 0x09, 0x20, 0x63, 0x92, 0x9b, 0x53, 0xa1, 0x1a, 0x25, 0xc8, 0xab, 0x18, 0x63, 0x83, 0xbb, 0x61, - 0x82, 0x9a, 0x32, 0xa1, 0x8b, 0x10, 0x63, 0x04, 0xcd, 0x19, 0x82, 0x9c, 0x41, 0x91, 0xbb, 0x19, - 0x63, 0x24, 0xd9, 0x0a, 0x02, 0xcc, 0x0a, 0x90, 0xab, 0x09, 0x30, 0x37, 0xa0, 0x1b, 0x34, 0xb0, - 0x48, 0x04, 0xdb, 0x8b, 0x20, 0x35, 0xa2, 0x9c, 0x63, 0xa1, 0x0a, 0x22, 0xa0, 0x09, 0x18, 0x73, - 0x92, 0xae, 0x18, 0x91, 0x0b, 0x53, 0xb8, 0x9d, 0x10, 0x44, 0x02, 0xdb, 0x29, 0xa1, 0xbd, 0x09, - 0x98, 0xab, 0x88, 0x52, 0x25, 0xb8, 0x29, 0x15, 0x98, 0x41, 0xa2, 0xcd, 0x09, 0x31, 0x25, 0xb8, - 0x1a, 0x35, 0xb8, 0x1a, 0x24, 0x98, 0x89, 0x28, 0x45, 0xc1, 0x9d, 0x10, 0xa0, 0x28, 0x13, 0xfb, - 0x8b, 0x31, 0x45, 0xa1, 0xac, 0x20, 0xc8, 0xad, 0x08, 0x98, 0x99, 0x09, 0x62, 0x13, 0xb9, 0x40, - 0x03, 0x18, 0x43, 0xe8, 0xac, 0x19, 0x53, 0x13, 0xba, 0x38, 0x15, 0xba, 0x38, 0x33, 0x88, 0xaa, - 0x68, 0x25, 0xd9, 0x8b, 0x10, 0x88, 0x41, 0xa1, 0xbe, 0x8a, 0x63, 0x24, 0xb9, 0x8b, 0x00, 0xfb, - 0xab, 0x80, 0x88, 0xa9, 0x09, 0x46, 0x82, 0x99, 0x31, 0x11, 0x42, 0x03, 0xde, 0xaa, 0x30, 0x44, - 0x92, 0x9a, 0x42, 0x81, 0x9b, 0x30, 0x33, 0x91, 0xbb, 0x72, 0x85, 0xba, 0x0b, 0x88, 0x40, 0x24, - 0xea, 0xac, 0x18, 0x54, 0x02, 0xba, 0x0a, 0xa0, 0xce, 0x8a, 0x09, 0x80, 0xa9, 0x28, 0x36, 0x80, - 0x08, 0x12, 0x41, 0x35, 0xc0, 0xbd, 0x8a, 0x51, 0x24, 0x98, 0x19, 0x22, 0xa8, 0x0a, 0x30, 0x44, - 0x91, 0x9b, 0x63, 0xa1, 0xab, 0xa8, 0x0b, 0x66, 0x92, 0xbc, 0xab, 0x30, 0x47, 0x90, 0xaa, 0x00, - 0xca, 0xac, 0x9a, 0x09, 0x01, 0xba, 0x60, 0x23, 0x08, 0x12, 0x88, 0x73, 0x17, 0xba, 0xab, 0x09, - 0x54, 0x03, 0x9a, 0x30, 0x82, 0xaa, 0x00, 0x20, 0x36, 0xa1, 0x0b, 0x24, 0xb9, 0x09, 0xf9, 0x2a, - 0x47, 0xa8, 0xac, 0x99, 0x51, 0x23, 0xc8, 0x0a, 0x90, 0xbd, 0xaa, 0xaa, 0x29, 0x83, 0xab, 0x63, - 0x02, 0x48, 0x03, 0x8b, 0x67, 0x82, 0xac, 0x9a, 0x18, 0x35, 0x92, 0x8a, 0x33, 0xc0, 0x0a, 0x82, - 0x28, 0x36, 0xa0, 0x1a, 0x82, 0x9c, 0x22, 0xfc, 0x48, 0x15, 0xc9, 0xaa, 0x08, 0x52, 0x02, 0xbb, - 0x10, 0xd8, 0xad, 0x98, 0xa9, 0x20, 0x82, 0x8a, 0x33, 0x98, 0x74, 0xa2, 0x1a, 0x47, 0xb1, 0xbb, - 0x8a, 0x31, 0x27, 0xa8, 0x28, 0x13, 0xbb, 0x39, 0x91, 0x49, 0x17, 0x98, 0x18, 0xb8, 0x19, 0x05, - 0xad, 0x71, 0x83, 0xcb, 0x8a, 0x18, 0x53, 0xa1, 0xab, 0x12, 0xfb, 0x9b, 0x98, 0x9a, 0x40, 0x81, - 0x19, 0x81, 0x19, 0x37, 0xb0, 0x5a, 0x27, 0xb9, 0xab, 0x08, 0x42, 0x04, 0x99, 0x40, 0x93, 0xac, - 0x21, 0x98, 0x30, 0x16, 0x98, 0x80, 0xca, 0x40, 0xa3, 0x9e, 0x54, 0x91, 0xac, 0x89, 0x11, 0x14, - 0xb8, 0x0b, 0x83, 0xcf, 0x0a, 0x98, 0x99, 0x32, 0x81, 0x18, 0xa8, 0x5a, 0x17, 0xa8, 0x68, 0x13, - 0xda, 0x9a, 0x10, 0x42, 0x81, 0x8a, 0x34, 0xb0, 0x9c, 0x22, 0x98, 0x60, 0x12, 0x88, 0xa8, 0x9d, - 0x52, 0xa0, 0x1b, 0x37, 0xb0, 0xad, 0x09, 0x32, 0x02, 0xdb, 0x18, 0xb2, 0xcf, 0x88, 0x90, 0x0a, - 0x22, 0x01, 0x80, 0xba, 0x70, 0x14, 0x9a, 0x72, 0x82, 0xdb, 0x89, 0x21, 0x32, 0xa8, 0x29, 0x26, - 0xc9, 0x0a, 0x12, 0x89, 0x32, 0x14, 0x80, 0xeb, 0x0a, 0x34, 0xb9, 0x59, 0x25, 0xd9, 0x9b, 0x18, - 0x33, 0xa1, 0xad, 0x21, 0xe9, 0xac, 0x88, 0x98, 0x19, 0x32, 0x12, 0xb8, 0x9d, 0x73, 0x82, 0x09, - 0x54, 0x90, 0xad, 0x09, 0x32, 0x13, 0xaa, 0x51, 0x03, 0xdb, 0x19, 0x02, 0x09, 0x43, 0x23, 0xa0, - 0xbf, 0x29, 0x15, 0xa9, 0x51, 0x13, 0xcc, 0x9b, 0x30, 0x14, 0xc9, 0x8a, 0x12, 0xec, 0x9b, 0x88, - 0x98, 0x18, 0x33, 0x14, 0xda, 0x0a, 0x44, 0x91, 0x28, 0x25, 0xc8, 0xac, 0x29, 0x34, 0x92, 0x8a, - 0x63, 0x91, 0xbb, 0x10, 0x01, 0x18, 0x53, 0x24, 0xd0, 0xac, 0x30, 0x83, 0x88, 0x45, 0x91, 0xbd, - 0x8b, 0x43, 0x82, 0xbc, 0x29, 0xa1, 0xcf, 0x8a, 0x88, 0x09, 0x18, 0x53, 0x82, 0xcb, 0x29, 0x25, - 0x08, 0x31, 0x04, 0xdb, 0x9c, 0x30, 0x25, 0xa8, 0x18, 0x25, 0xa8, 0x9b, 0x00, 0x11, 0x10, 0x72, - 0x14, 0xe9, 0x8a, 0x21, 0x81, 0x21, 0x14, 0xb8, 0xbe, 0x09, 0x34, 0xc1, 0x9c, 0x10, 0xc8, 0xad, - 0x8a, 0x89, 0x00, 0x10, 0x45, 0x91, 0xac, 0x30, 0x12, 0x21, 0x34, 0xa0, 0xcd, 0x9a, 0x72, 0x12, - 0xaa, 0x41, 0x03, 0xba, 0x99, 0x00, 0x21, 0x01, 0x73, 0x06, 0xda, 0x1a, 0x11, 0x10, 0x33, 0x92, - 0xcb, 0xbc, 0x39, 0x17, 0xc9, 0x0b, 0x01, 0xeb, 0xab, 0xa9, 0x08, 0x01, 0x38, 0x47, 0xb0, 0x9b, - 0x22, 0x02, 0x63, 0x02, 0xba, 0xbb, 0x0a, 0x57, 0x81, 0x8b, 0x53, 0x80, 0x9a, 0x88, 0x09, 0x32, - 0x08, 0x74, 0x82, 0xbd, 0x18, 0x01, 0x41, 0x14, 0xa8, 0x9b, 0xab, 0x60, 0x83, 0xcd, 0x19, 0xa1, - 0xcc, 0x99, 0xaa, 0x28, 0x81, 0x50, 0x25, 0xb9, 0x0b, 0x22, 0x20, 0x47, 0xa0, 0xaa, 0x98, 0x39, - 0x36, 0xb0, 0x2a, 0x26, 0xa8, 0x89, 0x98, 0x19, 0x24, 0x09, 0x46, 0xb1, 0xad, 0x10, 0x00, 0x54, - 0x02, 0xba, 0x8a, 0x89, 0x52, 0xb1, 0xaf, 0x10, 0xc8, 0x9c, 0x99, 0x9a, 0x20, 0x81, 0x61, 0x14, - 0xca, 0x08, 0x01, 0x40, 0x16, 0xb8, 0x8b, 0x80, 0x40, 0x14, 0xb9, 0x58, 0x13, 0xab, 0x18, 0xb9, - 0x38, 0x06, 0x18, 0x35, 0xd8, 0x9b, 0x01, 0x28, 0x57, 0x91, 0x9b, 0x88, 0x00, 0x32, 0xfa, 0x9b, - 0x01, 0xea, 0x9a, 0x99, 0x8b, 0x31, 0x00, 0x73, 0x83, 0xab, 0x18, 0x90, 0x74, 0x04, 0xca, 0x09, - 0x00, 0x32, 0x82, 0xab, 0x73, 0x92, 0x8b, 0x01, 0xba, 0x40, 0x03, 0x38, 0x17, 0xca, 0x89, 0x80, - 0x68, 0x36, 0xb8, 0x9b, 0x10, 0x11, 0x82, 0xce, 0x0a, 0x91, 0xbd, 0x8a, 0xa9, 0x0b, 0x23, 0x11, - 0x36, 0xa2, 0x9a, 0x80, 0x1a, 0x77, 0x93, 0xcb, 0x19, 0x21, 0x23, 0xa8, 0x2b, 0x36, 0xb8, 0x0a, - 0x82, 0xbb, 0x62, 0x01, 0x31, 0x83, 0xbd, 0x08, 0xba, 0x75, 0x17, 0xa9, 0x8a, 0x11, 0x11, 0xb0, - 0xae, 0x18, 0xc8, 0xac, 0x88, 0xb9, 0x19, 0x23, 0x21, 0x25, 0xa0, 0x08, 0xc8, 0x49, 0x67, 0xa0, - 0xab, 0x10, 0x32, 0x02, 0xaa, 0x58, 0x04, 0xb9, 0x28, 0x90, 0x8b, 0x42, 0x12, 0x31, 0xb0, 0x9b, - 0xd0, 0x8d, 0x77, 0x03, 0xbb, 0x09, 0x31, 0x02, 0xeb, 0x9b, 0x00, 0xcc, 0x9c, 0x90, 0xa9, 0x28, - 0x22, 0x23, 0x03, 0x18, 0x81, 0xce, 0x71, 0x15, 0xc8, 0x9a, 0x30, 0x33, 0xa0, 0x9a, 0x63, 0x91, - 0x9a, 0x20, 0x98, 0x0a, 0x32, 0x24, 0x91, 0xaa, 0x32, 0xfc, 0x4b, 0x67, 0x80, 0xaa, 0x08, 0x23, - 0x91, 0xcd, 0x09, 0x90, 0xad, 0x8a, 0x98, 0x99, 0x10, 0x33, 0x14, 0x88, 0x32, 0xc2, 0x9e, 0x73, - 0x03, 0xda, 0x8a, 0x32, 0x15, 0xa9, 0x19, 0x24, 0xa8, 0x0a, 0x01, 0x98, 0x09, 0x31, 0x25, 0xc9, - 0x19, 0x05, 0xbc, 0x70, 0x25, 0xa0, 0xab, 0x38, 0x25, 0xb8, 0xae, 0x00, 0xb9, 0xad, 0x88, 0x89, - 0x89, 0x10, 0x34, 0x02, 0x0a, 0x44, 0xc8, 0x0b, 0x37, 0x91, 0xcb, 0x0a, 0x54, 0x02, 0xba, 0x30, - 0x03, 0xba, 0x28, 0x00, 0x89, 0x88, 0x71, 0x03, 0xdb, 0x30, 0x94, 0x9d, 0x73, 0x13, 0xa9, 0xab, - 0x41, 0x15, 0xe9, 0x8a, 0x80, 0xca, 0x9a, 0x98, 0x98, 0x80, 0x20, 0x35, 0xb1, 0x29, 0x17, 0xb9, - 0x3a, 0x17, 0xa0, 0xab, 0x19, 0x37, 0x92, 0x8c, 0x31, 0x91, 0x8b, 0x10, 0x80, 0x80, 0x99, 0x73, - 0x92, 0xad, 0x52, 0xa1, 0x0b, 0x55, 0x01, 0xa9, 0x9a, 0x62, 0x83, 0xcc, 0x0a, 0xa0, 0xbc, 0x8a, - 0x89, 0x09, 0x80, 0x40, 0x25, 0xb8, 0x58, 0x13, 0xac, 0x40, 0x13, 0xca, 0xba, 0x58, 0x27, 0xa0, - 0x0a, 0x32, 0xb8, 0x0a, 0x02, 0x09, 0x82, 0x9a, 0x55, 0xc0, 0x0c, 0x43, 0xa8, 0x4a, 0x25, 0x80, - 0x9a, 0x0a, 0x55, 0xa1, 0xbd, 0x08, 0xc8, 0xac, 0x88, 0x89, 0x00, 0x80, 0x50, 0x13, 0xab, 0x72, - 0x92, 0x9a, 0x42, 0x91, 0xab, 0xaa, 0x72, 0x17, 0x99, 0x19, 0x03, 0xb9, 0x18, 0x81, 0x18, 0x92, - 0x0b, 0x36, 0xea, 0x2a, 0x24, 0xa9, 0x60, 0x13, 0x99, 0x89, 0x29, 0x37, 0xd0, 0xac, 0x80, 0xda, - 0x9a, 0x98, 0x89, 0x11, 0x88, 0x62, 0x82, 0x8b, 0x44, 0xa1, 0x1a, 0x14, 0xb9, 0x9a, 0x89, 0x76, - 0x02, 0xa9, 0x30, 0x92, 0xab, 0x20, 0x88, 0x30, 0xb1, 0x2a, 0x27, 0xdd, 0x38, 0x04, 0x89, 0x53, - 0x81, 0x8a, 0x80, 0x41, 0x25, 0xfb, 0x9a, 0x90, 0xcc, 0x8a, 0x98, 0x09, 0x02, 0x08, 0x44, 0x90, - 0x1a, 0x25, 0xa0, 0x30, 0x92, 0xbd, 0x09, 0x30, 0x57, 0x81, 0x8a, 0x32, 0xc0, 0x8a, 0x11, 0x09, - 0x22, 0xa8, 0x49, 0xb3, 0xcf, 0x41, 0x02, 0x38, 0x25, 0xb8, 0x09, 0x21, 0x63, 0x93, 0xce, 0x8a, - 0xc9, 0xbc, 0x8a, 0x99, 0x28, 0x01, 0x20, 0x25, 0xa8, 0x48, 0x24, 0x88, 0x33, 0xf8, 0xab, 0x10, - 0x52, 0x34, 0xa0, 0x29, 0x14, 0xca, 0x09, 0x01, 0x19, 0x23, 0xa9, 0x31, 0xf9, 0x8e, 0x32, 0x12, - 0x73, 0x82, 0xba, 0x20, 0x42, 0x33, 0xe0, 0xbc, 0xa9, 0xec, 0xab, 0x89, 0x99, 0x11, 0x11, 0x31, - 0x03, 0x99, 0x63, 0x13, 0x41, 0x03, 0xde, 0x0b, 0x21, 0x53, 0x02, 0x88, 0x31, 0x92, 0xad, 0x18, - 0x80, 0x30, 0x03, 0x88, 0xa1, 0xdf, 0x18, 0x22, 0x63, 0x25, 0xa0, 0x8c, 0x30, 0x34, 0x82, 0xeb, - 0x9a, 0xca, 0xbe, 0xaa, 0xa8, 0x88, 0x21, 0x21, 0x32, 0x90, 0x38, 0x25, 0x21, 0x37, 0xb1, 0xcf, - 0x08, 0x31, 0x33, 0x90, 0x38, 0x24, 0xc9, 0x8a, 0x00, 0x08, 0x32, 0x11, 0x00, 0xfb, 0x9d, 0x21, - 0x10, 0x66, 0x13, 0xba, 0x0b, 0x52, 0x24, 0xa0, 0x9d, 0x98, 0xfa, 0xbb, 0x99, 0x99, 0x18, 0x11, - 0x22, 0x03, 0x9a, 0x44, 0x81, 0x60, 0x25, 0xd9, 0xbb, 0x10, 0x44, 0x02, 0x99, 0x42, 0x82, 0xbb, - 0x18, 0x90, 0x28, 0x13, 0x21, 0xa3, 0xff, 0x19, 0x01, 0x29, 0x57, 0x81, 0xaa, 0x09, 0x43, 0x14, - 0xc9, 0x8a, 0x90, 0xce, 0xaa, 0x98, 0x8a, 0x10, 0x20, 0x42, 0xa0, 0x19, 0x34, 0x99, 0x72, 0x06, - 0xca, 0x9a, 0x20, 0x34, 0x91, 0x0a, 0x44, 0xa0, 0x8b, 0x00, 0x88, 0x20, 0x82, 0x41, 0xd1, 0xbd, - 0x21, 0xa1, 0x68, 0x27, 0x90, 0xab, 0x10, 0x44, 0x02, 0xbc, 0x19, 0xb0, 0xcf, 0x89, 0x99, 0x09, - 0x00, 0x21, 0x22, 0xb9, 0x48, 0x14, 0x8b, 0x56, 0x92, 0xad, 0x8a, 0x31, 0x25, 0x98, 0x2a, 0x25, - 0xa9, 0x8a, 0x01, 0x89, 0x21, 0x00, 0x33, 0xf9, 0x9e, 0x22, 0x99, 0x70, 0x24, 0xa9, 0x8b, 0x20, - 0x45, 0xa1, 0xac, 0x10, 0xd8, 0xac, 0x99, 0x99, 0x08, 0x10, 0x31, 0x04, 0xbb, 0x52, 0x93, 0x1a, - 0x57, 0xb0, 0xbb, 0x0a, 0x63, 0x13, 0xb9, 0x48, 0x14, 0xba, 0x19, 0x91, 0x08, 0x12, 0x18, 0x14, - 0xfc, 0x0a, 0x03, 0x99, 0x74, 0x03, 0xba, 0x0a, 0x41, 0x34, 0xd0, 0x9b, 0x11, 0xfa, 0x9b, 0x89, - 0x8a, 0x18, 0x00, 0x42, 0x92, 0x8c, 0x43, 0x90, 0x49, 0x17, 0xc8, 0x9b, 0x08, 0x34, 0x03, 0xab, - 0x62, 0x82, 0xba, 0x10, 0x88, 0x18, 0x02, 0x20, 0x84, 0xdf, 0x18, 0x82, 0x1a, 0x56, 0x81, 0xba, - 0x88, 0x43, 0x14, 0xd9, 0x0a, 0x81, 0xcc, 0x9b, 0x99, 0x99, 0x10, 0x20, 0x34, 0xb8, 0x1b, 0x36, - 0x99, 0x71, 0x13, 0xeb, 0x9a, 0x28, 0x44, 0x91, 0x8a, 0x43, 0x91, 0xab, 0x01, 0x88, 0x10, 0x01, - 0x42, 0xc1, 0xbf, 0x20, 0x81, 0x49, 0x37, 0x90, 0xab, 0x29, 0x54, 0x83, 0xdb, 0x19, 0xa0, 0xcd, - 0x99, 0x99, 0x09, 0x00, 0x21, 0x14, 0xb9, 0x38, 0x14, 0x89, 0x65, 0x92, 0xbc, 0x8b, 0x41, 0x25, - 0x98, 0x19, 0x24, 0xb0, 0x9a, 0x81, 0x08, 0x11, 0x20, 0x43, 0xfa, 0x9d, 0x21, 0x88, 0x71, 0x23, - 0xa8, 0xab, 0x48, 0x45, 0xa1, 0xbb, 0x18, 0xd9, 0xbd, 0x9a, 0x99, 0x88, 0x01, 0x42, 0x83, 0xaa, - 0x41, 0x83, 0x38, 0x57, 0xa0, 0xbc, 0x8a, 0x63, 0x03, 0xa8, 0x30, 0x14, 0xb9, 0x89, 0x08, 0x00, - 0x01, 0x32, 0x04, 0xcf, 0x8a, 0x02, 0x18, 0x56, 0x12, 0xa9, 0x9b, 0x62, 0x24, 0xb8, 0x9b, 0x88, - 0xec, 0xab, 0x9b, 0x8a, 0x88, 0x21, 0x34, 0xa1, 0x89, 0x43, 0x00, 0x54, 0x14, 0xc9, 0xbc, 0x19, - 0x45, 0x01, 0x89, 0x32, 0x82, 0x9a, 0x99, 0x09, 0x11, 0x10, 0x54, 0xb1, 0xbf, 0x08, 0x80, 0x61, - 0x35, 0x81, 0xaa, 0x0a, 0x64, 0x03, 0xba, 0x89, 0xba, 0xbf, 0xbb, 0xac, 0x09, 0x08, 0x40, 0x13, - 0xa8, 0x20, 0x02, 0x40, 0x37, 0x81, 0xdb, 0xbb, 0x30, 0x37, 0x80, 0x18, 0x23, 0x88, 0x89, 0xb9, - 0x29, 0x13, 0x28, 0x37, 0xea, 0x9b, 0x80, 0x09, 0x57, 0x13, 0x98, 0xa8, 0x18, 0x37, 0x91, 0xaa, - 0x98, 0xcd, 0xac, 0xca, 0xaa, 0x08, 0x08, 0x42, 0x82, 0x89, 0x22, 0x90, 0x72, 0x16, 0x99, 0xaa, - 0xaa, 0x62, 0x13, 0x88, 0x42, 0x92, 0x09, 0x81, 0xbb, 0x40, 0x81, 0x40, 0x85, 0xcc, 0x19, 0xa8, - 0x39, 0x77, 0x00, 0x09, 0x88, 0x20, 0x24, 0xa9, 0x89, 0xc0, 0xaf, 0x9a, 0xcb, 0x9a, 0x00, 0x19, - 0x43, 0x90, 0x29, 0x04, 0x8a, 0x65, 0x82, 0xab, 0x99, 0x09, 0x44, 0x92, 0x28, 0x26, 0xa8, 0x18, - 0x92, 0x9c, 0x31, 0x90, 0x51, 0xa1, 0x9f, 0x01, 0xb9, 0x70, 0x24, 0x98, 0x08, 0x00, 0x42, 0x83, - 0xbb, 0x20, 0xfa, 0xaf, 0x89, 0xbb, 0x8a, 0x00, 0x28, 0x14, 0xa9, 0x51, 0x91, 0x2a, 0x47, 0xa0, - 0xaa, 0x80, 0x28, 0x24, 0xa8, 0x71, 0x03, 0xaa, 0x30, 0xa1, 0x8c, 0x13, 0x88, 0x53, 0xd9, 0x0b, - 0x02, 0xbc, 0x74, 0x13, 0xaa, 0x10, 0x12, 0x43, 0xb0, 0x8c, 0x13, 0xfe, 0x9a, 0x98, 0xba, 0x09, - 0x80, 0x30, 0x83, 0x8b, 0x54, 0xb0, 0x48, 0x27, 0xb9, 0x8a, 0x00, 0x31, 0x83, 0x9b, 0x66, 0x92, - 0x9a, 0x31, 0xa8, 0x1a, 0x02, 0x18, 0x14, 0xdd, 0x18, 0xa2, 0x0c, 0x56, 0x91, 0x8a, 0x11, 0x22, - 0x03, 0xda, 0x2a, 0x93, 0xef, 0x89, 0xa8, 0x9a, 0x09, 0x80, 0x22, 0x90, 0x2a, 0x26, 0xb9, 0x71, - 0x04, 0xbb, 0x09, 0x21, 0x22, 0xb0, 0x2b, 0x77, 0x90, 0x0a, 0x11, 0x98, 0x08, 0x81, 0x20, 0xa1, - 0xae, 0x21, 0xc1, 0x3a, 0x57, 0x98, 0x0a, 0x21, 0x33, 0x91, 0xbd, 0x40, 0xc1, 0xbe, 0x89, 0xa8, - 0x9b, 0x88, 0x10, 0x22, 0xb9, 0x60, 0x04, 0x9a, 0x64, 0xa2, 0xbb, 0x29, 0x42, 0x12, 0xda, 0x48, - 0x25, 0xa9, 0x1a, 0x12, 0xa8, 0x00, 0x00, 0x22, 0xe9, 0x8c, 0x23, 0xca, 0x70, 0x14, 0xa9, 0x1a, - 0x43, 0x14, 0xb8, 0x9c, 0x32, 0xf9, 0xac, 0x88, 0xa9, 0x9a, 0x08, 0x20, 0x82, 0x9b, 0x54, 0x92, - 0x2a, 0x37, 0xc0, 0xab, 0x38, 0x25, 0x91, 0xbb, 0x72, 0x04, 0xaa, 0x28, 0x01, 0x88, 0x08, 0x10, - 0x82, 0xdc, 0x19, 0x03, 0x9b, 0x75, 0x02, 0xab, 0x29, 0x36, 0x03, 0xdb, 0x1a, 0x12, 0xfb, 0xab, - 0x88, 0x9a, 0x9a, 0x08, 0x22, 0xb8, 0x2a, 0x27, 0x90, 0x50, 0x14, 0xd9, 0x9b, 0x51, 0x23, 0xb8, - 0x8b, 0x55, 0x81, 0x9a, 0x28, 0x01, 0x90, 0x88, 0x22, 0xc1, 0xae, 0x21, 0x91, 0x29, 0x47, 0x91, - 0xbb, 0x50, 0x35, 0xa2, 0xbc, 0x28, 0x92, 0xbe, 0xab, 0x89, 0x9a, 0xaa, 0x28, 0x13, 0xbc, 0x50, - 0x14, 0x09, 0x73, 0x81, 0xcb, 0x0b, 0x73, 0x03, 0xc9, 0x19, 0x24, 0x90, 0x99, 0x10, 0x12, 0x90, - 0x1a, 0x33, 0xfa, 0x8c, 0x22, 0x98, 0x61, 0x23, 0xb9, 0x9c, 0x72, 0x25, 0xb0, 0xab, 0x30, 0xb8, - 0xbe, 0x9b, 0x8a, 0xa8, 0xaa, 0x40, 0x91, 0x9c, 0x62, 0x81, 0x20, 0x25, 0xb8, 0xbc, 0x1a, 0x47, - 0x82, 0xbb, 0x40, 0x13, 0x98, 0x89, 0x18, 0x33, 0xb8, 0x39, 0x05, 0xce, 0x18, 0x82, 0x19, 0x45, - 0x92, 0xaa, 0x8a, 0x75, 0x14, 0xc9, 0x0a, 0x01, 0xb9, 0xbb, 0xbb, 0x0a, 0xa8, 0x9c, 0x32, 0xe0, - 0x0a, 0x25, 0x88, 0x52, 0x83, 0xda, 0x9a, 0x38, 0x47, 0xa1, 0x9b, 0x32, 0x02, 0x89, 0x98, 0x28, - 0x25, 0xa9, 0x38, 0xc3, 0xaf, 0x21, 0x90, 0x40, 0x25, 0xa8, 0xaa, 0x18, 0x67, 0x02, 0xbb, 0x1a, - 0x91, 0xcb, 0xba, 0xac, 0x08, 0xb0, 0x0b, 0x23, 0xdc, 0x38, 0x13, 0x19, 0x47, 0xa1, 0xac, 0x89, - 0x51, 0x35, 0xb8, 0x0b, 0x33, 0x90, 0x18, 0xa8, 0x48, 0x15, 0xa9, 0x21, 0xe8, 0x8c, 0x22, 0x99, - 0x73, 0x03, 0xba, 0x89, 0x30, 0x77, 0x91, 0xaa, 0x08, 0xa8, 0xaa, 0xba, 0x9d, 0x10, 0xb8, 0x19, - 0x92, 0xae, 0x41, 0x81, 0x48, 0x16, 0xc8, 0x8a, 0x88, 0x53, 0x15, 0xaa, 0x29, 0x02, 0x89, 0x12, - 0xb9, 0x60, 0x03, 0x8a, 0x11, 0xec, 0x19, 0x02, 0x0a, 0x47, 0xa1, 0xaa, 0x00, 0x41, 0x26, 0xb0, - 0x9b, 0x80, 0xdb, 0x99, 0xc9, 0x9b, 0x11, 0xa9, 0x18, 0xd0, 0x8c, 0x33, 0xa0, 0x73, 0x06, 0xbb, - 0x89, 0x10, 0x45, 0x82, 0xaa, 0x21, 0x91, 0x1a, 0x04, 0xaa, 0x62, 0x82, 0x88, 0x91, 0xaf, 0x20, - 0x91, 0x49, 0x27, 0xa8, 0x9b, 0x11, 0x63, 0x23, 0xca, 0x8a, 0xa0, 0xae, 0x88, 0xc9, 0x0b, 0x11, - 0x99, 0x80, 0xda, 0x2a, 0x04, 0x09, 0x56, 0xa2, 0xbc, 0x08, 0x31, 0x35, 0x91, 0x0b, 0x22, 0xba, - 0x48, 0x84, 0x8b, 0x63, 0x81, 0x08, 0xd8, 0x9b, 0x22, 0x98, 0x72, 0x17, 0xaa, 0x0a, 0x21, 0x53, - 0x82, 0xab, 0x09, 0xfa, 0x9b, 0x80, 0xcb, 0x09, 0x02, 0x89, 0xb0, 0xad, 0x30, 0x92, 0x59, 0x37, - 0xc0, 0x9c, 0x18, 0x42, 0x13, 0x98, 0x28, 0x81, 0x9d, 0x41, 0x81, 0x0a, 0x43, 0x01, 0x90, 0xcd, - 0x1a, 0x02, 0x09, 0x57, 0x82, 0xcb, 0x19, 0x42, 0x23, 0xa0, 0x8b, 0xa8, 0xcf, 0x8a, 0x80, 0xbb, - 0x19, 0x11, 0x80, 0xfb, 0x9a, 0x22, 0x98, 0x71, 0x06, 0xb9, 0x9b, 0x31, 0x34, 0x83, 0x09, 0x32, - 0xe8, 0x8b, 0x43, 0x91, 0x09, 0x24, 0x12, 0xd8, 0xad, 0x20, 0x80, 0x49, 0x37, 0xb1, 0xac, 0x28, - 0x34, 0x03, 0xaa, 0x18, 0xf9, 0xad, 0x09, 0x90, 0xaa, 0x00, 0x21, 0xa0, 0xcd, 0x19, 0x01, 0x89, - 0x56, 0x82, 0xbc, 0x0b, 0x52, 0x23, 0x90, 0x38, 0x04, 0xeb, 0x19, 0x22, 0x90, 0x00, 0x42, 0x12, - 0xfb, 0x8b, 0x12, 0x98, 0x71, 0x15, 0xa9, 0x9b, 0x40, 0x43, 0x90, 0x8a, 0x11, 0xec, 0x9c, 0x08, - 0x90, 0x99, 0x18, 0x22, 0xd8, 0xac, 0x20, 0x90, 0x39, 0x37, 0xa0, 0xbd, 0x19, 0x44, 0x03, 0x8a, - 0x30, 0x05, 0xcb, 0x39, 0x02, 0x01, 0x09, 0x7d, 0x0b, 0x02, 0xcd, 0x08, 0x98, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x77, 0x97, 0xbc, 0xaa, 0xab, 0x22, 0x90, 0xbb, 0xdc, 0xce, 0xcb, - 0xbc, 0x0a, 0x82, 0x09, 0x43, 0x12, 0x63, 0x12, 0x20, 0x46, 0x22, 0x45, 0x82, 0xdc, 0x9c, 0x73, - 0x24, 0x80, 0x99, 0xa9, 0x88, 0xeb, 0xcd, 0xab, 0x28, 0x65, 0x44, 0x23, 0xb8, 0xbd, 0x8b, 0x00, - 0x01, 0xa8, 0xa9, 0xb9, 0xaa, 0x99, 0x18, 0x81, 0xda, 0xcc, 0x99, 0x41, 0x23, 0x00, 0x10, 0x65, - 0x47, 0x23, 0x01, 0x99, 0x08, 0x42, 0x33, 0x01, 0x98, 0x08, 0x12, 0xc9, 0xec, 0xcd, 0xab, 0xa9, - 0xaa, 0x48, 0x47, 0x23, 0x98, 0xba, 0x89, 0x08, 0x80, 0xb9, 0x8a, 0x11, 0x01, 0x21, 0x24, 0xa0, - 0xfd, 0xcb, 0xaa, 0x89, 0x18, 0x91, 0xdb, 0x0a, 0x54, 0x25, 0x01, 0x88, 0x09, 0x52, 0x23, 0x98, - 0x9a, 0x10, 0x34, 0x03, 0xfd, 0xac, 0xaa, 0xca, 0xbd, 0x19, 0x46, 0x33, 0x81, 0xa9, 0xaa, 0xa9, - 0xa9, 0xba, 0x9a, 0x08, 0x02, 0x00, 0x81, 0xfb, 0xac, 0x99, 0x08, 0x40, 0x36, 0x03, 0xcb, 0x38, - 0x47, 0x34, 0x03, 0x80, 0x88, 0x42, 0x43, 0x02, 0xaa, 0x09, 0x43, 0x13, 0xb9, 0xcd, 0xda, 0xcd, - 0xbc, 0x89, 0x43, 0x24, 0x02, 0x00, 0x80, 0x98, 0xaa, 0xdb, 0xab, 0x09, 0x10, 0x01, 0x88, 0xdb, - 0xac, 0xbb, 0xad, 0x0a, 0x43, 0x14, 0xb9, 0x0b, 0x47, 0x34, 0x23, 0x02, 0x00, 0x31, 0x25, 0xa0, - 0xbd, 0x0a, 0x22, 0x11, 0x11, 0x82, 0xfa, 0xff, 0xbb, 0x9a, 0x11, 0x32, 0x21, 0x21, 0x23, 0x11, - 0xa8, 0xdb, 0xab, 0x19, 0x54, 0x33, 0x13, 0x01, 0xca, 0xcc, 0xab, 0x1a, 0x53, 0x82, 0xcb, 0x0a, - 0x55, 0x35, 0x33, 0x12, 0x11, 0x43, 0x13, 0xd9, 0xbd, 0x9a, 0x00, 0x88, 0x89, 0x10, 0xc8, 0xef, - 0xbc, 0xaa, 0x88, 0x20, 0x10, 0x21, 0x33, 0x22, 0x01, 0xb8, 0xbd, 0x8b, 0x51, 0x53, 0x22, 0x32, - 0x82, 0xdc, 0xac, 0x09, 0x00, 0x88, 0xcb, 0xbc, 0x48, 0x46, 0x33, 0x11, 0x31, 0x44, 0x13, 0xb0, - 0xcd, 0x9a, 0x88, 0x88, 0x28, 0x53, 0x91, 0xfb, 0xcc, 0xab, 0x9a, 0x08, 0x11, 0x22, 0x53, 0x23, - 0x02, 0x98, 0xcb, 0x9a, 0x20, 0x23, 0x54, 0x36, 0x03, 0xb9, 0xad, 0x99, 0x08, 0x01, 0xc9, 0xbd, - 0x19, 0x45, 0x23, 0x02, 0x52, 0x34, 0x24, 0x90, 0xba, 0x9a, 0xba, 0xbb, 0x29, 0x55, 0x03, 0xea, - 0xdc, 0xbb, 0xab, 0x8a, 0x88, 0x10, 0x21, 0x42, 0x12, 0xa0, 0xad, 0xab, 0xaa, 0x19, 0x65, 0x44, - 0x22, 0x90, 0xba, 0x9a, 0x10, 0x11, 0xb8, 0xbf, 0x09, 0x45, 0x23, 0x01, 0x62, 0x35, 0x32, 0x11, - 0x88, 0x98, 0xaa, 0xbc, 0x18, 0x54, 0x33, 0xa0, 0xce, 0xbc, 0xbb, 0xab, 0x89, 0x88, 0x10, 0x54, - 0x12, 0x90, 0x98, 0xba, 0xbd, 0x8b, 0x41, 0x46, 0x24, 0x01, 0x99, 0x8a, 0x21, 0x13, 0xb0, 0xcd, - 0x19, 0x44, 0x22, 0x10, 0x52, 0x45, 0x32, 0x11, 0x01, 0x90, 0xbb, 0xbd, 0x9b, 0x30, 0x25, 0x91, - 0xcd, 0xbd, 0xbd, 0xba, 0xa9, 0x9a, 0x08, 0x32, 0x22, 0x22, 0x01, 0xc9, 0xbf, 0x9c, 0x08, 0x53, - 0x44, 0x11, 0xa8, 0x8a, 0x21, 0x13, 0xc9, 0xab, 0x19, 0x44, 0x13, 0x11, 0x73, 0x35, 0x33, 0x33, - 0x33, 0x02, 0xda, 0xcc, 0x9a, 0x19, 0x43, 0x12, 0xca, 0xce, 0xcb, 0xca, 0xaa, 0x9a, 0x89, 0x21, - 0x32, 0x43, 0x32, 0x90, 0xdc, 0xbc, 0x89, 0x31, 0x46, 0x12, 0x99, 0x0a, 0x21, 0x03, 0xc9, 0xac, - 0x18, 0x22, 0x12, 0x21, 0x45, 0x36, 0x34, 0x42, 0x43, 0x02, 0xa0, 0xba, 0xac, 0x8a, 0x42, 0x23, - 0xb9, 0xbf, 0xbd, 0xbc, 0xad, 0xaa, 0x99, 0x08, 0x21, 0x43, 0x43, 0x01, 0xb8, 0xcd, 0xab, 0x28, - 0x35, 0x13, 0x98, 0x9a, 0x42, 0x03, 0xd9, 0xaa, 0x88, 0x01, 0x81, 0x20, 0x45, 0x45, 0x43, 0x43, - 0x44, 0x22, 0x81, 0x98, 0xba, 0x89, 0x41, 0x33, 0x90, 0xdb, 0xcc, 0xbd, 0xbd, 0xab, 0xaa, 0x99, - 0x20, 0x43, 0x53, 0x23, 0x90, 0xec, 0xaa, 0x19, 0x42, 0x02, 0x90, 0x08, 0x32, 0x13, 0xb9, 0xad, - 0x18, 0x00, 0xba, 0x18, 0x63, 0x53, 0x44, 0x44, 0x53, 0x33, 0x22, 0x98, 0xab, 0x8a, 0x20, 0x43, - 0x02, 0xa9, 0xdc, 0xdd, 0xbc, 0xac, 0xab, 0xaa, 0x08, 0x21, 0x44, 0x34, 0x02, 0xda, 0xac, 0x09, - 0x12, 0x02, 0x80, 0x00, 0x32, 0x04, 0xa9, 0x9b, 0x11, 0x80, 0xaa, 0x09, 0x11, 0x73, 0x46, 0x44, - 0x53, 0x35, 0x22, 0x80, 0xa9, 0x9a, 0x88, 0x10, 0x22, 0x82, 0xea, 0xcd, 0xcd, 0xcb, 0xab, 0xab, - 0x99, 0x09, 0x52, 0x35, 0x23, 0xb9, 0xbc, 0x89, 0x21, 0x01, 0x00, 0x31, 0x34, 0x22, 0x90, 0x88, - 0x00, 0x80, 0x9a, 0xba, 0x8b, 0x54, 0x53, 0x46, 0x55, 0x44, 0x23, 0x01, 0x98, 0x98, 0x99, 0x18, - 0x21, 0x12, 0x80, 0xdc, 0xed, 0xbc, 0xbb, 0xbb, 0xbc, 0x9a, 0x41, 0x45, 0x23, 0x90, 0xbb, 0x8a, - 0x01, 0x88, 0x88, 0x42, 0x33, 0x13, 0x21, 0x98, 0x09, 0x01, 0xca, 0xbc, 0x9a, 0x98, 0x00, 0x62, - 0x77, 0x37, 0x32, 0x12, 0x80, 0x99, 0x99, 0x9a, 0x11, 0x12, 0x12, 0x90, 0xff, 0xbd, 0xba, 0xcb, - 0xbc, 0xab, 0x29, 0x54, 0x23, 0x81, 0xa9, 0x99, 0x90, 0x99, 0x09, 0x31, 0x53, 0x23, 0x12, 0x11, - 0x00, 0x11, 0x92, 0xdb, 0x19, 0x92, 0xcf, 0x0a, 0x73, 0x46, 0x43, 0x22, 0x11, 0x98, 0xa8, 0x89, - 0x89, 0x20, 0x43, 0x82, 0xdd, 0xbd, 0xbb, 0xcc, 0xdc, 0xab, 0x09, 0x42, 0x23, 0x02, 0x00, 0x89, - 0x89, 0x9a, 0xaa, 0x30, 0x34, 0x33, 0x34, 0x12, 0x42, 0x33, 0x80, 0x09, 0x32, 0x83, 0xdf, 0xab, - 0x61, 0x45, 0x35, 0x24, 0x03, 0x00, 0x08, 0xa9, 0x9a, 0x18, 0x34, 0x02, 0xfb, 0xcb, 0xaa, 0xeb, - 0xcd, 0xbc, 0x89, 0x10, 0x32, 0x22, 0x01, 0x80, 0x98, 0xaa, 0xaa, 0x8a, 0x52, 0x32, 0x11, 0x43, - 0x24, 0x22, 0x80, 0x08, 0x44, 0x83, 0xfb, 0xac, 0x08, 0x52, 0x56, 0x33, 0x22, 0x12, 0x10, 0xa9, - 0xbb, 0x19, 0x34, 0x03, 0xcc, 0xac, 0x89, 0xfb, 0xce, 0xbc, 0xaa, 0x18, 0x11, 0x22, 0x22, 0x02, - 0x08, 0x98, 0xba, 0x9a, 0x32, 0x23, 0x32, 0x65, 0x43, 0x02, 0x88, 0x31, 0x34, 0x23, 0xb1, 0xcf, - 0x9b, 0x20, 0x47, 0x34, 0x42, 0x22, 0x11, 0x98, 0xbb, 0x0a, 0x53, 0x81, 0xbc, 0x8a, 0x80, 0xd9, - 0xff, 0xbb, 0x9c, 0x8a, 0x00, 0x21, 0x12, 0x12, 0x11, 0x88, 0x99, 0x9a, 0x28, 0x01, 0x18, 0x65, - 0x23, 0x11, 0x10, 0x20, 0x53, 0x34, 0x02, 0xdc, 0xac, 0x28, 0x53, 0x63, 0x33, 0x34, 0x23, 0x90, - 0xbb, 0x19, 0x33, 0x92, 0xcd, 0x8b, 0x22, 0xb0, 0xff, 0xbd, 0xbc, 0xa9, 0x88, 0x10, 0x11, 0x23, - 0x12, 0x81, 0x99, 0x09, 0x88, 0x88, 0x20, 0x54, 0x34, 0x12, 0x10, 0x10, 0x42, 0x46, 0x02, 0xb9, - 0xbd, 0x89, 0x32, 0x35, 0x46, 0x35, 0x13, 0x80, 0x99, 0x09, 0x32, 0x90, 0xcc, 0x89, 0x21, 0x82, - 0xfc, 0xce, 0xcb, 0xaa, 0x8a, 0x88, 0x10, 0x32, 0x23, 0x01, 0x08, 0x80, 0x88, 0x88, 0x21, 0x45, - 0x34, 0x33, 0x01, 0x09, 0x42, 0x45, 0x23, 0xc0, 0xbc, 0x8a, 0x88, 0x30, 0x77, 0x34, 0x14, 0x81, - 0x88, 0x08, 0x11, 0x90, 0xbb, 0x9c, 0x30, 0x13, 0xd9, 0xef, 0xcb, 0xbb, 0xab, 0xa9, 0x00, 0x32, - 0x33, 0x12, 0x21, 0x11, 0x88, 0x08, 0x22, 0x64, 0x35, 0x33, 0x12, 0x88, 0x30, 0x37, 0x12, 0xa0, - 0xca, 0xaa, 0xca, 0xac, 0x71, 0x46, 0x23, 0x01, 0x88, 0x10, 0x11, 0x91, 0xca, 0xab, 0x20, 0x35, - 0x91, 0xde, 0xcc, 0xac, 0xbb, 0xab, 0x09, 0x21, 0x22, 0x32, 0x21, 0x22, 0x01, 0x88, 0x01, 0x31, - 0x57, 0x34, 0x01, 0x88, 0x11, 0x34, 0x23, 0x80, 0x88, 0xa0, 0xef, 0xbb, 0x28, 0x57, 0x23, 0x02, - 0x00, 0x11, 0x23, 0x02, 0xc9, 0xac, 0x29, 0x53, 0x02, 0xca, 0xce, 0xcc, 0xcb, 0x9b, 0x9a, 0x08, - 0x11, 0x11, 0x22, 0x22, 0x21, 0x01, 0x90, 0x20, 0x65, 0x33, 0x03, 0x88, 0x30, 0x36, 0x01, 0x21, - 0x33, 0x91, 0xdf, 0xad, 0x0a, 0x53, 0x24, 0x22, 0x00, 0x21, 0x43, 0x12, 0xa8, 0xbc, 0x1a, 0x43, - 0x12, 0x91, 0xed, 0xcd, 0xcc, 0xba, 0x9a, 0x99, 0x08, 0x01, 0x21, 0x11, 0x23, 0x82, 0x99, 0x88, - 0x73, 0x34, 0x01, 0x00, 0x31, 0x24, 0x01, 0x31, 0x47, 0x02, 0xea, 0xbc, 0x9a, 0x31, 0x35, 0x23, - 0x12, 0x32, 0x46, 0x12, 0x98, 0x9a, 0x8a, 0x30, 0x34, 0x22, 0xb1, 0xef, 0xbd, 0xac, 0xbb, 0xaa, - 0x89, 0x00, 0x11, 0x31, 0x43, 0x03, 0x99, 0x19, 0x44, 0x24, 0x12, 0x11, 0x53, 0x23, 0x80, 0x40, - 0x46, 0x23, 0xc8, 0xbd, 0xab, 0x18, 0x53, 0x23, 0x11, 0x52, 0x34, 0x13, 0x81, 0xaa, 0xa9, 0x09, - 0x52, 0x34, 0x02, 0xea, 0xdd, 0xbc, 0xac, 0xba, 0xa9, 0x88, 0x08, 0x21, 0x24, 0x02, 0x88, 0x19, - 0x42, 0x33, 0x11, 0x63, 0x43, 0x13, 0x80, 0x30, 0x57, 0x23, 0x90, 0xdc, 0xab, 0x08, 0x21, 0x13, - 0x12, 0x44, 0x35, 0x14, 0x11, 0x88, 0xa9, 0x8a, 0x21, 0x35, 0x14, 0x91, 0xec, 0xdc, 0xbb, 0xac, - 0x9a, 0x9a, 0x89, 0x10, 0x32, 0x02, 0xa8, 0x18, 0x33, 0x03, 0x10, 0x64, 0x35, 0x12, 0x88, 0x18, - 0x74, 0x34, 0x82, 0xdb, 0xbb, 0x8a, 0x20, 0x11, 0x10, 0x54, 0x44, 0x33, 0x23, 0x81, 0xa8, 0xab, - 0x29, 0x35, 0x34, 0x22, 0xc0, 0xef, 0xbb, 0xac, 0xab, 0xbb, 0x9b, 0x18, 0x21, 0x02, 0x88, 0x10, - 0x34, 0x00, 0x18, 0x55, 0x34, 0x13, 0x88, 0x09, 0x74, 0x25, 0x12, 0xb9, 0xac, 0x8a, 0x88, 0x08, - 0x10, 0x52, 0x54, 0x43, 0x33, 0x12, 0x98, 0xaa, 0x88, 0x41, 0x44, 0x33, 0x01, 0xec, 0xbd, 0xbb, - 0xbd, 0xcb, 0xaa, 0x88, 0x01, 0x80, 0x00, 0x20, 0x22, 0x01, 0x08, 0x72, 0x35, 0x12, 0x90, 0x89, - 0x71, 0x35, 0x13, 0x98, 0xbb, 0xbb, 0x9a, 0xaa, 0x89, 0x42, 0x64, 0x54, 0x33, 0x22, 0x00, 0xa9, - 0x9b, 0x18, 0x73, 0x34, 0x02, 0xb8, 0xbe, 0xbc, 0xcc, 0xbc, 0xbb, 0x89, 0x88, 0x88, 0x00, 0x11, - 0x22, 0x91, 0x89, 0x62, 0x36, 0x14, 0x98, 0x9a, 0x41, 0x36, 0x33, 0x80, 0xaa, 0xba, 0xbb, 0xac, - 0x9a, 0x8a, 0x72, 0x54, 0x34, 0x33, 0x12, 0x90, 0xbb, 0x8a, 0x63, 0x44, 0x12, 0x90, 0xa9, 0xdb, - 0xdd, 0xcb, 0xab, 0x9a, 0x99, 0x99, 0x08, 0x11, 0x22, 0x00, 0x9a, 0x68, 0x36, 0x14, 0x90, 0x99, - 0x30, 0x36, 0x24, 0x12, 0x98, 0xaa, 0xb9, 0xbb, 0xbc, 0xac, 0x18, 0x46, 0x35, 0x34, 0x22, 0x01, - 0xaa, 0xab, 0x30, 0x37, 0x13, 0x12, 0x00, 0xb9, 0xef, 0xdb, 0xab, 0xaa, 0xaa, 0xa9, 0x89, 0x28, - 0x21, 0x90, 0xaa, 0x28, 0x67, 0x13, 0x91, 0x9a, 0x10, 0x44, 0x34, 0x22, 0x01, 0x99, 0x99, 0xba, - 0xdc, 0xab, 0x0a, 0x51, 0x45, 0x34, 0x34, 0x12, 0xa9, 0xaa, 0x18, 0x44, 0x32, 0x22, 0x24, 0x82, - 0xfb, 0xdc, 0xbb, 0xac, 0xaa, 0xaa, 0x9a, 0x10, 0x21, 0x90, 0xac, 0x19, 0x55, 0x33, 0x81, 0x99, - 0x09, 0x53, 0x44, 0x33, 0x12, 0x08, 0x08, 0xa9, 0xbd, 0xbd, 0x9b, 0x18, 0x52, 0x46, 0x34, 0x12, - 0x90, 0x9a, 0x19, 0x22, 0x23, 0x44, 0x53, 0x22, 0xa8, 0xce, 0xcc, 0xba, 0xcb, 0xba, 0xab, 0x18, - 0x11, 0x90, 0xbb, 0x09, 0x54, 0x34, 0x12, 0x98, 0x99, 0x31, 0x46, 0x33, 0x23, 0x02, 0x01, 0xa1, - 0xec, 0xab, 0xbb, 0xbb, 0x29, 0x57, 0x35, 0x23, 0x80, 0x98, 0x09, 0x18, 0x12, 0x32, 0x47, 0x24, - 0x81, 0xca, 0xcc, 0xbb, 0xcc, 0xcb, 0xaa, 0x88, 0x11, 0x90, 0xaa, 0x8a, 0x31, 0x45, 0x13, 0x80, - 0x9a, 0x10, 0x54, 0x34, 0x32, 0x32, 0x23, 0x80, 0xb9, 0xbd, 0xbc, 0xcd, 0x8b, 0x61, 0x44, 0x23, - 0x01, 0x80, 0x00, 0x08, 0x10, 0x31, 0x56, 0x43, 0x12, 0xa8, 0xcb, 0xdb, 0xcc, 0xdb, 0x9b, 0x89, - 0x80, 0x80, 0xa9, 0xaa, 0x10, 0x42, 0x24, 0x81, 0xaa, 0x19, 0x53, 0x43, 0x53, 0x23, 0x23, 0x01, - 0x98, 0x88, 0xdc, 0xcd, 0xaa, 0x28, 0x36, 0x34, 0x12, 0x02, 0x01, 0x00, 0x08, 0x28, 0x74, 0x44, - 0x12, 0x80, 0x99, 0xb9, 0xde, 0xbc, 0xcb, 0x99, 0x88, 0x90, 0xa9, 0x9a, 0x89, 0x31, 0x24, 0x01, - 0x99, 0x89, 0x52, 0x43, 0x53, 0x35, 0x22, 0x11, 0x11, 0x01, 0xb8, 0xdf, 0xbb, 0x0a, 0x52, 0x24, - 0x23, 0x22, 0x12, 0x00, 0x99, 0x0a, 0x73, 0x46, 0x12, 0x01, 0x01, 0x98, 0xdc, 0xcd, 0xbb, 0x9b, - 0x99, 0x88, 0xb9, 0xcb, 0x8a, 0x21, 0x33, 0x03, 0xa9, 0x08, 0x30, 0x63, 0x45, 0x44, 0x22, 0x02, - 0x22, 0x33, 0x92, 0xdd, 0xbc, 0x9b, 0x31, 0x44, 0x24, 0x33, 0x33, 0x03, 0xb8, 0x8a, 0x72, 0x44, - 0x23, 0x32, 0x32, 0x02, 0xfa, 0xcd, 0xac, 0xbb, 0x99, 0x98, 0xb9, 0xbc, 0x9b, 0x18, 0x21, 0x00, - 0x80, 0x98, 0x8a, 0x30, 0x66, 0x34, 0x14, 0x11, 0x22, 0x34, 0x02, 0xda, 0xbd, 0xbb, 0x0a, 0x42, - 0x32, 0x54, 0x24, 0x12, 0x98, 0x9a, 0x20, 0x44, 0x33, 0x44, 0x33, 0x24, 0x90, 0xdd, 0xbc, 0xbc, - 0xa9, 0x98, 0xa9, 0xcc, 0x9a, 0x89, 0x00, 0x00, 0x01, 0x80, 0x99, 0x19, 0x54, 0x44, 0x23, 0x21, - 0x42, 0x44, 0x22, 0xa0, 0xeb, 0xba, 0x89, 0x08, 0x31, 0x45, 0x45, 0x12, 0x80, 0x89, 0x08, 0x22, - 0x42, 0x43, 0x35, 0x34, 0x02, 0xb9, 0xcf, 0xac, 0x9a, 0x99, 0xaa, 0xbb, 0xbc, 0x8a, 0x89, 0x08, - 0x11, 0x81, 0xba, 0x8b, 0x73, 0x34, 0x24, 0x12, 0x42, 0x44, 0x34, 0x80, 0xaa, 0xbc, 0xab, 0xaa, - 0x89, 0x64, 0x35, 0x14, 0x01, 0x89, 0x00, 0x01, 0x12, 0x63, 0x53, 0x34, 0x24, 0x91, 0xdb, 0xbc, - 0xbb, 0x9a, 0xab, 0xcc, 0xba, 0xab, 0xa9, 0x88, 0x11, 0x81, 0xcb, 0x9b, 0x31, 0x46, 0x23, 0x22, - 0x52, 0x45, 0x24, 0x02, 0x98, 0xa9, 0xca, 0xcb, 0x8a, 0x30, 0x37, 0x34, 0x01, 0x00, 0x80, 0x11, - 0x11, 0x21, 0x64, 0x55, 0x33, 0x02, 0xc9, 0xcb, 0xbb, 0xab, 0xbb, 0xbc, 0xbc, 0xcb, 0xaa, 0x89, - 0x18, 0x80, 0xaa, 0xac, 0x29, 0x34, 0x24, 0x11, 0x52, 0x46, 0x34, 0x12, 0x80, 0x88, 0xba, 0xcd, - 0xab, 0x18, 0x44, 0x43, 0x12, 0x01, 0x10, 0x11, 0x11, 0x08, 0x61, 0x56, 0x34, 0x13, 0x90, 0xcb, - 0xcb, 0xba, 0xac, 0xba, 0xcb, 0xbc, 0xba, 0x9a, 0x08, 0x80, 0xb9, 0xbb, 0x1a, 0x54, 0x12, 0x80, - 0x41, 0x46, 0x35, 0x22, 0x11, 0x11, 0xa8, 0xdd, 0xab, 0x89, 0x31, 0x53, 0x23, 0x12, 0x11, 0x22, - 0x81, 0xb9, 0x39, 0x77, 0x27, 0x13, 0x01, 0x99, 0xba, 0xac, 0xbb, 0xcb, 0xca, 0xbc, 0xac, 0x9a, - 0x89, 0x88, 0xa8, 0xbb, 0x1a, 0x43, 0x12, 0x99, 0x30, 0x67, 0x43, 0x32, 0x43, 0x22, 0x81, 0xda, - 0xbc, 0x9a, 0x18, 0x42, 0x32, 0x23, 0x42, 0x33, 0x02, 0xda, 0x8b, 0x73, 0x37, 0x33, 0x22, 0x88, - 0xba, 0xcb, 0xac, 0xbb, 0xdb, 0xbc, 0xbc, 0xbb, 0x89, 0x88, 0xaa, 0xac, 0x89, 0x33, 0x81, 0xba, - 0x28, 0x47, 0x34, 0x34, 0x34, 0x34, 0x12, 0xb0, 0xcd, 0xbb, 0x89, 0x11, 0x23, 0x33, 0x35, 0x35, - 0x03, 0xb9, 0xbb, 0x60, 0x55, 0x43, 0x22, 0x02, 0x98, 0xba, 0xcb, 0xba, 0xcb, 0xbd, 0xae, 0xab, - 0x99, 0x99, 0xb9, 0xac, 0x89, 0x11, 0x91, 0xa9, 0x19, 0x53, 0x44, 0x43, 0x44, 0x34, 0x23, 0x91, - 0xda, 0xbb, 0x9a, 0x10, 0x11, 0x22, 0x55, 0x34, 0x23, 0x98, 0xab, 0x29, 0x55, 0x44, 0x34, 0x12, - 0x01, 0x99, 0xab, 0xbb, 0xca, 0xdc, 0xcc, 0xbb, 0xa9, 0xa8, 0xbb, 0xbc, 0x99, 0x10, 0x88, 0x9a, - 0x89, 0x32, 0x35, 0x53, 0x45, 0x44, 0x33, 0x12, 0xa9, 0xbc, 0x9b, 0x88, 0x80, 0x19, 0x73, 0x45, - 0x22, 0x80, 0xa9, 0x9a, 0x41, 0x45, 0x44, 0x33, 0x11, 0x80, 0xa9, 0x9a, 0xa9, 0xdc, 0xbe, 0xbb, - 0xaa, 0xa9, 0xbc, 0xbb, 0x9a, 0x88, 0x88, 0xaa, 0x8a, 0x21, 0x22, 0x42, 0x57, 0x54, 0x43, 0x12, - 0x90, 0xaa, 0x9b, 0x88, 0xb9, 0x9b, 0x50, 0x55, 0x23, 0x02, 0xa9, 0xab, 0x19, 0x55, 0x45, 0x24, - 0x23, 0x81, 0x88, 0x88, 0x98, 0xea, 0xcc, 0xbb, 0xab, 0xaa, 0xdb, 0xab, 0x9b, 0x99, 0x99, 0x9a, - 0x8a, 0x08, 0x11, 0x08, 0x72, 0x47, 0x44, 0x23, 0x00, 0x99, 0x98, 0x88, 0xa9, 0xac, 0x19, 0x54, - 0x34, 0x22, 0xa0, 0xbb, 0x9b, 0x41, 0x47, 0x35, 0x24, 0x02, 0x00, 0x00, 0x81, 0xb9, 0xbf, 0xac, - 0xab, 0xaa, 0xdb, 0xba, 0xaa, 0xa9, 0xaa, 0xa9, 0x9a, 0x88, 0x01, 0xb8, 0x8b, 0x77, 0x45, 0x23, - 0x11, 0x88, 0x88, 0x90, 0xa9, 0xbc, 0x8a, 0x52, 0x35, 0x24, 0x81, 0xa9, 0xbb, 0x0a, 0x73, 0x37, - 0x24, 0x12, 0x01, 0x21, 0x12, 0xa8, 0xcd, 0xcb, 0xab, 0xbb, 0xbc, 0xcb, 0xaa, 0xba, 0xba, 0xba, - 0xaa, 0x09, 0x01, 0xc9, 0xad, 0x61, 0x46, 0x33, 0x12, 0x11, 0x00, 0x80, 0xb9, 0xdc, 0xaa, 0x20, - 0x44, 0x33, 0x13, 0x90, 0xbd, 0xac, 0x20, 0x47, 0x24, 0x13, 0x12, 0x32, 0x24, 0x80, 0xba, 0xbd, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xab, 0xcb, 0xac, 0xaa, 0x88, 0x01, 0xb8, 0xbd, 0x29, 0x47, 0x34, - 0x23, 0x22, 0x12, 0x02, 0xa8, 0xcc, 0xbb, 0x08, 0x52, 0x53, 0x24, 0x02, 0xc9, 0xcb, 0x09, 0x62, - 0x34, 0x22, 0x22, 0x34, 0x24, 0x01, 0xa8, 0xca, 0xdb, 0xbb, 0xcc, 0xbb, 0xac, 0xaa, 0xba, 0xbc, - 0xaa, 0x09, 0x11, 0xb8, 0xbe, 0x89, 0x62, 0x34, 0x24, 0x23, 0x23, 0x22, 0x81, 0xca, 0xbb, 0xaa, - 0x18, 0x55, 0x44, 0x13, 0xb8, 0xbd, 0x9b, 0x31, 0x45, 0x32, 0x42, 0x43, 0x34, 0x22, 0x00, 0xa9, - 0xca, 0xdb, 0xdb, 0xbb, 0xac, 0xaa, 0xba, 0xbd, 0x9b, 0x09, 0x01, 0xa8, 0xcc, 0xaa, 0x28, 0x44, - 0x34, 0x34, 0x43, 0x23, 0x11, 0x98, 0xb9, 0xbb, 0xab, 0x60, 0x46, 0x23, 0x91, 0xcc, 0xaa, 0x10, - 0x33, 0x43, 0x34, 0x44, 0x34, 0x33, 0x11, 0x80, 0xa9, 0xdb, 0xcc, 0xbc, 0xbb, 0xab, 0xdb, 0xbc, - 0xab, 0x88, 0x00, 0xa0, 0xca, 0xac, 0x09, 0x31, 0x34, 0x35, 0x45, 0x32, 0x21, 0x00, 0x90, 0xca, - 0xbb, 0x09, 0x65, 0x43, 0x81, 0xb9, 0x9c, 0x09, 0x11, 0x22, 0x44, 0x44, 0x53, 0x33, 0x12, 0x01, - 0x00, 0xa8, 0xdc, 0xbc, 0xbb, 0xbb, 0xeb, 0xbc, 0xac, 0x99, 0x80, 0x88, 0xb9, 0xbb, 0x9a, 0x18, - 0x31, 0x55, 0x35, 0x24, 0x23, 0x23, 0x11, 0xb9, 0xcc, 0x8a, 0x72, 0x34, 0x02, 0xa8, 0xaa, 0x89, - 0x00, 0x20, 0x52, 0x45, 0x44, 0x33, 0x23, 0x12, 0x12, 0x81, 0xdb, 0xbd, 0xac, 0xbb, 0xdb, 0xbc, - 0xbc, 0xaa, 0x88, 0x98, 0xa9, 0xbb, 0xab, 0xaa, 0x18, 0x73, 0x44, 0x43, 0x33, 0x43, 0x33, 0xa0, - 0xdc, 0x9a, 0x21, 0x35, 0x23, 0x90, 0xba, 0x9a, 0x89, 0x89, 0x28, 0x57, 0x35, 0x25, 0x22, 0x22, - 0x22, 0x02, 0xb8, 0xcd, 0xba, 0xbb, 0xcc, 0xdc, 0xbb, 0xab, 0x99, 0x98, 0xaa, 0xaa, 0xbb, 0xac, - 0x8a, 0x38, 0x45, 0x34, 0x34, 0x45, 0x23, 0x82, 0xca, 0x9b, 0x18, 0x34, 0x24, 0x01, 0x99, 0x89, - 0x98, 0xa8, 0x8a, 0x73, 0x47, 0x33, 0x23, 0x34, 0x33, 0x23, 0x90, 0xda, 0xab, 0xab, 0xcc, 0xdd, - 0xbb, 0xac, 0x99, 0x98, 0x99, 0xa9, 0xb9, 0xdb, 0xaa, 0x08, 0x31, 0x42, 0x63, 0x54, 0x24, 0x02, - 0xa8, 0xbb, 0x0a, 0x41, 0x33, 0x02, 0x80, 0x89, 0x88, 0xcb, 0xac, 0x40, 0x46, 0x43, 0x43, 0x43, - 0x43, 0x33, 0x01, 0xb8, 0xaa, 0xa9, 0xeb, 0xcd, 0xbc, 0xac, 0x9a, 0x99, 0x99, 0x98, 0xa9, 0xcb, - 0xac, 0x09, 0x00, 0x08, 0x40, 0x47, 0x44, 0x12, 0x98, 0xaa, 0x8a, 0x21, 0x33, 0x14, 0x11, 0x11, - 0x01, 0xb9, 0xad, 0x19, 0x45, 0x43, 0x53, 0x53, 0x53, 0x43, 0x11, 0x88, 0x89, 0x89, 0xb9, 0xcd, - 0xbd, 0xbb, 0xbb, 0xab, 0x9a, 0x99, 0xa9, 0xcc, 0xac, 0x99, 0x88, 0xaa, 0x19, 0x57, 0x44, 0x23, - 0x01, 0xaa, 0x9b, 0x10, 0x22, 0x32, 0x32, 0x24, 0x02, 0xb9, 0xbe, 0x9b, 0x31, 0x34, 0x44, 0x45, - 0x36, 0x34, 0x22, 0x00, 0x89, 0x80, 0xa8, 0xdc, 0xcc, 0xbb, 0xcb, 0xba, 0x99, 0x89, 0x98, 0xcb, - 0xab, 0x9a, 0xa8, 0xcc, 0x9a, 0x62, 0x46, 0x33, 0x02, 0xa8, 0x9a, 0x18, 0x11, 0x21, 0x53, 0x33, - 0x23, 0x81, 0xcc, 0xab, 0x00, 0x11, 0x21, 0x66, 0x55, 0x43, 0x23, 0x11, 0x00, 0x00, 0xa8, 0xda, - 0xbc, 0xbc, 0xbd, 0xcb, 0x8a, 0x89, 0x88, 0xaa, 0xab, 0x89, 0xa9, 0xcd, 0xac, 0x09, 0x45, 0x25, - 0x13, 0x88, 0x99, 0x88, 0x08, 0x10, 0x32, 0x45, 0x22, 0x80, 0xb9, 0xab, 0x89, 0x90, 0xac, 0x69, - 0x57, 0x44, 0x32, 0x12, 0x11, 0x11, 0x80, 0xba, 0xdb, 0xcc, 0xbc, 0xbc, 0xaa, 0x88, 0x99, 0xab, - 0x9b, 0x89, 0x90, 0xfb, 0xbd, 0x8b, 0x51, 0x44, 0x22, 0x11, 0x88, 0x88, 0x80, 0x88, 0x30, 0x54, - 0x43, 0x01, 0x90, 0x8a, 0x08, 0xa8, 0xcc, 0x0b, 0x75, 0x34, 0x34, 0x32, 0x22, 0x22, 0x00, 0x98, - 0xbb, 0xdd, 0xdc, 0xbb, 0xaa, 0x9a, 0xa9, 0xbb, 0xab, 0x0a, 0x10, 0xfa, 0xcd, 0x9b, 0x28, 0x34, - 0x24, 0x22, 0x00, 0x00, 0x98, 0x99, 0x19, 0x73, 0x34, 0x13, 0x08, 0x88, 0x11, 0xa1, 0xdd, 0xab, - 0x51, 0x45, 0x34, 0x33, 0x43, 0x22, 0x11, 0x00, 0x88, 0xda, 0xdd, 0xcb, 0xba, 0x9a, 0x9a, 0xbb, - 0xac, 0x08, 0x10, 0xb0, 0xed, 0xab, 0x09, 0x32, 0x25, 0x33, 0x23, 0x21, 0x00, 0xa8, 0x8b, 0x73, - 0x34, 0x23, 0x80, 0x18, 0x32, 0x91, 0xdd, 0xbc, 0x28, 0x54, 0x34, 0x35, 0x43, 0x22, 0x11, 0x12, - 0x12, 0xa8, 0xec, 0xcc, 0xba, 0xaa, 0xaa, 0xcb, 0xab, 0x8a, 0x11, 0x90, 0xdc, 0xbc, 0x9b, 0x18, - 0x22, 0x34, 0x34, 0x33, 0x01, 0xa8, 0x9b, 0x51, 0x45, 0x12, 0x00, 0x20, 0x43, 0x82, 0xeb, 0xac, - 0x8a, 0x31, 0x45, 0x45, 0x33, 0x24, 0x21, 0x22, 0x33, 0x02, 0xd9, 0xcd, 0xac, 0xaa, 0xaa, 0xbc, - 0xac, 0x99, 0x01, 0x00, 0xba, 0xdc, 0xaa, 0x99, 0x00, 0x22, 0x44, 0x43, 0x12, 0x98, 0x89, 0x38, - 0x44, 0x12, 0x98, 0x31, 0x35, 0x03, 0xda, 0xbc, 0xab, 0x89, 0x72, 0x54, 0x53, 0x32, 0x22, 0x32, - 0x53, 0x12, 0x90, 0xdb, 0xbc, 0xaa, 0xcb, 0xcc, 0xab, 0x9a, 0x08, 0x81, 0xb8, 0xeb, 0xbb, 0x9a, - 0x88, 0x28, 0x63, 0x34, 0x23, 0x91, 0x89, 0x30, 0x34, 0x12, 0x89, 0x50, 0x35, 0x13, 0x90, 0xba, - 0xcd, 0xaa, 0x29, 0x55, 0x45, 0x33, 0x32, 0x33, 0x35, 0x34, 0x01, 0xba, 0xbc, 0xac, 0xcb, 0xcc, - 0xcb, 0x9a, 0x89, 0x80, 0x98, 0xbb, 0xbc, 0xaa, 0x9a, 0x89, 0x72, 0x44, 0x13, 0x81, 0x88, 0x20, - 0x32, 0x81, 0x88, 0x40, 0x45, 0x22, 0x01, 0xa8, 0xdc, 0xbc, 0x8a, 0x41, 0x64, 0x33, 0x23, 0x33, - 0x45, 0x34, 0x11, 0x98, 0xba, 0xaa, 0xcc, 0xbc, 0xae, 0xab, 0x8a, 0x88, 0x88, 0xba, 0xac, 0xba, - 0xba, 0x9c, 0x38, 0x46, 0x33, 0x81, 0x88, 0x31, 0x22, 0x81, 0x88, 0x30, 0x45, 0x24, 0x12, 0x91, - 0xdc, 0xcc, 0xbb, 0x18, 0x45, 0x34, 0x33, 0x33, 0x36, 0x35, 0x22, 0x00, 0x98, 0x99, 0xc9, 0xcc, - 0xcd, 0xba, 0x8a, 0x09, 0x89, 0xa9, 0xaa, 0xba, 0xdc, 0xab, 0x19, 0x63, 0x23, 0x02, 0x00, 0x21, - 0x22, 0x21, 0x20, 0x21, 0x52, 0x54, 0x33, 0x22, 0xa1, 0xcf, 0xbc, 0x89, 0x32, 0x35, 0x32, 0x42, - 0x36, 0x35, 0x22, 0x02, 0x80, 0x80, 0xa8, 0xdc, 0xbe, 0xac, 0x9b, 0x99, 0x89, 0x99, 0x89, 0xa9, - 0xdc, 0xab, 0x0a, 0x32, 0x25, 0x22, 0x21, 0x12, 0x22, 0x11, 0x11, 0x20, 0x53, 0x44, 0x54, 0x23, - 0x12, 0xda, 0xbd, 0x9a, 0x20, 0x23, 0x11, 0x52, 0x46, 0x44, 0x32, 0x11, 0x10, 0x00, 0x00, 0xda, - 0xbe, 0xbd, 0xaa, 0x9a, 0x9a, 0x99, 0x00, 0x80, 0xeb, 0xcb, 0x99, 0x20, 0x32, 0x43, 0x22, 0x23, - 0x23, 0x01, 0x11, 0x10, 0x22, 0x45, 0x45, 0x44, 0x23, 0xb8, 0xcd, 0x9b, 0x18, 0x11, 0x08, 0x18, - 0x65, 0x45, 0x32, 0x22, 0x11, 0x11, 0x21, 0xa8, 0xcf, 0xbc, 0xbb, 0xbb, 0xbb, 0x9b, 0x18, 0x81, - 0xeb, 0xcc, 0x9a, 0x09, 0x10, 0x22, 0x32, 0x32, 0x24, 0x12, 0x01, 0x11, 0x02, 0x08, 0x75, 0x47, - 0x23, 0x81, 0xca, 0xaa, 0x08, 0x12, 0x80, 0x8a, 0x73, 0x45, 0x24, 0x23, 0x12, 0x21, 0x14, 0x81, - 0xeb, 0xbc, 0xbc, 0xbc, 0xbb, 0x9b, 0x88, 0x81, 0xb9, 0xbd, 0xac, 0x99, 0x00, 0x11, 0x32, 0x34, - 0x34, 0x12, 0x22, 0x34, 0x81, 0xaa, 0x70, 0x47, 0x24, 0x11, 0x99, 0xaa, 0x08, 0x01, 0x90, 0x9a, - 0x38, 0x77, 0x43, 0x22, 0x12, 0x23, 0x34, 0x02, 0xb8, 0xcc, 0xcc, 0xdb, 0xab, 0xab, 0x89, 0x80, - 0xa8, 0xcb, 0xbc, 0x9a, 0x8a, 0x89, 0x10, 0x33, 0x33, 0x22, 0x54, 0x43, 0x90, 0xcc, 0x09, 0x56, - 0x34, 0x22, 0x90, 0x99, 0x88, 0x10, 0x90, 0xbc, 0x0b, 0x74, 0x34, 0x33, 0x32, 0x44, 0x24, 0x13, - 0x80, 0xa9, 0xeb, 0xdc, 0xbb, 0xbb, 0x8a, 0x89, 0x98, 0xca, 0xac, 0x9a, 0x9a, 0x99, 0x18, 0x22, - 0x01, 0x10, 0x55, 0x43, 0x90, 0xcc, 0x8b, 0x62, 0x35, 0x33, 0x02, 0x88, 0x08, 0x11, 0xa0, 0xdc, - 0x8b, 0x51, 0x44, 0x23, 0x42, 0x53, 0x33, 0x24, 0x21, 0x00, 0xa9, 0xce, 0xbc, 0xbc, 0xa9, 0x89, - 0x98, 0xaa, 0xbb, 0xba, 0xbb, 0x9b, 0x18, 0x01, 0xba, 0x9c, 0x73, 0x26, 0x81, 0xcb, 0xbb, 0x30, - 0x47, 0x24, 0x11, 0x00, 0x18, 0x11, 0x90, 0xeb, 0xab, 0x20, 0x44, 0x32, 0x34, 0x45, 0x43, 0x32, - 0x33, 0x22, 0x81, 0xea, 0xcc, 0xac, 0x9b, 0x9a, 0x99, 0xa9, 0xa9, 0xba, 0xbc, 0xbb, 0x89, 0x90, - 0xeb, 0x9b, 0x20, 0x35, 0x12, 0xea, 0xbc, 0x09, 0x62, 0x24, 0x12, 0x00, 0x20, 0x33, 0x91, 0xfb, - 0xba, 0x08, 0x32, 0x42, 0x44, 0x35, 0x25, 0x33, 0x34, 0x32, 0x22, 0xa0, 0xec, 0xbc, 0xaa, 0xab, - 0xaa, 0x99, 0xa9, 0xba, 0xbd, 0x9c, 0x88, 0x98, 0xca, 0xbb, 0x28, 0x45, 0x23, 0xa0, 0xcd, 0x9b, - 0x31, 0x26, 0x12, 0x01, 0x32, 0x25, 0x02, 0xb9, 0xac, 0x9a, 0x08, 0x11, 0x64, 0x44, 0x34, 0x34, - 0x34, 0x43, 0x33, 0x01, 0xc9, 0xbc, 0xbc, 0xab, 0xac, 0x99, 0x89, 0xaa, 0xbd, 0xaa, 0x99, 0x98, - 0xbc, 0xad, 0x0a, 0x52, 0x24, 0x91, 0xda, 0xaa, 0x28, 0x33, 0x12, 0x18, 0x54, 0x34, 0x12, 0x98, - 0xba, 0xbb, 0xbb, 0x99, 0x41, 0x67, 0x53, 0x32, 0x43, 0x44, 0x33, 0x13, 0x98, 0xcb, 0xbc, 0xcb, - 0xbb, 0x9a, 0x89, 0xb9, 0xbd, 0xbb, 0x9a, 0xb9, 0xcc, 0xcc, 0x9a, 0x31, 0x35, 0x01, 0xc9, 0xab, - 0x19, 0x32, 0x02, 0x20, 0x74, 0x43, 0x22, 0x81, 0x98, 0xba, 0xaa, 0xac, 0x0a, 0x73, 0x35, 0x34, - 0x34, 0x45, 0x43, 0x22, 0x01, 0x98, 0xca, 0xbc, 0xcb, 0xa9, 0x88, 0xa9, 0xcb, 0xbb, 0x9a, 0x99, - 0xdb, 0xdc, 0xaa, 0x10, 0x44, 0x02, 0x98, 0xab, 0x89, 0x11, 0x00, 0x11, 0x62, 0x35, 0x34, 0x01, - 0x80, 0xa8, 0xdb, 0xcb, 0x8a, 0x30, 0x36, 0x23, 0x44, 0x55, 0x43, 0x23, 0x22, 0x81, 0xb8, 0xdc, - 0xba, 0xaa, 0x99, 0x9a, 0xbc, 0xcb, 0x99, 0x89, 0xc9, 0xcd, 0xbb, 0x09, 0x43, 0x12, 0xa0, 0xaa, - 0x99, 0x00, 0x80, 0x08, 0x73, 0x44, 0x24, 0x12, 0x01, 0x81, 0xd9, 0xbc, 0xab, 0x20, 0x24, 0x23, - 0x63, 0x46, 0x34, 0x24, 0x33, 0x23, 0x90, 0xda, 0xcb, 0xaa, 0x9a, 0xaa, 0xdb, 0xcb, 0x99, 0x08, - 0xa9, 0xcd, 0xbc, 0x89, 0x21, 0x23, 0x80, 0x99, 0x09, 0x00, 0x80, 0x18, 0x51, 0x55, 0x33, 0x33, - 0x43, 0x33, 0xc9, 0xcd, 0x9a, 0x18, 0x01, 0x01, 0x31, 0x47, 0x54, 0x43, 0x34, 0x33, 0x12, 0xa9, - 0xbc, 0xcb, 0xaa, 0xb9, 0xdb, 0xbc, 0xaa, 0x00, 0xa8, 0xdc, 0xbc, 0x9a, 0x10, 0x22, 0x00, 0x88, - 0x18, 0x00, 0x00, 0x18, 0x51, 0x35, 0x43, 0x42, 0x44, 0x24, 0x81, 0xbb, 0xab, 0x98, 0x98, 0x99, - 0x19, 0x51, 0x56, 0x45, 0x44, 0x24, 0x22, 0x80, 0xa9, 0xbb, 0xaa, 0xba, 0xcd, 0xcc, 0x8a, 0x08, - 0x80, 0xca, 0xcc, 0x9a, 0x88, 0x01, 0x81, 0x88, 0x10, 0x10, 0x80, 0x08, 0x32, 0x26, 0x22, 0x63, - 0x45, 0x24, 0x01, 0x98, 0x98, 0x88, 0xa8, 0x99, 0x88, 0x09, 0x51, 0x57, 0x55, 0x43, 0x33, 0x02, - 0x98, 0xaa, 0x9a, 0xaa, 0xcd, 0xcc, 0x9a, 0x09, 0x00, 0xc9, 0xbc, 0xbb, 0x99, 0x08, 0x88, 0x88, - 0x00, 0x11, 0x99, 0x29, 0x64, 0x12, 0x88, 0x41, 0x47, 0x34, 0x11, 0x81, 0x88, 0x08, 0x98, 0x9a, - 0xaa, 0xdb, 0x9a, 0x71, 0x65, 0x44, 0x33, 0x23, 0x80, 0xa9, 0x89, 0x99, 0xec, 0xcb, 0xab, 0x89, - 0x80, 0xb8, 0xcd, 0xab, 0xaa, 0x89, 0x99, 0x09, 0x10, 0x01, 0xa8, 0x29, 0x54, 0x13, 0x99, 0x41, - 0x57, 0x43, 0x22, 0x11, 0x01, 0x80, 0x80, 0x90, 0xa9, 0xdb, 0xbc, 0x9a, 0x73, 0x57, 0x43, 0x23, - 0x01, 0x88, 0x08, 0x80, 0xda, 0xcc, 0xbb, 0x99, 0x08, 0xa9, 0xdb, 0xbb, 0xab, 0xab, 0xab, 0x09, - 0x00, 0x80, 0xbb, 0x19, 0x44, 0x02, 0xa9, 0x39, 0x77, 0x26, 0x22, 0x13, 0x11, 0x10, 0x10, 0x80, - 0x98, 0xba, 0xcf, 0xac, 0x19, 0x55, 0x45, 0x23, 0x12, 0x00, 0x10, 0x01, 0xc8, 0xcc, 0xbc, 0x9a, - 0x88, 0x99, 0xcb, 0xab, 0xbb, 0xcb, 0xbb, 0x09, 0x08, 0x98, 0x99, 0x09, 0x42, 0x91, 0xcb, 0x0a, - 0x65, 0x44, 0x34, 0x33, 0x22, 0x11, 0x11, 0x10, 0x11, 0x82, 0xfc, 0xcd, 0x9a, 0x50, 0x45, 0x24, - 0x22, 0x10, 0x21, 0x12, 0x90, 0xeb, 0xbc, 0xaa, 0x99, 0xa9, 0xcb, 0xbb, 0xcb, 0xcb, 0xab, 0x8a, - 0x99, 0xb9, 0xaa, 0x08, 0x22, 0x90, 0xba, 0xbc, 0x51, 0x47, 0x53, 0x33, 0x24, 0x12, 0x00, 0x10, - 0x31, 0x43, 0xa1, 0xee, 0xbb, 0x29, 0x65, 0x24, 0x23, 0x22, 0x22, 0x33, 0x02, 0xda, 0xbd, 0xba, - 0xaa, 0xbb, 0xbb, 0xcb, 0xbc, 0xcc, 0xba, 0x99, 0x98, 0xba, 0xab, 0x89, 0x11, 0x23, 0x81, 0xab, - 0x19, 0x65, 0x45, 0x35, 0x43, 0x12, 0x00, 0x00, 0x30, 0x35, 0x03, 0xfb, 0xbd, 0x89, 0x42, 0x35, - 0x43, 0x22, 0x32, 0x25, 0x12, 0xa8, 0xcb, 0xbb, 0xcb, 0xba, 0xaa, 0xab, 0xcc, 0xcc, 0xba, 0x99, - 0x9a, 0xbb, 0xbc, 0x8a, 0x18, 0x01, 0x88, 0xb9, 0xab, 0x28, 0x65, 0x45, 0x34, 0x33, 0x02, 0x88, - 0x30, 0x46, 0x22, 0xc9, 0xcd, 0x9a, 0x20, 0x35, 0x34, 0x32, 0x53, 0x34, 0x22, 0x80, 0xb9, 0xcb, - 0xcb, 0xbb, 0xaa, 0xa9, 0xdb, 0xbc, 0xcb, 0xaa, 0xa9, 0xba, 0xbc, 0xaa, 0x08, 0x80, 0x00, 0xa8, - 0xdb, 0x9a, 0x18, 0x74, 0x54, 0x33, 0x02, 0x90, 0x20, 0x45, 0x24, 0xa0, 0xcc, 0x9c, 0x18, 0x33, - 0x25, 0x33, 0x54, 0x43, 0x23, 0x12, 0x88, 0xb9, 0xcc, 0xab, 0xaa, 0xa9, 0xba, 0xcd, 0xba, 0xbb, - 0xba, 0xbc, 0xbc, 0xbb, 0x9a, 0x98, 0x08, 0x88, 0xa9, 0xcb, 0xab, 0x40, 0x77, 0x24, 0x12, 0x80, - 0x18, 0x44, 0x34, 0x01, 0xdb, 0xac, 0x09, 0x21, 0x33, 0x43, 0x45, 0x34, 0x24, 0x23, 0x02, 0x98, - 0xca, 0xbc, 0xaa, 0x99, 0xa9, 0xbc, 0xbc, 0xba, 0xac, 0xbb, 0xbc, 0xac, 0x9a, 0x89, 0x89, 0x88, - 0x98, 0xca, 0xbd, 0x8b, 0x73, 0x35, 0x13, 0x90, 0x08, 0x64, 0x34, 0x13, 0xc9, 0xcb, 0x8a, 0x00, - 0x21, 0x32, 0x46, 0x44, 0x33, 0x24, 0x23, 0x00, 0xb9, 0xcc, 0xaa, 0x9a, 0xba, 0xcb, 0xbc, 0xba, - 0xcb, 0xba, 0xbc, 0xbc, 0xaa, 0x89, 0x99, 0x00, 0x11, 0xc8, 0xcd, 0xaa, 0x30, 0x47, 0x13, 0x80, - 0x89, 0x73, 0x34, 0x14, 0x98, 0xba, 0xaa, 0x89, 0x08, 0x10, 0x54, 0x54, 0x43, 0x34, 0x33, 0x22, - 0x98, 0xba, 0xac, 0xaa, 0xbb, 0xcc, 0xbb, 0xcb, 0xba, 0xbb, 0xbd, 0xac, 0xab, 0xab, 0x9a, 0x09, - 0x22, 0xa1, 0xde, 0xcb, 0x08, 0x63, 0x22, 0x80, 0x8a, 0x72, 0x44, 0x33, 0x00, 0xa9, 0xaa, 0xab, - 0x99, 0x09, 0x52, 0x45, 0x44, 0x44, 0x33, 0x23, 0x00, 0x99, 0xaa, 0xba, 0xba, 0xcc, 0xcb, 0xba, - 0xba, 0xcb, 0xdb, 0xbb, 0xcb, 0xba, 0xbb, 0x99, 0x21, 0x91, 0xfb, 0xae, 0x89, 0x32, 0x24, 0x90, - 0xaa, 0x61, 0x45, 0x43, 0x11, 0x88, 0x99, 0xaa, 0xaa, 0x8a, 0x10, 0x53, 0x55, 0x44, 0x34, 0x33, - 0x12, 0x88, 0xa8, 0xa9, 0xb9, 0xdb, 0xcb, 0xab, 0xab, 0xbc, 0xbc, 0xcc, 0xba, 0xbb, 0xac, 0x9a, - 0x10, 0x12, 0xd9, 0xbd, 0x9a, 0x32, 0x25, 0x90, 0xbb, 0x28, 0x57, 0x43, 0x22, 0x01, 0x98, 0xaa, - 0xab, 0xab, 0x9a, 0x18, 0x73, 0x47, 0x44, 0x33, 0x22, 0x01, 0x88, 0x88, 0x98, 0xb9, 0xbc, 0xac, - 0xab, 0xcb, 0xbc, 0xbb, 0xcc, 0xdb, 0xba, 0x9b, 0x18, 0x23, 0xb8, 0xce, 0x9a, 0x21, 0x33, 0x90, - 0xbc, 0x0a, 0x55, 0x35, 0x33, 0x23, 0x02, 0xa9, 0xcb, 0xaa, 0xbb, 0xbc, 0x18, 0x75, 0x54, 0x33, - 0x24, 0x11, 0x00, 0x08, 0x98, 0xaa, 0xcb, 0xab, 0xbb, 0xdb, 0xcb, 0xbb, 0xbb, 0xbe, 0xbd, 0x9b, - 0x19, 0x21, 0x90, 0xcd, 0xaa, 0x20, 0x33, 0x81, 0xca, 0x9b, 0x52, 0x46, 0x43, 0x23, 0x12, 0x90, - 0xa9, 0xb9, 0xcb, 0xbc, 0xab, 0x51, 0x65, 0x34, 0x24, 0x12, 0x02, 0x01, 0x88, 0x99, 0xbb, 0xcb, - 0xab, 0xcb, 0xbc, 0xbb, 0xba, 0xdd, 0xbd, 0xab, 0x09, 0x11, 0x90, 0xcc, 0xab, 0x08, 0x33, 0x02, - 0xb9, 0xab, 0x28, 0x67, 0x34, 0x34, 0x22, 0x01, 0x89, 0xa9, 0xba, 0xcd, 0xbb, 0x09, 0x64, 0x45, - 0x33, 0x33, 0x32, 0x21, 0x00, 0x88, 0xbb, 0xcb, 0xbb, 0xcc, 0xac, 0xab, 0xa9, 0xfb, 0xdc, 0xaa, - 0x89, 0x00, 0x80, 0xcb, 0xbb, 0x0a, 0x11, 0x02, 0x90, 0xcb, 0x8a, 0x61, 0x55, 0x43, 0x22, 0x11, - 0x00, 0x80, 0x98, 0xdb, 0xbc, 0xab, 0x41, 0x56, 0x43, 0x33, 0x33, 0x23, 0x22, 0x80, 0xa8, 0xba, - 0xcb, 0xcc, 0xbc, 0x9a, 0x99, 0xda, 0xbe, 0xbc, 0x8a, 0x18, 0x80, 0xba, 0xad, 0x9a, 0x10, 0x12, - 0x01, 0xa9, 0xcb, 0x29, 0x56, 0x35, 0x23, 0x13, 0x12, 0x10, 0x88, 0xda, 0xcd, 0xbb, 0x09, 0x62, - 0x34, 0x35, 0x42, 0x22, 0x13, 0x02, 0x88, 0x88, 0xaa, 0xcd, 0xcb, 0x9a, 0x88, 0xa9, 0xde, 0xcb, - 0x99, 0x08, 0x80, 0xa8, 0xbb, 0x9c, 0x09, 0x10, 0x02, 0xa0, 0xcc, 0x8a, 0x62, 0x44, 0x43, 0x22, - 0x21, 0x21, 0x12, 0xb8, 0xdd, 0xbc, 0x9a, 0x20, 0x54, 0x53, 0x33, 0x34, 0x33, 0x12, 0x01, 0x01, - 0x98, 0xcc, 0xbd, 0xab, 0x08, 0xa8, 0xdd, 0xbc, 0xab, 0x89, 0x88, 0xa8, 0xcb, 0xbb, 0x9b, 0x08, - 0x22, 0x98, 0xcc, 0xbb, 0x28, 0x47, 0x34, 0x33, 0x33, 0x43, 0x33, 0x82, 0xea, 0xcc, 0xab, 0x09, - 0x42, 0x44, 0x44, 0x34, 0x32, 0x22, 0x11, 0x12, 0x01, 0xea, 0xdb, 0x9a, 0x09, 0x88, 0xdb, 0xbd, - 0xbb, 0x9a, 0x98, 0x99, 0xba, 0xbd, 0x9b, 0x19, 0x11, 0x81, 0xc9, 0xbc, 0x0a, 0x73, 0x25, 0x33, - 0x32, 0x24, 0x24, 0x13, 0xa0, 0xce, 0xab, 0x9a, 0x18, 0x52, 0x54, 0x34, 0x33, 0x33, 0x22, 0x43, - 0x12, 0xb0, 0xcd, 0xab, 0x09, 0x88, 0xda, 0xbd, 0xbc, 0xaa, 0x99, 0x88, 0xba, 0xdb, 0xbb, 0x89, - 0x00, 0x01, 0xb8, 0xcd, 0x9a, 0x30, 0x46, 0x42, 0x22, 0x33, 0x35, 0x33, 0x82, 0xdb, 0xbc, 0xbb, - 0x9a, 0x18, 0x55, 0x35, 0x34, 0x33, 0x32, 0x53, 0x22, 0x90, 0xdb, 0xab, 0x89, 0x90, 0xb9, 0xce, - 0xac, 0xab, 0x9a, 0x88, 0xaa, 0xdb, 0xcb, 0x99, 0x09, 0x01, 0x98, 0xbc, 0xbb, 0x29, 0x64, 0x43, - 0x32, 0x34, 0x35, 0x34, 0x02, 0x98, 0xcb, 0xac, 0xcb, 0x9a, 0x31, 0x46, 0x34, 0x33, 0x43, 0x43, - 0x24, 0x81, 0xa9, 0xba, 0x99, 0x09, 0xa9, 0xec, 0xbc, 0xcb, 0x9a, 0x99, 0x99, 0xcb, 0xcb, 0xab, - 0x8a, 0x80, 0x98, 0xbc, 0xad, 0x8a, 0x22, 0x44, 0x22, 0x34, 0x46, 0x33, 0x23, 0x81, 0xa8, 0xdb, - 0xbc, 0xac, 0x19, 0x53, 0x44, 0x22, 0x43, 0x34, 0x34, 0x12, 0x98, 0xaa, 0x9b, 0x88, 0x98, 0xda, - 0xcd, 0xbc, 0xaa, 0x9a, 0xa9, 0xca, 0xbc, 0xbb, 0x9b, 0x08, 0x80, 0xca, 0xbc, 0x9b, 0x10, 0x43, - 0x32, 0x54, 0x54, 0x34, 0x33, 0x13, 0x01, 0xa9, 0xdc, 0xbc, 0x89, 0x31, 0x35, 0x33, 0x54, 0x53, - 0x24, 0x13, 0x81, 0x99, 0x9a, 0x88, 0x80, 0xb8, 0xcd, 0xcc, 0xab, 0xaa, 0x9a, 0xbb, 0xcd, 0xbb, - 0xab, 0x09, 0x88, 0xb9, 0xbc, 0xab, 0x19, 0x21, 0x10, 0x62, 0x46, 0x35, 0x33, 0x24, 0x21, 0x01, - 0xea, 0xdb, 0x99, 0x18, 0x22, 0x22, 0x53, 0x45, 0x44, 0x22, 0x02, 0x90, 0x99, 0x98, 0x00, 0x80, - 0xda, 0xdc, 0xba, 0xaa, 0xaa, 0xaa, 0xdc, 0xcb, 0xaa, 0x89, 0x88, 0x99, 0xbb, 0xaa, 0x08, 0x01, - 0x88, 0x18, 0x67, 0x44, 0x22, 0x33, 0x35, 0x12, 0xb8, 0xbe, 0xab, 0x09, 0x11, 0x21, 0x43, 0x56, - 0x44, 0x33, 0x23, 0x01, 0x89, 0x09, 0x10, 0x11, 0xb8, 0xdd, 0xcb, 0xbb, 0xa9, 0xb9, 0xcc, 0xcc, - 0xbb, 0x99, 0x89, 0xb9, 0xcb, 0xaa, 0x88, 0x00, 0xa9, 0x09, 0x74, 0x34, 0x43, 0x43, 0x35, 0x33, - 0x90, 0xca, 0xcb, 0x99, 0x00, 0x80, 0x10, 0x64, 0x45, 0x43, 0x33, 0x11, 0x80, 0x09, 0x08, 0x10, - 0x90, 0xeb, 0xcc, 0xbb, 0xaa, 0xba, 0xdb, 0xcc, 0xbb, 0x9a, 0x89, 0xa9, 0xbc, 0xaa, 0x09, 0x98, - 0xaa, 0x8a, 0x72, 0x43, 0x32, 0x55, 0x44, 0x24, 0x01, 0xa8, 0xaa, 0x9a, 0x88, 0x89, 0x8a, 0x40, - 0x66, 0x34, 0x34, 0x22, 0x01, 0x80, 0x00, 0x11, 0x01, 0xc9, 0xdc, 0xcb, 0xaa, 0xa9, 0xca, 0xbc, - 0xbc, 0xab, 0x98, 0xa9, 0xbc, 0xab, 0x89, 0xb9, 0xbc, 0x8a, 0x22, 0x24, 0x43, 0x55, 0x46, 0x33, - 0x23, 0x90, 0xaa, 0x9a, 0xaa, 0xa9, 0xbc, 0x8b, 0x73, 0x46, 0x34, 0x23, 0x12, 0x01, 0x00, 0x21, - 0x21, 0x98, 0xcd, 0xcc, 0xaa, 0x99, 0xba, 0xcd, 0xcb, 0x9a, 0x99, 0xa9, 0xcb, 0x9a, 0x98, 0xba, - 0xac, 0x89, 0x21, 0x11, 0x10, 0x73, 0x57, 0x34, 0x23, 0x01, 0x98, 0x99, 0x89, 0xb9, 0xdb, 0xaa, - 0x18, 0x56, 0x35, 0x43, 0x12, 0x01, 0x10, 0x21, 0x22, 0x01, 0xca, 0xcd, 0xba, 0x99, 0xba, 0xdd, - 0xcb, 0xaa, 0xa9, 0xaa, 0xac, 0x9a, 0x99, 0xbb, 0xac, 0x9a, 0x10, 0x81, 0x99, 0x51, 0x57, 0x35, - 0x24, 0x12, 0x81, 0x80, 0x80, 0x98, 0xca, 0xcb, 0x8a, 0x51, 0x45, 0x34, 0x32, 0x12, 0x01, 0x22, - 0x33, 0x13, 0xa8, 0xce, 0xbb, 0x9a, 0xc9, 0xdc, 0xcb, 0xaa, 0xb9, 0xca, 0xaa, 0xaa, 0xa9, 0xcb, - 0xcb, 0x8a, 0x00, 0x88, 0xba, 0x8a, 0x74, 0x37, 0x34, 0x13, 0x02, 0x00, 0x00, 0x88, 0xba, 0xcd, - 0xbb, 0x08, 0x64, 0x53, 0x33, 0x23, 0x12, 0x32, 0x43, 0x33, 0x91, 0xdb, 0xab, 0x9a, 0xb9, 0xde, - 0xbb, 0xcb, 0xba, 0xbc, 0xba, 0xab, 0xb9, 0xdb, 0xbc, 0x9a, 0x00, 0x90, 0xca, 0xbb, 0x30, 0x77, - 0x43, 0x23, 0x12, 0x11, 0x11, 0x00, 0xa8, 0xcc, 0xcc, 0x8a, 0x20, 0x54, 0x43, 0x23, 0x12, 0x22, - 0x34, 0x34, 0x01, 0xb9, 0xaa, 0x89, 0xb9, 0xec, 0xac, 0xbb, 0xbc, 0xbc, 0xac, 0x9a, 0xaa, 0xbb, - 0xbd, 0xaa, 0x09, 0x80, 0xda, 0xcb, 0x0a, 0x62, 0x45, 0x33, 0x23, 0x13, 0x22, 0x22, 0x80, 0xeb, - 0xcc, 0xab, 0x0a, 0x42, 0x45, 0x23, 0x22, 0x22, 0x35, 0x24, 0x12, 0x98, 0x99, 0x89, 0xa9, 0xdb, - 0xbc, 0xbb, 0xcd, 0xcb, 0xbb, 0xaa, 0xa9, 0xcb, 0xbc, 0xbb, 0x09, 0x80, 0xc9, 0xcd, 0x9a, 0x28, - 0x55, 0x43, 0x23, 0x23, 0x32, 0x32, 0x03, 0xb8, 0xcf, 0xcb, 0x9a, 0x18, 0x53, 0x33, 0x23, 0x43, - 0x44, 0x34, 0x12, 0x80, 0x88, 0x88, 0x98, 0xbb, 0xdb, 0xcb, 0xdb, 0xcc, 0xbb, 0xaa, 0xaa, 0xcb, - 0xcc, 0xaa, 0x99, 0x80, 0xb8, 0xdc, 0xab, 0x09, 0x52, 0x44, 0x33, 0x33, 0x43, 0x43, 0x22, 0x00, - 0xca, 0xcd, 0xab, 0x89, 0x32, 0x34, 0x23, 0x43, 0x45, 0x34, 0x22, 0x00, 0x00, 0x00, 0x88, 0xa9, - 0x9a, 0xba, 0xcd, 0xcd, 0xac, 0xab, 0xa9, 0xca, 0xcb, 0xbb, 0x9a, 0x09, 0xa8, 0xcd, 0xbc, 0x9a, - 0x28, 0x54, 0x43, 0x23, 0x24, 0x24, 0x33, 0x22, 0xa0, 0xec, 0xbb, 0x9b, 0x20, 0x23, 0x23, 0x44, - 0x45, 0x43, 0x23, 0x02, 0x11, 0x00, 0x98, 0x99, 0x98, 0x89, 0xea, 0xdc, 0xcb, 0xab, 0x9a, 0xcb, - 0xcc, 0xab, 0xaa, 0x89, 0x88, 0xdb, 0xcc, 0xab, 0x89, 0x32, 0x35, 0x34, 0x34, 0x34, 0x43, 0x33, - 0x02, 0xda, 0xcc, 0xaa, 0x08, 0x10, 0x10, 0x31, 0x55, 0x43, 0x33, 0x23, 0x21, 0x11, 0x80, 0x98, - 0x89, 0x80, 0xb8, 0xdf, 0xcb, 0xbb, 0xaa, 0xcb, 0xdc, 0xbb, 0xab, 0x8a, 0x88, 0xb9, 0xce, 0xbb, - 0x9a, 0x10, 0x53, 0x44, 0x23, 0x34, 0x34, 0x35, 0x22, 0xa8, 0xcc, 0xaa, 0x8a, 0x88, 0x88, 0x10, - 0x63, 0x44, 0x33, 0x33, 0x23, 0x22, 0x00, 0x99, 0x89, 0x10, 0x90, 0xde, 0xbc, 0xac, 0xaa, 0xca, - 0xcc, 0xbc, 0xac, 0x8a, 0x88, 0x99, 0xbc, 0xcc, 0xaa, 0x89, 0x10, 0x34, 0x33, 0x53, 0x54, 0x44, - 0x22, 0x81, 0xb9, 0xab, 0x9b, 0x99, 0xa9, 0x0a, 0x52, 0x45, 0x34, 0x43, 0x33, 0x23, 0x12, 0x80, - 0x08, 0x20, 0x01, 0xda, 0xbd, 0xbc, 0xba, 0xca, 0xcc, 0xcd, 0xab, 0xaa, 0x88, 0x99, 0xca, 0xcc, - 0xba, 0x9b, 0x18, 0x32, 0x23, 0x32, 0x67, 0x44, 0x33, 0x12, 0x98, 0xaa, 0xaa, 0xa9, 0xbb, 0x9b, - 0x30, 0x55, 0x44, 0x43, 0x43, 0x32, 0x12, 0x81, 0x00, 0x11, 0x81, 0xa9, 0xdc, 0xbb, 0x9c, 0xa9, - 0xfb, 0xcc, 0xcb, 0x9a, 0x99, 0x88, 0xa9, 0xbc, 0xbd, 0xab, 0x89, 0x21, 0x01, 0x10, 0x73, 0x57, - 0x32, 0x13, 0x81, 0x98, 0x99, 0xa9, 0xcb, 0xaa, 0x89, 0x31, 0x63, 0x34, 0x35, 0x34, 0x22, 0x01, - 0x01, 0x11, 0x12, 0x80, 0xcb, 0xcc, 0x9a, 0x89, 0xdb, 0xce, 0xbb, 0xac, 0x99, 0x89, 0x88, 0xca, - 0xcd, 0xbb, 0x8a, 0x08, 0x80, 0x89, 0x40, 0x67, 0x43, 0x23, 0x12, 0x00, 0x98, 0xa8, 0xba, 0xac, - 0x99, 0x18, 0x21, 0x45, 0x45, 0x33, 0x33, 0x12, 0x11, 0x21, 0x32, 0x81, 0xda, 0xbc, 0xab, 0xa9, - 0xfa, 0xcc, 0xbc, 0xac, 0xab, 0x99, 0x88, 0xc9, 0xcd, 0xcb, 0x9a, 0x88, 0x88, 0x9a, 0x1a, 0x64, - 0x45, 0x23, 0x22, 0x02, 0x81, 0x90, 0xb9, 0xab, 0x9b, 0x89, 0x20, 0x64, 0x54, 0x43, 0x32, 0x12, - 0x11, 0x12, 0x23, 0x03, 0xb8, 0xad, 0xaa, 0x89, 0xca, 0xdd, 0xcc, 0xac, 0xbb, 0x9a, 0x88, 0xb9, - 0xed, 0xbb, 0xab, 0x99, 0x99, 0xbb, 0x9b, 0x72, 0x45, 0x43, 0x23, 0x23, 0x12, 0x80, 0x99, 0xba, - 0xaa, 0x9a, 0x09, 0x41, 0x56, 0x44, 0x32, 0x22, 0x12, 0x21, 0x33, 0x14, 0x90, 0xba, 0xaa, 0x9a, - 0xba, 0xec, 0xcd, 0xbd, 0xbc, 0x9a, 0x88, 0xa8, 0xdc, 0xcc, 0xaa, 0x89, 0x99, 0xaa, 0xbb, 0x18, - 0x55, 0x34, 0x34, 0x32, 0x33, 0x11, 0x88, 0x99, 0xaa, 0xaa, 0x9a, 0x18, 0x65, 0x45, 0x33, 0x33, - 0x22, 0x32, 0x34, 0x24, 0x00, 0x99, 0x98, 0x88, 0x09, 0xa9, 0xfd, 0xdc, 0xcb, 0x9a, 0x09, 0x98, - 0xdb, 0xbd, 0xbb, 0x9a, 0xa9, 0xdb, 0xbb, 0x9a, 0x31, 0x55, 0x43, 0x43, 0x23, 0x13, 0x01, 0x88, - 0x99, 0xaa, 0xbb, 0xab, 0x40, 0x47, 0x25, 0x23, 0x22, 0x22, 0x34, 0x23, 0x13, 0x80, 0x88, 0x99, - 0x18, 0x22, 0xc8, 0xff, 0xbd, 0xaa, 0x88, 0x90, 0xd9, 0xcc, 0xab, 0xaa, 0xa9, 0xbc, 0xcb, 0x9b, - 0x09, 0x41, 0x44, 0x34, 0x43, 0x23, 0x12, 0x11, 0x08, 0xa9, 0xbb, 0xbc, 0x0b, 0x73, 0x35, 0x23, - 0x23, 0x43, 0x33, 0x24, 0x23, 0x00, 0x80, 0x89, 0x08, 0x44, 0x12, 0xfc, 0xbd, 0xbb, 0x8a, 0x80, - 0xb9, 0xbf, 0xbc, 0xaa, 0xb9, 0xcb, 0xcc, 0xaa, 0x9a, 0x08, 0x42, 0x44, 0x34, 0x33, 0x33, 0x22, - 0x11, 0x80, 0xda, 0xbc, 0xab, 0x20, 0x45, 0x43, 0x32, 0x32, 0x34, 0x33, 0x24, 0x11, 0x81, 0xa9, - 0x18, 0x54, 0x24, 0xa8, 0xcf, 0xbb, 0x9a, 0x80, 0xb8, 0xcc, 0xbc, 0xab, 0xba, 0xbc, 0xcd, 0xba, - 0xab, 0x8a, 0x30, 0x63, 0x44, 0x33, 0x33, 0x32, 0x22, 0x12, 0xc8, 0xcc, 0xab, 0x89, 0x42, 0x43, - 0x33, 0x34, 0x34, 0x33, 0x43, 0x32, 0x80, 0x99, 0x09, 0x54, 0x35, 0x81, 0xdc, 0xbc, 0x99, 0x89, - 0xa8, 0xcb, 0xcc, 0xaa, 0xab, 0xbc, 0xcc, 0xbb, 0xbc, 0xaa, 0x88, 0x41, 0x53, 0x34, 0x24, 0x32, - 0x33, 0x32, 0x01, 0xca, 0xac, 0x9a, 0x10, 0x43, 0x53, 0x33, 0x34, 0x32, 0x44, 0x33, 0x02, 0x98, - 0x89, 0x63, 0x35, 0x03, 0xc9, 0xbd, 0xaa, 0x99, 0xa8, 0xcb, 0xbc, 0xbc, 0xba, 0xdb, 0xdb, 0xcb, - 0xac, 0xab, 0x9b, 0x08, 0x42, 0x44, 0x33, 0x24, 0x24, 0x33, 0x12, 0xa8, 0xcb, 0xba, 0x8a, 0x20, - 0x34, 0x35, 0x33, 0x43, 0x63, 0x33, 0x14, 0x88, 0x8a, 0x40, 0x35, 0x23, 0xa0, 0xbd, 0x9c, 0x9a, - 0x98, 0xbb, 0xbd, 0xbc, 0xbb, 0xdb, 0xdb, 0xcb, 0xbc, 0xbc, 0xab, 0x8a, 0x10, 0x43, 0x34, 0x43, - 0x34, 0x35, 0x12, 0x01, 0x99, 0xaa, 0xaa, 0x08, 0x32, 0x36, 0x22, 0x33, 0x55, 0x34, 0x23, 0x91, - 0x99, 0x30, 0x46, 0x23, 0x81, 0xca, 0xba, 0xaa, 0xaa, 0xcb, 0xbd, 0xdb, 0xaa, 0xcb, 0xbb, 0xbd, - 0xbd, 0xcc, 0xbb, 0xaa, 0x08, 0x11, 0x33, 0x44, 0x44, 0x34, 0x23, 0x22, 0x80, 0xa8, 0xba, 0x9a, - 0x20, 0x34, 0x23, 0x32, 0x56, 0x45, 0x23, 0x01, 0x89, 0x18, 0x44, 0x43, 0x11, 0x99, 0xaa, 0xab, - 0xb9, 0xda, 0xbc, 0xcb, 0xbb, 0xbc, 0xcb, 0xcc, 0xbc, 0xbd, 0xcc, 0xaa, 0x89, 0x88, 0x10, 0x31, - 0x63, 0x34, 0x43, 0x23, 0x01, 0x80, 0xaa, 0xaa, 0x08, 0x21, 0x12, 0x10, 0x75, 0x35, 0x25, 0x02, - 0x80, 0x00, 0x42, 0x24, 0x22, 0x81, 0x99, 0x9a, 0xa9, 0xcb, 0xbc, 0xbd, 0xbb, 0xbc, 0xdb, 0xbb, - 0xdc, 0xcc, 0xdb, 0xba, 0x9a, 0x99, 0x88, 0x00, 0x32, 0x36, 0x34, 0x24, 0x22, 0x81, 0xa8, 0xaa, - 0x89, 0x11, 0x01, 0x09, 0x73, 0x56, 0x33, 0x23, 0x01, 0x10, 0x42, 0x35, 0x24, 0x11, 0x00, 0x80, - 0x80, 0xa8, 0xca, 0xbc, 0xbc, 0xbc, 0xbb, 0xcb, 0xdb, 0xdc, 0xcc, 0xbb, 0xba, 0x9a, 0x9a, 0x89, - 0x21, 0x53, 0x44, 0x43, 0x23, 0x12, 0xa8, 0xaa, 0x89, 0x00, 0x80, 0xbb, 0x38, 0x77, 0x25, 0x13, - 0x11, 0x08, 0x32, 0x35, 0x34, 0x23, 0x12, 0x11, 0x00, 0x90, 0xca, 0xdb, 0xcb, 0xbc, 0xac, 0x9a, - 0xba, 0xec, 0xcc, 0xac, 0xbb, 0xab, 0xaa, 0x9a, 0x09, 0x31, 0x63, 0x44, 0x33, 0x13, 0x90, 0xaa, - 0x99, 0x01, 0x90, 0xcc, 0x8a, 0x72, 0x44, 0x33, 0x11, 0x00, 0x22, 0x55, 0x33, 0x34, 0x22, 0x22, - 0x11, 0x01, 0x88, 0xa9, 0xcc, 0xbd, 0xbb, 0x9b, 0xa9, 0xec, 0xdc, 0xcb, 0xbb, 0xac, 0xaa, 0x9a, - 0x89, 0x00, 0x42, 0x54, 0x43, 0x23, 0x80, 0x98, 0x88, 0x10, 0x98, 0xeb, 0xaa, 0x38, 0x45, 0x24, - 0x22, 0x10, 0x20, 0x63, 0x34, 0x24, 0x23, 0x23, 0x12, 0x00, 0x00, 0x99, 0xdb, 0xcc, 0xac, 0x9a, - 0x99, 0xca, 0xdd, 0xdb, 0xbb, 0xbc, 0xba, 0xaa, 0x9a, 0x88, 0x28, 0x54, 0x35, 0x24, 0x11, 0x88, - 0x08, 0x00, 0x90, 0xcc, 0xcb, 0x09, 0x41, 0x43, 0x22, 0x12, 0x20, 0x53, 0x44, 0x43, 0x33, 0x33, - 0x22, 0x12, 0x11, 0x11, 0xa9, 0xdc, 0xad, 0x9b, 0x99, 0xba, 0xce, 0xcc, 0xbc, 0xbc, 0xbb, 0xab, - 0xaa, 0xaa, 0x89, 0x52, 0x55, 0x33, 0x12, 0x00, 0x00, 0x11, 0x80, 0xdb, 0xcc, 0x9a, 0x18, 0x53, - 0x23, 0x22, 0x21, 0x32, 0x45, 0x34, 0x44, 0x32, 0x22, 0x12, 0x21, 0x12, 0x91, 0xea, 0xcb, 0xba, - 0xa9, 0xb9, 0xdd, 0xdb, 0xdb, 0xcb, 0xbb, 0xab, 0xba, 0xbb, 0xab, 0x28, 0x56, 0x34, 0x22, 0x11, - 0x21, 0x22, 0x11, 0xa8, 0xce, 0xab, 0x09, 0x31, 0x43, 0x23, 0x22, 0x32, 0x44, 0x44, 0x53, 0x43, - 0x22, 0x22, 0x32, 0x32, 0x02, 0xa9, 0xcd, 0xab, 0xaa, 0xbb, 0xbd, 0xcd, 0xeb, 0xdb, 0xba, 0xab, - 0xba, 0xbb, 0xbc, 0x89, 0x52, 0x44, 0x23, 0x12, 0x22, 0x32, 0x33, 0x92, 0xcc, 0xad, 0x9a, 0x28, - 0x32, 0x43, 0x23, 0x32, 0x42, 0x63, 0x34, 0x35, 0x32, 0x23, 0x32, 0x43, 0x12, 0xa0, 0xcb, 0xcb, - 0xbb, 0xac, 0xba, 0xbd, 0xdd, 0xdb, 0xcb, 0xaa, 0xba, 0xcb, 0xcb, 0x9a, 0x10, 0x53, 0x33, 0x22, - 0x33, 0x34, 0x25, 0x02, 0x98, 0xbc, 0xab, 0x09, 0x21, 0x43, 0x24, 0x23, 0x21, 0x44, 0x45, 0x53, - 0x23, 0x32, 0x42, 0x32, 0x23, 0x00, 0xa9, 0xcb, 0xcb, 0xcb, 0xaa, 0xca, 0xcc, 0xcd, 0xbc, 0xba, - 0xba, 0xbc, 0xbd, 0xab, 0x89, 0x22, 0x34, 0x32, 0x32, 0x54, 0x43, 0x22, 0x80, 0xb9, 0xab, 0x9b, - 0x08, 0x42, 0x34, 0x32, 0x12, 0x43, 0x46, 0x35, 0x33, 0x33, 0x43, 0x34, 0x23, 0x11, 0x88, 0xb9, - 0xdb, 0xcb, 0x9a, 0xa9, 0xfb, 0xcc, 0xcc, 0xaa, 0xba, 0xcb, 0xcc, 0xab, 0x9a, 0x10, 0x22, 0x32, - 0x32, 0x35, 0x36, 0x33, 0x12, 0x98, 0xaa, 0xab, 0x0a, 0x20, 0x35, 0x24, 0x02, 0x31, 0x55, 0x44, - 0x33, 0x33, 0x34, 0x34, 0x33, 0x23, 0x01, 0x88, 0xcb, 0xbc, 0x9b, 0x99, 0xeb, 0xce, 0xbc, 0xbb, - 0xcb, 0xcb, 0xbd, 0xbc, 0xaa, 0x89, 0x10, 0x11, 0x11, 0x43, 0x35, 0x34, 0x23, 0x81, 0xa8, 0xba, - 0xaa, 0x18, 0x53, 0x33, 0x22, 0x32, 0x47, 0x53, 0x33, 0x43, 0x43, 0x33, 0x34, 0x23, 0x23, 0x01, - 0xa8, 0xbd, 0x9a, 0x08, 0xc9, 0xdd, 0xcc, 0xbb, 0xba, 0xdb, 0xcc, 0xbc, 0xbb, 0x9a, 0x88, 0x00, - 0x01, 0x32, 0x36, 0x35, 0x32, 0x12, 0x80, 0xb9, 0xba, 0x89, 0x42, 0x32, 0x22, 0x32, 0x55, 0x35, - 0x34, 0x33, 0x35, 0x34, 0x33, 0x34, 0x33, 0x33, 0x90, 0xbb, 0x9c, 0x09, 0xa0, 0xed, 0xcc, 0xab, - 0xbb, 0xbc, 0xcd, 0xbd, 0xbb, 0xab, 0x99, 0x89, 0x88, 0x10, 0x63, 0x34, 0x43, 0x22, 0x11, 0x98, - 0xab, 0x89, 0x11, 0x23, 0x22, 0x31, 0x55, 0x44, 0x43, 0x42, 0x43, 0x33, 0x43, 0x34, 0x34, 0x23, - 0x02, 0xa8, 0x9a, 0x09, 0x80, 0xea, 0xcd, 0xcb, 0xaa, 0xba, 0xec, 0xdb, 0xcb, 0xaa, 0x9a, 0x99, - 0x99, 0x08, 0x31, 0x44, 0x34, 0x34, 0x12, 0x90, 0xa9, 0x99, 0x00, 0x11, 0x11, 0x10, 0x52, 0x44, - 0x33, 0x54, 0x33, 0x44, 0x32, 0x44, 0x53, 0x23, 0x12, 0x00, 0x89, 0x08, 0x10, 0xb8, 0xcd, 0xbc, - 0xab, 0xba, 0xdc, 0xcd, 0xbc, 0xac, 0xaa, 0x9a, 0xaa, 0x99, 0x08, 0x32, 0x36, 0x25, 0x23, 0x01, - 0x98, 0x99, 0x08, 0x00, 0x08, 0x08, 0x21, 0x53, 0x53, 0x53, 0x53, 0x33, 0x43, 0x63, 0x53, 0x33, - 0x33, 0x01, 0x80, 0x00, 0x11, 0x90, 0xdc, 0xcb, 0xaa, 0x9a, 0xdb, 0xdd, 0xbc, 0xcb, 0xbb, 0xba, - 0xac, 0x9a, 0x9a, 0x00, 0x53, 0x34, 0x34, 0x12, 0x80, 0x89, 0x09, 0x88, 0x88, 0x08, 0x28, 0x21, - 0x42, 0x55, 0x44, 0x32, 0x23, 0x44, 0x54, 0x34, 0x23, 0x12, 0x10, 0x00, 0x11, 0x81, 0xca, 0xcc, - 0xab, 0x98, 0xb9, 0xed, 0xcc, 0xcb, 0xbb, 0xcb, 0xba, 0xba, 0xaa, 0x99, 0x31, 0x55, 0x43, 0x22, - 0x01, 0x00, 0x08, 0x08, 0x89, 0x08, 0x10, 0x08, 0x11, 0x55, 0x53, 0x33, 0x22, 0x43, 0x46, 0x35, - 0x24, 0x22, 0x11, 0x10, 0x12, 0x13, 0xa8, 0xbd, 0xab, 0x89, 0x99, 0xdc, 0xdd, 0xcb, 0xbc, 0xbb, - 0xcb, 0xba, 0xbb, 0xab, 0x09, 0x63, 0x53, 0x22, 0x22, 0x10, 0x10, 0x88, 0x88, 0x88, 0x80, 0x98, - 0x08, 0x62, 0x44, 0x43, 0x11, 0x31, 0x55, 0x35, 0x35, 0x22, 0x11, 0x12, 0x32, 0x33, 0x91, 0xcb, - 0xbb, 0x9a, 0x98, 0xca, 0xde, 0xcc, 0xbc, 0xbc, 0xbb, 0xbc, 0xbb, 0xbc, 0x99, 0x20, 0x53, 0x43, - 0x32, 0x12, 0x02, 0x00, 0x88, 0x88, 0x88, 0xa9, 0x99, 0x30, 0x47, 0x33, 0x11, 0x11, 0x73, 0x47, - 0x43, 0x23, 0x21, 0x11, 0x32, 0x24, 0x01, 0xa8, 0xbb, 0xaa, 0x98, 0x99, 0xdd, 0xdc, 0xbd, 0xbc, - 0xcb, 0xbb, 0xbc, 0xbc, 0xaa, 0x88, 0x22, 0x34, 0x43, 0x33, 0x12, 0x11, 0x80, 0x88, 0x88, 0xa9, - 0xbb, 0x28, 0x56, 0x33, 0x02, 0x88, 0x41, 0x67, 0x44, 0x32, 0x21, 0x21, 0x32, 0x43, 0x12, 0x80, - 0xa9, 0x9a, 0x8a, 0x98, 0xc9, 0xce, 0xdd, 0xcb, 0xba, 0xbc, 0xcb, 0xbc, 0xab, 0x9a, 0x10, 0x31, - 0x44, 0x32, 0x33, 0x21, 0x10, 0x00, 0x81, 0xa8, 0xbb, 0x1a, 0x64, 0x43, 0x12, 0x98, 0x0a, 0x74, - 0x46, 0x32, 0x23, 0x21, 0x33, 0x34, 0x33, 0x02, 0x99, 0xaa, 0xab, 0x88, 0x99, 0xfc, 0xcd, 0xbc, - 0xbc, 0xcb, 0xbc, 0xbc, 0xbc, 0x9a, 0x89, 0x10, 0x33, 0x44, 0x32, 0x12, 0x12, 0x11, 0x02, 0x80, - 0xa9, 0x9b, 0x50, 0x36, 0x12, 0xa8, 0xaa, 0x62, 0x56, 0x33, 0x24, 0x22, 0x33, 0x34, 0x24, 0x11, - 0x80, 0x99, 0xaa, 0x88, 0x08, 0xc8, 0xde, 0xbc, 0xcb, 0xcb, 0xbc, 0xcc, 0xcb, 0xaa, 0x9a, 0x08, - 0x20, 0x43, 0x33, 0x23, 0x32, 0x22, 0x23, 0x02, 0xb9, 0xbb, 0x50, 0x55, 0x12, 0x98, 0xbb, 0x38, - 0x66, 0x34, 0x43, 0x32, 0x42, 0x33, 0x34, 0x22, 0x01, 0x98, 0xaa, 0x09, 0x10, 0x90, 0xdd, 0xbd, - 0xad, 0xcb, 0xdb, 0xbc, 0xbc, 0xac, 0xab, 0x99, 0x18, 0x31, 0x43, 0x23, 0x22, 0x32, 0x33, 0x13, - 0xa8, 0xcb, 0x19, 0x45, 0x14, 0xa0, 0xbb, 0x8b, 0x72, 0x35, 0x35, 0x32, 0x43, 0x43, 0x33, 0x33, - 0x13, 0x90, 0xaa, 0x89, 0x20, 0x02, 0xda, 0xce, 0xcb, 0xcb, 0xcc, 0xcc, 0xbb, 0xad, 0xbb, 0xab, - 0x89, 0x20, 0x33, 0x34, 0x32, 0x33, 0x34, 0x23, 0x90, 0xba, 0x8a, 0x73, 0x24, 0x81, 0xaa, 0xab, - 0x30, 0x57, 0x34, 0x33, 0x44, 0x32, 0x34, 0x24, 0x13, 0x01, 0x98, 0x88, 0x11, 0x12, 0xa1, 0xdc, - 0xcb, 0xdb, 0xbc, 0xbd, 0xbd, 0xcc, 0xba, 0xbb, 0x9b, 0x08, 0x21, 0x32, 0x33, 0x33, 0x36, 0x22, - 0x81, 0xaa, 0x9a, 0x41, 0x35, 0x12, 0xb8, 0xbb, 0x19, 0x64, 0x35, 0x44, 0x32, 0x43, 0x53, 0x33, - 0x33, 0x11, 0x90, 0x09, 0x20, 0x23, 0x01, 0xba, 0xcd, 0xbc, 0xcd, 0xcc, 0xdb, 0xbc, 0xbc, 0xbb, - 0xbb, 0x8a, 0x10, 0x21, 0x33, 0x43, 0x44, 0x32, 0x01, 0xa8, 0x99, 0x38, 0x45, 0x22, 0x90, 0xaa, - 0x99, 0x31, 0x56, 0x34, 0x34, 0x43, 0x34, 0x35, 0x33, 0x12, 0x00, 0x09, 0x00, 0x21, 0x11, 0x80, - 0xba, 0xcd, 0xbc, 0xbe, 0xcd, 0xdb, 0xdb, 0xbb, 0xbb, 0x9b, 0x09, 0x00, 0x11, 0x22, 0x35, 0x34, - 0x12, 0x88, 0x99, 0x08, 0x53, 0x32, 0x00, 0xba, 0xac, 0x1a, 0x73, 0x34, 0x34, 0x43, 0x44, 0x44, - 0x33, 0x22, 0x01, 0x08, 0x00, 0x11, 0x21, 0x01, 0x80, 0xaa, 0xcc, 0xbd, 0xcd, 0xdc, 0xdb, 0xbc, - 0xcb, 0xaa, 0x89, 0x88, 0x00, 0x10, 0x42, 0x43, 0x22, 0x00, 0x98, 0x08, 0x22, 0x43, 0x12, 0xb8, - 0xcb, 0x9a, 0x41, 0x55, 0x33, 0x24, 0x44, 0x45, 0x33, 0x33, 0x12, 0x00, 0x00, 0x11, 0x21, 0x11, - 0x02, 0xa8, 0xca, 0xbd, 0xcd, 0xeb, 0xdc, 0xdb, 0xcb, 0xba, 0xa9, 0x98, 0x88, 0x08, 0x21, 0x53, - 0x32, 0x01, 0x88, 0x89, 0x20, 0x43, 0x13, 0x80, 0xdb, 0xab, 0x19, 0x53, 0x34, 0x24, 0x54, 0x54, - 0x43, 0x33, 0x22, 0x11, 0x01, 0x21, 0x22, 0x22, 0x12, 0x01, 0xa9, 0xcb, 0xbb, 0xde, 0xdd, 0xdc, - 0xcb, 0xbb, 0xab, 0xa9, 0xa9, 0x89, 0x20, 0x53, 0x33, 0x13, 0x81, 0x08, 0x10, 0x53, 0x43, 0x02, - 0xa8, 0xbb, 0x89, 0x43, 0x24, 0x23, 0x54, 0x46, 0x35, 0x24, 0x23, 0x22, 0x11, 0x11, 0x21, 0x22, - 0x22, 0x12, 0x99, 0xcb, 0xaa, 0xcb, 0xee, 0xcd, 0xbd, 0xbc, 0xba, 0xaa, 0xab, 0xaa, 0x09, 0x30, - 0x44, 0x12, 0x01, 0x80, 0x00, 0x22, 0x35, 0x23, 0x90, 0xca, 0x8a, 0x18, 0x21, 0x00, 0x41, 0x77, - 0x34, 0x35, 0x43, 0x22, 0x21, 0x11, 0x12, 0x32, 0x32, 0x23, 0x80, 0xa9, 0x09, 0x10, 0xe8, 0xff, - 0xcc, 0xcb, 0xab, 0xbb, 0xbb, 0xbb, 0x9a, 0x18, 0x43, 0x33, 0x12, 0x81, 0x88, 0x30, 0x55, 0x23, - 0x82, 0xb9, 0x8a, 0x08, 0x01, 0x90, 0x0a, 0x74, 0x67, 0x33, 0x25, 0x33, 0x32, 0x21, 0x22, 0x22, - 0x33, 0x33, 0x02, 0xa9, 0x8b, 0x42, 0x82, 0xfe, 0xce, 0xbc, 0xcb, 0xbb, 0xcb, 0xba, 0xaa, 0x89, - 0x11, 0x23, 0x33, 0x01, 0x98, 0x10, 0x45, 0x34, 0x11, 0x90, 0x88, 0x08, 0x01, 0x98, 0x9b, 0x68, - 0x66, 0x44, 0x43, 0x24, 0x32, 0x12, 0x12, 0x22, 0x33, 0x24, 0x02, 0x98, 0x88, 0x32, 0x25, 0xa0, - 0xef, 0xcc, 0xbb, 0xbc, 0xac, 0xcb, 0xaa, 0x99, 0x08, 0x21, 0x22, 0x01, 0x88, 0x18, 0x42, 0x44, - 0x22, 0x80, 0x88, 0x00, 0x08, 0xb8, 0xdb, 0x8a, 0x72, 0x45, 0x35, 0x34, 0x43, 0x22, 0x12, 0x21, - 0x43, 0x32, 0x22, 0x88, 0x89, 0x21, 0x45, 0x02, 0xda, 0xdd, 0xcb, 0xbc, 0xcb, 0xac, 0xbb, 0xba, - 0x89, 0x18, 0x22, 0x01, 0x88, 0x08, 0x41, 0x34, 0x24, 0x01, 0x00, 0x08, 0x81, 0xa9, 0xcc, 0xbb, - 0x28, 0x57, 0x35, 0x35, 0x34, 0x23, 0x13, 0x22, 0x43, 0x33, 0x23, 0x01, 0x99, 0x20, 0x54, 0x33, - 0xa0, 0xec, 0xcc, 0xbc, 0xcc, 0xbb, 0xbc, 0xac, 0x99, 0x09, 0x11, 0x01, 0x80, 0x08, 0x11, 0x34, - 0x24, 0x11, 0x01, 0x80, 0x08, 0x98, 0xdb, 0xac, 0x8a, 0x51, 0x55, 0x44, 0x43, 0x33, 0x22, 0x22, - 0x42, 0x43, 0x23, 0x11, 0x08, 0x18, 0x34, 0x25, 0x02, 0xb8, 0xce, 0xbc, 0xbd, 0xbd, 0xdb, 0xab, - 0xab, 0x89, 0x00, 0x01, 0x80, 0x88, 0x10, 0x33, 0x34, 0x23, 0x00, 0x10, 0x20, 0x01, 0xeb, 0xac, - 0xbb, 0x09, 0x73, 0x37, 0x35, 0x24, 0x23, 0x21, 0x32, 0x44, 0x33, 0x22, 0x10, 0x20, 0x43, 0x25, - 0x23, 0x81, 0xca, 0xdc, 0xbc, 0xbd, 0xbd, 0xad, 0xab, 0x9a, 0x08, 0x00, 0x00, 0x88, 0x00, 0x22, - 0x33, 0x24, 0x11, 0x00, 0x21, 0x80, 0xaa, 0xcd, 0xcb, 0xbb, 0x1a, 0x56, 0x45, 0x43, 0x22, 0x22, - 0x31, 0x44, 0x24, 0x12, 0x11, 0x10, 0x32, 0x35, 0x33, 0x22, 0x98, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, - 0xba, 0x9b, 0x99, 0x08, 0x80, 0x88, 0x88, 0x20, 0x32, 0x33, 0x22, 0x23, 0x33, 0x22, 0x81, 0xb9, - 0xcf, 0xbd, 0x9b, 0x31, 0x57, 0x34, 0x33, 0x23, 0x32, 0x45, 0x43, 0x22, 0x12, 0x01, 0x22, 0x53, - 0x34, 0x22, 0x01, 0x99, 0xcb, 0xdc, 0xcd, 0xcc, 0xbc, 0xba, 0x9a, 0x88, 0x88, 0x88, 0x09, 0x10, - 0x22, 0x32, 0x33, 0x33, 0x33, 0x22, 0x13, 0x88, 0xfc, 0xcc, 0xbb, 0x0a, 0x73, 0x35, 0x34, 0x22, - 0x22, 0x34, 0x35, 0x23, 0x23, 0x11, 0x22, 0x43, 0x35, 0x33, 0x13, 0x80, 0x98, 0xda, 0xed, 0xcd, - 0xbc, 0xac, 0xaa, 0x99, 0x89, 0x89, 0x89, 0x08, 0x11, 0x21, 0x32, 0x33, 0x24, 0x32, 0x23, 0x12, - 0xa8, 0xfd, 0xdb, 0x9a, 0x28, 0x54, 0x33, 0x33, 0x43, 0x53, 0x43, 0x33, 0x23, 0x22, 0x21, 0x42, - 0x44, 0x33, 0x23, 0x01, 0x00, 0x90, 0xfb, 0xcf, 0xcc, 0xbc, 0xba, 0xa9, 0x99, 0x89, 0x89, 0x88, - 0x10, 0x21, 0x23, 0x33, 0x34, 0x33, 0x53, 0x12, 0x11, 0xca, 0xcf, 0xab, 0x0a, 0x32, 0x45, 0x32, - 0x32, 0x34, 0x45, 0x33, 0x33, 0x33, 0x21, 0x33, 0x46, 0x32, 0x13, 0x12, 0x11, 0x22, 0x80, 0xee, - 0xce, 0xdb, 0xba, 0xaa, 0xaa, 0x9a, 0xa9, 0x98, 0x08, 0x00, 0x21, 0x32, 0x42, 0x23, 0x33, 0x44, - 0x13, 0xa0, 0xde, 0xac, 0x8b, 0x18, 0x43, 0x33, 0x34, 0x43, 0x44, 0x43, 0x24, 0x23, 0x21, 0x31, - 0x53, 0x24, 0x23, 0x21, 0x11, 0x32, 0x23, 0xd0, 0xdf, 0xcc, 0xbb, 0xcb, 0xaa, 0xaa, 0xaa, 0x99, - 0x09, 0x08, 0x10, 0x22, 0x33, 0x33, 0x42, 0x44, 0x33, 0x02, 0xdc, 0xbd, 0x9c, 0x89, 0x21, 0x32, - 0x34, 0x42, 0x53, 0x44, 0x43, 0x22, 0x22, 0x22, 0x43, 0x44, 0x22, 0x12, 0x11, 0x32, 0x43, 0x82, - 0xfa, 0xcd, 0xbc, 0xcb, 0xab, 0xab, 0xab, 0xaa, 0x9a, 0x89, 0x88, 0x21, 0x22, 0x13, 0x32, 0x36, - 0x36, 0x12, 0xb0, 0xdc, 0xbb, 0x9b, 0x18, 0x31, 0x25, 0x21, 0x44, 0x45, 0x43, 0x33, 0x22, 0x23, - 0x43, 0x44, 0x33, 0x12, 0x11, 0x32, 0x44, 0x22, 0xb0, 0xed, 0xcc, 0xbb, 0xbc, 0xbb, 0xbb, 0xab, - 0xab, 0x9a, 0x89, 0x10, 0x21, 0x12, 0x11, 0x45, 0x45, 0x32, 0x81, 0xca, 0xcc, 0xaa, 0x8a, 0x01, - 0x12, 0x12, 0x53, 0x55, 0x53, 0x33, 0x32, 0x32, 0x43, 0x44, 0x33, 0x22, 0x11, 0x22, 0x44, 0x33, - 0x02, 0xd9, 0xdd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0x99, 0x08, 0x10, 0x00, 0x00, 0x61, - 0x45, 0x33, 0x22, 0x98, 0xcd, 0xbb, 0x9b, 0x08, 0x00, 0x01, 0x22, 0x56, 0x54, 0x33, 0x33, 0x22, - 0x42, 0x34, 0x25, 0x22, 0x12, 0x21, 0x53, 0x43, 0x22, 0x91, 0xeb, 0xcc, 0xdb, 0xbb, 0xac, 0xab, - 0xab, 0xab, 0x9a, 0x09, 0x08, 0x80, 0x98, 0x20, 0x55, 0x34, 0x33, 0x81, 0xda, 0xbc, 0xab, 0x99, - 0x00, 0x00, 0x20, 0x73, 0x45, 0x34, 0x33, 0x32, 0x32, 0x35, 0x25, 0x33, 0x12, 0x21, 0x42, 0x44, - 0x23, 0x12, 0xa9, 0xdc, 0xbd, 0xcc, 0xbb, 0xbb, 0xcb, 0xab, 0x9b, 0x8a, 0x80, 0x88, 0x98, 0x88, - 0x52, 0x54, 0x33, 0x13, 0xa0, 0xcc, 0xab, 0x9b, 0x89, 0x98, 0x89, 0x40, 0x66, 0x53, 0x22, 0x22, - 0x23, 0x53, 0x53, 0x22, 0x22, 0x11, 0x31, 0x44, 0x43, 0x22, 0x01, 0xb9, 0xce, 0xbc, 0xad, 0xbb, - 0xbc, 0xbb, 0xba, 0x9a, 0x98, 0x88, 0x99, 0x99, 0x29, 0x55, 0x34, 0x33, 0x01, 0xba, 0xcc, 0xaa, - 0x99, 0xa9, 0xba, 0x09, 0x65, 0x44, 0x33, 0x24, 0x22, 0x43, 0x44, 0x23, 0x13, 0x12, 0x21, 0x44, - 0x43, 0x24, 0x22, 0x80, 0xca, 0xcd, 0xbc, 0xcb, 0xbb, 0xbc, 0xbb, 0xaa, 0x99, 0x99, 0x99, 0xaa, - 0x0a, 0x61, 0x44, 0x33, 0x12, 0xa0, 0xcb, 0xbb, 0xb9, 0xca, 0xdb, 0x9a, 0x21, 0x46, 0x53, 0x22, - 0x22, 0x43, 0x34, 0x25, 0x23, 0x11, 0x21, 0x33, 0x54, 0x33, 0x24, 0x22, 0xa8, 0xcc, 0xcc, 0xcb, - 0xcb, 0xcb, 0xab, 0xab, 0x9a, 0x98, 0xa8, 0xaa, 0x9b, 0x18, 0x64, 0x43, 0x23, 0x01, 0xa9, 0xab, - 0xa9, 0xcb, 0xdb, 0xab, 0x19, 0x73, 0x34, 0x33, 0x23, 0x44, 0x44, 0x34, 0x32, 0x12, 0x12, 0x22, - 0x34, 0x44, 0x34, 0x32, 0x00, 0xb9, 0xdc, 0xbc, 0xbd, 0xdb, 0xba, 0xbb, 0xaa, 0x9a, 0x99, 0xab, - 0xbb, 0x9b, 0x41, 0x55, 0x23, 0x12, 0x90, 0x98, 0x99, 0xaa, 0xcd, 0xcb, 0x99, 0x21, 0x45, 0x32, - 0x32, 0x52, 0x44, 0x53, 0x23, 0x23, 0x22, 0x12, 0x33, 0x45, 0x53, 0x32, 0x12, 0x80, 0xb9, 0xcd, - 0xbc, 0xbd, 0xbc, 0xcb, 0x9a, 0x9a, 0x99, 0xa9, 0xbb, 0xab, 0x19, 0x44, 0x34, 0x22, 0x01, 0x98, - 0x88, 0xb9, 0xdc, 0xcc, 0x9a, 0x08, 0x42, 0x33, 0x22, 0x43, 0x55, 0x53, 0x33, 0x24, 0x22, 0x12, - 0x22, 0x43, 0x35, 0x24, 0x33, 0x12, 0x88, 0xcb, 0xdc, 0xbc, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0xa9, - 0xbb, 0xac, 0x8a, 0x31, 0x44, 0x32, 0x11, 0x01, 0x01, 0x00, 0xda, 0xcd, 0xab, 0x89, 0x31, 0x24, - 0x23, 0x42, 0x45, 0x44, 0x43, 0x24, 0x23, 0x11, 0x12, 0x32, 0x44, 0x53, 0x23, 0x23, 0x01, 0x90, - 0xdb, 0xcd, 0xbc, 0xbd, 0xba, 0xbb, 0x9a, 0xaa, 0xbb, 0xbc, 0xab, 0x18, 0x43, 0x24, 0x13, 0x11, - 0x12, 0x02, 0xc8, 0xdd, 0xbb, 0x9b, 0x18, 0x21, 0x22, 0x33, 0x46, 0x45, 0x34, 0x25, 0x33, 0x22, - 0x12, 0x32, 0x53, 0x34, 0x44, 0x22, 0x12, 0x02, 0xa0, 0xeb, 0xcc, 0xdb, 0xbb, 0xbb, 0xab, 0xba, - 0xca, 0xcb, 0xab, 0x89, 0x20, 0x32, 0x33, 0x22, 0x33, 0x34, 0x91, 0xdd, 0xbc, 0xbb, 0x88, 0x00, - 0x12, 0x22, 0x53, 0x55, 0x54, 0x43, 0x33, 0x23, 0x23, 0x32, 0x43, 0x44, 0x24, 0x43, 0x22, 0x22, - 0x81, 0xa8, 0xcd, 0xcd, 0xcb, 0xab, 0xab, 0xba, 0xba, 0xbc, 0xbc, 0x9a, 0x09, 0x11, 0x12, 0x21, - 0x32, 0x43, 0x82, 0xea, 0xbd, 0xbb, 0x9a, 0x09, 0x00, 0x80, 0x00, 0x73, 0x45, 0x35, 0x34, 0x43, - 0x22, 0x22, 0x42, 0x33, 0x35, 0x43, 0x43, 0x22, 0x12, 0x01, 0xa9, 0xce, 0xcc, 0xbb, 0xbb, 0xba, - 0xca, 0xbb, 0xbd, 0xaa, 0x99, 0x00, 0x10, 0x20, 0x32, 0x53, 0x12, 0xa9, 0xce, 0xbb, 0xab, 0x99, - 0x88, 0x98, 0x99, 0x10, 0x55, 0x55, 0x34, 0x34, 0x32, 0x32, 0x33, 0x34, 0x44, 0x43, 0x24, 0x23, - 0x23, 0x23, 0x80, 0xea, 0xcc, 0xbc, 0xbb, 0xab, 0xbb, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x08, 0x18, - 0x31, 0x44, 0x22, 0x81, 0xca, 0xcc, 0xab, 0x99, 0x89, 0x98, 0xa9, 0x9a, 0x30, 0x57, 0x45, 0x43, - 0x33, 0x32, 0x33, 0x34, 0x34, 0x44, 0x33, 0x34, 0x33, 0x43, 0x12, 0xa0, 0xeb, 0xcc, 0xba, 0xbb, - 0xba, 0xbc, 0xcc, 0xbb, 0xaa, 0x9a, 0x89, 0x89, 0x21, 0x43, 0x24, 0x03, 0xb8, 0xcd, 0xac, 0xaa, - 0x99, 0x9a, 0xa9, 0xab, 0xab, 0x52, 0x37, 0x36, 0x43, 0x33, 0x33, 0x33, 0x44, 0x43, 0x43, 0x43, - 0x42, 0x32, 0x23, 0x02, 0xb9, 0xdd, 0xbb, 0xac, 0xba, 0xcb, 0xbc, 0xbc, 0xab, 0xaa, 0xaa, 0x99, - 0x00, 0x32, 0x36, 0x22, 0x81, 0xca, 0xbc, 0xbb, 0xab, 0xaa, 0xca, 0xcb, 0xac, 0x08, 0x52, 0x45, - 0x53, 0x33, 0x33, 0x34, 0x42, 0x33, 0x34, 0x34, 0x34, 0x34, 0x24, 0x23, 0x80, 0xba, 0xcd, 0xab, - 0xba, 0xbc, 0xbd, 0xbc, 0xca, 0xaa, 0xa9, 0xaa, 0x89, 0x20, 0x43, 0x33, 0x12, 0xa9, 0xcc, 0xcb, - 0xaa, 0x9a, 0xb9, 0xdb, 0xbb, 0x9b, 0x28, 0x46, 0x45, 0x43, 0x33, 0x32, 0x24, 0x43, 0x33, 0x43, - 0x34, 0x44, 0x43, 0x33, 0x12, 0xa8, 0xcb, 0xac, 0xcb, 0xca, 0xcb, 0xac, 0xac, 0xaa, 0xab, 0xab, - 0x9b, 0x09, 0x42, 0x43, 0x12, 0x81, 0xb9, 0xbc, 0xbb, 0xaa, 0xaa, 0xdc, 0xcb, 0xba, 0x89, 0x41, - 0x46, 0x34, 0x43, 0x33, 0x24, 0x33, 0x24, 0x33, 0x53, 0x34, 0x35, 0x34, 0x22, 0x81, 0xa9, 0xbb, - 0xbc, 0xbc, 0xbd, 0xbc, 0xbc, 0xbb, 0xcb, 0xbb, 0xab, 0x9a, 0x20, 0x42, 0x24, 0x02, 0x98, 0xbb, - 0xbb, 0xab, 0xbb, 0xbc, 0xbe, 0xbc, 0xab, 0x18, 0x64, 0x44, 0x43, 0x33, 0x43, 0x23, 0x43, 0x23, - 0x33, 0x44, 0x45, 0x43, 0x33, 0x11, 0x80, 0xb9, 0xbb, 0xbc, 0xbd, 0xbd, 0xbc, 0xba, 0xac, 0xac, - 0xbb, 0xaa, 0x88, 0x31, 0x33, 0x14, 0x80, 0xba, 0xcb, 0xba, 0xaa, 0xcb, 0xdb, 0xbc, 0xcb, 0x99, - 0x21, 0x36, 0x35, 0x34, 0x43, 0x33, 0x43, 0x32, 0x32, 0x53, 0x54, 0x34, 0x24, 0x13, 0x02, 0x98, - 0x99, 0xba, 0xcc, 0xcc, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 0xab, 0x9a, 0x10, 0x32, 0x33, 0x02, 0xa8, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xbc, 0xaa, 0x08, 0x62, 0x53, 0x34, 0x43, 0x33, 0x34, 0x33, - 0x32, 0x42, 0x54, 0x44, 0x24, 0x33, 0x12, 0x00, 0x88, 0x9a, 0xdb, 0xcc, 0xbb, 0xcb, 0xcb, 0xbb, - 0xbd, 0xbb, 0xab, 0x88, 0x21, 0x32, 0x13, 0x90, 0xba, 0xcb, 0xbb, 0xaa, 0xcb, 0xdc, 0xcb, 0xab, - 0x9b, 0x20, 0x54, 0x34, 0x35, 0x53, 0x43, 0x22, 0x22, 0x21, 0x63, 0x44, 0x53, 0x23, 0x23, 0x11, - 0x00, 0x90, 0xb9, 0xbd, 0xcc, 0xca, 0xba, 0xcb, 0xbc, 0xbc, 0xbb, 0x9a, 0x18, 0x11, 0x12, 0x01, - 0xa9, 0xba, 0xac, 0xab, 0xbb, 0xcc, 0xcc, 0xca, 0xaa, 0x09, 0x31, 0x44, 0x44, 0x44, 0x43, 0x23, - 0x23, 0x12, 0x42, 0x54, 0x34, 0x25, 0x23, 0x22, 0x11, 0x01, 0xa8, 0xca, 0xbc, 0xbc, 0xcb, 0xbb, - 0xcd, 0xac, 0xaa, 0xbb, 0x98, 0x08, 0x10, 0x00, 0xa0, 0xaa, 0xcb, 0xba, 0xba, 0xcb, 0xcc, 0xbc, - 0xbc, 0x9a, 0x08, 0x21, 0x63, 0x54, 0x53, 0x33, 0x23, 0x22, 0x21, 0x63, 0x45, 0x24, 0x43, 0x22, - 0x12, 0x12, 0x00, 0x99, 0xbc, 0xcb, 0xbb, 0xbc, 0xbd, 0xcd, 0xbb, 0xbb, 0x9a, 0x89, 0x01, 0x11, - 0x81, 0x98, 0xaa, 0xba, 0xbb, 0xca, 0xcc, 0xcc, 0xac, 0xaa, 0x8a, 0x88, 0x21, 0x54, 0x45, 0x34, - 0x24, 0x11, 0x01, 0x31, 0x55, 0x53, 0x33, 0x43, 0x32, 0x22, 0x11, 0x80, 0xba, 0xbc, 0xbb, 0xcc, - 0xdb, 0xbc, 0xbd, 0xac, 0xab, 0x99, 0x80, 0x01, 0x01, 0x81, 0x89, 0xa9, 0x9a, 0x99, 0xcb, 0xbe, - 0xbc, 0xac, 0xa9, 0x89, 0x88, 0x31, 0x57, 0x44, 0x33, 0x13, 0x11, 0x21, 0x44, 0x45, 0x43, 0x33, - 0x24, 0x23, 0x23, 0x01, 0x98, 0xba, 0xbb, 0xcc, 0xcb, 0xcd, 0xdb, 0xcb, 0xab, 0x9b, 0x99, 0x08, - 0x11, 0x00, 0x80, 0x99, 0x89, 0x88, 0xb9, 0xdd, 0xdb, 0xab, 0xab, 0x9a, 0xaa, 0x8a, 0x64, 0x55, - 0x33, 0x33, 0x11, 0x01, 0x32, 0x55, 0x44, 0x33, 0x34, 0x33, 0x43, 0x12, 0x00, 0x99, 0xab, 0xbb, - 0xdb, 0xdc, 0xdb, 0xbc, 0xbc, 0xab, 0x9a, 0x89, 0x00, 0x00, 0x00, 0x88, 0x08, 0x00, 0x88, 0xdb, - 0xcd, 0xcb, 0x9a, 0x9a, 0xbb, 0xaa, 0x39, 0x77, 0x33, 0x24, 0x12, 0x01, 0x11, 0x43, 0x45, 0x43, - 0x43, 0x33, 0x43, 0x23, 0x12, 0x88, 0x99, 0xaa, 0xba, 0xdc, 0xdc, 0xdb, 0xcb, 0xbb, 0xab, 0x9a, - 0x08, 0x08, 0x80, 0x88, 0x80, 0x18, 0x11, 0xb8, 0xce, 0xbc, 0xba, 0xba, 0xdb, 0xcb, 0x8a, 0x51, - 0x45, 0x33, 0x14, 0x02, 0x11, 0x32, 0x54, 0x34, 0x34, 0x34, 0x43, 0x33, 0x13, 0x01, 0x88, 0x9a, - 0xa9, 0xcb, 0xcc, 0xcd, 0xcc, 0xbb, 0xac, 0x9a, 0x99, 0x88, 0x80, 0x88, 0x88, 0x18, 0x11, 0x80, - 0xda, 0xbc, 0xaa, 0xbb, 0xfb, 0xcb, 0xaa, 0x19, 0x64, 0x43, 0x33, 0x22, 0x11, 0x42, 0x53, 0x53, - 0x33, 0x35, 0x53, 0x32, 0x23, 0x12, 0x00, 0x98, 0x98, 0xa8, 0xda, 0xcc, 0xcd, 0xbc, 0xcb, 0xab, - 0x9a, 0x89, 0x88, 0x88, 0x89, 0x18, 0x21, 0x01, 0xa8, 0xcc, 0xaa, 0xaa, 0xcc, 0xcd, 0xac, 0x9a, - 0x30, 0x45, 0x33, 0x23, 0x22, 0x32, 0x44, 0x44, 0x43, 0x53, 0x33, 0x35, 0x32, 0x23, 0x01, 0x00, - 0x89, 0x88, 0xaa, 0xeb, 0xcd, 0xbd, 0xbc, 0xac, 0xab, 0x99, 0x88, 0x99, 0x98, 0x88, 0x10, 0x01, - 0x98, 0xbb, 0xac, 0xaa, 0xea, 0xdc, 0xdb, 0xaa, 0x09, 0x42, 0x34, 0x33, 0x32, 0x33, 0x44, 0x53, - 0x33, 0x35, 0x35, 0x34, 0x34, 0x32, 0x22, 0x01, 0x00, 0x80, 0x80, 0xa9, 0xec, 0xdc, 0xdb, 0xbb, - 0xac, 0xa9, 0x89, 0x99, 0x9a, 0x88, 0x18, 0x10, 0x88, 0xb9, 0xbb, 0x99, 0xba, 0xee, 0xbd, 0xbc, - 0x9a, 0x10, 0x53, 0x33, 0x33, 0x43, 0x33, 0x35, 0x34, 0x34, 0x35, 0x35, 0x34, 0x24, 0x22, 0x12, - 0x01, 0x00, 0x00, 0x00, 0xa9, 0xde, 0xcc, 0xbc, 0xbb, 0xbb, 0xaa, 0xa9, 0xaa, 0x8a, 0x08, 0x01, - 0x80, 0xba, 0xdb, 0x8a, 0x98, 0xfb, 0xcd, 0xbc, 0xab, 0x89, 0x21, 0x34, 0x33, 0x43, 0x43, 0x33, - 0x34, 0x44, 0x53, 0x34, 0x35, 0x34, 0x32, 0x23, 0x11, 0x11, 0x11, 0x21, 0x01, 0xda, 0xce, 0xbd, - 0xbc, 0xba, 0xaa, 0xaa, 0xab, 0x9a, 0x88, 0x00, 0x81, 0xa9, 0xac, 0x9a, 0x08, 0xb8, 0xef, 0xbc, - 0xbc, 0x9a, 0x19, 0x21, 0x33, 0x43, 0x43, 0x43, 0x33, 0x34, 0x44, 0x44, 0x53, 0x34, 0x33, 0x24, - 0x12, 0x11, 0x11, 0x21, 0x32, 0x81, 0xfb, 0xbd, 0xbd, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x9a, 0x00, - 0x00, 0xa9, 0xdb, 0x9b, 0x08, 0x90, 0xfc, 0xdc, 0xcb, 0xab, 0x99, 0x18, 0x11, 0x22, 0x34, 0x43, - 0x24, 0x33, 0x34, 0x44, 0x54, 0x43, 0x34, 0x33, 0x23, 0x22, 0x21, 0x22, 0x43, 0x23, 0xb0, 0xde, - 0xbc, 0xbc, 0xbb, 0xcb, 0xab, 0xbb, 0x9b, 0x88, 0x80, 0x90, 0xaa, 0xab, 0x09, 0x22, 0xc8, 0xef, - 0xbc, 0xac, 0x9a, 0x89, 0x10, 0x21, 0x43, 0x34, 0x43, 0x32, 0x33, 0x53, 0x54, 0x63, 0x43, 0x42, - 0x12, 0x12, 0x11, 0x21, 0x32, 0x33, 0x02, 0xda, 0xbe, 0xcc, 0xab, 0xcb, 0xba, 0xac, 0xaa, 0x89, - 0x88, 0x80, 0xa9, 0xaa, 0x89, 0x22, 0x01, 0xfb, 0xbe, 0xad, 0xbb, 0x99, 0x88, 0x10, 0x31, 0x44, - 0x43, 0x33, 0x32, 0x32, 0x54, 0x45, 0x53, 0x43, 0x33, 0x23, 0x12, 0x21, 0x42, 0x43, 0x13, 0x91, - 0xdb, 0xbd, 0xcb, 0xcb, 0xbb, 0xbc, 0xbb, 0x9a, 0x88, 0x88, 0xa9, 0xaa, 0x9a, 0x21, 0x23, 0xc0, - 0xdf, 0xbc, 0xbc, 0xab, 0x9a, 0x89, 0x10, 0x32, 0x54, 0x33, 0x23, 0x23, 0x34, 0x55, 0x44, 0x34, - 0x34, 0x33, 0x12, 0x21, 0x32, 0x44, 0x33, 0x02, 0xa9, 0xcd, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x9a, - 0x89, 0x88, 0x99, 0x9a, 0x9a, 0x18, 0x32, 0x02, 0xea, 0xbd, 0xbd, 0xcb, 0x9a, 0x99, 0x08, 0x21, - 0x34, 0x35, 0x23, 0x23, 0x22, 0x44, 0x54, 0x35, 0x35, 0x23, 0x23, 0x11, 0x31, 0x53, 0x33, 0x23, - 0x80, 0xcb, 0xbc, 0xbd, 0xbc, 0xbd, 0xbc, 0xab, 0xa9, 0x88, 0x99, 0xa9, 0xaa, 0x09, 0x31, 0x23, - 0xa0, 0xce, 0xbe, 0xbc, 0xba, 0xaa, 0x89, 0x28, 0x53, 0x34, 0x24, 0x23, 0x22, 0x21, 0x54, 0x45, - 0x44, 0x43, 0x22, 0x11, 0x11, 0x32, 0x25, 0x23, 0x01, 0xa8, 0xcb, 0xcb, 0xdb, 0xcc, 0xcb, 0xbb, - 0xaa, 0x99, 0x98, 0xa9, 0x9b, 0x8a, 0x11, 0x43, 0x02, 0xc9, 0xcd, 0xcc, 0xbb, 0xba, 0xaa, 0x89, - 0x31, 0x63, 0x34, 0x32, 0x22, 0x01, 0x52, 0x64, 0x44, 0x43, 0x33, 0x12, 0x21, 0x33, 0x44, 0x43, - 0x11, 0x81, 0x99, 0xb9, 0xdb, 0xdc, 0xbc, 0xbc, 0xba, 0xa9, 0x99, 0xa9, 0xab, 0x9b, 0x08, 0x31, - 0x23, 0x98, 0xed, 0xbc, 0xad, 0xbb, 0xbb, 0xa9, 0x08, 0x32, 0x45, 0x43, 0x22, 0x11, 0x10, 0x53, - 0x56, 0x34, 0x33, 0x23, 0x22, 0x22, 0x54, 0x33, 0x33, 0x02, 0x00, 0x98, 0xcb, 0xcd, 0xcd, 0xcb, - 0xab, 0x9b, 0x9a, 0xaa, 0xaa, 0xab, 0x9a, 0x20, 0x33, 0x13, 0xb8, 0xcf, 0xdb, 0xcb, 0xab, 0x9b, - 0x8a, 0x18, 0x53, 0x34, 0x34, 0x12, 0x00, 0x31, 0x57, 0x34, 0x25, 0x23, 0x12, 0x21, 0x42, 0x34, - 0x33, 0x22, 0x11, 0x00, 0x99, 0xfb, 0xcd, 0xbc, 0xcb, 0xaa, 0xaa, 0xaa, 0xba, 0xbb, 0xba, 0x89, - 0x11, 0x23, 0x01, 0xca, 0xcd, 0xbc, 0xcc, 0xba, 0x9a, 0x99, 0x21, 0x54, 0x43, 0x13, 0x11, 0x20, - 0x54, 0x45, 0x34, 0x33, 0x22, 0x22, 0x33, 0x26, 0x24, 0x22, 0x22, 0x11, 0x01, 0xb8, 0xed, 0xbc, - 0xcc, 0xaa, 0xaa, 0xaa, 0xba, 0xbb, 0xbb, 0x9b, 0x09, 0x22, 0x22, 0x81, 0xba, 0xdf, 0xcb, 0xbb, - 0xac, 0x9b, 0x09, 0x42, 0x35, 0x24, 0x11, 0x01, 0x41, 0x55, 0x44, 0x33, 0x23, 0x22, 0x33, 0x44, - 0x43, 0x23, 0x32, 0x32, 0x32, 0x82, 0xea, 0xcd, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbc, 0xbb, 0xac, - 0x99, 0x00, 0x00, 0x01, 0x98, 0xbc, 0xbe, 0xcb, 0xac, 0xbb, 0x9a, 0x28, 0x53, 0x34, 0x22, 0x01, - 0x21, 0x65, 0x54, 0x33, 0x33, 0x23, 0x33, 0x44, 0x43, 0x32, 0x33, 0x43, 0x23, 0x23, 0x90, 0xdc, - 0xcd, 0xcb, 0xba, 0xab, 0xbb, 0xcb, 0xbb, 0xac, 0x9a, 0x89, 0x00, 0x12, 0x01, 0xba, 0xbd, 0xbd, - 0xcc, 0xbb, 0xab, 0x8a, 0x31, 0x45, 0x22, 0x01, 0x09, 0x51, 0x46, 0x34, 0x43, 0x22, 0x23, 0x43, - 0x34, 0x33, 0x34, 0x33, 0x34, 0x24, 0x02, 0xa8, 0xcd, 0xbc, 0xbc, 0xbb, 0xbb, 0xac, 0xcb, 0xab, - 0xab, 0xaa, 0x08, 0x10, 0x00, 0x98, 0xca, 0xdc, 0xcb, 0xdb, 0xba, 0xab, 0x18, 0x43, 0x24, 0x02, - 0x98, 0x10, 0x55, 0x35, 0x44, 0x22, 0x32, 0x42, 0x33, 0x34, 0x43, 0x33, 0x34, 0x34, 0x22, 0x01, - 0xca, 0xcd, 0xbb, 0xbc, 0xbb, 0xbc, 0xca, 0xba, 0xbb, 0xba, 0x99, 0x80, 0x00, 0x80, 0xa9, 0xcc, - 0xbc, 0xcc, 0xcc, 0xaa, 0x89, 0x30, 0x43, 0x12, 0x90, 0x08, 0x52, 0x46, 0x34, 0x33, 0x34, 0x33, - 0x44, 0x32, 0x24, 0x33, 0x44, 0x33, 0x34, 0x21, 0x88, 0xcb, 0xbd, 0xbc, 0xcb, 0xba, 0xbb, 0xcb, - 0xac, 0xab, 0x9a, 0x89, 0x00, 0x10, 0x80, 0xa9, 0xba, 0xce, 0xdc, 0xbb, 0xaa, 0x18, 0x42, 0x12, - 0x81, 0x99, 0x20, 0x56, 0x44, 0x33, 0x34, 0x43, 0x33, 0x34, 0x42, 0x32, 0x34, 0x34, 0x44, 0x22, - 0x01, 0x99, 0xcb, 0xcc, 0xbb, 0xac, 0xbb, 0xcb, 0xcb, 0xba, 0xab, 0x9a, 0x08, 0x08, 0x08, 0x80, - 0x98, 0xca, 0xcf, 0xbc, 0xbb, 0x8a, 0x20, 0x12, 0x81, 0xba, 0x9a, 0x62, 0x55, 0x43, 0x34, 0x33, - 0x25, 0x33, 0x43, 0x33, 0x53, 0x43, 0x34, 0x24, 0x12, 0x81, 0xa8, 0xcc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbb, 0xaa, 0x99, 0x98, 0x08, 0x08, 0x11, 0x90, 0xfb, 0xce, 0xbb, 0x9a, 0x08, 0x20, - 0x00, 0xa9, 0xa9, 0x10, 0x45, 0x36, 0x44, 0x43, 0x33, 0x34, 0x33, 0x43, 0x33, 0x44, 0x34, 0x34, - 0x23, 0x12, 0x91, 0xca, 0xcc, 0xbb, 0xbc, 0xcb, 0xbb, 0xbc, 0xac, 0xab, 0xaa, 0x99, 0x89, 0x08, - 0x20, 0x22, 0xa8, 0xdf, 0xdb, 0xaa, 0x8a, 0x00, 0x01, 0x99, 0xaa, 0x99, 0x31, 0x46, 0x45, 0x43, - 0x34, 0x33, 0x34, 0x23, 0x43, 0x53, 0x43, 0x43, 0x33, 0x33, 0x11, 0x98, 0xdb, 0xbc, 0xbc, 0xbb, - 0xbc, 0xbc, 0xbc, 0xbb, 0xab, 0xaa, 0xa9, 0x99, 0x20, 0x32, 0x13, 0xfb, 0xbe, 0xbc, 0xaa, 0x88, - 0x80, 0x98, 0xaa, 0xaa, 0x0a, 0x63, 0x45, 0x34, 0x44, 0x43, 0x23, 0x33, 0x33, 0x34, 0x44, 0x34, - 0x34, 0x33, 0x23, 0x01, 0xb9, 0xcc, 0xbc, 0xcb, 0xbb, 0xcc, 0xbb, 0xbc, 0xba, 0xaa, 0x9a, 0x9a, - 0x00, 0x33, 0x25, 0x91, 0xeb, 0xad, 0xab, 0x9a, 0x88, 0x99, 0xc9, 0xba, 0xaa, 0x18, 0x44, 0x54, - 0x44, 0x43, 0x43, 0x23, 0x23, 0x33, 0x44, 0x53, 0x43, 0x33, 0x24, 0x22, 0x80, 0xaa, 0xbc, 0xac, - 0xbc, 0xcb, 0xbc, 0xbc, 0xba, 0xab, 0xbb, 0xba, 0x89, 0x31, 0x44, 0x02, 0xc8, 0xdb, 0xac, 0xaa, - 0x89, 0x89, 0xaa, 0xbb, 0xac, 0x99, 0x30, 0x64, 0x54, 0x43, 0x43, 0x33, 0x33, 0x32, 0x34, 0x44, - 0x43, 0x44, 0x33, 0x33, 0x11, 0xa0, 0xca, 0xbb, 0xbd, 0xbc, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xbb, - 0xaa, 0x28, 0x43, 0x33, 0x91, 0xda, 0xcc, 0xba, 0x99, 0x99, 0xa9, 0xcb, 0xcb, 0x9a, 0x89, 0x42, - 0x46, 0x44, 0x43, 0x33, 0x43, 0x22, 0x33, 0x33, 0x55, 0x43, 0x53, 0x32, 0x13, 0x01, 0xa9, 0xba, - 0xdb, 0xcb, 0xbc, 0xbc, 0xbc, 0xba, 0xbb, 0xbc, 0xbb, 0x89, 0x31, 0x43, 0x12, 0xa0, 0xcc, 0xbb, - 0xab, 0xa9, 0xaa, 0xbc, 0xbc, 0xbc, 0x9a, 0x18, 0x73, 0x54, 0x43, 0x43, 0x32, 0x33, 0x33, 0x33, - 0x44, 0x44, 0x44, 0x33, 0x24, 0x12, 0x80, 0x99, 0xab, 0xbc, 0xcd, 0xcb, 0xab, 0xcb, 0xca, 0xba, - 0xbb, 0x9b, 0x08, 0x32, 0x24, 0x81, 0xb9, 0xcc, 0xaa, 0xab, 0xaa, 0xbb, 0xcc, 0xac, 0xbb, 0x99, - 0x30, 0x37, 0x45, 0x43, 0x43, 0x32, 0x32, 0x23, 0x33, 0x45, 0x44, 0x44, 0x32, 0x22, 0x02, 0x88, - 0xa8, 0xba, 0xcd, 0xdb, 0xba, 0xbb, 0xcb, 0xbc, 0xac, 0xab, 0x89, 0x20, 0x32, 0x13, 0x90, 0xba, - 0xbd, 0xba, 0xab, 0xba, 0xdb, 0xdb, 0xbb, 0xaa, 0x09, 0x53, 0x55, 0x43, 0x34, 0x42, 0x32, 0x23, - 0x22, 0x43, 0x54, 0x44, 0x24, 0x23, 0x12, 0x81, 0x90, 0x99, 0xbc, 0xcd, 0xba, 0xac, 0xbb, 0xcc, - 0xbb, 0xac, 0xaa, 0x08, 0x21, 0x22, 0x11, 0x99, 0xbb, 0xcb, 0xab, 0xab, 0xca, 0xbc, 0xbd, 0xbb, - 0xaa, 0x20, 0x64, 0x34, 0x35, 0x53, 0x33, 0x33, 0x32, 0x32, 0x64, 0x44, 0x53, 0x32, 0x22, 0x12, - 0x00, 0x88, 0xb9, 0xcd, 0xbb, 0xbc, 0xcb, 0xcb, 0xbc, 0xbc, 0xab, 0x8a, 0x18, 0x11, 0x12, 0x80, - 0xa9, 0xbb, 0xbc, 0xba, 0xbb, 0xcc, 0xbc, 0xbc, 0xab, 0x0a, 0x41, 0x44, 0x54, 0x43, 0x34, 0x33, - 0x22, 0x22, 0x33, 0x47, 0x44, 0x33, 0x23, 0x23, 0x12, 0x01, 0xa8, 0xdb, 0xbc, 0xbc, 0xbb, 0xbd, - 0xcc, 0xbb, 0xbb, 0x6c, 0x02, 0x01, 0x39, 0x7d, 0x0a, 0x02, 0xd3, 0x06, 0x19, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x9f, 0x80, 0x88, 0x88, 0x8b, 0x32, 0x92, 0x70, 0x24, - 0x34, 0x14, 0x88, 0x89, 0x09, 0x80, 0xcc, 0xcc, 0xbc, 0xcb, 0x89, 0x31, 0xa0, 0x40, 0xda, 0x41, - 0x24, 0xf8, 0x5a, 0x04, 0x08, 0x22, 0x91, 0x10, 0x90, 0xa9, 0x50, 0xf0, 0x9d, 0x18, 0xa9, 0x18, - 0x02, 0x09, 0x32, 0x32, 0xfa, 0x49, 0x15, 0x08, 0x21, 0x31, 0x26, 0xa0, 0xaa, 0x50, 0x04, 0xdc, - 0x8a, 0xb8, 0x18, 0xa0, 0x9a, 0x31, 0x46, 0x91, 0x9b, 0x00, 0x42, 0x15, 0x98, 0x30, 0x35, 0x82, - 0xbd, 0x50, 0x91, 0x98, 0xee, 0x8a, 0x00, 0xa0, 0xaa, 0x30, 0x15, 0x90, 0x98, 0x88, 0x22, 0x02, - 0x98, 0x62, 0x36, 0xb8, 0x9a, 0x10, 0x54, 0xd8, 0xbd, 0x9a, 0x88, 0xa9, 0x9c, 0x32, 0x23, 0x01, - 0x99, 0x20, 0x34, 0x92, 0x8c, 0x76, 0x12, 0x08, 0xa9, 0x29, 0x27, 0xa0, 0xdc, 0x9a, 0x88, 0xb9, - 0x89, 0x10, 0x35, 0x22, 0x80, 0x19, 0x45, 0xa0, 0x39, 0x36, 0x21, 0x01, 0xab, 0x41, 0x55, 0xa1, - 0xbd, 0x8a, 0xb9, 0xcb, 0x9a, 0x20, 0x34, 0x24, 0xa8, 0x50, 0x04, 0x99, 0x10, 0x52, 0x33, 0x90, - 0xbb, 0x5a, 0x27, 0xa0, 0xbb, 0xbb, 0xbc, 0xcc, 0xab, 0x19, 0x53, 0x83, 0x18, 0x32, 0x02, 0x98, - 0x39, 0x36, 0x54, 0x91, 0xbc, 0x40, 0x33, 0x90, 0xbc, 0xbb, 0xce, 0xab, 0xcc, 0x19, 0x31, 0x01, - 0x22, 0x43, 0x82, 0x88, 0x00, 0x51, 0x36, 0xa1, 0x9a, 0x62, 0x34, 0x81, 0xa8, 0xca, 0xab, 0xec, - 0xcb, 0x99, 0x00, 0x88, 0x09, 0x23, 0x11, 0x12, 0x10, 0x67, 0x34, 0x12, 0x21, 0x73, 0x23, 0x01, - 0xa8, 0xbb, 0xdb, 0xdc, 0xbb, 0xab, 0x88, 0x9a, 0x18, 0x31, 0x24, 0x03, 0x30, 0x57, 0x24, 0x02, - 0x11, 0x43, 0x33, 0x02, 0xca, 0xdb, 0xdb, 0xcc, 0xcb, 0x9a, 0x88, 0x09, 0x18, 0x21, 0x24, 0x02, - 0x11, 0x55, 0x24, 0x11, 0x11, 0x32, 0x34, 0x02, 0xb9, 0xbc, 0xdc, 0xdc, 0xbb, 0xab, 0x9a, 0x98, - 0x08, 0x32, 0x44, 0x82, 0x10, 0x54, 0x43, 0x12, 0x11, 0x32, 0x34, 0x13, 0xa8, 0xaa, 0xfb, 0xce, - 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x31, 0x26, 0x11, 0x32, 0x45, 0x24, 0x12, 0x00, 0x21, 0x44, 0x02, - 0x88, 0x80, 0xc9, 0xdd, 0xbc, 0xcb, 0xa9, 0xa9, 0x9a, 0x10, 0x23, 0x11, 0x51, 0x45, 0x34, 0x22, - 0x02, 0x31, 0x34, 0x12, 0x00, 0x81, 0xea, 0xdd, 0xbc, 0xbb, 0xaa, 0xbb, 0x9b, 0x10, 0x33, 0x22, - 0x63, 0x54, 0x34, 0x23, 0x11, 0x32, 0x43, 0x11, 0x00, 0x81, 0xb9, 0xee, 0xcc, 0xbb, 0xba, 0xac, - 0x9a, 0x18, 0x21, 0x21, 0x32, 0x65, 0x34, 0x22, 0x22, 0x32, 0x33, 0x21, 0x11, 0x00, 0x98, 0xef, - 0xcc, 0xba, 0xbb, 0xdb, 0x9a, 0x08, 0x12, 0x13, 0x22, 0x64, 0x34, 0x22, 0x21, 0x22, 0x23, 0x21, - 0x90, 0x00, 0x90, 0xfd, 0xcc, 0xba, 0xba, 0xbc, 0xab, 0x89, 0x11, 0x02, 0x18, 0x55, 0x35, 0x23, - 0x32, 0x32, 0x33, 0x12, 0x10, 0x20, 0x13, 0xfd, 0xbc, 0xcb, 0xbc, 0xcb, 0xac, 0x09, 0x00, 0x81, - 0x08, 0x63, 0x43, 0x33, 0x22, 0x32, 0x43, 0x12, 0x00, 0x41, 0x12, 0xc9, 0xcc, 0xbc, 0xcc, 0xcb, - 0xac, 0x9a, 0x80, 0x98, 0x09, 0x41, 0x44, 0x33, 0x23, 0x24, 0x34, 0x12, 0x10, 0x32, 0x23, 0xa8, - 0xdd, 0xcb, 0xdb, 0xdb, 0xbb, 0x9a, 0x08, 0x99, 0x99, 0x31, 0x46, 0x33, 0x33, 0x53, 0x34, 0x22, - 0x21, 0x33, 0x23, 0x90, 0xcd, 0xbc, 0xbc, 0xdd, 0xbb, 0xaa, 0x99, 0xa9, 0x99, 0x20, 0x45, 0x24, - 0x32, 0x44, 0x32, 0x12, 0x12, 0x32, 0x22, 0x90, 0xdc, 0xbb, 0xeb, 0xdc, 0xbb, 0xaa, 0x99, 0x99, - 0x99, 0x20, 0x45, 0x24, 0x32, 0x34, 0x24, 0x12, 0x22, 0x22, 0x33, 0x91, 0xcc, 0xab, 0xdc, 0xdc, - 0xcb, 0x9a, 0x8a, 0x99, 0x9a, 0x18, 0x43, 0x43, 0x42, 0x34, 0x33, 0x32, 0x12, 0x52, 0x23, 0x82, - 0xba, 0x9a, 0xea, 0xce, 0xcb, 0xab, 0x99, 0xa9, 0xab, 0x89, 0x33, 0x34, 0x45, 0x34, 0x43, 0x22, - 0x11, 0x32, 0x34, 0x81, 0xa9, 0x99, 0xea, 0xdc, 0xcc, 0xab, 0x99, 0xa9, 0xba, 0x09, 0x20, 0x42, - 0x35, 0x44, 0x24, 0x23, 0x21, 0x42, 0x24, 0x00, 0x88, 0x99, 0xa9, 0xdd, 0xcc, 0xab, 0xa9, 0xb9, - 0xab, 0x9a, 0x18, 0x43, 0x54, 0x43, 0x34, 0x13, 0x21, 0x42, 0x33, 0x12, 0x80, 0x08, 0xa9, 0xdf, - 0xbd, 0xac, 0xa9, 0xaa, 0xaa, 0x9a, 0x08, 0x31, 0x44, 0x54, 0x43, 0x13, 0x12, 0x43, 0x32, 0x12, - 0x80, 0x09, 0x00, 0xfb, 0xbf, 0xba, 0xbb, 0xbb, 0xcb, 0xaa, 0x88, 0x11, 0x42, 0x45, 0x34, 0x23, - 0x21, 0x33, 0x43, 0x22, 0x88, 0x20, 0x23, 0xfa, 0xbe, 0xbc, 0xbb, 0xbb, 0xcb, 0xab, 0x8a, 0x08, - 0x38, 0x56, 0x34, 0x23, 0x32, 0x43, 0x34, 0x12, 0x80, 0x20, 0x01, 0xd9, 0xbe, 0xcc, 0xba, 0xba, - 0xcb, 0xaa, 0x98, 0x08, 0x10, 0x46, 0x43, 0x23, 0x22, 0x42, 0x43, 0x12, 0x00, 0x21, 0x12, 0xb0, - 0xed, 0xbc, 0xcb, 0xba, 0xcc, 0x9a, 0xa9, 0x99, 0x08, 0x42, 0x54, 0x32, 0x21, 0x53, 0x33, 0x13, - 0x10, 0x22, 0x12, 0x91, 0xec, 0xcc, 0xab, 0xbc, 0xbc, 0xab, 0xaa, 0xab, 0x89, 0x40, 0x36, 0x33, - 0x23, 0x45, 0x43, 0x12, 0x12, 0x22, 0x22, 0x82, 0xfa, 0xcb, 0xcb, 0xcb, 0xac, 0xaa, 0xab, 0xaa, - 0x9a, 0x30, 0x46, 0x23, 0x32, 0x54, 0x23, 0x23, 0x12, 0x22, 0x33, 0x13, 0xda, 0xbd, 0xdb, 0xbc, - 0xbc, 0xab, 0xbb, 0xbb, 0xbb, 0x28, 0x46, 0x23, 0x33, 0x45, 0x33, 0x23, 0x13, 0x22, 0x34, 0x13, - 0xb8, 0xbd, 0xcc, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xad, 0x19, 0x22, 0x33, 0x43, 0x44, 0x34, 0x33, - 0x22, 0x32, 0x36, 0x13, 0x81, 0xa8, 0xda, 0xbc, 0xbd, 0xbc, 0xaa, 0xdb, 0xbb, 0x09, 0x21, 0x22, - 0x33, 0x45, 0x34, 0x24, 0x11, 0x22, 0x44, 0x22, 0x01, 0x98, 0xba, 0xdc, 0xbc, 0xac, 0xaa, 0xcc, - 0xbb, 0x99, 0x10, 0x12, 0x33, 0x44, 0x36, 0x23, 0x12, 0x32, 0x35, 0x23, 0x12, 0x80, 0xb9, 0xec, - 0xcc, 0xaa, 0xba, 0xcc, 0xbb, 0x9a, 0x00, 0x21, 0x21, 0x63, 0x35, 0x23, 0x23, 0x42, 0x43, 0x33, - 0x12, 0x00, 0x98, 0xfb, 0xbd, 0xab, 0xba, 0xcd, 0xbb, 0x9b, 0x09, 0x11, 0x20, 0x53, 0x36, 0x33, - 0x22, 0x23, 0x35, 0x24, 0x12, 0x00, 0x91, 0xfb, 0xbc, 0xba, 0xcb, 0xcb, 0xbc, 0xab, 0x89, 0x00, - 0x10, 0x63, 0x34, 0x24, 0x22, 0x32, 0x53, 0x23, 0x22, 0x31, 0x01, 0xeb, 0xcc, 0xba, 0xbb, 0xcc, - 0xcc, 0xaa, 0x88, 0x88, 0x08, 0x31, 0x35, 0x25, 0x13, 0x32, 0x34, 0x24, 0x21, 0x33, 0x03, 0xc9, - 0xcc, 0xbb, 0xbc, 0xeb, 0xbc, 0xbb, 0x9a, 0x98, 0x88, 0x31, 0x55, 0x43, 0x22, 0x31, 0x34, 0x32, - 0x32, 0x34, 0x22, 0xa8, 0xcc, 0xac, 0xbb, 0xdc, 0xcc, 0xab, 0x9a, 0x99, 0x89, 0x00, 0x44, 0x34, - 0x22, 0x42, 0x33, 0x33, 0x34, 0x34, 0x23, 0x80, 0xda, 0xac, 0xba, 0xdc, 0xcc, 0xba, 0xaa, 0xa9, - 0x99, 0x08, 0x52, 0x34, 0x22, 0x43, 0x43, 0x22, 0x43, 0x43, 0x32, 0x01, 0xba, 0xbb, 0xbc, 0xdd, - 0xbc, 0xad, 0xab, 0xa9, 0x9a, 0x0a, 0x32, 0x35, 0x43, 0x43, 0x43, 0x22, 0x33, 0x44, 0x33, 0x02, - 0xa8, 0xaa, 0xcb, 0xdc, 0xbc, 0xbd, 0xab, 0xba, 0xba, 0x9a, 0x21, 0x24, 0x34, 0x34, 0x34, 0x33, - 0x34, 0x54, 0x23, 0x12, 0x90, 0x99, 0xa9, 0xdb, 0xcd, 0xbc, 0xab, 0xbb, 0xac, 0x9a, 0x00, 0x22, - 0x34, 0x44, 0x43, 0x22, 0x33, 0x45, 0x43, 0x12, 0x81, 0x98, 0x88, 0xb9, 0xde, 0xbb, 0xac, 0xbb, - 0xbc, 0x9a, 0x88, 0x21, 0x32, 0x35, 0x35, 0x22, 0x32, 0x45, 0x34, 0x23, 0x01, 0x88, 0x08, 0xb8, - 0xce, 0xbc, 0xcb, 0xcb, 0xbb, 0xab, 0x8a, 0x18, 0x22, 0x44, 0x25, 0x13, 0x32, 0x54, 0x43, 0x33, - 0x11, 0x80, 0x10, 0x98, 0xcd, 0xac, 0xcb, 0xcb, 0xac, 0xab, 0x9a, 0x88, 0x10, 0x52, 0x43, 0x22, - 0x31, 0x44, 0x35, 0x24, 0x02, 0x00, 0x01, 0x90, 0xdb, 0xbc, 0xcb, 0xbc, 0xbc, 0xbb, 0xaa, 0x89, - 0x08, 0x53, 0x34, 0x32, 0x22, 0x63, 0x35, 0x34, 0x12, 0x10, 0x11, 0x80, 0xca, 0xbc, 0xcc, 0xcb, - 0xbc, 0xbb, 0xaa, 0x9a, 0x09, 0x41, 0x34, 0x33, 0x22, 0x53, 0x46, 0x33, 0x12, 0x12, 0x21, 0x80, - 0xb9, 0xcd, 0xcb, 0xdb, 0xbc, 0xab, 0xbb, 0xaa, 0x8a, 0x31, 0x44, 0x24, 0x11, 0x32, 0x47, 0x33, - 0x22, 0x22, 0x22, 0x11, 0xa9, 0xbd, 0xbc, 0xcd, 0xbc, 0xbb, 0xcb, 0xba, 0x99, 0x18, 0x42, 0x24, - 0x11, 0x42, 0x35, 0x35, 0x22, 0x22, 0x22, 0x12, 0xa8, 0xbb, 0xcd, 0xcc, 0xbc, 0xbc, 0xca, 0xaa, - 0x9a, 0x09, 0x32, 0x34, 0x11, 0x42, 0x45, 0x43, 0x23, 0x22, 0x33, 0x22, 0x80, 0xaa, 0xcc, 0xdc, - 0xcb, 0xac, 0xbb, 0xac, 0xaa, 0x0a, 0x31, 0x33, 0x22, 0x53, 0x45, 0x34, 0x32, 0x43, 0x22, 0x13, - 0x00, 0x89, 0xca, 0xcc, 0xbd, 0xbc, 0xbb, 0xbc, 0xcb, 0x99, 0x21, 0x22, 0x12, 0x31, 0x46, 0x43, - 0x24, 0x32, 0x43, 0x12, 0x01, 0x80, 0x98, 0xcc, 0xcc, 0xcb, 0xcb, 0xca, 0xba, 0x9a, 0x10, 0x22, - 0x22, 0x31, 0x54, 0x44, 0x32, 0x43, 0x33, 0x23, 0x12, 0x01, 0x98, 0xda, 0xcd, 0xbc, 0xbb, 0xcc, - 0xac, 0x9b, 0x00, 0x11, 0x01, 0x21, 0x52, 0x44, 0x32, 0x34, 0x24, 0x23, 0x12, 0x11, 0x88, 0xb8, - 0xce, 0xcb, 0xbb, 0xbd, 0xbd, 0xaa, 0x08, 0x10, 0x10, 0x20, 0x52, 0x43, 0x43, 0x34, 0x43, 0x23, - 0x22, 0x11, 0x01, 0xa9, 0xdd, 0xcb, 0xbb, 0xcd, 0xcb, 0x9b, 0x89, 0x18, 0x00, 0x10, 0x33, 0x35, - 0x53, 0x34, 0x24, 0x33, 0x23, 0x12, 0x12, 0x90, 0xcd, 0xcb, 0xcb, 0xcc, 0xdb, 0xba, 0x89, 0x88, - 0x00, 0x00, 0x22, 0x43, 0x34, 0x35, 0x34, 0x34, 0x22, 0x12, 0x22, 0x81, 0xcb, 0xbc, 0xbc, 0xdc, - 0xcc, 0xba, 0x9a, 0x88, 0x88, 0x10, 0x11, 0x33, 0x35, 0x35, 0x44, 0x33, 0x33, 0x33, 0x24, 0x01, - 0xa9, 0xcb, 0xcb, 0xdc, 0xcc, 0xac, 0x9a, 0x99, 0x88, 0x80, 0x11, 0x21, 0x43, 0x34, 0x45, 0x33, - 0x23, 0x43, 0x32, 0x02, 0x98, 0xca, 0xba, 0xdc, 0xbe, 0xbc, 0xba, 0xa9, 0x98, 0x88, 0x18, 0x22, - 0x33, 0x55, 0x34, 0x34, 0x33, 0x43, 0x33, 0x22, 0x90, 0xba, 0xb9, 0xde, 0xdc, 0xcb, 0xaa, 0x9a, - 0x99, 0x88, 0x08, 0x12, 0x22, 0x63, 0x34, 0x34, 0x43, 0x33, 0x43, 0x13, 0x91, 0x98, 0x98, 0xea, - 0xcd, 0xbc, 0xac, 0xaa, 0xa9, 0x89, 0x08, 0x01, 0x12, 0x53, 0x44, 0x43, 0x33, 0x34, 0x24, 0x23, - 0x00, 0x88, 0x88, 0xc9, 0xdd, 0xcc, 0xab, 0xab, 0xaa, 0x99, 0x88, 0x01, 0x11, 0x42, 0x54, 0x43, - 0x33, 0x44, 0x24, 0x23, 0x01, 0x00, 0x00, 0x98, 0xcd, 0xcd, 0xbb, 0xcb, 0xaa, 0xa9, 0x88, 0x88, - 0x00, 0x31, 0x54, 0x24, 0x43, 0x53, 0x43, 0x22, 0x11, 0x01, 0x01, 0x80, 0xeb, 0xcc, 0xbc, 0xbb, - 0xac, 0x9a, 0x89, 0x88, 0x80, 0x20, 0x44, 0x43, 0x33, 0x54, 0x34, 0x23, 0x22, 0x10, 0x11, 0x81, - 0xd9, 0xcd, 0xbc, 0xac, 0xbb, 0xab, 0x99, 0x98, 0x88, 0x20, 0x63, 0x33, 0x34, 0x54, 0x53, 0x22, - 0x12, 0x11, 0x10, 0x11, 0xb9, 0xcd, 0xbd, 0xcc, 0xba, 0xaa, 0x99, 0x98, 0x88, 0x08, 0x43, 0x43, - 0x42, 0x53, 0x44, 0x33, 0x22, 0x11, 0x12, 0x12, 0xa0, 0xdc, 0xcc, 0xdb, 0xbb, 0xba, 0x9a, 0x89, - 0x9a, 0x08, 0x42, 0x33, 0x53, 0x44, 0x44, 0x43, 0x12, 0x12, 0x11, 0x12, 0x80, 0xbb, 0xbf, 0xbd, - 0xbc, 0xac, 0x99, 0x99, 0x99, 0x09, 0x30, 0x22, 0x43, 0x63, 0x44, 0x34, 0x32, 0x21, 0x22, 0x13, - 0x01, 0xb8, 0xce, 0xcc, 0xbc, 0xbb, 0xaa, 0xa9, 0xab, 0x8a, 0x20, 0x32, 0x23, 0x55, 0x45, 0x34, - 0x32, 0x22, 0x32, 0x22, 0x12, 0xa8, 0xeb, 0xdc, 0xbc, 0xac, 0x9b, 0xaa, 0xaa, 0x99, 0x00, 0x22, - 0x21, 0x53, 0x55, 0x34, 0x32, 0x33, 0x32, 0x33, 0x12, 0x91, 0xda, 0xcd, 0xcd, 0xab, 0xab, 0xba, - 0xba, 0x9a, 0x18, 0x11, 0x12, 0x43, 0x47, 0x53, 0x23, 0x33, 0x32, 0x33, 0x22, 0x11, 0xa8, 0xed, - 0xbd, 0xbc, 0xab, 0xab, 0xbb, 0xaa, 0x09, 0x10, 0x11, 0x32, 0x47, 0x35, 0x34, 0x32, 0x33, 0x24, - 0x22, 0x21, 0x81, 0xea, 0xcd, 0xcb, 0xaa, 0xab, 0xab, 0xab, 0x89, 0x00, 0x01, 0x20, 0x64, 0x44, - 0x34, 0x32, 0x43, 0x32, 0x22, 0x12, 0x12, 0xc8, 0xce, 0xbc, 0xcb, 0xaa, 0xbb, 0xba, 0x8a, 0x08, - 0x80, 0x18, 0x63, 0x45, 0x43, 0x33, 0x43, 0x23, 0x23, 0x23, 0x23, 0xa8, 0xde, 0xbc, 0xac, 0xab, - 0xcb, 0xaa, 0x9a, 0x08, 0x08, 0x88, 0x41, 0x36, 0x34, 0x34, 0x34, 0x32, 0x32, 0x32, 0x14, 0x81, - 0xfa, 0xcb, 0xcb, 0xba, 0xcb, 0xab, 0x9a, 0x89, 0x90, 0x88, 0x31, 0x46, 0x24, 0x34, 0x34, 0x33, - 0x32, 0x32, 0x24, 0x82, 0xd9, 0xdc, 0xab, 0xac, 0xcb, 0xba, 0x9a, 0x89, 0x98, 0x88, 0x10, 0x44, - 0x43, 0x35, 0x34, 0x24, 0x13, 0x33, 0x33, 0x23, 0xb8, 0xbf, 0xcc, 0xbb, 0xdb, 0xbb, 0xaa, 0x99, - 0x99, 0x99, 0x10, 0x53, 0x53, 0x53, 0x34, 0x33, 0x33, 0x43, 0x43, 0x12, 0x80, 0xdb, 0xcb, 0xbc, - 0xbc, 0xbc, 0xaa, 0x99, 0xa9, 0x99, 0x18, 0x31, 0x63, 0x63, 0x43, 0x33, 0x33, 0x43, 0x34, 0x23, - 0x00, 0xba, 0xbd, 0xbd, 0xcc, 0xcb, 0x9a, 0x9a, 0x99, 0x9a, 0x88, 0x01, 0x32, 0x46, 0x34, 0x34, - 0x32, 0x43, 0x43, 0x23, 0x02, 0x99, 0xdb, 0xcb, 0xbd, 0xbc, 0xbb, 0xaa, 0xaa, 0xaa, 0x98, 0x08, - 0x21, 0x55, 0x34, 0x25, 0x33, 0x43, 0x53, 0x23, 0x02, 0x90, 0xa9, 0xcc, 0xcc, 0xcb, 0xbb, 0xaa, - 0xab, 0x9a, 0x9a, 0x89, 0x20, 0x53, 0x55, 0x33, 0x43, 0x42, 0x43, 0x43, 0x12, 0x80, 0x98, 0xba, - 0xcd, 0xcc, 0xaa, 0xab, 0xab, 0xaa, 0xa9, 0x89, 0x08, 0x41, 0x45, 0x34, 0x33, 0x53, 0x34, 0x34, - 0x22, 0x01, 0x90, 0xb8, 0xdc, 0xbc, 0xbc, 0xbb, 0xba, 0xab, 0xba, 0x9a, 0x99, 0x30, 0x37, 0x35, - 0x33, 0x34, 0x45, 0x33, 0x24, 0x11, 0x00, 0x98, 0xcb, 0xbd, 0xbc, 0xac, 0xab, 0xbb, 0xaa, 0xaa, - 0x9b, 0x18, 0x54, 0x43, 0x43, 0x33, 0x45, 0x34, 0x23, 0x22, 0x02, 0x81, 0xca, 0xcc, 0xbc, 0xac, - 0xbb, 0xab, 0xab, 0xbb, 0xbb, 0x09, 0x52, 0x34, 0x34, 0x43, 0x45, 0x34, 0x23, 0x23, 0x23, 0x00, - 0xa9, 0xcd, 0xcc, 0xba, 0xac, 0xab, 0xaa, 0xb9, 0xab, 0x8a, 0x31, 0x35, 0x24, 0x43, 0x54, 0x34, - 0x33, 0x24, 0x22, 0x02, 0xa0, 0xda, 0xdb, 0xcb, 0xbb, 0xbb, 0xba, 0xca, 0xab, 0x9b, 0x18, 0x34, - 0x23, 0x43, 0x46, 0x34, 0x34, 0x24, 0x22, 0x12, 0x80, 0xa9, 0xbd, 0xcc, 0xcb, 0xba, 0xaa, 0xba, - 0xbb, 0xbb, 0x08, 0x53, 0x22, 0x41, 0x54, 0x53, 0x24, 0x33, 0x43, 0x12, 0x11, 0x99, 0xca, 0xcc, - 0xbc, 0xba, 0xbb, 0xca, 0xbb, 0xbc, 0x09, 0x12, 0x11, 0x32, 0x54, 0x35, 0x35, 0x43, 0x32, 0x33, - 0x11, 0x80, 0xc9, 0xcc, 0xbc, 0xbb, 0xac, 0xba, 0xdb, 0xab, 0x0a, 0x10, 0x10, 0x21, 0x44, 0x44, - 0x44, 0x42, 0x42, 0x12, 0x12, 0x81, 0x98, 0xbc, 0xbd, 0xcb, 0xab, 0xaa, 0xcc, 0xab, 0x9a, 0x00, - 0x10, 0x11, 0x42, 0x54, 0x34, 0x34, 0x34, 0x24, 0x21, 0x01, 0x90, 0xca, 0xcc, 0xac, 0xab, 0xaa, - 0xdb, 0xab, 0x9a, 0x88, 0x01, 0x01, 0x32, 0x55, 0x43, 0x44, 0x33, 0x24, 0x23, 0x21, 0x80, 0xb9, - 0xdd, 0xcb, 0xaa, 0xb9, 0xcb, 0xcb, 0x9a, 0x89, 0x81, 0x10, 0x21, 0x43, 0x35, 0x36, 0x25, 0x33, - 0x33, 0x22, 0x11, 0xa8, 0xdd, 0xcb, 0xaa, 0xab, 0xbc, 0xbc, 0xab, 0x89, 0x88, 0x08, 0x20, 0x32, - 0x45, 0x45, 0x34, 0x34, 0x33, 0x32, 0x12, 0x81, 0xeb, 0xbc, 0xba, 0xbb, 0xbc, 0xbd, 0xbb, 0x9a, - 0x88, 0x09, 0x11, 0x21, 0x54, 0x44, 0x35, 0x53, 0x23, 0x32, 0x22, 0x82, 0xc9, 0xbc, 0xac, 0xbb, - 0xdb, 0xdb, 0xaa, 0x9a, 0x9a, 0x88, 0x10, 0x20, 0x42, 0x45, 0x63, 0x43, 0x32, 0x23, 0x24, 0x11, - 0xa8, 0xbc, 0xcb, 0xbb, 0xdb, 0xbc, 0xba, 0xab, 0xaa, 0x89, 0x08, 0x10, 0x42, 0x44, 0x45, 0x25, - 0x33, 0x43, 0x32, 0x13, 0x88, 0xdb, 0xbb, 0xcb, 0xcb, 0xbc, 0xac, 0xab, 0x9b, 0x99, 0x88, 0x10, - 0x22, 0x52, 0x55, 0x34, 0x24, 0x43, 0x32, 0x13, 0x81, 0xc9, 0xab, 0xac, 0xbc, 0xbc, 0xac, 0xbb, - 0xbb, 0xa9, 0x09, 0x00, 0x10, 0x31, 0x57, 0x44, 0x32, 0x34, 0x24, 0x33, 0x01, 0x99, 0xbb, 0xdb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xaa, 0x9a, 0x89, 0x88, 0x80, 0x28, 0x64, 0x34, 0x34, 0x34, 0x44, 0x32, - 0x11, 0x88, 0x9a, 0xbb, 0xbc, 0xbd, 0xcb, 0xac, 0xbb, 0xbb, 0x8a, 0x98, 0x99, 0x18, 0x73, 0x53, - 0x34, 0x34, 0x44, 0x33, 0x12, 0x00, 0xa8, 0xba, 0xcb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbb, 0x9a, 0x99, - 0x99, 0x09, 0x51, 0x44, 0x34, 0x44, 0x34, 0x34, 0x12, 0x11, 0x98, 0xa9, 0xcb, 0xcb, 0xdb, 0xbb, - 0xbc, 0xbb, 0xaa, 0xa9, 0xa9, 0x89, 0x32, 0x55, 0x34, 0x44, 0x44, 0x33, 0x33, 0x21, 0x90, 0x99, - 0xbb, 0xbd, 0xbd, 0xcb, 0xbc, 0xab, 0xaa, 0x9a, 0x9a, 0x8a, 0x28, 0x35, 0x34, 0x55, 0x53, 0x43, - 0x32, 0x12, 0x00, 0x88, 0xaa, 0xcb, 0xbc, 0xbc, 0xbd, 0xbb, 0xab, 0xaa, 0xba, 0x9b, 0x28, 0x42, - 0x43, 0x55, 0x44, 0x34, 0x33, 0x23, 0x11, 0x80, 0xa9, 0xbb, 0xbd, 0xcd, 0xbb, 0xbc, 0xab, 0xba, - 0xba, 0xab, 0x08, 0x21, 0x42, 0x55, 0x44, 0x44, 0x33, 0x33, 0x12, 0x81, 0x98, 0xb9, 0xdb, 0xbc, - 0xbd, 0xac, 0xbb, 0xaa, 0xbb, 0xbb, 0x09, 0x10, 0x22, 0x45, 0x64, 0x44, 0x33, 0x33, 0x23, 0x02, - 0x90, 0xa9, 0xcb, 0xcc, 0xbc, 0xcc, 0xaa, 0x9a, 0xbb, 0xab, 0x89, 0x08, 0x21, 0x41, 0x64, 0x35, - 0x35, 0x33, 0x33, 0x11, 0x81, 0x98, 0xaa, 0xcc, 0xcc, 0xbc, 0xab, 0xba, 0xac, 0xab, 0x9a, 0x89, - 0x00, 0x10, 0x73, 0x36, 0x35, 0x24, 0x33, 0x21, 0x01, 0x08, 0x99, 0xca, 0xcc, 0xbc, 0xbb, 0xbb, - 0xbc, 0xac, 0x9a, 0x89, 0x88, 0x88, 0x52, 0x55, 0x34, 0x34, 0x24, 0x12, 0x02, 0x00, 0x88, 0xb8, - 0xdc, 0xbb, 0xac, 0xac, 0xbb, 0xbb, 0xab, 0x9a, 0x99, 0xa9, 0x30, 0x57, 0x35, 0x35, 0x33, 0x23, - 0x13, 0x10, 0x00, 0xa8, 0xcd, 0xcb, 0xcb, 0xbb, 0xcb, 0xbb, 0xab, 0x9a, 0x9a, 0xaa, 0x19, 0x64, - 0x45, 0x34, 0x34, 0x33, 0x22, 0x01, 0x11, 0x98, 0xbc, 0xbd, 0xbc, 0xac, 0xbb, 0xad, 0x9b, 0x9a, - 0xa9, 0x9a, 0x8a, 0x40, 0x55, 0x44, 0x53, 0x32, 0x12, 0x11, 0x12, 0x90, 0xb9, 0xbc, 0xbd, 0xca, - 0xcb, 0xbb, 0xbb, 0xaa, 0xab, 0xbb, 0xaa, 0x28, 0x65, 0x35, 0x36, 0x33, 0x23, 0x32, 0x13, 0x01, - 0xa8, 0xcc, 0xac, 0xcb, 0xbc, 0xcb, 0xba, 0xaa, 0xaa, 0xba, 0xbb, 0x89, 0x52, 0x65, 0x44, 0x33, - 0x32, 0x33, 0x22, 0x12, 0x98, 0xca, 0xbc, 0xdb, 0xbc, 0xbc, 0xba, 0xbb, 0xaa, 0xbb, 0xab, 0x9a, - 0x18, 0x66, 0x45, 0x33, 0x24, 0x32, 0x22, 0x12, 0x91, 0xb9, 0xcb, 0xdb, 0xbc, 0xbc, 0xcb, 0xaa, - 0xa9, 0xbb, 0xaa, 0xba, 0x8a, 0x72, 0x46, 0x43, 0x33, 0x33, 0x33, 0x23, 0x01, 0xa9, 0xbb, 0xbe, - 0xbd, 0xbc, 0xcb, 0xaa, 0xba, 0xba, 0xa9, 0xcb, 0x9a, 0x40, 0x46, 0x44, 0x33, 0x43, 0x32, 0x22, - 0x11, 0x88, 0xa9, 0xbc, 0xcc, 0xbc, 0xac, 0xba, 0xba, 0xab, 0xab, 0xbc, 0xab, 0x18, 0x55, 0x45, - 0x33, 0x34, 0x33, 0x33, 0x22, 0x00, 0xb9, 0xca, 0xdc, 0xcb, 0xbb, 0xcb, 0xba, 0xab, 0xbb, 0xbc, - 0xab, 0x8a, 0x62, 0x45, 0x34, 0x43, 0x33, 0x33, 0x23, 0x01, 0x98, 0xaa, 0xcd, 0xbd, 0xbb, 0xcb, - 0xbb, 0xab, 0xab, 0xbc, 0xcb, 0x9a, 0x31, 0x56, 0x43, 0x43, 0x24, 0x23, 0x23, 0x01, 0x00, 0x99, - 0xea, 0xcb, 0xbb, 0xbc, 0xac, 0xaa, 0xab, 0xba, 0xbc, 0xaa, 0x38, 0x45, 0x44, 0x44, 0x33, 0x33, - 0x33, 0x21, 0x00, 0xa0, 0xdb, 0xbc, 0xbc, 0xbc, 0xac, 0xab, 0xaa, 0xaa, 0xcc, 0x9a, 0x08, 0x41, - 0x54, 0x34, 0x34, 0x43, 0x32, 0x21, 0x10, 0x80, 0xba, 0xcc, 0xcb, 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, - 0xbc, 0xbb, 0x99, 0x31, 0x56, 0x53, 0x43, 0x43, 0x22, 0x22, 0x11, 0x00, 0xa9, 0xcb, 0xbc, 0xcc, - 0xbb, 0xbb, 0xab, 0xbb, 0xbd, 0xcb, 0x9a, 0x10, 0x53, 0x44, 0x44, 0x43, 0x32, 0x22, 0x12, 0x01, - 0x98, 0xba, 0xcd, 0xcb, 0xcb, 0xab, 0xab, 0xba, 0xcb, 0xcb, 0xaa, 0x19, 0x32, 0x46, 0x44, 0x34, - 0x33, 0x33, 0x22, 0x11, 0x80, 0xba, 0xcc, 0xbc, 0xbd, 0xac, 0x9a, 0xaa, 0xbb, 0xad, 0xab, 0x89, - 0x11, 0x73, 0x44, 0x43, 0x43, 0x22, 0x13, 0x12, 0x00, 0x99, 0xba, 0xdc, 0xbc, 0xbb, 0xbb, 0xbb, - 0xbc, 0xcc, 0xaa, 0x9a, 0x08, 0x42, 0x55, 0x43, 0x34, 0x32, 0x33, 0x22, 0x01, 0x88, 0xb9, 0xcd, - 0xbc, 0xbc, 0xba, 0xab, 0xcb, 0xbc, 0xab, 0xaa, 0x99, 0x31, 0x56, 0x34, 0x44, 0x32, 0x33, 0x23, - 0x02, 0x81, 0xa8, 0xcc, 0xbc, 0xbc, 0xac, 0xaa, 0xbb, 0xbc, 0xac, 0xaa, 0x99, 0x18, 0x44, 0x45, - 0x24, 0x24, 0x33, 0x23, 0x22, 0x01, 0x98, 0xca, 0xcc, 0xbc, 0xbb, 0xba, 0xcb, 0xac, 0xbb, 0xbb, - 0xba, 0x09, 0x62, 0x45, 0x43, 0x34, 0x33, 0x24, 0x22, 0x01, 0x80, 0xb8, 0xeb, 0xbc, 0xba, 0xbb, - 0xcb, 0xcb, 0xab, 0xcb, 0xaa, 0x9a, 0x30, 0x45, 0x44, 0x34, 0x34, 0x23, 0x33, 0x21, 0x10, 0x98, - 0xeb, 0xdb, 0xba, 0xab, 0xcb, 0xbb, 0xcb, 0xbb, 0xbc, 0x9a, 0x19, 0x43, 0x45, 0x35, 0x43, 0x33, - 0x33, 0x23, 0x11, 0x80, 0xcb, 0xcc, 0xcb, 0xbb, 0xbb, 0xcc, 0xba, 0xac, 0xbb, 0xab, 0x89, 0x30, - 0x55, 0x44, 0x34, 0x43, 0x32, 0x22, 0x22, 0x01, 0xa9, 0xcc, 0xcb, 0xbb, 0xac, 0xac, 0xbb, 0xbc, - 0xbb, 0xac, 0x89, 0x18, 0x53, 0x35, 0x35, 0x34, 0x33, 0x33, 0x23, 0x12, 0xa8, 0xdb, 0xcc, 0xba, - 0xcb, 0xbb, 0xbb, 0xcc, 0xbb, 0xba, 0xab, 0x09, 0x42, 0x55, 0x53, 0x43, 0x33, 0x33, 0x33, 0x22, - 0x80, 0xba, 0xbe, 0xbc, 0xcb, 0xbb, 0xbb, 0xad, 0xcb, 0xba, 0xab, 0x9a, 0x20, 0x54, 0x44, 0x34, - 0x43, 0x33, 0x24, 0x22, 0x10, 0xa8, 0xca, 0xcb, 0xbb, 0xbc, 0xcb, 0xcb, 0xca, 0xba, 0xbb, 0xaa, - 0x88, 0x42, 0x45, 0x44, 0x43, 0x33, 0x33, 0x33, 0x22, 0x90, 0xbb, 0xcd, 0xcb, 0xca, 0xba, 0xcb, - 0xbb, 0xbc, 0xbb, 0xab, 0x99, 0x20, 0x46, 0x44, 0x34, 0x33, 0x34, 0x24, 0x12, 0x80, 0xa8, 0xca, - 0xbb, 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xac, 0xba, 0xa9, 0x08, 0x53, 0x44, 0x44, 0x42, 0x42, 0x22, - 0x22, 0x01, 0x98, 0xb9, 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xcb, 0xcb, 0xaa, 0xaa, 0x89, 0x21, 0x36, - 0x45, 0x43, 0x33, 0x25, 0x22, 0x11, 0x80, 0xa9, 0xbb, 0xbd, 0xcb, 0xbb, 0xbc, 0xbc, 0xbb, 0xcb, - 0xab, 0xaa, 0x10, 0x44, 0x35, 0x44, 0x34, 0x33, 0x24, 0x12, 0x81, 0x98, 0xba, 0xcc, 0xbb, 0xcb, - 0xcb, 0xac, 0xbb, 0xbb, 0xbc, 0xaa, 0x09, 0x42, 0x44, 0x44, 0x34, 0x34, 0x33, 0x23, 0x02, 0x80, - 0xaa, 0xcc, 0xbb, 0xbc, 0xbc, 0xdb, 0xba, 0xcb, 0xba, 0xbb, 0x89, 0x20, 0x54, 0x34, 0x35, 0x44, - 0x32, 0x23, 0x22, 0x00, 0x99, 0xbb, 0xcc, 0xcb, 0xcb, 0xbb, 0xbc, 0xbb, 0xbc, 0xab, 0x9a, 0x19, - 0x43, 0x36, 0x35, 0x35, 0x43, 0x32, 0x22, 0x01, 0x90, 0xba, 0xdb, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, - 0xbc, 0xbb, 0xab, 0x89, 0x31, 0x46, 0x44, 0x43, 0x34, 0x33, 0x33, 0x02, 0x80, 0xa9, 0xbc, 0xbc, - 0xcc, 0xca, 0xba, 0xcb, 0xca, 0xaa, 0xaa, 0x8a, 0x10, 0x43, 0x54, 0x34, 0x35, 0x33, 0x24, 0x22, - 0x00, 0x98, 0xaa, 0xbc, 0xcc, 0xbb, 0xcb, 0xac, 0xbb, 0xac, 0xba, 0x9a, 0x19, 0x41, 0x44, 0x44, - 0x34, 0x34, 0x33, 0x22, 0x11, 0x88, 0xba, 0xbc, 0xcc, 0xbb, 0xbc, 0xcb, 0xbb, 0xbc, 0xbb, 0xaa, - 0x89, 0x21, 0x54, 0x44, 0x44, 0x33, 0x34, 0x33, 0x12, 0x80, 0xa9, 0xca, 0xcb, 0xac, 0xbc, 0xbb, - 0xac, 0xcb, 0xbb, 0xab, 0x9a, 0x00, 0x52, 0x44, 0x35, 0x44, 0x33, 0x33, 0x23, 0x00, 0x98, 0xba, - 0xbc, 0xbd, 0xbc, 0xcb, 0xab, 0xbc, 0xcb, 0xab, 0x9a, 0x88, 0x31, 0x54, 0x35, 0x44, 0x43, 0x33, - 0x22, 0x02, 0x80, 0xa9, 0xcb, 0xbc, 0xbc, 0xac, 0xcb, 0xba, 0xac, 0xbb, 0xaa, 0x89, 0x20, 0x44, - 0x45, 0x43, 0x34, 0x34, 0x32, 0x11, 0x00, 0x98, 0xba, 0xcc, 0xcb, 0xcb, 0xba, 0xcb, 0xbb, 0xac, - 0xab, 0x8a, 0x08, 0x41, 0x35, 0x45, 0x34, 0x43, 0x33, 0x22, 0x01, 0x88, 0xaa, 0xdb, 0xbc, 0xbc, - 0xba, 0xbc, 0xcb, 0xbb, 0xab, 0x9b, 0x89, 0x21, 0x55, 0x63, 0x43, 0x34, 0x33, 0x22, 0x12, 0x80, - 0x99, 0xcb, 0xcc, 0xbb, 0xbb, 0xbd, 0xcb, 0xbb, 0xab, 0xbb, 0x99, 0x18, 0x52, 0x45, 0x44, 0x34, - 0x24, 0x23, 0x12, 0x00, 0x98, 0xb9, 0xcc, 0xbb, 0xbc, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0x9b, 0x89, - 0x30, 0x65, 0x44, 0x34, 0x34, 0x33, 0x23, 0x11, 0x00, 0xaa, 0xbc, 0xbd, 0xcb, 0xbb, 0xbc, 0xbc, - 0xcb, 0xba, 0xa9, 0x99, 0x18, 0x52, 0x35, 0x36, 0x34, 0x43, 0x22, 0x11, 0x01, 0x98, 0xca, 0xbb, - 0xbc, 0xbc, 0xdb, 0xba, 0xac, 0xab, 0xab, 0x99, 0x09, 0x41, 0x54, 0x44, 0x34, 0x34, 0x22, 0x22, - 0x01, 0x90, 0xb9, 0xbc, 0xbc, 0xbc, 0xbb, 0xbd, 0xcb, 0xab, 0xaa, 0x9b, 0x89, 0x20, 0x54, 0x54, - 0x34, 0x34, 0x33, 0x32, 0x11, 0x91, 0xa9, 0xbc, 0xad, 0xac, 0xbb, 0xbc, 0xcb, 0xbb, 0xbb, 0xba, - 0x9a, 0x00, 0x53, 0x46, 0x44, 0x24, 0x33, 0x23, 0x22, 0x00, 0x98, 0xcb, 0xcb, 0xac, 0xbb, 0xbc, - 0xad, 0xab, 0xbb, 0xba, 0xaa, 0x89, 0x10, 0x56, 0x54, 0x33, 0x34, 0x33, 0x23, 0x12, 0x88, 0xca, - 0xbb, 0xbd, 0xca, 0xcb, 0xbb, 0xbc, 0xbb, 0xbb, 0xaa, 0x9a, 0x09, 0x54, 0x46, 0x43, 0x34, 0x42, - 0x22, 0x11, 0x81, 0x99, 0xbb, 0xbc, 0xcb, 0xbc, 0xcb, 0xbb, 0xcb, 0xbb, 0xaa, 0xaa, 0x99, 0x42, - 0x56, 0x43, 0x34, 0x24, 0x33, 0x22, 0x01, 0x98, 0xca, 0xbb, 0xdb, 0xcb, 0xcb, 0xba, 0xac, 0xbb, - 0xaa, 0xba, 0x99, 0x20, 0x46, 0x45, 0x43, 0x33, 0x34, 0x22, 0x02, 0x80, 0xaa, 0xcb, 0xcb, 0xbc, - 0xbb, 0xcc, 0xba, 0xbb, 0xbb, 0xbb, 0xab, 0x18, 0x73, 0x45, 0x34, 0x34, 0x43, 0x22, 0x12, 0x81, - 0x99, 0xba, 0xbc, 0xbc, 0xbc, 0xdb, 0xba, 0xbb, 0xbb, 0xac, 0xab, 0x89, 0x31, 0x46, 0x45, 0x43, - 0x33, 0x43, 0x22, 0x81, 0x90, 0xa9, 0xcb, 0xbc, 0xbb, 0xbd, 0xcb, 0xba, 0xbb, 0xbb, 0xac, 0x9a, - 0x19, 0x44, 0x36, 0x35, 0x34, 0x43, 0x22, 0x01, 0x00, 0xa9, 0xba, 0xbc, 0xdb, 0xbb, 0xbc, 0xbc, - 0xab, 0xac, 0xba, 0xaa, 0x89, 0x52, 0x54, 0x53, 0x43, 0x43, 0x22, 0x12, 0x00, 0x98, 0xb9, 0xcb, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xbb, 0xbb, 0x9a, 0x30, 0x56, 0x53, 0x34, 0x34, 0x24, 0x12, - 0x01, 0x80, 0x99, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xba, 0xcb, 0xba, 0xcb, 0x9a, 0x18, 0x52, 0x44, - 0x44, 0x34, 0x33, 0x23, 0x22, 0x00, 0x99, 0xcb, 0xcb, 0xcb, 0xbc, 0xbb, 0xbc, 0xbb, 0xbb, 0xad, - 0xab, 0x09, 0x31, 0x54, 0x45, 0x34, 0x24, 0x23, 0x22, 0x01, 0x98, 0xaa, 0xcb, 0xcb, 0xbc, 0xac, - 0xbb, 0xac, 0xca, 0xba, 0xbb, 0x89, 0x18, 0x62, 0x54, 0x34, 0x34, 0x33, 0x33, 0x12, 0x80, 0xa9, - 0xcb, 0xdb, 0xcb, 0xcb, 0xab, 0xbb, 0xcb, 0xdb, 0xaa, 0x89, 0x88, 0x30, 0x55, 0x44, 0x24, 0x33, - 0x33, 0x23, 0x00, 0x89, 0xba, 0xcc, 0xdb, 0xbb, 0xcb, 0xba, 0xcb, 0xcb, 0xba, 0x9a, 0x99, 0x18, - 0x54, 0x45, 0x34, 0x43, 0x33, 0x22, 0x01, 0x80, 0xaa, 0xcb, 0xdb, 0xcb, 0xbb, 0xab, 0xbc, 0xcb, - 0xbb, 0xaa, 0x9a, 0x89, 0x63, 0x45, 0x44, 0x43, 0x32, 0x23, 0x11, 0x81, 0x99, 0xba, 0xcc, 0xbc, - 0xbb, 0xbb, 0xbc, 0xbc, 0xcb, 0xaa, 0xaa, 0x9a, 0x21, 0x56, 0x34, 0x35, 0x43, 0x23, 0x12, 0x01, - 0x98, 0xa9, 0xcb, 0xcc, 0xbb, 0xab, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xaa, 0x08, 0x73, 0x63, 0x43, - 0x24, 0x33, 0x22, 0x02, 0x80, 0x98, 0xca, 0xcc, 0xba, 0xba, 0xca, 0xcb, 0xbb, 0xcb, 0xbb, 0xac, - 0x89, 0x30, 0x64, 0x44, 0x43, 0x33, 0x23, 0x22, 0x00, 0x80, 0xba, 0xbd, 0xbc, 0xbb, 0xcb, 0xcb, - 0xcb, 0xca, 0xba, 0xbb, 0xaa, 0x08, 0x44, 0x36, 0x35, 0x34, 0x33, 0x23, 0x11, 0x80, 0xa8, 0xbc, - 0xbc, 0xcb, 0xba, 0xbc, 0xac, 0xcb, 0xbb, 0xac, 0xab, 0x89, 0x31, 0x46, 0x35, 0x35, 0x33, 0x22, - 0x12, 0x01, 0x98, 0xdb, 0xbb, 0xbb, 0xcb, 0xbc, 0xcb, 0xca, 0xbb, 0xcb, 0xab, 0x9a, 0x28, 0x54, - 0x54, 0x34, 0x43, 0x22, 0x22, 0x11, 0x88, 0xba, 0xcb, 0xbb, 0xcb, 0xac, 0xcb, 0xba, 0xbc, 0xdb, - 0xba, 0x9a, 0x88, 0x41, 0x45, 0x35, 0x34, 0x32, 0x23, 0x22, 0x80, 0xa9, 0xac, 0xcb, 0xbb, 0xbc, - 0xcb, 0xba, 0xbc, 0xbc, 0xac, 0xab, 0x9a, 0x28, 0x64, 0x54, 0x33, 0x33, 0x43, 0x22, 0x01, 0xa8, - 0xaa, 0xbb, 0xbd, 0xbb, 0xbc, 0xcb, 0xbb, 0xcd, 0xab, 0xbb, 0xab, 0x0a, 0x52, 0x46, 0x34, 0x33, - 0x34, 0x32, 0x02, 0x90, 0xa9, 0xba, 0xbd, 0xbb, 0xbc, 0xca, 0xca, 0xcb, 0xac, 0xbb, 0xbb, 0xaa, - 0x20, 0x47, 0x34, 0x34, 0x34, 0x33, 0x12, 0x01, 0x99, 0xba, 0xcb, 0xac, 0xbb, 0xbb, 0xcc, 0xdb, - 0xbb, 0xcb, 0xbb, 0xab, 0x19, 0x64, 0x34, 0x44, 0x33, 0x24, 0x13, 0x11, 0x88, 0xa9, 0xba, 0xbc, - 0xcb, 0xba, 0xcb, 0xbc, 0xbc, 0xcb, 0xcb, 0xab, 0x0a, 0x41, 0x45, 0x43, 0x34, 0x24, 0x23, 0x11, - 0x80, 0x98, 0xba, 0xbc, 0xcb, 0xaa, 0xbb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbc, 0x9a, 0x20, 0x44, 0x44, - 0x34, 0x25, 0x23, 0x12, 0x81, 0x80, 0xa9, 0xcb, 0xbb, 0xac, 0xba, 0xcc, 0xbb, 0xcb, 0xcb, 0xbc, - 0xaa, 0x08, 0x32, 0x46, 0x44, 0x43, 0x32, 0x22, 0x02, 0x80, 0xa8, 0xcb, 0xbb, 0xbb, 0xbc, 0xdb, - 0xbb, 0xac, 0xbc, 0xcc, 0xaa, 0x89, 0x20, 0x63, 0x34, 0x45, 0x32, 0x22, 0x12, 0x01, 0x88, 0xba, - 0xbc, 0xbb, 0xca, 0xdb, 0xba, 0xab, 0xcc, 0xbc, 0xac, 0x99, 0x08, 0x42, 0x44, 0x35, 0x34, 0x32, - 0x22, 0x11, 0x88, 0xb9, 0xcb, 0xbb, 0xbb, 0xbd, 0xac, 0xab, 0xcc, 0xdb, 0xab, 0xab, 0x09, 0x30, - 0x64, 0x44, 0x43, 0x23, 0x23, 0x12, 0x81, 0xa8, 0xbb, 0xac, 0xcb, 0xcb, 0xbb, 0xbb, 0xcc, 0xbc, - 0xbc, 0xbb, 0x99, 0x18, 0x63, 0x45, 0x43, 0x43, 0x22, 0x12, 0x11, 0x98, 0xba, 0xba, 0xdb, 0xbb, - 0xac, 0xab, 0xcb, 0xcc, 0xcb, 0xba, 0x9a, 0x89, 0x41, 0x36, 0x45, 0x33, 0x32, 0x33, 0x22, 0x88, - 0xaa, 0xbb, 0xcc, 0xcb, 0xbb, 0xba, 0xcb, 0xcc, 0xcb, 0xbb, 0xab, 0x9a, 0x38, 0x65, 0x34, 0x25, - 0x33, 0x33, 0x22, 0x81, 0x99, 0xba, 0xcb, 0xbc, 0xac, 0xab, 0xba, 0xdc, 0xcb, 0xbb, 0xac, 0xaa, - 0x09, 0x53, 0x45, 0x24, 0x24, 0x33, 0x23, 0x01, 0x88, 0xa9, 0xba, 0xbd, 0xac, 0xaa, 0xab, 0xcc, - 0xbc, 0xcb, 0xab, 0xbb, 0x9a, 0x52, 0x54, 0x43, 0x34, 0x43, 0x32, 0x11, 0x08, 0x89, 0xaa, 0xcc, - 0xba, 0xab, 0xba, 0xdb, 0xbc, 0xcb, 0xbb, 0xbc, 0x9b, 0x20, 0x45, 0x44, 0x43, 0x34, 0x32, 0x12, - 0x00, 0x90, 0xa9, 0xbc, 0xbc, 0xab, 0xaa, 0xbc, 0xcc, 0xbb, 0xdb, 0xbb, 0xab, 0x18, 0x62, 0x53, - 0x34, 0x35, 0x32, 0x22, 0x11, 0x80, 0x99, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbe, 0xbb, 0xcc, 0xcb, - 0xbb, 0x89, 0x21, 0x45, 0x63, 0x43, 0x33, 0x32, 0x21, 0x10, 0x98, 0xca, 0xcb, 0xab, 0xaa, 0xca, - 0xcb, 0xcb, 0xcb, 0xbc, 0xac, 0x9a, 0x18, 0x32, 0x46, 0x44, 0x33, 0x23, 0x23, 0x12, 0x80, 0xb9, - 0xcc, 0xaa, 0xaa, 0xbb, 0xcc, 0xcb, 0xcb, 0xbc, 0xbc, 0x9b, 0x09, 0x20, 0x45, 0x54, 0x33, 0x33, - 0x33, 0x22, 0x02, 0xa9, 0xcc, 0xba, 0xaa, 0xca, 0xbb, 0xcb, 0xbc, 0xcd, 0xcb, 0xaa, 0x98, 0x00, - 0x52, 0x54, 0x33, 0x34, 0x32, 0x32, 0x11, 0x90, 0xca, 0xbb, 0xba, 0xcb, 0xac, 0xba, 0xdb, 0xcc, - 0xac, 0xab, 0x9a, 0x89, 0x41, 0x45, 0x34, 0x34, 0x32, 0x33, 0x22, 0x80, 0xba, 0xac, 0xbb, 0xbb, - 0xad, 0xba, 0xdb, 0xcc, 0xbc, 0xac, 0x9a, 0x9a, 0x28, 0x44, 0x35, 0x34, 0x43, 0x32, 0x23, 0x01, - 0xa9, 0xaa, 0xbb, 0xdb, 0xba, 0xba, 0xcb, 0xcd, 0xcc, 0xba, 0xab, 0xab, 0x09, 0x52, 0x54, 0x33, - 0x34, 0x34, 0x32, 0x02, 0x88, 0xa9, 0xaa, 0xbb, 0xbc, 0xaa, 0xda, 0xcc, 0xcc, 0xbb, 0xbb, 0xac, - 0x8a, 0x30, 0x45, 0x34, 0x34, 0x34, 0x24, 0x02, 0x81, 0x98, 0x99, 0xaa, 0xbb, 0xaa, 0xba, 0xce, - 0xcc, 0xcb, 0xbb, 0xbb, 0xab, 0x18, 0x54, 0x34, 0x34, 0x44, 0x33, 0x22, 0x01, 0x88, 0xa8, 0xb9, - 0xac, 0x9a, 0xb9, 0xdc, 0xbc, 0xbc, 0xbc, 0xac, 0xbb, 0x09, 0x41, 0x34, 0x44, 0x53, 0x33, 0x33, - 0x12, 0x00, 0x98, 0xb9, 0xac, 0x9a, 0xaa, 0xcc, 0xcc, 0xbc, 0xcb, 0xbc, 0xbb, 0x8a, 0x10, 0x53, - 0x53, 0x34, 0x35, 0x32, 0x12, 0x01, 0x80, 0xa9, 0xba, 0xaa, 0xa9, 0xcc, 0xcc, 0xbc, 0xdb, 0xcb, - 0xbb, 0xaa, 0x00, 0x31, 0x54, 0x44, 0x43, 0x33, 0x32, 0x21, 0x00, 0x99, 0xbb, 0xaa, 0xa9, 0xdb, - 0xcc, 0xbc, 0xcb, 0xcc, 0xcb, 0x9a, 0x09, 0x10, 0x41, 0x44, 0x44, 0x23, 0x23, 0x23, 0x01, 0x90, - 0xaa, 0xaa, 0x99, 0xbb, 0xce, 0xbb, 0xbd, 0xbd, 0xad, 0xab, 0x99, 0x08, 0x31, 0x54, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x80, 0x99, 0x9a, 0x98, 0xba, 0xcc, 0xcb, 0xcb, 0xcd, 0xcb, 0xab, 0x9a, 0x89, - 0x18, 0x44, 0x44, 0x34, 0x33, 0x43, 0x12, 0x81, 0x98, 0x99, 0x98, 0xaa, 0xcc, 0xba, 0xcc, 0xcc, - 0xdb, 0xba, 0xaa, 0x99, 0x09, 0x42, 0x35, 0x35, 0x34, 0x33, 0x32, 0x01, 0x90, 0x99, 0x98, 0xba, - 0xbc, 0xbc, 0xdb, 0xcc, 0xcc, 0xbb, 0xab, 0xba, 0x89, 0x31, 0x55, 0x34, 0x44, 0x32, 0x23, 0x12, - 0x80, 0x98, 0x98, 0xa9, 0xcb, 0xbb, 0xdb, 0xcc, 0xcc, 0xac, 0xba, 0xaa, 0x9a, 0x10, 0x44, 0x44, - 0x43, 0x34, 0x32, 0x12, 0x00, 0x88, 0x98, 0xa9, 0xbb, 0xac, 0xbb, 0xdd, 0xbc, 0xcc, 0xba, 0xba, - 0xaa, 0x09, 0x52, 0x34, 0x45, 0x33, 0x34, 0x22, 0x10, 0x88, 0x90, 0x99, 0xbb, 0xbb, 0xba, 0xdd, - 0xcc, 0xcb, 0xcb, 0xba, 0xba, 0x89, 0x30, 0x54, 0x34, 0x35, 0x34, 0x22, 0x01, 0x81, 0x80, 0x99, - 0xba, 0xab, 0xaa, 0xcc, 0xcd, 0xcb, 0xac, 0xbb, 0xac, 0x9a, 0x10, 0x42, 0x54, 0x43, 0x34, 0x23, - 0x12, 0x00, 0x00, 0x99, 0xaa, 0xbb, 0xaa, 0xdb, 0xcd, 0xcb, 0xbc, 0xcb, 0xbb, 0x9b, 0x09, 0x31, - 0x55, 0x34, 0x35, 0x33, 0x12, 0x02, 0x01, 0x98, 0xaa, 0xab, 0xab, 0xda, 0xcc, 0xbc, 0xbc, 0xcc, - 0xbb, 0xab, 0x89, 0x10, 0x53, 0x45, 0x44, 0x32, 0x12, 0x12, 0x01, 0x80, 0xaa, 0x9a, 0xaa, 0xb9, - 0xcd, 0xbc, 0xbc, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x31, 0x46, 0x44, 0x23, 0x33, 0x22, 0x11, 0x81, - 0xa8, 0xba, 0x99, 0xba, 0xcd, 0xbc, 0xcc, 0xcb, 0xbc, 0xbb, 0xaa, 0x89, 0x28, 0x64, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x01, 0x98, 0x9a, 0x9a, 0xb9, 0xdb, 0xdb, 0xbb, 0xcd, 0xbc, 0xbb, 0xbb, 0x9a, - 0x09, 0x62, 0x45, 0x43, 0x23, 0x33, 0x23, 0x02, 0x90, 0xa9, 0x99, 0xb9, 0xdb, 0xcb, 0xbc, 0xbd, - 0xbd, 0xbc, 0xba, 0xaa, 0x8a, 0x31, 0x56, 0x43, 0x33, 0x43, 0x23, 0x12, 0x80, 0x89, 0x99, 0xa9, - 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xab, 0x28, 0x55, 0x44, 0x33, 0x34, 0x42, 0x21, - 0x00, 0x88, 0x89, 0x99, 0xaa, 0xbb, 0xbc, 0xcd, 0xcc, 0xbb, 0xcb, 0xbb, 0xab, 0x09, 0x53, 0x35, - 0x35, 0x33, 0x34, 0x23, 0x11, 0x08, 0x98, 0x99, 0xaa, 0xbb, 0xdb, 0xdc, 0xbc, 0xad, 0xbb, 0xcb, - 0xbb, 0x99, 0x31, 0x45, 0x34, 0x34, 0x34, 0x23, 0x02, 0x01, 0x88, 0x99, 0xaa, 0xaa, 0xba, 0xcd, - 0xcd, 0xcb, 0xbb, 0xbc, 0xcb, 0x9a, 0x18, 0x42, 0x35, 0x34, 0x35, 0x32, 0x12, 0x11, 0x08, 0x98, - 0x9a, 0x9a, 0xa9, 0xcc, 0xcd, 0xac, 0xcb, 0xbb, 0xcc, 0x9a, 0x09, 0x21, 0x34, 0x45, 0x24, 0x33, - 0x23, 0x21, 0x00, 0x98, 0x99, 0x9a, 0xa8, 0xda, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbb, 0x8a, 0x10, - 0x53, 0x44, 0x44, 0x32, 0x23, 0x22, 0x01, 0x80, 0x99, 0x99, 0x98, 0xc9, 0xdc, 0xcb, 0xcb, 0xcb, - 0xbc, 0xac, 0x9a, 0x88, 0x31, 0x44, 0x35, 0x34, 0x23, 0x23, 0x12, 0x00, 0x99, 0x89, 0x98, 0xb9, - 0xcd, 0xbc, 0xbd, 0xdb, 0xcb, 0xac, 0x9a, 0x89, 0x28, 0x52, 0x44, 0x43, 0x23, 0x33, 0x12, 0x01, - 0x98, 0x98, 0x88, 0xa8, 0xdb, 0xcc, 0xbb, 0xcd, 0xdb, 0xbb, 0xab, 0x9a, 0x19, 0x41, 0x45, 0x34, - 0x34, 0x32, 0x13, 0x02, 0x80, 0x98, 0x88, 0x98, 0xcb, 0xbc, 0xcc, 0xcb, 0xbd, 0xbc, 0xcb, 0xa9, - 0x89, 0x21, 0x63, 0x34, 0x34, 0x24, 0x23, 0x11, 0x80, 0x88, 0x88, 0x98, 0xaa, 0xbc, 0xbc, 0xcc, - 0xbd, 0xcc, 0xba, 0xab, 0xa9, 0x18, 0x52, 0x44, 0x34, 0x43, 0x23, 0x22, 0x00, 0x88, 0x08, 0x98, - 0xb9, 0xcb, 0xbb, 0xcd, 0xcc, 0xcc, 0xba, 0xab, 0xab, 0x89, 0x32, 0x46, 0x53, 0x33, 0x24, 0x13, - 0x01, 0x80, 0x08, 0x98, 0xa9, 0xbb, 0xbb, 0xdc, 0xcc, 0xcc, 0xbb, 0xbc, 0xba, 0x8a, 0x28, 0x63, - 0x34, 0x35, 0x43, 0x22, 0x01, 0x00, 0x00, 0x88, 0x99, 0xaa, 0xab, 0xcb, 0xce, 0xdb, 0xcb, 0xbb, - 0xac, 0x9a, 0x09, 0x32, 0x45, 0x44, 0x43, 0x22, 0x12, 0x00, 0x80, 0x80, 0x99, 0xaa, 0xa9, 0xb9, - 0xdd, 0xbc, 0xbd, 0xcb, 0xac, 0x9b, 0x8a, 0x10, 0x44, 0x44, 0x43, 0x33, 0x22, 0x11, 0x00, 0x00, - 0x99, 0x9a, 0xaa, 0xb9, 0xdd, 0xdb, 0xdb, 0xbb, 0xbc, 0xac, 0x9a, 0x18, 0x41, 0x44, 0x44, 0x32, - 0x22, 0x12, 0x10, 0x80, 0x88, 0x9a, 0x9a, 0xa9, 0xdb, 0xbd, 0xcc, 0xbc, 0xcc, 0xba, 0xaa, 0x88, - 0x20, 0x54, 0x44, 0x33, 0x33, 0x22, 0x12, 0x10, 0x98, 0x9a, 0x99, 0xa9, 0xcb, 0xdc, 0xbc, 0xcd, - 0xbb, 0xbc, 0xbb, 0x9a, 0x00, 0x63, 0x54, 0x33, 0x43, 0x21, 0x21, 0x10, 0x80, 0x89, 0x89, 0x89, - 0x9a, 0xdb, 0xdc, 0xcb, 0xcc, 0xbb, 0xcb, 0x9a, 0x89, 0x31, 0x45, 0x35, 0x33, 0x23, 0x23, 0x12, - 0x00, 0x88, 0x99, 0x98, 0x99, 0xdb, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xab, 0x9b, 0x28, 0x73, 0x44, - 0x32, 0x33, 0x32, 0x22, 0x01, 0x08, 0x98, 0x88, 0x99, 0xbb, 0xcd, 0xcc, 0xdc, 0xcb, 0xbb, 0xbb, - 0xbb, 0x09, 0x62, 0x44, 0x43, 0x33, 0x32, 0x22, 0x02, 0x00, 0x88, 0x89, 0x98, 0xab, 0xbc, 0xdd, - 0xcc, 0xbc, 0xac, 0xcb, 0xaa, 0x99, 0x21, 0x45, 0x43, 0x33, 0x34, 0x22, 0x11, 0x00, 0x88, 0x90, - 0x98, 0x9a, 0xba, 0xdc, 0xdc, 0xbc, 0xbc, 0xcb, 0xab, 0x9b, 0x18, 0x44, 0x34, 0x25, 0x33, 0x33, - 0x22, 0x01, 0x08, 0x88, 0x98, 0xaa, 0xa9, 0xcc, 0xdd, 0xbc, 0xcc, 0xca, 0xba, 0xab, 0x09, 0x32, - 0x45, 0x53, 0x32, 0x33, 0x23, 0x11, 0x00, 0x00, 0x98, 0x99, 0x9a, 0xca, 0xce, 0xbc, 0xbd, 0xdb, - 0xbb, 0xac, 0x89, 0x20, 0x43, 0x44, 0x43, 0x33, 0x23, 0x21, 0x11, 0x80, 0x88, 0x99, 0x9a, 0xa9, - 0xdd, 0xcc, 0xbc, 0xbc, 0xcc, 0xab, 0x9a, 0x18, 0x42, 0x53, 0x53, 0x32, 0x23, 0x22, 0x11, 0x01, - 0x88, 0x98, 0x89, 0x90, 0xcc, 0xcd, 0xcb, 0xbc, 0xbd, 0xac, 0x9b, 0x09, 0x21, 0x53, 0x34, 0x44, - 0x22, 0x22, 0x12, 0x01, 0x00, 0x88, 0x08, 0x88, 0xca, 0xbd, 0xcc, 0xbc, 0xcd, 0xbb, 0xab, 0x9a, - 0x10, 0x43, 0x45, 0x33, 0x34, 0x23, 0x22, 0x12, 0x81, 0x88, 0x08, 0x88, 0xc9, 0xcc, 0xdb, 0xdb, - 0xcc, 0xcb, 0xba, 0x9a, 0x08, 0x32, 0x54, 0x43, 0x43, 0x22, 0x22, 0x12, 0x81, 0x88, 0x80, 0x80, - 0xa9, 0xcb, 0xcc, 0xcc, 0xcc, 0xbc, 0xcb, 0x9a, 0x89, 0x20, 0x53, 0x53, 0x43, 0x32, 0x22, 0x23, - 0x01, 0x88, 0x00, 0x80, 0xa8, 0xba, 0xbd, 0xcd, 0xbd, 0xcd, 0xba, 0xbb, 0x9a, 0x08, 0x43, 0x44, - 0x34, 0x33, 0x24, 0x23, 0x01, 0x00, 0x80, 0x00, 0x98, 0xb9, 0xcb, 0xdc, 0xdc, 0xdb, 0xcb, 0xba, - 0xaa, 0x88, 0x20, 0x44, 0x34, 0x43, 0x33, 0x24, 0x11, 0x01, 0x00, 0x00, 0x88, 0xa8, 0xaa, 0xcc, - 0xcd, 0xcc, 0xbc, 0xac, 0xab, 0x99, 0x18, 0x33, 0x45, 0x43, 0x33, 0x24, 0x12, 0x11, 0x00, 0x10, - 0x08, 0x99, 0xa9, 0xca, 0xcd, 0xcd, 0xcc, 0xba, 0xbb, 0x9b, 0x09, 0x32, 0x35, 0x35, 0x44, 0x32, - 0x22, 0x01, 0x01, 0x01, 0x08, 0x89, 0x89, 0xaa, 0xdc, 0xcd, 0xbd, 0xbc, 0xbb, 0xab, 0x8a, 0x21, - 0x34, 0x45, 0x43, 0x43, 0x12, 0x11, 0x01, 0x00, 0x80, 0x88, 0x88, 0x98, 0xb9, 0xcf, 0xcd, 0xbb, - 0xbd, 0xba, 0x99, 0x18, 0x31, 0x54, 0x43, 0x24, 0x23, 0x12, 0x12, 0x10, 0x80, 0x88, 0x88, 0x88, - 0xa8, 0xed, 0xcc, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x11, 0x43, 0x54, 0x33, 0x24, 0x22, 0x12, 0x11, - 0x01, 0x81, 0x80, 0x00, 0x90, 0xdc, 0xcd, 0xcc, 0xdb, 0xab, 0xab, 0x89, 0x00, 0x41, 0x53, 0x34, - 0x24, 0x32, 0x21, 0x11, 0x11, 0x80, 0x88, 0x08, 0x98, 0xda, 0xdc, 0xcc, 0xcc, 0xbb, 0xbb, 0x9a, - 0x89, 0x21, 0x45, 0x34, 0x34, 0x33, 0x22, 0x12, 0x12, 0x80, 0x88, 0x08, 0x98, 0xb9, 0xce, 0xdd, - 0xdb, 0xcb, 0xab, 0x9a, 0x8a, 0x18, 0x43, 0x45, 0x33, 0x43, 0x22, 0x12, 0x12, 0x81, 0x80, 0x80, - 0x80, 0x98, 0xdb, 0xdd, 0xcc, 0xbc, 0xac, 0xaa, 0x9a, 0x09, 0x31, 0x45, 0x43, 0x24, 0x22, 0x32, - 0x21, 0x00, 0x00, 0x08, 0x88, 0x90, 0xa8, 0xdd, 0xcd, 0xbd, 0xcb, 0xaa, 0xab, 0x89, 0x20, 0x63, - 0x34, 0x24, 0x33, 0x32, 0x23, 0x11, 0x00, 0x00, 0x80, 0x98, 0xa8, 0xfb, 0xce, 0xcc, 0xbb, 0xac, - 0xab, 0x9a, 0x08, 0x43, 0x44, 0x34, 0x42, 0x32, 0x22, 0x11, 0x01, 0x80, 0x80, 0x88, 0x88, 0xc9, - 0xde, 0xcc, 0xbb, 0xbc, 0xbb, 0xab, 0x89, 0x41, 0x44, 0x34, 0x43, 0x33, 0x32, 0x12, 0x11, 0x80, - 0x90, 0x98, 0x88, 0xb9, 0xdf, 0xcc, 0xbc, 0xac, 0xbb, 0xbb, 0x99, 0x20, 0x35, 0x35, 0x34, 0x43, - 0x23, 0x12, 0x11, 0x00, 0x90, 0x88, 0x08, 0x90, 0xdc, 0xcd, 0xbc, 0xbc, 0xac, 0xcb, 0x99, 0x08, - 0x31, 0x44, 0x43, 0x43, 0x23, 0x13, 0x12, 0x11, 0x88, 0x88, 0x00, 0x81, 0xc9, 0xce, 0xbd, 0xbd, - 0xbb, 0xad, 0x9b, 0x89, 0x20, 0x53, 0x43, 0x34, 0x43, 0x22, 0x21, 0x11, 0x80, 0x88, 0x08, 0x01, - 0x98, 0xec, 0xcc, 0xbc, 0xbc, 0xad, 0xab, 0x99, 0x00, 0x42, 0x43, 0x44, 0x23, 0x23, 0x23, 0x12, - 0x00, 0x88, 0x80, 0x10, 0x90, 0xfb, 0xbd, 0xbd, 0xcc, 0xbb, 0xbc, 0xa9, 0x08, 0x31, 0x63, 0x53, - 0x32, 0x23, 0x33, 0x22, 0x01, 0x90, 0x88, 0x10, 0x01, 0xd9, 0xcd, 0xbc, 0xcd, 0xcb, 0xac, 0xaa, - 0x89, 0x10, 0x43, 0x34, 0x34, 0x43, 0x23, 0x22, 0x02, 0x80, 0x08, 0x00, 0x01, 0xb9, 0xcd, 0xcd, - 0xdb, 0xcb, 0xbc, 0xaa, 0x9a, 0x18, 0x41, 0x34, 0x34, 0x34, 0x33, 0x23, 0x13, 0x80, 0x08, 0x00, - 0x01, 0xa0, 0xcc, 0xcd, 0xbc, 0xbe, 0xbc, 0xbb, 0xab, 0x89, 0x31, 0x54, 0x43, 0x43, 0x33, 0x33, - 0x22, 0x80, 0x80, 0x08, 0x00, 0x80, 0xcb, 0xcc, 0xdc, 0xbd, 0xbc, 0xac, 0xab, 0x8a, 0x10, 0x43, - 0x34, 0x35, 0x43, 0x23, 0x13, 0x11, 0x08, 0x08, 0x00, 0x90, 0xb9, 0xcb, 0xdd, 0xcd, 0xcb, 0xbb, - 0xac, 0x9a, 0x08, 0x32, 0x44, 0x34, 0x43, 0x24, 0x22, 0x11, 0x80, 0x80, 0x00, 0x90, 0x99, 0xa9, - 0xdc, 0xcd, 0xbc, 0xbc, 0xac, 0x9b, 0x09, 0x21, 0x43, 0x44, 0x43, 0x24, 0x23, 0x11, 0x80, 0x00, - 0x00, 0x98, 0x98, 0x98, 0xfb, 0xdb, 0xbc, 0xbd, 0xbc, 0xab, 0x99, 0x10, 0x42, 0x53, 0x43, 0x34, - 0x23, 0x22, 0x00, 0x00, 0x00, 0x98, 0x88, 0x98, 0xda, 0xdc, 0xeb, 0xdb, 0xbb, 0xac, 0x9a, 0x08, - 0x21, 0x34, 0x44, 0x43, 0x24, 0x12, 0x01, 0x10, 0x00, 0x88, 0x88, 0x98, 0xaa, 0xcd, 0xcc, 0xcc, - 0xcb, 0xbb, 0xab, 0x09, 0x20, 0x43, 0x44, 0x44, 0x33, 0x23, 0x11, 0x01, 0x00, 0x88, 0x08, 0x88, - 0x99, 0xdb, 0xcd, 0xcc, 0xbd, 0xcb, 0xab, 0x89, 0x18, 0x21, 0x34, 0x36, 0x34, 0x33, 0x12, 0x12, - 0x00, 0x88, 0x88, 0x80, 0x99, 0xba, 0xdd, 0xdc, 0xcc, 0xac, 0xbb, 0x9a, 0x88, 0x11, 0x42, 0x45, - 0x43, 0x23, 0x23, 0x12, 0x00, 0x80, 0x88, 0x88, 0x88, 0x99, 0xca, 0xed, 0xcc, 0xcc, 0xab, 0x9b, - 0x99, 0x08, 0x21, 0x45, 0x34, 0x33, 0x24, 0x12, 0x01, 0x00, 0x88, 0x88, 0x08, 0x98, 0x98, 0xec, - 0xcd, 0xcc, 0xbc, 0xaa, 0x99, 0x89, 0x10, 0x53, 0x34, 0x34, 0x33, 0x23, 0x12, 0x11, 0x00, 0x18, - 0x08, 0x00, 0x81, 0xda, 0xde, 0xcd, 0xbc, 0xab, 0xaa, 0xaa, 0x08, 0x42, 0x35, 0x34, 0x34, 0x32, - 0x12, 0x11, 0x10, 0x00, 0x10, 0x10, 0x10, 0xa8, 0xfd, 0xcd, 0xbc, 0xbb, 0xbb, 0xab, 0x99, 0x41, - 0x44, 0x53, 0x33, 0x43, 0x22, 0x01, 0x01, 0x01, 0x08, 0x01, 0x11, 0x11, 0xe9, 0xde, 0xbc, 0xcb, - 0xba, 0xab, 0x9a, 0x10, 0x43, 0x35, 0x35, 0x33, 0x33, 0x21, 0x11, 0x00, 0x00, 0x08, 0x18, 0x22, - 0xc0, 0xef, 0xcc, 0xbb, 0xcb, 0xba, 0x9a, 0x09, 0x31, 0x44, 0x44, 0x33, 0x24, 0x21, 0x11, 0x01, - 0x80, 0x88, 0x18, 0x22, 0x02, 0xed, 0xbd, 0xbd, 0xcb, 0xbb, 0xba, 0x89, 0x10, 0x43, 0x45, 0x33, - 0x24, 0x22, 0x11, 0x11, 0x00, 0x88, 0x08, 0x53, 0x12, 0xc9, 0xdd, 0xdb, 0xcb, 0xbb, 0xbb, 0x9a, - 0x88, 0x22, 0x55, 0x43, 0x32, 0x32, 0x22, 0x12, 0x02, 0x80, 0x20, 0x63, 0x32, 0x90, 0xdc, 0xcc, - 0xcc, 0xbb, 0xbc, 0xaa, 0x99, 0x18, 0x43, 0x35, 0x24, 0x33, 0x22, 0x32, 0x11, 0x80, 0x10, 0x44, - 0x33, 0x01, 0xea, 0xdb, 0xcc, 0xbc, 0xbb, 0xbb, 0xab, 0x0a, 0x41, 0x44, 0x34, 0x33, 0x33, 0x24, - 0x12, 0x00, 0x00, 0x42, 0x34, 0x12, 0xa9, 0xcd, 0xcd, 0xcb, 0xac, 0xab, 0xab, 0x8a, 0x20, 0x53, - 0x34, 0x43, 0x32, 0x33, 0x22, 0x80, 0x08, 0x42, 0x44, 0x12, 0x81, 0xca, 0xcd, 0xbd, 0xcb, 0xbb, - 0xbb, 0xab, 0x08, 0x52, 0x53, 0x32, 0x24, 0x33, 0x23, 0x01, 0x80, 0x31, 0x44, 0x33, 0x11, 0xb8, - 0xce, 0xbd, 0xcc, 0xbb, 0xac, 0xab, 0x89, 0x20, 0x34, 0x34, 0x43, 0x34, 0x32, 0x01, 0x00, 0x21, - 0x34, 0x34, 0x23, 0x81, 0xeb, 0xcc, 0xcc, 0xbb, 0xbc, 0xbb, 0x9a, 0x18, 0x43, 0x43, 0x43, 0x34, - 0x23, 0x12, 0x00, 0x30, 0x43, 0x43, 0x33, 0x12, 0xb9, 0xce, 0xbd, 0xcc, 0xcb, 0xbb, 0x9b, 0x89, - 0x21, 0x42, 0x43, 0x44, 0x23, 0x02, 0x01, 0x11, 0x42, 0x43, 0x33, 0x13, 0x90, 0xfb, 0xbc, 0xcc, - 0xbc, 0xcb, 0xab, 0x89, 0x18, 0x21, 0x43, 0x44, 0x33, 0x13, 0x11, 0x11, 0x32, 0x44, 0x34, 0x32, - 0x01, 0xb9, 0xce, 0xdb, 0xcc, 0xbb, 0xbb, 0xab, 0x88, 0x10, 0x42, 0x35, 0x25, 0x22, 0x11, 0x11, - 0x32, 0x53, 0x43, 0x33, 0x22, 0x98, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xaa, 0x99, 0x88, 0x21, 0x44, - 0x34, 0x32, 0x22, 0x21, 0x32, 0x44, 0x53, 0x33, 0x22, 0x91, 0xc9, 0xcc, 0xdc, 0xcb, 0xac, 0xaa, - 0x99, 0x89, 0x18, 0x42, 0x53, 0x32, 0x22, 0x22, 0x32, 0x53, 0x34, 0x34, 0x32, 0x11, 0x98, 0xcb, - 0xdd, 0xcc, 0xbb, 0xac, 0xa9, 0xa9, 0x08, 0x31, 0x34, 0x34, 0x33, 0x33, 0x33, 0x44, 0x53, 0x33, - 0x33, 0x22, 0x80, 0xca, 0xcd, 0xcd, 0xcb, 0xab, 0xab, 0xaa, 0x89, 0x20, 0x34, 0x25, 0x33, 0x23, - 0x43, 0x33, 0x44, 0x34, 0x32, 0x12, 0x01, 0x99, 0xfb, 0xcc, 0xbc, 0xac, 0xab, 0xab, 0x9a, 0x00, - 0x42, 0x43, 0x33, 0x24, 0x33, 0x43, 0x53, 0x33, 0x34, 0x13, 0x02, 0x80, 0xca, 0xce, 0xcc, 0xbb, - 0xbb, 0xbb, 0xab, 0x89, 0x31, 0x44, 0x43, 0x23, 0x33, 0x33, 0x45, 0x33, 0x35, 0x22, 0x12, 0x12, - 0xb8, 0xed, 0xdb, 0xbb, 0xbc, 0xbb, 0xba, 0x99, 0x10, 0x32, 0x35, 0x43, 0x32, 0x24, 0x43, 0x34, - 0x24, 0x23, 0x23, 0x22, 0x91, 0xfb, 0xcc, 0xcb, 0xcb, 0xbb, 0xab, 0xaa, 0x88, 0x21, 0x43, 0x43, - 0x33, 0x34, 0x34, 0x44, 0x43, 0x32, 0x22, 0x13, 0x82, 0xc9, 0xcd, 0xcc, 0xbb, 0xbc, 0xbb, 0xab, - 0x8a, 0x00, 0x42, 0x33, 0x35, 0x32, 0x34, 0x44, 0x24, 0x23, 0x32, 0x23, 0x02, 0xb8, 0xdd, 0xcc, - 0xcb, 0xbb, 0xbc, 0xaa, 0x8a, 0x08, 0x21, 0x43, 0x24, 0x33, 0x43, 0x44, 0x43, 0x32, 0x32, 0x23, - 0x13, 0x90, 0xdc, 0xcc, 0xdb, 0xbb, 0xbc, 0xba, 0x9a, 0x88, 0x10, 0x33, 0x35, 0x32, 0x43, 0x34, - 0x35, 0x32, 0x33, 0x34, 0x23, 0x81, 0xc9, 0xdc, 0xdb, 0xcb, 0xcb, 0xba, 0xaa, 0x8a, 0x08, 0x31, - 0x34, 0x32, 0x53, 0x53, 0x33, 0x34, 0x33, 0x34, 0x33, 0x02, 0x99, 0xcc, 0xcd, 0xcb, 0xcb, 0xbb, - 0xbb, 0xaa, 0x89, 0x21, 0x43, 0x32, 0x34, 0x35, 0x34, 0x34, 0x33, 0x34, 0x24, 0x12, 0x80, 0xc9, - 0xeb, 0xcb, 0xbc, 0xbb, 0xac, 0xab, 0x8a, 0x18, 0x22, 0x33, 0x44, 0x53, 0x43, 0x33, 0x34, 0x43, - 0x23, 0x13, 0x01, 0xa8, 0xbd, 0xcd, 0xbc, 0xbc, 0xba, 0xac, 0x99, 0x08, 0x11, 0x32, 0x33, 0x45, - 0x34, 0x33, 0x43, 0x34, 0x33, 0x33, 0x02, 0xa0, 0xdb, 0xcd, 0xdb, 0xbb, 0xbc, 0xbb, 0xaa, 0x89, - 0x11, 0x22, 0x43, 0x44, 0x43, 0x33, 0x34, 0x34, 0x33, 0x24, 0x12, 0x00, 0xa9, 0xdc, 0xcc, 0xcb, - 0xbb, 0xbc, 0xbb, 0x99, 0x08, 0x11, 0x22, 0x54, 0x43, 0x33, 0x34, 0x34, 0x34, 0x23, 0x23, 0x11, - 0x98, 0xeb, 0xcc, 0xcb, 0xcb, 0xac, 0xab, 0x9b, 0x89, 0x00, 0x20, 0x43, 0x34, 0x34, 0x34, 0x34, - 0x34, 0x43, 0x22, 0x21, 0x80, 0xb9, 0xdc, 0xbc, 0xbc, 0xbd, 0xbb, 0xba, 0x99, 0x88, 0x18, 0x33, - 0x45, 0x43, 0x43, 0x43, 0x43, 0x32, 0x23, 0x22, 0x02, 0xa9, 0xdc, 0xdb, 0xcb, 0xbc, 0xac, 0xab, - 0x9a, 0x89, 0x08, 0x21, 0x43, 0x34, 0x34, 0x44, 0x43, 0x33, 0x32, 0x33, 0x12, 0x90, 0xcb, 0xcd, - 0xdb, 0xdb, 0xbb, 0xbb, 0xab, 0x9a, 0x89, 0x20, 0x42, 0x44, 0x43, 0x53, 0x33, 0x34, 0x32, 0x33, - 0x13, 0x81, 0xc9, 0xdb, 0xdb, 0xcc, 0xcb, 0xab, 0xab, 0xaa, 0x89, 0x08, 0x22, 0x34, 0x44, 0x34, - 0x34, 0x34, 0x42, 0x22, 0x22, 0x02, 0xa8, 0xb9, 0xdc, 0xcc, 0xbc, 0xbb, 0xac, 0xab, 0xa9, 0x88, - 0x10, 0x32, 0x44, 0x44, 0x24, 0x24, 0x24, 0x32, 0x32, 0x11, 0x80, 0x98, 0xdb, 0xcc, 0xcc, 0xbb, - 0xac, 0xab, 0xaa, 0x8a, 0x08, 0x21, 0x53, 0x44, 0x43, 0x34, 0x33, 0x34, 0x33, 0x12, 0x01, 0x90, - 0xca, 0xdc, 0xdb, 0xac, 0xbb, 0xcb, 0xaa, 0x99, 0x89, 0x00, 0x32, 0x45, 0x53, 0x43, 0x33, 0x34, - 0x33, 0x13, 0x12, 0x80, 0xa9, 0xdc, 0xcc, 0xbc, 0xcb, 0xba, 0xbb, 0x9b, 0x9a, 0x08, 0x21, 0x44, - 0x35, 0x25, 0x24, 0x24, 0x33, 0x22, 0x12, 0x10, 0x98, 0xca, 0xcd, 0xcb, 0xbc, 0xcb, 0xab, 0xaa, - 0xaa, 0x98, 0x10, 0x42, 0x54, 0x33, 0x44, 0x43, 0x33, 0x32, 0x12, 0x02, 0x00, 0xb9, 0xce, 0xcb, - 0xbc, 0xad, 0xab, 0xab, 0xaa, 0x99, 0x09, 0x31, 0x54, 0x43, 0x34, 0x44, 0x23, 0x33, 0x12, 0x12, - 0x01, 0xa8, 0xeb, 0xdb, 0xdb, 0xbb, 0xbc, 0xbb, 0xaa, 0x9b, 0x8a, 0x28, 0x53, 0x34, 0x45, 0x33, - 0x35, 0x32, 0x23, 0x12, 0x02, 0x90, 0xba, 0xdd, 0xdb, 0xbb, 0xeb, 0xab, 0xaa, 0xaa, 0x99, 0x08, - 0x31, 0x44, 0x34, 0x35, 0x44, 0x32, 0x22, 0x22, 0x11, 0x81, 0xa9, 0xdb, 0xcc, 0xbc, 0xcc, 0xaa, - 0xab, 0xba, 0x9a, 0x89, 0x21, 0x43, 0x35, 0x35, 0x35, 0x33, 0x33, 0x33, 0x22, 0x11, 0x98, 0xbc, - 0xbe, 0xbd, 0xad, 0xbb, 0xbb, 0xac, 0xaa, 0x89, 0x18, 0x33, 0x35, 0x45, 0x34, 0x24, 0x23, 0x23, - 0x23, 0x11, 0x91, 0xb9, 0xdc, 0xcc, 0xdb, 0xba, 0xbb, 0xcb, 0xaa, 0x9a, 0x08, 0x11, 0x43, 0x45, - 0x34, 0x34, 0x33, 0x33, 0x33, 0x23, 0x00, 0x98, 0xdb, 0xdd, 0xcb, 0xbb, 0xbc, 0xbb, 0xbb, 0xab, - 0x89, 0x10, 0x42, 0x45, 0x44, 0x43, 0x33, 0x33, 0x33, 0x23, 0x11, 0x80, 0xba, 0xcf, 0xbc, 0xbc, - 0xcb, 0xab, 0xac, 0xaa, 0x99, 0x08, 0x20, 0x53, 0x35, 0x44, 0x33, 0x33, 0x24, 0x23, 0x11, 0x01, - 0x98, 0xcc, 0xcc, 0xcb, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x89, 0x18, 0x43, 0x45, 0x53, 0x33, 0x43, - 0x33, 0x32, 0x22, 0x11, 0x80, 0xda, 0xcc, 0xdb, 0xbb, 0xdb, 0xba, 0xab, 0xaa, 0x99, 0x88, 0x22, - 0x46, 0x53, 0x33, 0x34, 0x24, 0x23, 0x22, 0x21, 0x81, 0xb8, 0xdc, 0xbc, 0xbc, 0xbc, 0xbc, 0xaa, - 0xab, 0x99, 0x89, 0x28, 0x54, 0x34, 0x34, 0x44, 0x32, 0x32, 0x22, 0x22, 0x01, 0x98, 0xcc, 0xcc, - 0xcb, 0xdb, 0xba, 0xab, 0xab, 0xaa, 0x9a, 0x08, 0x53, 0x44, 0x34, 0x34, 0x43, 0x32, 0x23, 0x32, - 0x12, 0x91, 0xcb, 0xbd, 0xbd, 0xcc, 0xbb, 0xcb, 0xaa, 0x9a, 0xaa, 0x88, 0x32, 0x54, 0x53, 0x43, - 0x43, 0x32, 0x32, 0x32, 0x22, 0x82, 0xb9, 0xeb, 0xcc, 0xcb, 0xbc, 0xbb, 0xab, 0xbb, 0xbb, 0x99, - 0x11, 0x44, 0x35, 0x35, 0x34, 0x43, 0x32, 0x32, 0x33, 0x12, 0x88, 0xda, 0xdb, 0xcc, 0xcb, 0xbb, - 0xba, 0xcb, 0xaa, 0x9a, 0x08, 0x31, 0x35, 0x36, 0x53, 0x23, 0x33, 0x34, 0x32, 0x12, 0x81, 0xa9, - 0xcc, 0xcc, 0xcc, 0xab, 0xbb, 0xcb, 0xaa, 0xaa, 0x89, 0x11, 0x53, 0x44, 0x53, 0x33, 0x42, 0x23, - 0x24, 0x12, 0x01, 0x98, 0xba, 0xcd, 0xbd, 0xcb, 0xab, 0xac, 0xba, 0xaa, 0x99, 0x00, 0x41, 0x63, - 0x34, 0x33, 0x34, 0x24, 0x43, 0x22, 0x01, 0x80, 0xa8, 0xeb, 0xbc, 0xbc, 0xbc, 0xba, 0xcb, 0xaa, - 0x9a, 0x88, 0x21, 0x44, 0x35, 0x34, 0x33, 0x25, 0x33, 0x33, 0x22, 0x01, 0x98, 0xeb, 0xcc, 0xcb, - 0xbb, 0xbc, 0xbb, 0xbb, 0xab, 0x99, 0x18, 0x63, 0x44, 0x43, 0x33, 0x34, 0x34, 0x33, 0x13, 0x12, - 0x81, 0xca, 0xdc, 0xdb, 0xbb, 0xcb, 0xbb, 0xac, 0x9a, 0xa9, 0x08, 0x32, 0x45, 0x34, 0x43, 0x43, - 0x33, 0x24, 0x22, 0x12, 0x81, 0xb8, 0xcc, 0xbd, 0xbc, 0xcb, 0xcb, 0xaa, 0xab, 0xaa, 0x89, 0x20, - 0x44, 0x34, 0x34, 0x34, 0x44, 0x32, 0x22, 0x22, 0x02, 0x90, 0xcb, 0xcd, 0xcb, 0xbb, 0xad, 0xab, - 0xaa, 0xab, 0x99, 0x10, 0x44, 0x34, 0x53, 0x33, 0x35, 0x33, 0x33, 0x33, 0x22, 0x81, 0xda, 0xcc, - 0xdb, 0xbb, 0xbc, 0xbb, 0xcb, 0xaa, 0xaa, 0x08, 0x32, 0x45, 0x33, 0x45, 0x33, 0x34, 0x33, 0x33, - 0x23, 0x01, 0xb8, 0xcd, 0xbc, 0xbd, 0xbc, 0xbb, 0xbb, 0xac, 0xaa, 0x0a, 0x21, 0x34, 0x44, 0x34, - 0x34, 0x34, 0x33, 0x24, 0x22, 0x12, 0x98, 0xca, 0xcc, 0xcc, 0xbb, 0xcb, 0xab, 0xcb, 0xaa, 0x9a, - 0x00, 0x22, 0x44, 0x53, 0x43, 0x24, 0x24, 0x22, 0x23, 0x22, 0x00, 0xa9, 0xcc, 0xcc, 0xcb, 0xac, - 0xbb, 0xbb, 0xcb, 0x9a, 0x08, 0x20, 0x53, 0x43, 0x44, 0x33, 0x34, 0x43, 0x23, 0x23, 0x11, 0x90, - 0xda, 0xdb, 0xdb, 0xbb, 0xbb, 0xbc, 0xac, 0x9b, 0x89, 0x18, 0x32, 0x44, 0x34, 0x35, 0x43, 0x33, - 0x24, 0x23, 0x12, 0x81, 0xb9, 0xdc, 0xbc, 0xbc, 0xac, 0xcb, 0xab, 0xab, 0x9a, 0x18, 0x11, 0x43, - 0x45, 0x43, 0x33, 0x35, 0x32, 0x24, 0x22, 0x01, 0x88, 0xcb, 0xbd, 0xbc, 0xbc, 0xbc, 0xbb, 0xcb, - 0x9a, 0x88, 0x08, 0x31, 0x44, 0x34, 0x35, 0x33, 0x25, 0x33, 0x23, 0x22, 0x00, 0xba, 0xce, 0xbb, - 0xbd, 0xcb, 0xbb, 0xac, 0x9b, 0x99, 0x09, 0x20, 0x53, 0x34, 0x35, 0x43, 0x43, 0x43, 0x22, 0x22, - 0x11, 0xa8, 0xcb, 0xcc, 0xcb, 0xac, 0xac, 0xbb, 0xaa, 0xaa, 0x89, 0x10, 0x32, 0x46, 0x43, 0x43, - 0x43, 0x33, 0x24, 0x23, 0x13, 0x80, 0xba, 0xbd, 0xbd, 0xbc, 0xcc, 0xba, 0xba, 0xaa, 0x99, 0x88, - 0x21, 0x35, 0x35, 0x34, 0x34, 0x24, 0x24, 0x23, 0x23, 0x00, 0xa8, 0xdb, 0xbc, 0xcc, 0xcb, 0xbb, - 0xbb, 0xbb, 0xaa, 0x89, 0x20, 0x63, 0x34, 0x34, 0x35, 0x33, 0x34, 0x24, 0x23, 0x11, 0x98, 0xba, - 0xbd, 0xcd, 0xcb, 0xbb, 0xcb, 0xaa, 0xaa, 0x99, 0x18, 0x32, 0x44, 0x44, 0x33, 0x34, 0x34, 0x43, - 0x23, 0x13, 0x00, 0xa9, 0xbc, 0xcd, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0xab, 0x08, 0x21, 0x44, 0x35, - 0x25, 0x24, 0x43, 0x42, 0x22, 0x22, 0x01, 0x88, 0xba, 0xcd, 0xdb, 0xbb, 0xad, 0xba, 0xab, 0xaa, - 0x99, 0x00, 0x42, 0x34, 0x35, 0x34, 0x53, 0x42, 0x32, 0x23, 0x11, 0x80, 0xa9, 0xcc, 0xcc, 0xac, - 0xac, 0xab, 0xbb, 0xaa, 0x9a, 0x88, 0x31, 0x54, 0x43, 0x43, 0x43, 0x43, 0x24, 0x22, 0x22, 0x10, - 0xa8, 0xba, 0xdd, 0xcb, 0xac, 0xbb, 0xac, 0xab, 0x9a, 0x89, 0x10, 0x42, 0x44, 0x43, 0x33, 0x44, - 0x24, 0x23, 0x23, 0x02, 0x80, 0xa9, 0xcd, 0xbc, 0xbc, 0xbc, 0xbb, 0xac, 0xaa, 0x99, 0x08, 0x32, - 0x44, 0x34, 0x43, 0x34, 0x34, 0x43, 0x22, 0x12, 0x01, 0x98, 0xdb, 0xbc, 0xbd, 0xdb, 0xba, 0xbb, - 0xbb, 0xaa, 0x99, 0x21, 0x35, 0x34, 0x44, 0x43, 0x43, 0x24, 0x23, 0x22, 0x11, 0x90, 0xba, 0xcd, - 0xbc, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0x9a, 0x10, 0x43, 0x34, 0x35, 0x44, 0x33, 0x35, 0x33, 0x32, - 0x23, 0x81, 0xa8, 0xcc, 0xcc, 0xbc, 0xbc, 0xcb, 0xba, 0xba, 0x9a, 0x08, 0x21, 0x34, 0x35, 0x34, - 0x35, 0x43, 0x33, 0x33, 0x33, 0x11, 0x98, 0xdb, 0xcc, 0xbc, 0xbc, 0xbc, 0xba, 0xbb, 0xbb, 0x88, - 0x20, 0x43, 0x44, 0x43, 0x44, 0x33, 0x34, 0x33, 0x33, 0x12, 0x81, 0xaa, 0xcd, 0xcc, 0xcb, 0xbb, - 0xbc, 0xbb, 0xbb, 0x99, 0x08, 0x22, 0x34, 0x45, 0x53, 0x33, 0x34, 0x43, 0x23, 0x22, 0x11, 0x98, - 0xc9, 0xcc, 0xbc, 0xbc, 0xbc, 0xcb, 0xab, 0xaa, 0x88, 0x00, 0x22, 0x44, 0x34, 0x35, 0x43, 0x34, - 0x23, 0x33, 0x21, 0x00, 0xa9, 0xdc, 0xbc, 0xdb, 0xbb, 0xbc, 0xac, 0xaa, 0x8a, 0x88, 0x11, 0x42, - 0x44, 0x43, 0x43, 0x43, 0x33, 0x24, 0x21, 0x01, 0x80, 0xca, 0xbc, 0xcc, 0xcb, 0xcb, 0xbb, 0xac, - 0x99, 0x89, 0x00, 0x22, 0x44, 0x53, 0x33, 0x35, 0x33, 0x24, 0x22, 0x12, 0x00, 0xaa, 0xbd, 0xbd, - 0xdb, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x09, 0x20, 0x53, 0x43, 0x34, 0x44, 0x33, 0x43, 0x22, 0x22, - 0x01, 0xa8, 0xca, 0xcc, 0xdb, 0xcb, 0xcb, 0xba, 0xba, 0x9a, 0x99, 0x10, 0x32, 0x35, 0x35, 0x35, - 0x34, 0x43, 0x22, 0x23, 0x11, 0x80, 0xb9, 0xbd, 0xcc, 0xdb, 0xcb, 0xbb, 0xba, 0xab, 0x8a, 0x09, - 0x21, 0x44, 0x53, 0x34, 0x34, 0x34, 0x32, 0x33, 0x23, 0x01, 0xa9, 0xcb, 0xcc, 0xdc, 0xbb, 0xbc, - 0xbb, 0xac, 0xa9, 0x89, 0x10, 0x31, 0x63, 0x44, 0x33, 0x44, 0x32, 0x33, 0x22, 0x12, 0x88, 0xaa, - 0xdb, 0xcd, 0xcb, 0xbc, 0xbb, 0xbb, 0xbb, 0xaa, 0x08, 0x21, 0x44, 0x45, 0x43, 0x43, 0x43, 0x32, - 0x23, 0x12, 0x00, 0x88, 0xcb, 0xcc, 0xcc, 0xcb, 0xca, 0xaa, 0xab, 0x99, 0x89, 0x08, 0x32, 0x45, - 0x44, 0x33, 0x34, 0x34, 0x32, 0x22, 0x01, 0x80, 0xaa, 0xdc, 0xdb, 0xbc, 0xbb, 0xbc, 0xbb, 0xaa, - 0x9a, 0x09, 0x21, 0x45, 0x34, 0x35, 0x43, 0x24, 0x33, 0x22, 0x11, 0x01, 0xa8, 0xca, 0xcd, 0xdb, - 0xca, 0xab, 0xbb, 0xab, 0xaa, 0x89, 0x00, 0x53, 0x44, 0x34, 0x53, 0x33, 0x24, 0x32, 0x21, 0x01, - 0x80, 0xba, 0xcd, 0xbc, 0xcc, 0xcb, 0xba, 0xba, 0xaa, 0x99, 0x08, 0x31, 0x54, 0x34, 0x53, 0x34, - 0x33, 0x23, 0x23, 0x21, 0x00, 0xb8, 0xcc, 0xbd, 0xcc, 0xbc, 0xbb, 0xbb, 0xab, 0xba, 0x99, 0x11, - 0x44, 0x44, 0x53, 0x43, 0x33, 0x24, 0x22, 0x12, 0x02, 0x88, 0xba, 0xcd, 0xcc, 0xbb, 0xdb, 0x6c, - 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0xd0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0xf8, 0x71, 0xff, 0x4f, 0x31, 0x17, 0xb3, 0x7a, 0x06, 0xa9, 0x08, 0xcb, 0x09, 0x14, 0x32, 0xfa, - 0x1a, 0xb0, 0x2a, 0x04, 0xb0, 0xbf, 0x08, 0x08, 0x00, 0x08, 0x00, 0x10, 0x89, 0x52, 0x05, 0x49, - 0x36, 0x13, 0xb9, 0x9a, 0x29, 0x13, 0x17, 0xac, 0x31, 0xc1, 0x2a, 0xa4, 0xbd, 0xae, 0x78, 0x91, - 0x9b, 0x10, 0xa1, 0x21, 0x03, 0x19, 0x82, 0x10, 0x73, 0x83, 0x8b, 0xa8, 0x3a, 0x25, 0x00, 0x98, - 0x99, 0x89, 0xcb, 0x80, 0xff, 0x39, 0x14, 0xea, 0xab, 0x18, 0x42, 0xa2, 0x8f, 0x11, 0x9a, 0x00, - 0x88, 0x30, 0x02, 0xab, 0x31, 0x83, 0x72, 0xa7, 0x8c, 0x80, 0x28, 0x13, 0xcb, 0x39, 0x84, 0x8a, - 0x33, 0xa8, 0xba, 0x88, 0x8a, 0x47, 0x82, 0xbc, 0x31, 0xb0, 0x0a, 0x52, 0x12, 0x99, 0x21, 0x52, - 0x03, 0xed, 0x29, 0x83, 0x0b, 0x25, 0x99, 0x21, 0xa2, 0xdb, 0x0e, 0x35, 0x11, 0x8a, 0xb0, 0x0c, - 0x41, 0xb8, 0x0b, 0x33, 0xfb, 0x8c, 0x11, 0x99, 0x99, 0x10, 0x31, 0x91, 0x89, 0x58, 0x15, 0xa8, - 0x0a, 0x26, 0x80, 0xa8, 0xed, 0xcb, 0x39, 0x33, 0x92, 0xac, 0xca, 0x9b, 0x18, 0x22, 0x04, 0xad, - 0x19, 0xa1, 0x8b, 0x22, 0x42, 0x47, 0xb9, 0x39, 0x25, 0x81, 0xb9, 0x58, 0x02, 0x91, 0x8d, 0x42, - 0xc1, 0x0a, 0x30, 0x04, 0xaf, 0x41, 0x03, 0xdb, 0x18, 0x20, 0x03, 0x88, 0xb8, 0x29, 0x46, 0x08, - 0x14, 0xa9, 0x18, 0x00, 0xa9, 0xfb, 0x9a, 0x71, 0xa2, 0xbb, 0x19, 0xb8, 0x8b, 0x21, 0x20, 0x06, - 0xbc, 0x0a, 0x88, 0x52, 0x90, 0x90, 0x0c, 0x43, 0x26, 0xb8, 0x8a, 0x91, 0x10, 0x9a, 0x03, 0x9d, - 0x91, 0xba, 0xff, 0x19, 0x90, 0x08, 0xaa, 0xcb, 0x2a, 0x24, 0x00, 0x98, 0x20, 0x44, 0xa8, 0x78, - 0x04, 0x8a, 0x33, 0x33, 0x67, 0xa8, 0x09, 0x80, 0x80, 0x90, 0xac, 0xb9, 0x9a, 0x29, 0x25, 0x25, - 0xe8, 0x8a, 0x01, 0x30, 0x43, 0x02, 0x9b, 0x23, 0x58, 0x85, 0xbb, 0x2a, 0x25, 0x42, 0x90, 0x9a, - 0xac, 0x42, 0x02, 0x28, 0xf8, 0x0d, 0x08, 0xdb, 0x00, 0x1a, 0x23, 0xb8, 0x9c, 0x98, 0xaf, 0x01, - 0x10, 0xb1, 0x9c, 0x18, 0x23, 0xeb, 0x0a, 0x08, 0x24, 0x11, 0x31, 0xa1, 0x99, 0x58, 0x57, 0xb8, - 0x28, 0xb8, 0x19, 0x33, 0x31, 0x83, 0xed, 0x9c, 0x34, 0xeb, 0x1a, 0x32, 0x91, 0x0a, 0x82, 0x0b, - 0x01, 0x64, 0x01, 0x20, 0x33, 0x11, 0xb8, 0x11, 0xfa, 0x2d, 0x27, 0xb8, 0x99, 0x89, 0x98, 0x0b, - 0x04, 0xbd, 0x43, 0xa0, 0xad, 0x02, 0x2b, 0x37, 0xb9, 0x09, 0x99, 0x22, 0x52, 0x12, 0x11, 0xfb, - 0x58, 0x02, 0xb9, 0xba, 0x9d, 0x11, 0x32, 0xd8, 0xbc, 0x9a, 0x31, 0x24, 0x93, 0xad, 0xaa, 0x41, - 0x83, 0xbd, 0x41, 0xb0, 0x3a, 0x16, 0x11, 0xa8, 0x89, 0x31, 0x05, 0xbc, 0x8a, 0x31, 0xc0, 0x8a, - 0x09, 0x36, 0x82, 0x8a, 0xbc, 0x24, 0x90, 0x3a, 0x07, 0xb9, 0x0d, 0x04, 0x8a, 0x18, 0x54, 0x14, - 0xca, 0x18, 0x11, 0x01, 0xdb, 0x61, 0x11, 0xea, 0x18, 0x00, 0x92, 0x18, 0x88, 0x9a, 0xb9, 0x0d, - 0xb8, 0x08, 0x8b, 0xa1, 0x40, 0x40, 0x02, 0x08, 0xe8, 0x71, 0x96, 0x18, 0x90, 0x00, 0x88, 0x00, - 0xcb, 0xb9, 0x72, 0x86, 0xaa, 0x89, 0x21, 0xb1, 0x9e, 0x80, 0x42, 0xc8, 0x29, 0x82, 0xca, 0x18, - 0xa1, 0x48, 0xc1, 0xab, 0x8d, 0x13, 0x42, 0xb0, 0x19, 0x8a, 0x73, 0x84, 0x8b, 0x82, 0x38, 0x55, - 0x82, 0xaa, 0x21, 0xad, 0x41, 0xa4, 0x0d, 0xa0, 0x0b, 0x40, 0x13, 0x89, 0x90, 0x99, 0x19, 0x93, - 0x8d, 0x53, 0xc3, 0x2b, 0x37, 0x90, 0x20, 0x88, 0x13, 0xfd, 0x39, 0x14, 0x00, 0x89, 0x90, 0xbc, - 0xa9, 0xae, 0x98, 0x48, 0x82, 0xa9, 0x00, 0xea, 0x09, 0xbc, 0x53, 0xa9, 0x89, 0x02, 0x19, 0x17, - 0x98, 0x11, 0x34, 0x33, 0xc0, 0x0d, 0x02, 0xbd, 0x18, 0x80, 0x20, 0x22, 0x0d, 0x87, 0x8b, 0x02, - 0x42, 0xa8, 0xa9, 0x0b, 0x00, 0x51, 0x91, 0x31, 0xeb, 0xb9, 0x60, 0x02, 0xd0, 0x9d, 0x08, 0x31, - 0x14, 0xa8, 0x8c, 0x03, 0x08, 0x16, 0x89, 0x01, 0xc0, 0x78, 0x03, 0xb9, 0x2a, 0xea, 0x10, 0x88, - 0x80, 0x01, 0xb0, 0x4c, 0x84, 0xa1, 0x0e, 0x80, 0x22, 0x11, 0xfa, 0x1b, 0x02, 0x80, 0x09, 0xd1, - 0x2a, 0x02, 0x90, 0x0d, 0x93, 0x8d, 0x13, 0xc8, 0xac, 0x10, 0x15, 0x38, 0x15, 0x00, 0xfb, 0x19, - 0x98, 0x23, 0xb9, 0x19, 0xf8, 0x2a, 0x83, 0x0a, 0xec, 0x49, 0x93, 0x9d, 0x52, 0x13, 0x08, 0xd9, - 0x29, 0x80, 0x32, 0x02, 0xca, 0xc9, 0x9c, 0x42, 0x93, 0x8a, 0x12, 0xda, 0x39, 0x17, 0x9a, 0xa1, - 0x10, 0x2b, 0x17, 0x89, 0x20, 0xc0, 0x28, 0x90, 0x88, 0xb0, 0x9f, 0x32, 0x26, 0xc9, 0x00, 0x0a, - 0xb9, 0x41, 0x89, 0xa1, 0x3a, 0xdb, 0x12, 0x0b, 0x23, 0xdf, 0x33, 0x89, 0x11, 0xd9, 0x49, 0xc1, - 0x29, 0xa3, 0x8a, 0x10, 0x34, 0x82, 0xd8, 0x2a, 0xba, 0xc2, 0xac, 0x19, 0xf8, 0x1c, 0x13, 0xcb, - 0x39, 0xb2, 0x3a, 0x05, 0x9c, 0x02, 0x52, 0x00, 0x81, 0x21, 0x88, 0x74, 0x87, 0x89, 0x91, 0x28, - 0xa1, 0x19, 0xb2, 0xaf, 0xaa, 0x32, 0x90, 0x8a, 0x45, 0x12, 0x98, 0x9a, 0x30, 0x47, 0xb8, 0x91, - 0xae, 0x29, 0x14, 0x80, 0x28, 0xe8, 0x49, 0x34, 0xb0, 0xbd, 0x88, 0x8a, 0x51, 0x83, 0xaa, 0x08, - 0x90, 0xe1, 0x0e, 0x83, 0xab, 0x10, 0x21, 0x83, 0xcd, 0x19, 0x11, 0x50, 0x06, 0x08, 0x90, 0x19, - 0xc0, 0x18, 0x9c, 0x13, 0xaa, 0x39, 0x83, 0x89, 0x34, 0xca, 0xca, 0x0a, 0x67, 0x91, 0x09, 0xca, - 0xab, 0x42, 0x21, 0x15, 0xfa, 0x19, 0x90, 0x22, 0x12, 0x88, 0x82, 0xbc, 0x58, 0x14, 0x20, 0x82, - 0xab, 0x12, 0xa9, 0xe9, 0x68, 0xd1, 0x9a, 0x90, 0xab, 0x11, 0x04, 0x8c, 0x91, 0x38, 0x91, 0x62, - 0xb8, 0x1a, 0x23, 0x54, 0x91, 0xbd, 0x08, 0x1a, 0x05, 0x58, 0xd8, 0x18, 0x20, 0x91, 0xbf, 0x20, - 0x88, 0x88, 0x9a, 0x08, 0x52, 0x91, 0xac, 0x18, 0x24, 0x30, 0xa1, 0x24, 0xae, 0x14, 0x88, 0x20, - 0x02, 0x43, 0xc8, 0x2b, 0x35, 0xa8, 0xad, 0x08, 0xe1, 0x0c, 0xb0, 0x20, 0x19, 0xa8, 0x57, 0x00, - 0x09, 0xc1, 0x9d, 0x09, 0x20, 0x85, 0x8b, 0x10, 0x83, 0x1b, 0x24, 0x32, 0xa8, 0xa8, 0x0b, 0xc8, - 0x75, 0xa3, 0x0b, 0xf8, 0x39, 0xa1, 0x98, 0x0a, 0xfa, 0x51, 0xa1, 0x29, 0x02, 0xab, 0x20, 0x90, - 0x29, 0xe9, 0x51, 0x32, 0xa0, 0x80, 0x18, 0xb9, 0x48, 0x53, 0x94, 0x9a, 0xde, 0x89, 0x21, 0x99, - 0xf0, 0x3a, 0x82, 0x02, 0x0b, 0xb0, 0xad, 0x99, 0x62, 0x90, 0x43, 0xca, 0x18, 0x20, 0x82, 0x88, - 0x53, 0x91, 0x39, 0x77, 0x81, 0xaa, 0x29, 0xc2, 0x8a, 0x80, 0xa9, 0x8b, 0x83, 0x09, 0x64, 0xb1, - 0xaa, 0x41, 0xa1, 0x88, 0x1b, 0xa5, 0x38, 0x38, 0x77, 0x90, 0x9a, 0x11, 0x89, 0x12, 0x98, 0x54, - 0xd1, 0x8b, 0xb2, 0x2b, 0xf9, 0x09, 0x8a, 0x22, 0x88, 0xdb, 0x50, 0xb0, 0x8a, 0x52, 0x83, 0x32, - 0xfa, 0xa9, 0x8e, 0x23, 0x88, 0x20, 0x25, 0x08, 0xa3, 0x0c, 0x01, 0x10, 0x21, 0xb0, 0x0d, 0x04, - 0xb9, 0xbb, 0x2a, 0xf8, 0x3b, 0xda, 0x49, 0x13, 0x99, 0x18, 0x11, 0x8b, 0xd3, 0x8e, 0x63, 0x02, - 0x11, 0xec, 0x18, 0x01, 0x98, 0x99, 0x11, 0x18, 0x02, 0xaa, 0x46, 0x0a, 0x17, 0x99, 0xab, 0x91, - 0x2b, 0x27, 0x01, 0x19, 0xe8, 0x9a, 0x01, 0x18, 0xa8, 0x2a, 0x13, 0x22, 0xff, 0x89, 0x23, 0x98, - 0xa9, 0x89, 0x52, 0xc8, 0x89, 0x9c, 0x13, 0x12, 0x3a, 0x27, 0x30, 0x91, 0x89, 0x42, 0x11, 0x2a, - 0x97, 0xbe, 0x99, 0x20, 0x18, 0xa2, 0x81, 0xcf, 0x0a, 0xa0, 0x20, 0x62, 0x13, 0xdb, 0x30, 0x20, - 0x82, 0x80, 0x11, 0xbd, 0x43, 0x53, 0x82, 0xad, 0x33, 0xa9, 0x09, 0x81, 0x91, 0xcd, 0x9d, 0xc9, - 0x29, 0x32, 0x84, 0xa8, 0xdc, 0x9b, 0x33, 0x98, 0x20, 0x0a, 0x94, 0x7a, 0xb3, 0x60, 0xd0, 0x29, - 0x12, 0x02, 0x32, 0xcd, 0x21, 0x99, 0xa8, 0x2b, 0x94, 0x8a, 0x44, 0x01, 0xf9, 0x9d, 0x08, 0x02, - 0x28, 0xa1, 0x19, 0x10, 0x02, 0x3a, 0x67, 0xa9, 0x09, 0xa9, 0x34, 0x89, 0x32, 0xd9, 0x8b, 0x20, - 0x85, 0x09, 0x82, 0x22, 0xdd, 0x11, 0xda, 0x8c, 0x82, 0x9c, 0xa0, 0x0b, 0x22, 0xa0, 0x63, 0x19, - 0x37, 0x19, 0x82, 0xac, 0x40, 0x14, 0x42, 0xb0, 0x0a, 0x1a, 0x35, 0x90, 0xba, 0x19, 0xf8, 0x8c, - 0x88, 0xa8, 0xbc, 0x9a, 0x20, 0x32, 0x90, 0x32, 0x98, 0x0a, 0x44, 0x57, 0xd9, 0x29, 0x24, 0x90, - 0x8a, 0x20, 0x14, 0x88, 0x9b, 0x28, 0xa6, 0xaf, 0x88, 0x00, 0x01, 0xdb, 0x28, 0x80, 0x13, 0x89, - 0xa0, 0x9b, 0x23, 0x72, 0xa0, 0xfa, 0x39, 0xa8, 0x74, 0x22, 0x90, 0x09, 0x90, 0x63, 0xb8, 0x9a, - 0x49, 0x03, 0xa0, 0xab, 0x9b, 0xb1, 0x9e, 0x82, 0x9f, 0x00, 0xa9, 0x19, 0xa0, 0x1a, 0x37, 0xca, - 0x58, 0x82, 0x4a, 0x16, 0x20, 0x81, 0xb9, 0x2a, 0x24, 0xc1, 0x8c, 0x89, 0xb0, 0x5b, 0x81, 0x90, - 0xcb, 0x8b, 0x00, 0xd1, 0x1b, 0x34, 0xf9, 0x09, 0x90, 0x89, 0x11, 0xda, 0x3a, 0x13, 0x76, 0x23, - 0xc9, 0x0b, 0x22, 0x18, 0x90, 0xa8, 0x9e, 0x00, 0x80, 0x64, 0x91, 0x2b, 0xf9, 0x09, 0x10, 0x11, - 0x12, 0xaa, 0x88, 0x8a, 0xad, 0x33, 0x82, 0x2d, 0x47, 0x08, 0x91, 0xba, 0x38, 0x82, 0x0a, 0xd8, - 0x8b, 0x70, 0xb3, 0x9c, 0x9a, 0x01, 0x29, 0x17, 0xa9, 0x99, 0xca, 0x48, 0x82, 0xae, 0x88, 0x41, - 0x24, 0x80, 0xb8, 0x0a, 0x00, 0x88, 0x73, 0x03, 0xaa, 0x41, 0x98, 0x08, 0x17, 0x88, 0xeb, 0x08, - 0x02, 0xba, 0x89, 0x12, 0x1e, 0x27, 0x9a, 0xbb, 0x18, 0x22, 0x02, 0x28, 0xf0, 0x3a, 0x22, 0x26, - 0xba, 0x09, 0x90, 0x22, 0xcb, 0x33, 0xce, 0x38, 0x04, 0xbe, 0x00, 0x22, 0xb9, 0x30, 0xc2, 0x8c, - 0x90, 0x58, 0xc1, 0x51, 0x12, 0x81, 0x89, 0x98, 0x09, 0x24, 0x80, 0x08, 0x01, 0xdc, 0x99, 0x1c, - 0x24, 0xa0, 0x8f, 0xb8, 0x42, 0xc8, 0x38, 0xa3, 0x2c, 0x85, 0x9a, 0x09, 0xc8, 0x9a, 0x8b, 0x85, - 0x9d, 0x12, 0x0a, 0x82, 0xd9, 0xad, 0x88, 0x72, 0x82, 0x8c, 0x33, 0x21, 0x24, 0x32, 0xd1, 0x4b, - 0xa4, 0x39, 0x01, 0x01, 0xbb, 0x30, 0x03, 0x88, 0xc0, 0xff, 0x99, 0x80, 0x21, 0x13, 0xee, 0x99, - 0x18, 0x12, 0x01, 0x81, 0xad, 0x48, 0x24, 0x00, 0x98, 0xc9, 0x19, 0x13, 0x00, 0x25, 0x98, 0xbf, - 0x42, 0x80, 0x99, 0x9c, 0xb8, 0x8b, 0x91, 0x53, 0x08, 0xe2, 0x3b, 0xb1, 0x28, 0x12, 0xca, 0x72, - 0x07, 0x18, 0xa8, 0x20, 0x99, 0x80, 0x80, 0xc9, 0x29, 0x17, 0x99, 0x89, 0x53, 0xc0, 0xab, 0x28, - 0x06, 0xa9, 0x09, 0x00, 0x81, 0xcd, 0xa9, 0x10, 0x82, 0x90, 0x28, 0xf9, 0x29, 0x73, 0x04, 0xaa, - 0x31, 0x32, 0x03, 0x81, 0xaf, 0x10, 0x90, 0x73, 0xb0, 0x10, 0x21, 0xc9, 0x08, 0xcc, 0x98, 0xda, - 0x8a, 0x88, 0x40, 0x84, 0xbb, 0x8a, 0x22, 0x53, 0x92, 0xbc, 0x22, 0x71, 0xa3, 0x0c, 0x10, 0xb8, - 0x61, 0x32, 0x03, 0xca, 0x0c, 0x23, 0xba, 0x28, 0xbf, 0xb0, 0x19, 0x88, 0xd0, 0x2b, 0x24, 0x9a, - 0x05, 0x1b, 0x55, 0xa1, 0x8b, 0x03, 0x88, 0x11, 0x00, 0x36, 0x92, 0x0a, 0x11, 0xa9, 0xb8, 0x4b, - 0x97, 0x9e, 0xa9, 0x9b, 0xca, 0x0c, 0x14, 0x11, 0xfa, 0x10, 0xba, 0x41, 0x14, 0x98, 0x30, 0x90, - 0x64, 0x01, 0x00, 0x08, 0x41, 0xf8, 0x19, 0xba, 0x10, 0x81, 0xca, 0x19, 0x98, 0x72, 0x22, 0x98, - 0x00, 0xac, 0x33, 0xac, 0xa8, 0x8c, 0xd8, 0x40, 0x83, 0x9c, 0xa0, 0x3a, 0x35, 0x93, 0xad, 0x98, - 0xd9, 0x0b, 0x04, 0x51, 0x32, 0xa2, 0x8a, 0x28, 0xa2, 0x29, 0x98, 0xb9, 0x2c, 0xe8, 0x11, 0x0c, - 0x67, 0x91, 0x8a, 0xa8, 0x0b, 0x00, 0x37, 0x88, 0xa9, 0x27, 0xa9, 0x88, 0x98, 0xbc, 0x19, 0x82, - 0x48, 0xc3, 0x8c, 0x81, 0x2b, 0xc3, 0x18, 0x90, 0x79, 0x95, 0x19, 0x98, 0x21, 0x89, 0x80, 0xad, - 0x45, 0xb8, 0x48, 0x05, 0xba, 0x18, 0x03, 0x8e, 0x88, 0x82, 0xcb, 0x40, 0x99, 0x14, 0x29, 0xb0, - 0x28, 0xa1, 0x0b, 0x20, 0x94, 0xaa, 0x2b, 0xc6, 0x8f, 0x91, 0x50, 0x03, 0x31, 0xc8, 0x99, 0x8b, - 0x30, 0x37, 0xf9, 0x0b, 0x80, 0x08, 0x14, 0xaa, 0xa0, 0x1c, 0xa1, 0x2b, 0x07, 0x08, 0x90, 0x10, - 0xaa, 0x18, 0xb3, 0x79, 0x77, 0x81, 0x8a, 0x10, 0x90, 0x41, 0x80, 0xc0, 0x1a, 0xb8, 0x9b, 0xc8, - 0x8d, 0x82, 0x89, 0x11, 0x98, 0xac, 0x36, 0x99, 0xb0, 0x9e, 0x99, 0x42, 0x12, 0x89, 0x10, 0x98, - 0xba, 0x70, 0x37, 0x98, 0x90, 0x08, 0x14, 0x00, 0x00, 0xa0, 0x60, 0xc8, 0x9b, 0x11, 0xcb, 0xb9, - 0x1b, 0xc1, 0x48, 0xe2, 0x8d, 0x01, 0x35, 0x11, 0xb0, 0x0d, 0x23, 0x1a, 0x05, 0x2a, 0x12, 0x34, - 0xea, 0x99, 0x9b, 0x32, 0x01, 0x18, 0xa2, 0x19, 0xff, 0x9b, 0x28, 0x80, 0x90, 0x29, 0x12, 0xf9, - 0x0e, 0x12, 0xa9, 0x20, 0x91, 0x51, 0xc0, 0x08, 0x41, 0x03, 0x63, 0x22, 0x81, 0x8c, 0x43, 0xb9, - 0x18, 0xbd, 0x08, 0x9a, 0xa1, 0xdc, 0x0b, 0xc0, 0xaa, 0xab, 0xc8, 0x4a, 0x04, 0x18, 0x01, 0xb9, - 0x68, 0x37, 0x12, 0x88, 0xa9, 0x59, 0x05, 0x9a, 0x11, 0x33, 0x99, 0x11, 0xeb, 0xaa, 0x8d, 0x44, - 0xa8, 0xaa, 0x18, 0xa8, 0x19, 0x23, 0xce, 0xa9, 0x0c, 0x15, 0x28, 0x24, 0x08, 0x82, 0x8d, 0x12, - 0x08, 0x45, 0xb0, 0x8c, 0x33, 0xc1, 0x1a, 0xc9, 0xb9, 0x9e, 0x08, 0x41, 0xb1, 0x8b, 0x23, 0x23, - 0xd8, 0x89, 0xbe, 0x61, 0x01, 0x99, 0x28, 0x93, 0xaa, 0xa9, 0x3b, 0x57, 0x8a, 0x13, 0x09, 0x04, - 0x9a, 0x18, 0x75, 0x92, 0xbd, 0x08, 0x80, 0x21, 0x01, 0x88, 0xa0, 0x72, 0x01, 0xe9, 0x8a, 0x01, - 0xaa, 0xa8, 0xac, 0x28, 0x27, 0x89, 0x01, 0xca, 0x8b, 0x44, 0x21, 0x04, 0x99, 0x9a, 0x62, 0xa1, - 0x9b, 0x81, 0x8a, 0xb9, 0x73, 0x94, 0xba, 0xac, 0x09, 0x91, 0x31, 0x57, 0x83, 0x89, 0xfb, 0x1a, - 0x33, 0x98, 0x01, 0xa9, 0x72, 0xb2, 0x39, 0xb1, 0xbd, 0x28, 0x84, 0x31, 0x13, 0xfa, 0x09, 0x80, - 0x9b, 0xa9, 0x81, 0x2c, 0x84, 0xbb, 0x40, 0x93, 0x0c, 0x93, 0x39, 0x47, 0x01, 0x99, 0x91, 0x0d, - 0x12, 0x81, 0x0a, 0xb1, 0x41, 0xee, 0xab, 0x30, 0x14, 0xa0, 0xcb, 0x09, 0xa0, 0x8b, 0x0c, 0x07, - 0x40, 0x81, 0x98, 0x89, 0x60, 0x84, 0x29, 0x15, 0x08, 0x92, 0x8d, 0xb0, 0x19, 0xd9, 0xaa, 0x3a, - 0x05, 0x40, 0x81, 0x21, 0xbd, 0xcb, 0x41, 0x34, 0x90, 0x10, 0x89, 0x9b, 0x27, 0x89, 0xb9, 0x1a, - 0x15, 0xae, 0x80, 0x99, 0x08, 0x82, 0xbd, 0x10, 0x72, 0x85, 0x18, 0x88, 0x12, 0x08, 0x02, 0xaa, - 0x89, 0xfa, 0x99, 0x3b, 0xa5, 0xae, 0x98, 0x39, 0x07, 0x9a, 0x09, 0xb0, 0x1b, 0x54, 0x14, 0x9a, - 0xaa, 0x88, 0x39, 0x16, 0x81, 0x38, 0x02, 0x20, 0x24, 0xb9, 0x10, 0x29, 0x87, 0x0b, 0xc9, 0xa8, - 0xaf, 0x9a, 0x10, 0xb8, 0xab, 0xbd, 0x35, 0xbb, 0x61, 0x25, 0x99, 0xa8, 0x00, 0x09, 0x33, 0x04, - 0x99, 0x42, 0x15, 0x99, 0x11, 0xca, 0x51, 0xe8, 0x8c, 0x11, 0x00, 0x80, 0x09, 0x80, 0x21, 0xa0, - 0xae, 0xa8, 0x50, 0x23, 0x02, 0xfa, 0x8b, 0x42, 0xd0, 0x28, 0x00, 0x20, 0x37, 0x08, 0x81, 0x89, - 0xfb, 0x29, 0x91, 0x91, 0xcf, 0x19, 0x92, 0x9a, 0x08, 0x80, 0x88, 0x46, 0x90, 0xb9, 0x19, 0x90, - 0x60, 0x13, 0x88, 0x31, 0xca, 0x12, 0x30, 0xb8, 0x52, 0x74, 0x02, 0xb9, 0xbf, 0x20, 0x22, 0xa8, - 0xe8, 0x1c, 0x03, 0x9a, 0x08, 0x89, 0x73, 0x03, 0xa8, 0xcc, 0x18, 0x02, 0x11, 0x89, 0x93, 0x1c, - 0x46, 0xa1, 0x09, 0x89, 0x43, 0x02, 0xbb, 0xd9, 0x9f, 0x82, 0xa9, 0x9b, 0x18, 0x12, 0x98, 0x4a, - 0x17, 0x8a, 0x21, 0x27, 0x99, 0x88, 0x30, 0xe2, 0x39, 0x81, 0x08, 0xa9, 0x9c, 0xb9, 0x63, 0xc8, - 0xba, 0x9a, 0x18, 0xf2, 0x1d, 0x03, 0x00, 0x89, 0x11, 0x10, 0x33, 0x45, 0x91, 0x9e, 0x31, 0x23, - 0x00, 0x08, 0x81, 0xda, 0x5a, 0x04, 0x80, 0x38, 0xdb, 0x43, 0x99, 0xb9, 0xbf, 0x99, 0xaa, 0xa9, - 0x30, 0x00, 0x80, 0x47, 0xa8, 0xb0, 0x0f, 0x34, 0x89, 0x15, 0x20, 0xa0, 0x8a, 0x09, 0x23, 0x28, - 0x85, 0xab, 0xac, 0x91, 0x7a, 0x83, 0x9a, 0xda, 0x8c, 0x81, 0x88, 0x1b, 0xd1, 0x9c, 0x19, 0x46, - 0xa8, 0x9b, 0x31, 0x11, 0x22, 0x14, 0xcb, 0x60, 0x13, 0x12, 0x00, 0xd8, 0x1b, 0x95, 0x3c, 0xe2, - 0x8b, 0x23, 0x80, 0xc9, 0x0a, 0xc8, 0x8a, 0x35, 0x91, 0x9a, 0x00, 0xcd, 0x11, 0x9b, 0x13, 0x08, - 0x61, 0xa3, 0x9c, 0x08, 0x47, 0x81, 0xc0, 0x1a, 0x31, 0x16, 0x00, 0xaa, 0x09, 0x45, 0xa0, 0x8a, - 0xca, 0xac, 0x30, 0x01, 0x32, 0xd0, 0x0b, 0xc1, 0x09, 0x89, 0x18, 0x17, 0x8b, 0xa2, 0xaf, 0x32, - 0x81, 0xbc, 0x30, 0xa1, 0x28, 0x44, 0x99, 0x20, 0x65, 0x14, 0xa9, 0xb9, 0x9f, 0x02, 0x08, 0xb8, - 0x8e, 0x82, 0x19, 0x22, 0xb8, 0xbb, 0x50, 0x47, 0x91, 0x99, 0x80, 0x21, 0x90, 0x09, 0x26, 0xb9, - 0x29, 0x23, 0xea, 0xac, 0x10, 0xa9, 0x32, 0x93, 0x80, 0x20, 0xfa, 0x9c, 0xb9, 0x20, 0x11, 0x61, - 0x05, 0x58, 0x92, 0xae, 0x08, 0xa0, 0x39, 0x15, 0x9a, 0xa0, 0x28, 0x81, 0x64, 0x80, 0xdb, 0x0a, - 0x12, 0x22, 0x33, 0xf9, 0x8c, 0x98, 0x28, 0x02, 0xab, 0xa9, 0x0b, 0x90, 0x73, 0x07, 0x98, 0x29, - 0x92, 0x30, 0xa0, 0xa8, 0x70, 0xc2, 0xaa, 0x50, 0x82, 0xb9, 0x19, 0x93, 0x9c, 0x02, 0xbe, 0x98, - 0x60, 0x98, 0x25, 0x9a, 0xa9, 0x28, 0x75, 0x13, 0x98, 0x09, 0xb8, 0xac, 0x20, 0x12, 0xfb, 0x89, - 0x00, 0xb8, 0x1c, 0x16, 0x09, 0x22, 0x08, 0xb2, 0x0d, 0x25, 0x9a, 0x12, 0xab, 0xac, 0x81, 0x4a, - 0x94, 0x9c, 0xcb, 0x30, 0x33, 0x92, 0xbe, 0x40, 0x33, 0x82, 0x92, 0xbf, 0x41, 0x92, 0xca, 0x0b, - 0x81, 0x20, 0xc0, 0xfc, 0x29, 0x15, 0x88, 0x80, 0x10, 0xeb, 0x11, 0x0a, 0x24, 0xa0, 0xbb, 0x89, - 0x65, 0x02, 0x89, 0x18, 0x02, 0x61, 0x80, 0x01, 0xbe, 0x18, 0x43, 0x81, 0x00, 0xcc, 0xb9, 0x8a, - 0x89, 0x81, 0xaa, 0x52, 0x51, 0xe0, 0x89, 0x09, 0x82, 0x9c, 0x33, 0x41, 0x02, 0xb8, 0x1e, 0x03, - 0x73, 0x10, 0x92, 0xcb, 0x9a, 0x99, 0x82, 0x9d, 0x82, 0x18, 0xa3, 0xff, 0x28, 0xb0, 0x38, 0x91, - 0x99, 0x62, 0x01, 0xb0, 0x28, 0x01, 0x19, 0x47, 0x99, 0x32, 0xdb, 0x20, 0x81, 0xb8, 0x49, 0xd8, - 0x29, 0xc0, 0x10, 0x88, 0x22, 0xec, 0x88, 0x38, 0x34, 0xa2, 0x1a, 0x05, 0xab, 0x60, 0xa3, 0x9b, - 0x9a, 0x80, 0x88, 0x54, 0x01, 0xa1, 0xae, 0x21, 0x62, 0x82, 0xbb, 0x39, 0xf9, 0x89, 0x28, 0xa1, - 0xb1, 0x9f, 0x13, 0x00, 0x08, 0x32, 0xd2, 0xcc, 0x8c, 0x54, 0x02, 0x09, 0xa0, 0x0a, 0xcd, 0x28, - 0x00, 0x81, 0x51, 0xd8, 0x89, 0x19, 0x14, 0x88, 0xa9, 0xac, 0x42, 0xa0, 0x33, 0x00, 0x02, 0x72, - 0x03, 0x99, 0xaa, 0x71, 0x95, 0x8a, 0xfb, 0xab, 0x21, 0x21, 0x91, 0x51, 0x90, 0x31, 0x35, 0xda, - 0x00, 0x09, 0x80, 0x82, 0x8a, 0x1a, 0xa5, 0x7a, 0xd0, 0x09, 0x18, 0xa2, 0x39, 0xf9, 0x0b, 0x41, - 0x93, 0x28, 0xd9, 0x9b, 0x42, 0x00, 0x12, 0xb9, 0x71, 0xa2, 0x01, 0x19, 0x88, 0x13, 0xbb, 0xef, - 0xaa, 0x19, 0x01, 0x02, 0xb8, 0xbc, 0xbb, 0x73, 0x22, 0xe8, 0x0c, 0x21, 0x35, 0x12, 0x80, 0x98, - 0x80, 0x8d, 0x04, 0x09, 0x08, 0x8a, 0x92, 0x3a, 0xfd, 0xa9, 0x28, 0x33, 0x82, 0xad, 0x32, 0xdb, - 0x20, 0x81, 0x0a, 0x67, 0xa0, 0x09, 0x42, 0x02, 0x99, 0xba, 0x0a, 0x91, 0xcd, 0x51, 0xc8, 0x19, - 0xa0, 0xdb, 0x18, 0x00, 0x08, 0x08, 0x92, 0xac, 0x41, 0x14, 0x0a, 0x56, 0x13, 0xa9, 0x10, 0x98, - 0xba, 0x40, 0x13, 0x45, 0xb8, 0x9a, 0x8a, 0xcc, 0x62, 0xb8, 0x9b, 0xa8, 0xbb, 0x62, 0xb1, 0x0c, - 0x20, 0x24, 0x33, 0xba, 0x26, 0xb9, 0x71, 0xa0, 0x8c, 0x32, 0x02, 0x00, 0xa9, 0x9c, 0x09, 0x44, - 0x12, 0xa8, 0xcb, 0x9a, 0x8a, 0xf9, 0x2d, 0xa1, 0x19, 0x9a, 0x53, 0xb0, 0x0e, 0x42, 0x83, 0x8a, - 0x33, 0xb1, 0x8b, 0xb1, 0x9d, 0x76, 0x90, 0x99, 0x0a, 0xb9, 0x63, 0x21, 0x01, 0xa2, 0xac, 0x9b, - 0x91, 0xbc, 0x38, 0x07, 0xdb, 0x8b, 0x12, 0xcc, 0x41, 0x00, 0x00, 0x01, 0x91, 0x60, 0x01, 0xa1, - 0xaf, 0x21, 0x81, 0x21, 0x35, 0x81, 0x10, 0x00, 0xe9, 0x0b, 0x89, 0x01, 0x09, 0x98, 0xff, 0x0a, - 0x90, 0x10, 0xb9, 0x68, 0x25, 0xa8, 0x88, 0x99, 0x32, 0x32, 0x11, 0x00, 0x02, 0x11, 0x5a, 0x86, - 0x3b, 0xb0, 0xe9, 0x3b, 0x92, 0x2a, 0xc1, 0xbf, 0xbb, 0x2a, 0xc2, 0x9e, 0xc9, 0x9b, 0x42, 0x43, - 0xa0, 0x01, 0x40, 0x24, 0x23, 0x91, 0x9c, 0x64, 0x92, 0x1a, 0x81, 0x91, 0x9e, 0x99, 0x09, 0x53, - 0xc0, 0x9a, 0x08, 0xe8, 0x9d, 0x00, 0x42, 0xb0, 0xbb, 0x28, 0x13, 0x43, 0x90, 0x68, 0x14, 0x11, - 0x01, 0x01, 0xe9, 0x3a, 0x34, 0x92, 0xa9, 0xcd, 0x28, 0x32, 0x92, 0xaa, 0xee, 0x8a, 0x21, 0x11, - 0xb9, 0x99, 0x9a, 0x11, 0xa2, 0x79, 0x91, 0xfa, 0x8d, 0x22, 0x44, 0x82, 0x09, 0x41, 0xa9, 0x01, - 0xac, 0xa1, 0x0b, 0xa1, 0xa9, 0xca, 0x1f, 0x14, 0x31, 0xc8, 0xba, 0x10, 0x01, 0xc8, 0x89, 0xba, - 0x49, 0xa3, 0x9f, 0x43, 0x11, 0x33, 0x98, 0xd9, 0x08, 0x39, 0x47, 0x80, 0x31, 0xb3, 0x9f, 0x81, - 0xcb, 0x29, 0x13, 0x35, 0xd9, 0x08, 0x80, 0xa9, 0x99, 0xbd, 0x10, 0x10, 0x82, 0x6a, 0xc3, 0x49, - 0x00, 0x26, 0xa9, 0x99, 0x28, 0x37, 0x02, 0x82, 0xcc, 0x8a, 0x01, 0x00, 0x90, 0xaa, 0xab, 0x01, - 0x0c, 0x95, 0xdf, 0x09, 0x00, 0x00, 0xea, 0x28, 0x20, 0x33, 0x03, 0x0b, 0x15, 0x18, 0x23, 0x32, - 0x82, 0xdf, 0x08, 0x28, 0xc0, 0x0b, 0xc9, 0x10, 0xdb, 0xbb, 0x29, 0x14, 0x00, 0x33, 0xa8, 0x3a, - 0x47, 0x23, 0xa9, 0x18, 0x21, 0xf9, 0xac, 0x31, 0x02, 0x20, 0xd1, 0x8b, 0xa2, 0x6b, 0x24, 0x14, - 0xba, 0xaa, 0x8c, 0x13, 0x19, 0x05, 0xfa, 0x39, 0x15, 0xc9, 0x9a, 0x43, 0x01, 0xa0, 0xae, 0x28, - 0x14, 0x09, 0x88, 0x99, 0x82, 0x78, 0x91, 0xba, 0xaf, 0x11, 0x20, 0x02, 0xa1, 0x9c, 0xba, 0x62, - 0x21, 0xa1, 0x1a, 0x12, 0xb9, 0x71, 0x84, 0xdd, 0x28, 0xa1, 0x8a, 0x10, 0x80, 0x36, 0x80, 0xa8, - 0x88, 0x49, 0xa4, 0xcd, 0x29, 0x34, 0x32, 0xb8, 0xdc, 0x8c, 0x21, 0x42, 0xa8, 0x09, 0x98, 0x11, - 0xa0, 0x72, 0x03, 0xfa, 0x0c, 0x21, 0xa8, 0x89, 0xcb, 0x31, 0x80, 0x80, 0x18, 0x08, 0x25, 0xa9, - 0x80, 0x8d, 0x17, 0x53, 0x02, 0x00, 0x32, 0xb8, 0xcc, 0x89, 0xea, 0x8a, 0x32, 0x14, 0xfb, 0x8d, - 0x00, 0x08, 0x21, 0x23, 0x99, 0x01, 0x08, 0x17, 0x00, 0xc9, 0x09, 0x2a, 0x84, 0x61, 0x13, 0xc9, - 0x0a, 0xa8, 0x08, 0xeb, 0x08, 0x12, 0xcd, 0x0a, 0x11, 0x89, 0xc0, 0x9f, 0x12, 0x32, 0x80, 0x20, - 0x12, 0x1a, 0x84, 0x19, 0x15, 0x11, 0x90, 0xbe, 0x02, 0x9e, 0x01, 0xb9, 0x48, 0x90, 0x84, 0x4a, - 0xc2, 0x9d, 0x9a, 0x12, 0x10, 0x03, 0x80, 0x4c, 0x27, 0x8c, 0x11, 0xa0, 0x2b, 0x12, 0x00, 0x11, - 0xa9, 0xee, 0x0a, 0x80, 0x22, 0x20, 0x12, 0x23, 0xa0, 0xcf, 0x71, 0x13, 0x83, 0xae, 0x20, 0x00, - 0xd9, 0x0b, 0x92, 0x8a, 0x22, 0x02, 0xb8, 0x6a, 0x92, 0xba, 0x0c, 0x88, 0x27, 0x08, 0xb9, 0x81, - 0x8a, 0x54, 0xf8, 0x19, 0x88, 0x88, 0x61, 0x83, 0x9b, 0xb8, 0x58, 0xb2, 0x9e, 0x01, 0x89, 0xc0, - 0x1c, 0x22, 0x81, 0x08, 0x8b, 0xa1, 0x70, 0x25, 0xb1, 0x9d, 0x10, 0x05, 0x9a, 0x34, 0x91, 0x09, - 0x93, 0x8c, 0x81, 0xa9, 0x73, 0x00, 0xf0, 0x9b, 0x31, 0xa3, 0x89, 0xdb, 0x65, 0x01, 0x89, 0x88, - 0xba, 0x29, 0x24, 0xc8, 0x9a, 0x18, 0xa1, 0x1b, 0x36, 0xa2, 0x8e, 0x90, 0x38, 0x93, 0xac, 0x08, - 0x88, 0x00, 0x30, 0x10, 0x16, 0xc9, 0x0e, 0x25, 0x22, 0xa9, 0xb8, 0x89, 0x48, 0x35, 0x80, 0xbd, - 0x28, 0xea, 0x99, 0xbb, 0x54, 0xa8, 0xbb, 0x8a, 0x20, 0x81, 0x31, 0x33, 0x16, 0x1a, 0x26, 0x13, - 0x09, 0xb1, 0x39, 0x02, 0x08, 0x43, 0x34, 0xc9, 0xf0, 0xaf, 0xa9, 0x10, 0x73, 0xa1, 0x99, 0xa8, - 0x31, 0xca, 0x41, 0x12, 0xa8, 0x51, 0x91, 0x02, 0xae, 0x89, 0x34, 0x20, 0x84, 0x98, 0x32, 0xe0, - 0x8b, 0x09, 0x53, 0x82, 0x0a, 0xfa, 0xaa, 0xba, 0x19, 0xb8, 0x19, 0x31, 0x54, 0x93, 0x70, 0xc2, - 0x0a, 0x91, 0xbb, 0x52, 0x21, 0x43, 0x02, 0x20, 0xfb, 0xae, 0x89, 0x01, 0x98, 0x91, 0x4a, 0x84, - 0x09, 0xba, 0x08, 0xba, 0x74, 0xa8, 0x20, 0x43, 0x01, 0x8a, 0xc1, 0xae, 0x21, 0x82, 0xcc, 0x30, - 0x53, 0x14, 0x00, 0xaa, 0x08, 0x10, 0x21, 0xb3, 0xcf, 0x20, 0x81, 0x18, 0xda, 0xbb, 0x31, 0x08, - 0x15, 0xa8, 0xae, 0x91, 0x0b, 0x55, 0x82, 0x80, 0x08, 0x42, 0x03, 0x1a, 0x37, 0xe9, 0x0a, 0xb0, - 0x39, 0x04, 0x18, 0xa1, 0xbd, 0x0b, 0x80, 0x32, 0xfc, 0x8c, 0x99, 0x32, 0xa8, 0x09, 0x02, 0xbb, - 0x19, 0x03, 0x10, 0x73, 0x16, 0x28, 0x01, 0x04, 0x20, 0x40, 0x17, 0x90, 0xb9, 0x29, 0x82, 0x35, - 0xc9, 0xcd, 0xaa, 0x9a, 0xb8, 0x10, 0xaa, 0x08, 0x82, 0x62, 0x82, 0x8b, 0x77, 0x05, 0x89, 0x90, - 0x09, 0x11, 0x30, 0x92, 0x9a, 0x89, 0x83, 0x52, 0xde, 0x28, 0xa9, 0x0a, 0x11, 0x23, 0xc9, 0xbe, - 0x3a, 0x27, 0x99, 0x89, 0x20, 0x33, 0xf9, 0x0a, 0x90, 0x08, 0x55, 0x83, 0xba, 0x8b, 0x02, 0x08, - 0xb8, 0x32, 0x33, 0xfc, 0x41, 0x90, 0xa9, 0xaa, 0x09, 0x02, 0xc1, 0xcf, 0x40, 0x91, 0x0b, 0x83, - 0x0a, 0x34, 0x98, 0xb8, 0x9d, 0x41, 0x33, 0xb5, 0x9f, 0x23, 0xc0, 0x19, 0x01, 0x20, 0xc0, 0x8a, - 0x23, 0x09, 0x14, 0xea, 0x38, 0xa1, 0x48, 0x81, 0x99, 0xa9, 0x1d, 0x05, 0xaa, 0x60, 0x33, 0x17, - 0xaa, 0x80, 0x89, 0x90, 0x0d, 0x92, 0x1c, 0x12, 0x80, 0x28, 0xea, 0x18, 0x92, 0xbd, 0x42, 0x34, - 0xed, 0x09, 0x18, 0x23, 0xd9, 0x19, 0x90, 0x98, 0x88, 0x30, 0x82, 0xa0, 0x9c, 0x75, 0x91, 0x21, - 0x00, 0x01, 0x00, 0xb9, 0xb9, 0xbf, 0x12, 0x9b, 0xcb, 0x08, 0x35, 0xfa, 0x28, 0xb8, 0x0c, 0x17, - 0xaa, 0x32, 0x92, 0x0b, 0x01, 0x41, 0x04, 0xbc, 0x30, 0x12, 0x12, 0xac, 0xbc, 0x41, 0x04, 0x1a, - 0xb1, 0x2a, 0xea, 0x30, 0x90, 0x42, 0xaa, 0x16, 0xcf, 0x10, 0x80, 0x31, 0x04, 0x88, 0xdc, 0x28, - 0x03, 0x31, 0xb0, 0x9c, 0x31, 0x83, 0x2c, 0x95, 0xae, 0x30, 0xa8, 0x48, 0xb0, 0x9b, 0xac, 0x31, - 0x32, 0x92, 0xde, 0x0b, 0x82, 0x8a, 0x81, 0xd8, 0x48, 0xa8, 0x28, 0x16, 0x1a, 0x16, 0x88, 0x11, - 0x88, 0xb9, 0x1b, 0x65, 0x94, 0x0b, 0x81, 0x9c, 0x91, 0x0d, 0xb8, 0x89, 0x00, 0x33, 0xbc, 0x42, - 0x90, 0x71, 0x16, 0xb8, 0x29, 0xb8, 0x3a, 0x27, 0xa0, 0x99, 0x31, 0x91, 0xd9, 0x89, 0xba, 0x40, - 0x24, 0x62, 0x83, 0xda, 0x0a, 0xa8, 0x40, 0xa0, 0x08, 0xc9, 0x39, 0x53, 0xa2, 0x8c, 0xba, 0x52, - 0x91, 0x08, 0xc9, 0x0a, 0xe9, 0x30, 0x81, 0x22, 0x42, 0x88, 0xd2, 0x8e, 0x12, 0x31, 0x00, 0x80, - 0x99, 0xab, 0xdf, 0xa9, 0x1a, 0x98, 0x58, 0xb2, 0x1a, 0x38, 0x07, 0xad, 0x28, 0x11, 0x22, 0x43, - 0xe0, 0x9c, 0x18, 0x83, 0x0d, 0x16, 0x08, 0x01, 0x20, 0x03, 0xa8, 0xbe, 0xcb, 0x30, 0x13, 0x32, - 0xf9, 0x1b, 0x91, 0x1b, 0x12, 0xb1, 0x8e, 0x54, 0x01, 0xba, 0x09, 0x32, 0x22, 0xa8, 0x30, 0xe8, - 0x29, 0xa3, 0xaf, 0x08, 0x62, 0xa0, 0x30, 0xb8, 0x0b, 0x11, 0xd8, 0xad, 0xba, 0xaa, 0x19, 0x55, - 0x22, 0xc0, 0x8b, 0x40, 0x84, 0x48, 0x01, 0x00, 0x22, 0x49, 0xa5, 0x9e, 0xa9, 0xaa, 0x51, 0x05, - 0x20, 0x91, 0xdd, 0x09, 0x00, 0xa8, 0x09, 0x10, 0xd0, 0x9d, 0x32, 0x34, 0x22, 0xd9, 0x08, 0x99, - 0x10, 0x21, 0x92, 0x8c, 0xb8, 0x50, 0x02, 0x10, 0x05, 0xce, 0x29, 0x03, 0x92, 0xbe, 0x38, 0x00, - 0x20, 0x33, 0x9a, 0xfc, 0x3a, 0x14, 0x88, 0x19, 0x12, 0x21, 0x64, 0xa1, 0x29, 0xfb, 0x8b, 0x80, - 0x41, 0x01, 0x18, 0x02, 0x30, 0xb1, 0x2a, 0xa7, 0xbf, 0x90, 0x10, 0xea, 0x09, 0xa9, 0x38, 0x84, - 0xbc, 0x0b, 0x34, 0x02, 0x98, 0x42, 0x90, 0xbe, 0x42, 0x12, 0x18, 0x22, 0x47, 0x81, 0xa9, 0x21, - 0x11, 0xd8, 0x0a, 0x98, 0xef, 0x19, 0x80, 0x80, 0x9a, 0x80, 0x08, 0xa0, 0x9a, 0x49, 0x37, 0x91, - 0x29, 0x93, 0x9d, 0x42, 0x53, 0xa1, 0x19, 0x91, 0x01, 0xaf, 0x08, 0x18, 0x03, 0x39, 0x07, 0x9b, - 0xa9, 0x0b, 0x12, 0xfa, 0x4b, 0x83, 0x31, 0x82, 0xaf, 0x09, 0x61, 0x03, 0x18, 0xb0, 0x8c, 0x08, - 0x12, 0x91, 0x4a, 0xb2, 0x40, 0x00, 0x55, 0xe2, 0x8c, 0x81, 0xb9, 0x9f, 0x89, 0x30, 0x04, 0x90, - 0x18, 0x91, 0xab, 0x10, 0x08, 0xe0, 0x1a, 0x43, 0x03, 0xa9, 0x19, 0x34, 0xb2, 0xcf, 0x08, 0x00, - 0xb0, 0xac, 0x62, 0x92, 0x0c, 0x12, 0x80, 0x31, 0xb8, 0x50, 0x43, 0xb0, 0x78, 0x83, 0x11, 0xda, - 0x08, 0x8a, 0x13, 0x70, 0x85, 0xcb, 0x08, 0x01, 0x18, 0x12, 0x20, 0x22, 0xfe, 0x9a, 0x19, 0x01, - 0x10, 0x23, 0x41, 0xe8, 0xbb, 0x10, 0x88, 0x10, 0x41, 0x16, 0x08, 0x81, 0xce, 0x9a, 0x00, 0x23, - 0xc8, 0x0a, 0x43, 0x80, 0x22, 0x98, 0xdc, 0x8b, 0x10, 0x33, 0xf8, 0x9b, 0x01, 0x3b, 0x84, 0xed, - 0x19, 0x18, 0x33, 0x53, 0xb9, 0x88, 0x58, 0x92, 0x9b, 0x80, 0x8a, 0x03, 0xcd, 0x48, 0x02, 0x10, - 0xa3, 0x6b, 0x11, 0x87, 0x9b, 0x00, 0x88, 0xba, 0x73, 0x12, 0x08, 0x02, 0x10, 0xea, 0xac, 0x42, - 0x24, 0x12, 0x11, 0xba, 0x28, 0xca, 0x52, 0xea, 0xbb, 0x09, 0x8a, 0x81, 0x10, 0x01, 0xbc, 0xbc, - 0x12, 0x72, 0xe2, 0x0a, 0x31, 0x91, 0x1a, 0xb3, 0x4b, 0x82, 0xb9, 0x78, 0x34, 0xe8, 0x8b, 0x10, - 0x21, 0xb1, 0x9d, 0x41, 0x80, 0x92, 0xaf, 0x18, 0x98, 0x89, 0x10, 0x0a, 0xe0, 0x58, 0x33, 0xa8, - 0x88, 0x1a, 0x53, 0x14, 0x89, 0x99, 0xb1, 0xcf, 0x20, 0x53, 0x03, 0x21, 0xd8, 0x9c, 0x20, 0x02, - 0x11, 0xfc, 0x0b, 0x99, 0x11, 0x18, 0x90, 0x62, 0x21, 0xa0, 0x9a, 0x59, 0x37, 0x10, 0xa0, 0x1a, - 0xc8, 0x20, 0x21, 0x13, 0x28, 0xf3, 0x8f, 0x98, 0xa9, 0x39, 0x84, 0x98, 0x28, 0xa8, 0xcb, 0x0d, - 0x44, 0x82, 0xba, 0xba, 0x99, 0x28, 0xc1, 0x0c, 0x81, 0x03, 0x8d, 0x81, 0xa1, 0xbf, 0x10, 0x40, - 0x37, 0xa8, 0x8b, 0x22, 0x93, 0xbd, 0xac, 0x11, 0x10, 0x35, 0x11, 0x88, 0x88, 0xc9, 0x19, 0x34, - 0xe9, 0x38, 0x21, 0x06, 0x9a, 0x10, 0x81, 0x8c, 0x44, 0x90, 0x2a, 0x47, 0x81, 0x19, 0x11, 0xc8, - 0x4a, 0xc8, 0xb9, 0x8d, 0x12, 0x31, 0xc8, 0xba, 0x4b, 0x16, 0x01, 0xba, 0x9a, 0x32, 0xa0, 0x41, - 0x91, 0x82, 0xaf, 0x82, 0xaa, 0x8b, 0x80, 0x42, 0x90, 0x72, 0xf8, 0x8f, 0x01, 0x88, 0x88, 0x21, - 0x82, 0xca, 0x9b, 0x31, 0x13, 0x80, 0xb8, 0xbe, 0x01, 0x09, 0xf9, 0x2b, 0x25, 0x22, 0x81, 0x33, - 0xa9, 0xdc, 0x4a, 0x06, 0x90, 0xa8, 0xac, 0x51, 0x03, 0x10, 0x10, 0x81, 0x88, 0x33, 0x50, 0x85, - 0xab, 0xb9, 0x89, 0x73, 0x17, 0x98, 0x99, 0x28, 0xb0, 0x3a, 0x03, 0xdd, 0x89, 0x29, 0xd2, 0x9f, - 0x08, 0x28, 0x12, 0x88, 0x09, 0x90, 0x68, 0xb0, 0x89, 0x1a, 0x18, 0xf3, 0x3b, 0x81, 0x31, 0x16, - 0x0b, 0x94, 0x9c, 0x11, 0x80, 0x99, 0xba, 0xaf, 0x18, 0x03, 0x8c, 0xf9, 0x39, 0x91, 0xab, 0x34, - 0x41, 0x81, 0x48, 0x27, 0xa8, 0x00, 0x01, 0x38, 0x95, 0x1a, 0xa2, 0xaa, 0x9b, 0x52, 0xf8, 0x8e, - 0x12, 0xa1, 0xad, 0x08, 0x23, 0x98, 0x31, 0x80, 0x18, 0xb0, 0x0d, 0x02, 0x03, 0x79, 0x47, 0xb9, - 0x19, 0x83, 0x88, 0x00, 0x51, 0xc2, 0x8c, 0x88, 0x52, 0xc1, 0xad, 0x20, 0xa9, 0x1c, 0x43, 0x83, - 0xbd, 0x19, 0x03, 0x99, 0xa8, 0x1a, 0x34, 0xc2, 0x2b, 0xc9, 0x39, 0x35, 0x12, 0x12, 0xca, 0x08, - 0xbe, 0x98, 0x49, 0x82, 0x70, 0x35, 0xb8, 0xac, 0xba, 0x8a, 0x22, 0xb8, 0x3b, 0x82, 0x73, 0x05, - 0x00, 0xac, 0x41, 0x23, 0xb8, 0x31, 0x99, 0x34, 0xc2, 0xae, 0x89, 0xa0, 0x2b, 0x11, 0x12, 0x94, - 0x1a, 0x44, 0x81, 0x23, 0xcc, 0xac, 0x98, 0xbc, 0x32, 0x90, 0x9f, 0x81, 0xba, 0x63, 0x32, 0x22, - 0x37, 0xa9, 0x28, 0x02, 0xfa, 0x0a, 0x43, 0x01, 0xf9, 0x9b, 0x11, 0x88, 0x31, 0x33, 0xba, 0xfa, - 0xac, 0x09, 0xb1, 0x38, 0x15, 0xa8, 0x30, 0xc0, 0x28, 0xce, 0x41, 0x12, 0xa1, 0xeb, 0x2a, 0x14, - 0x00, 0x19, 0x14, 0xeb, 0x28, 0x13, 0x99, 0x30, 0xd9, 0x39, 0x24, 0xb9, 0xcd, 0x99, 0x20, 0x24, - 0xd8, 0x0a, 0x35, 0x12, 0x08, 0xd0, 0x0b, 0x90, 0xb9, 0x9b, 0x19, 0x27, 0x61, 0x92, 0x09, 0x9a, - 0x01, 0x30, 0x44, 0x22, 0xdb, 0xba, 0x18, 0xe9, 0x9a, 0xbd, 0x51, 0x02, 0x30, 0x92, 0x0a, 0x53, - 0xd9, 0xdb, 0x39, 0x91, 0x28, 0x03, 0x0b, 0xd2, 0x9e, 0x90, 0x00, 0x62, 0x02, 0x18, 0x81, 0x89, - 0x63, 0xb8, 0x8c, 0xaa, 0x11, 0x31, 0x14, 0xb0, 0x0a, 0x92, 0xdf, 0x09, 0xb8, 0x8b, 0x54, 0xa0, - 0x9a, 0xbb, 0x33, 0x20, 0x67, 0x81, 0x8a, 0x20, 0x90, 0x30, 0x11, 0xd0, 0x5a, 0x14, 0x88, 0x0a, - 0x43, 0xe9, 0x18, 0xca, 0x8a, 0x80, 0x20, 0x10, 0xc2, 0x8d, 0xb9, 0x10, 0x32, 0xf8, 0x5b, 0x14, - 0x10, 0x21, 0x91, 0x48, 0x83, 0x8b, 0xa0, 0x30, 0x08, 0xfa, 0x8f, 0x08, 0x81, 0xda, 0x9d, 0x10, - 0x11, 0xa8, 0x18, 0xba, 0x00, 0x63, 0x80, 0x13, 0x09, 0x99, 0x55, 0xd9, 0x31, 0x21, 0x03, 0x58, - 0x92, 0x19, 0xc8, 0xaf, 0xa9, 0x0b, 0x91, 0x0a, 0x81, 0x98, 0x3a, 0x37, 0x8a, 0x83, 0xf9, 0x2d, - 0x17, 0x98, 0x80, 0x9a, 0x30, 0x14, 0x91, 0xfb, 0x8a, 0x12, 0x18, 0x82, 0x73, 0x01, 0x18, 0x91, - 0xac, 0x28, 0xa1, 0x8b, 0x34, 0x05, 0xad, 0x31, 0x98, 0xa9, 0x9d, 0x29, 0xa3, 0x40, 0xf9, 0x9b, - 0x20, 0x14, 0x98, 0xbb, 0x60, 0x83, 0x18, 0xa9, 0x42, 0x34, 0x00, 0xd8, 0xac, 0x09, 0xa8, 0x70, - 0x14, 0xcc, 0x88, 0x98, 0x10, 0x81, 0x9b, 0xb9, 0xda, 0xaa, 0x9e, 0x62, 0x02, 0x32, 0x90, 0x01, - 0x89, 0xbc, 0x55, 0x31, 0x24, 0x02, 0xdb, 0x09, 0x88, 0x88, 0xcb, 0x99, 0x30, 0x90, 0x18, 0xbc, - 0x92, 0x74, 0xc3, 0x9a, 0x40, 0xa2, 0x21, 0xab, 0x35, 0x32, 0xf9, 0x0b, 0xda, 0x38, 0x13, 0x18, - 0x01, 0xb9, 0x0c, 0x27, 0xd8, 0xab, 0x51, 0x01, 0x00, 0x11, 0xba, 0x00, 0x99, 0x21, 0xb8, 0x6a, - 0x84, 0x1a, 0x32, 0xd0, 0xeb, 0x8d, 0x81, 0x8a, 0x91, 0x9a, 0x89, 0x41, 0x84, 0xad, 0x42, 0x84, - 0xbd, 0x20, 0xa8, 0x98, 0x20, 0x63, 0x83, 0x9c, 0x45, 0x81, 0xba, 0x9a, 0x01, 0x39, 0x15, 0xa0, - 0x88, 0x19, 0x26, 0xc8, 0x1b, 0x06, 0x0b, 0x33, 0x04, 0xca, 0x28, 0x98, 0x90, 0x99, 0x78, 0x16, - 0xba, 0x89, 0x00, 0x08, 0xc2, 0x9e, 0x00, 0x20, 0x01, 0x42, 0xb8, 0x0c, 0x84, 0x19, 0x08, 0xd8, - 0x40, 0xf0, 0x8c, 0x43, 0x90, 0x10, 0x23, 0xa9, 0x88, 0x0b, 0xb0, 0xcc, 0x18, 0xda, 0x12, 0x39, - 0xc3, 0xbe, 0x9b, 0x98, 0xbd, 0x0a, 0x43, 0xa8, 0x10, 0x21, 0x73, 0x57, 0x82, 0xaa, 0x10, 0x02, - 0x09, 0x81, 0x12, 0xcd, 0x20, 0x08, 0x90, 0xc9, 0x9c, 0xda, 0x1a, 0x34, 0xd9, 0x9c, 0x81, 0x52, - 0x00, 0x91, 0x18, 0xcb, 0x73, 0x02, 0x08, 0x32, 0x14, 0x18, 0x82, 0xab, 0x00, 0x42, 0xe8, 0x39, - 0x93, 0xbe, 0x30, 0x28, 0xd3, 0x9f, 0x89, 0x88, 0x98, 0xcc, 0xab, 0x51, 0x82, 0x98, 0x0a, 0x11, - 0x00, 0x88, 0x40, 0x06, 0xbc, 0x40, 0x03, 0xa8, 0x09, 0x31, 0x57, 0x82, 0x98, 0xba, 0x20, 0xa1, - 0x88, 0xeb, 0xaa, 0x19, 0x01, 0xa8, 0xbe, 0xbd, 0x39, 0x47, 0x23, 0x10, 0xfa, 0x8b, 0x01, 0x11, - 0x33, 0x83, 0xba, 0x1b, 0x44, 0x34, 0x90, 0xcb, 0x63, 0x00, 0x90, 0x9d, 0xaa, 0x20, 0x01, 0x00, - 0x99, 0xcf, 0x88, 0x89, 0x08, 0xb9, 0xbc, 0x71, 0x13, 0x80, 0x31, 0x33, 0xa1, 0x18, 0x24, 0x09, - 0x57, 0xa8, 0x88, 0xcb, 0x89, 0xb9, 0x88, 0xad, 0x19, 0x36, 0xc9, 0x9a, 0xbc, 0xbb, 0x50, 0x13, - 0x98, 0x32, 0xc9, 0x2a, 0x16, 0xaa, 0x30, 0x54, 0x25, 0xa0, 0xac, 0x20, 0x99, 0x01, 0x8b, 0x15, - 0x8d, 0x22, 0xa8, 0x1a, 0x47, 0xa0, 0x1a, 0xa1, 0x41, 0xc9, 0x00, 0xaa, 0x32, 0x80, 0x80, 0xbb, - 0x80, 0x9e, 0x35, 0x47, 0xd9, 0x99, 0x10, 0x88, 0x42, 0x82, 0x00, 0x98, 0xc8, 0x1b, 0xb1, 0x74, - 0x92, 0xcb, 0x9a, 0x89, 0x08, 0x82, 0x8d, 0x42, 0xb0, 0x0a, 0x23, 0x10, 0x50, 0x37, 0x80, 0x9a, - 0x91, 0x0d, 0xa1, 0x9c, 0x89, 0x80, 0x51, 0xea, 0x8a, 0x08, 0x72, 0x23, 0x00, 0xcc, 0xa9, 0x18, - 0xca, 0x18, 0x00, 0x31, 0x12, 0xe0, 0x3a, 0x93, 0x81, 0x98, 0x0b, 0x67, 0x10, 0x03, 0x9a, 0xbc, - 0x80, 0x72, 0x90, 0x12, 0xdb, 0x20, 0x32, 0xb2, 0xbe, 0x9a, 0x28, 0x45, 0xa1, 0x18, 0xda, 0x20, - 0x73, 0x12, 0x90, 0xab, 0x10, 0x42, 0x83, 0xcb, 0xaa, 0xaa, 0xad, 0x98, 0x51, 0xd9, 0x8a, 0xca, - 0x29, 0x04, 0x80, 0x18, 0xe2, 0x9e, 0x31, 0x25, 0x90, 0x9a, 0x00, 0x12, 0x40, 0x15, 0x11, 0xab, - 0x89, 0x74, 0xb0, 0xab, 0xab, 0x81, 0xae, 0x20, 0x12, 0x99, 0xea, 0x0a, 0x81, 0x88, 0x12, 0x58, - 0x16, 0x22, 0x98, 0x00, 0x01, 0x73, 0x07, 0x9a, 0x01, 0x11, 0xba, 0x9a, 0xdb, 0x0b, 0x92, 0x8c, - 0x28, 0xc3, 0x8f, 0x32, 0xa9, 0x23, 0x9d, 0x13, 0x22, 0xb9, 0x42, 0x08, 0x57, 0x01, 0xb9, 0x8a, - 0x01, 0xdb, 0x10, 0x99, 0x90, 0x10, 0xa0, 0x8a, 0x19, 0xa3, 0xbc, 0x0d, 0x27, 0xb8, 0x19, 0x81, - 0x88, 0x09, 0xf0, 0x0e, 0x12, 0x22, 0x13, 0xfc, 0x09, 0x44, 0xa1, 0x18, 0x91, 0x09, 0x01, 0x9b, - 0x67, 0x88, 0xc0, 0x8b, 0x00, 0x82, 0x21, 0x00, 0xd9, 0x9b, 0x89, 0xc8, 0x9e, 0x42, 0x81, 0x20, - 0x91, 0x49, 0xf2, 0x1a, 0x23, 0x91, 0x89, 0x41, 0x03, 0x32, 0xb0, 0x39, 0x07, 0xcd, 0x9a, 0x80, - 0x9a, 0x22, 0x8a, 0xd0, 0xec, 0x9c, 0x00, 0x81, 0x08, 0x32, 0x11, 0x90, 0x52, 0x88, 0x21, 0x50, - 0x57, 0x11, 0xb9, 0x19, 0x01, 0x73, 0x92, 0xa9, 0xaa, 0x88, 0x99, 0x00, 0xea, 0xbb, 0xbd, 0xaa, - 0x60, 0x14, 0xa9, 0x9a, 0x00, 0xb0, 0x8b, 0x56, 0x02, 0x21, 0x32, 0x83, 0x11, 0x30, 0x27, 0x80, - 0xa8, 0xcb, 0xdf, 0x19, 0x32, 0x80, 0xc9, 0x8c, 0x82, 0x19, 0x83, 0x18, 0x20, 0xb9, 0xd0, 0x9f, - 0x81, 0x60, 0x02, 0x28, 0xa1, 0xdb, 0x0b, 0x42, 0x82, 0x99, 0x80, 0xab, 0x15, 0xae, 0x63, 0x03, - 0xbc, 0xa8, 0x0a, 0x22, 0x21, 0x27, 0xb8, 0xdc, 0x1a, 0x01, 0x80, 0x89, 0x83, 0x8d, 0x91, 0x30, - 0xc0, 0x60, 0x22, 0x03, 0x10, 0xd9, 0x0a, 0x63, 0x03, 0xac, 0x20, 0x24, 0xa9, 0xab, 0xd8, 0x2a, - 0x02, 0xa8, 0xbb, 0xaf, 0x63, 0x81, 0x28, 0xe8, 0x09, 0x11, 0x10, 0x34, 0x91, 0xdc, 0x30, 0x10, - 0x43, 0xb0, 0xae, 0x18, 0x21, 0x8a, 0x64, 0x81, 0xcb, 0x9b, 0x88, 0x18, 0xf9, 0x8b, 0x22, 0xa1, - 0x8d, 0xa8, 0x52, 0x32, 0xb0, 0x8a, 0x43, 0x90, 0x32, 0x26, 0xaa, 0xdb, 0x38, 0x83, 0x42, 0x22, - 0xf0, 0x9d, 0x00, 0x99, 0x98, 0x8c, 0x42, 0x24, 0x01, 0x98, 0x8b, 0xc8, 0x51, 0xc9, 0x59, 0x14, - 0x11, 0xa8, 0xaa, 0x39, 0x26, 0x12, 0x9a, 0x9a, 0xc0, 0x9b, 0xaa, 0xd8, 0x8b, 0x80, 0xde, 0x28, - 0x43, 0x20, 0x94, 0x1b, 0x14, 0x08, 0xc8, 0x29, 0x82, 0xba, 0x4a, 0x37, 0x90, 0xb9, 0x9e, 0x99, - 0x20, 0x13, 0xe9, 0x09, 0xbc, 0xa9, 0x49, 0xa1, 0x20, 0xba, 0x08, 0x55, 0x33, 0xb1, 0x0b, 0x09, - 0x41, 0x06, 0x09, 0x25, 0x00, 0x99, 0xcb, 0x40, 0x81, 0x08, 0x56, 0x90, 0xaa, 0xbb, 0xcc, 0x0a, - 0x42, 0x34, 0x92, 0x8b, 0x01, 0x2a, 0x27, 0xba, 0x99, 0xc0, 0x1a, 0x12, 0x15, 0xbd, 0x30, 0x24, - 0x20, 0xa8, 0xa0, 0xbc, 0x1a, 0x37, 0x12, 0x10, 0xd1, 0xae, 0x99, 0x01, 0xab, 0xa9, 0x08, 0x70, - 0xd1, 0x0a, 0xa1, 0x28, 0x02, 0x28, 0x77, 0x84, 0x90, 0x9b, 0x98, 0x31, 0x22, 0x90, 0xaa, 0x55, - 0x81, 0xdd, 0x09, 0x10, 0x10, 0x90, 0xda, 0x8d, 0x11, 0x80, 0x0b, 0xa0, 0x2b, 0x27, 0x23, 0x90, - 0xbb, 0x01, 0x10, 0x30, 0x24, 0x13, 0x70, 0x04, 0x88, 0xbb, 0x18, 0x3a, 0xd3, 0x8c, 0xec, 0x09, - 0x21, 0xa0, 0xcc, 0x09, 0xb8, 0x18, 0x34, 0xfb, 0x0a, 0x40, 0x82, 0x20, 0x51, 0x27, 0x82, 0xb9, - 0x18, 0x43, 0x90, 0x0a, 0xd0, 0x8c, 0x20, 0xb0, 0x28, 0xb8, 0xac, 0xb9, 0x8d, 0x00, 0xc9, 0x9a, - 0x8a, 0x90, 0x41, 0x21, 0x34, 0x77, 0x98, 0x98, 0x29, 0x24, 0x23, 0x34, 0x90, 0xab, 0x90, 0x1b, - 0xf0, 0xaf, 0x00, 0x01, 0x31, 0x94, 0xbc, 0xac, 0x18, 0x23, 0x98, 0xca, 0x8a, 0x0a, 0x37, 0xc9, - 0x2a, 0x26, 0x02, 0x00, 0xba, 0x10, 0xb9, 0xa9, 0xd8, 0x8c, 0x21, 0x81, 0x2b, 0x67, 0x81, 0x18, - 0x98, 0x21, 0x00, 0xa9, 0xec, 0x29, 0xb2, 0xbf, 0x08, 0x42, 0x12, 0x90, 0x89, 0x63, 0x02, 0x43, - 0x80, 0xcb, 0x09, 0xc0, 0x1b, 0x91, 0x89, 0xbd, 0x28, 0x74, 0xa2, 0x9a, 0x9a, 0x34, 0x21, 0xb9, - 0x19, 0xcc, 0x63, 0xb0, 0x9f, 0x10, 0x80, 0x09, 0x11, 0x00, 0xba, 0x72, 0xa1, 0x18, 0x42, 0x91, - 0xb9, 0x9e, 0x13, 0x89, 0xa8, 0x58, 0x14, 0x90, 0xdf, 0x01, 0x00, 0x00, 0x91, 0xae, 0x08, 0x20, - 0x12, 0x00, 0x51, 0x14, 0xc8, 0x39, 0x24, 0xc9, 0xae, 0x99, 0x19, 0x11, 0x31, 0x02, 0x98, 0x79, - 0xa2, 0x09, 0xa9, 0x99, 0x08, 0x53, 0x73, 0x04, 0x98, 0xae, 0x31, 0x01, 0xc9, 0x40, 0x92, 0xa8, - 0x19, 0x90, 0x20, 0x22, 0x26, 0x88, 0xba, 0x8c, 0xe1, 0x0b, 0x54, 0xa2, 0x8d, 0x08, 0x81, 0x29, - 0x08, 0xf9, 0xbc, 0x18, 0x98, 0x73, 0x02, 0xba, 0xba, 0x20, 0x90, 0xba, 0x10, 0x41, 0x05, 0x63, - 0x91, 0x29, 0x24, 0x90, 0x8a, 0x34, 0xf8, 0x0b, 0x92, 0xba, 0x1a, 0x91, 0x12, 0x5b, 0xb4, 0x9d, - 0x8b, 0x13, 0x29, 0x16, 0x88, 0xeb, 0x29, 0x64, 0x02, 0x80, 0xaa, 0x98, 0x11, 0x72, 0x04, 0x99, - 0x08, 0x09, 0x01, 0xeb, 0x88, 0x0a, 0x04, 0xab, 0x89, 0xb8, 0x38, 0x03, 0xf9, 0x1c, 0x82, 0x73, - 0x12, 0xcb, 0xaa, 0x88, 0x51, 0xc1, 0x0a, 0x32, 0xb8, 0xa9, 0x0e, 0x36, 0x03, 0x10, 0x91, 0xa9, - 0x09, 0xfb, 0xcb, 0xab, 0x18, 0x88, 0x31, 0x22, 0x53, 0xfa, 0x9f, 0x10, 0x12, 0x81, 0x00, 0x20, - 0x35, 0x12, 0x80, 0xbb, 0x58, 0x83, 0x89, 0xad, 0x08, 0x91, 0xbf, 0x11, 0x11, 0xb8, 0xaa, 0x52, - 0x02, 0xd9, 0x9b, 0x53, 0xd8, 0x58, 0x15, 0x98, 0x89, 0x98, 0x29, 0x93, 0x0a, 0x32, 0xf9, 0x3b, - 0x17, 0xa1, 0x89, 0x11, 0xa0, 0xcf, 0x20, 0x43, 0x91, 0xea, 0x9b, 0x01, 0x11, 0x82, 0xb9, 0x9c, - 0x88, 0x41, 0xc0, 0x49, 0x02, 0x13, 0x73, 0x02, 0x00, 0xa8, 0x29, 0xfa, 0x0c, 0x30, 0x81, 0x90, - 0xce, 0x19, 0x01, 0x18, 0x98, 0xa8, 0xae, 0x09, 0x98, 0x30, 0x40, 0x15, 0x18, 0xa1, 0x50, 0x25, - 0x80, 0xa8, 0x72, 0xb0, 0xcb, 0x1a, 0x35, 0xa0, 0x42, 0xc9, 0x8a, 0x89, 0x51, 0x14, 0x80, 0xcc, - 0x88, 0x21, 0x00, 0xca, 0x28, 0x12, 0x23, 0x30, 0x37, 0xca, 0x9a, 0x20, 0xb0, 0x30, 0x90, 0xba, - 0xaa, 0xcf, 0xad, 0x80, 0x2b, 0x05, 0xca, 0x29, 0xd0, 0xab, 0x0a, 0x01, 0x19, 0x92, 0x73, 0x17, - 0x00, 0xab, 0x31, 0x42, 0x26, 0x90, 0x89, 0x00, 0x32, 0x00, 0xc8, 0xbb, 0x0a, 0x98, 0xf9, 0x8e, - 0x11, 0xa9, 0x89, 0x91, 0x09, 0xb8, 0xfb, 0x1b, 0x37, 0x23, 0xc8, 0x09, 0x41, 0x82, 0x80, 0x22, - 0x31, 0x15, 0x21, 0xd0, 0x9e, 0x01, 0xcb, 0x89, 0xaa, 0x52, 0x16, 0xc9, 0x9a, 0xcb, 0x19, 0x02, - 0x11, 0x24, 0x90, 0x29, 0xb0, 0x89, 0x72, 0x84, 0x22, 0x72, 0x82, 0xa9, 0xab, 0x9b, 0x01, 0xdb, - 0x08, 0x00, 0x24, 0xca, 0xad, 0xba, 0x51, 0xdb, 0x20, 0x11, 0x44, 0xc0, 0x19, 0x02, 0x31, 0x23, - 0xd0, 0x9d, 0x50, 0x13, 0xca, 0x18, 0xa8, 0x29, 0xa3, 0xad, 0x9a, 0x10, 0x20, 0x02, 0x37, 0xbb, - 0x22, 0xa8, 0x90, 0x9f, 0x00, 0x38, 0x77, 0x82, 0x9a, 0xa9, 0x30, 0x92, 0x9b, 0x13, 0xeb, 0xac, - 0x9a, 0x53, 0x80, 0x20, 0xc9, 0x8a, 0x31, 0x24, 0x42, 0x02, 0xb9, 0xaf, 0x80, 0x39, 0x13, 0xd9, - 0xbd, 0xbb, 0x99, 0x73, 0x15, 0x08, 0x00, 0x02, 0x98, 0x88, 0x0a, 0x27, 0xb8, 0x6a, 0x04, 0x09, - 0xa1, 0x0a, 0x33, 0xb1, 0xaf, 0xaa, 0xcb, 0x28, 0x03, 0xfa, 0xaa, 0xbb, 0x31, 0x32, 0x27, 0x00, - 0xa0, 0x9b, 0x70, 0x24, 0x02, 0x90, 0xbb, 0x11, 0x48, 0x83, 0x9a, 0x62, 0xd8, 0xbd, 0x8a, 0x14, - 0xb0, 0x9b, 0x22, 0x81, 0xb0, 0x20, 0xbd, 0x54, 0x10, 0x23, 0x32, 0x81, 0x53, 0x21, 0xda, 0x48, - 0x27, 0xa8, 0x89, 0xa8, 0xbe, 0x89, 0x18, 0xa1, 0xad, 0x42, 0x02, 0xa9, 0xb9, 0xac, 0xb8, 0x79, - 0x92, 0xb9, 0x48, 0x25, 0x20, 0xc0, 0x0b, 0x61, 0x15, 0x81, 0x08, 0x80, 0xaa, 0x8b, 0x11, 0x03, - 0xcf, 0x08, 0x81, 0xa8, 0xbc, 0x8a, 0xd8, 0x8a, 0xaa, 0x29, 0x47, 0x12, 0xb0, 0xac, 0x0b, 0x46, - 0x81, 0x18, 0x12, 0x31, 0xa0, 0x1a, 0x17, 0xca, 0x18, 0x41, 0x14, 0xbb, 0xac, 0x98, 0xaf, 0x12, - 0xba, 0x08, 0x42, 0x02, 0x00, 0xec, 0x29, 0x02, 0x08, 0x21, 0x33, 0x52, 0x13, 0x24, 0xcc, 0x89, - 0x51, 0x33, 0x91, 0x0b, 0x26, 0x90, 0xba, 0xbf, 0x00, 0x88, 0x89, 0x88, 0xbd, 0xac, 0xb9, 0x8c, - 0x93, 0x8c, 0x82, 0xbb, 0x61, 0x82, 0xbc, 0x1a, 0x66, 0x24, 0x00, 0x01, 0x99, 0x31, 0xa2, 0x0b, - 0x12, 0xb9, 0x88, 0xbd, 0x08, 0xb1, 0x0b, 0x81, 0xff, 0xaa, 0x99, 0x9b, 0xa8, 0xbc, 0x0b, 0x45, - 0x45, 0x12, 0x11, 0x10, 0x12, 0x12, 0x79, 0x34, 0x82, 0x8a, 0xea, 0xac, 0x08, 0x9a, 0x30, 0x82, - 0xa9, 0xab, 0xb8, 0xbf, 0x11, 0xe9, 0x89, 0x9a, 0x31, 0x36, 0x33, 0x32, 0x02, 0x80, 0x2a, 0x04, - 0x19, 0x23, 0xef, 0x89, 0x38, 0x23, 0x31, 0xfc, 0x1e, 0x12, 0x80, 0xa9, 0xca, 0x9b, 0x21, 0xb1, - 0x9e, 0x98, 0x41, 0x14, 0x99, 0xa9, 0x9b, 0x71, 0x17, 0xa8, 0x99, 0x90, 0x30, 0x04, 0x00, 0x19, - 0x04, 0x08, 0xa8, 0x88, 0x80, 0x51, 0xc8, 0x89, 0xdb, 0x2a, 0x17, 0xd9, 0x8b, 0x81, 0x18, 0x21, - 0x02, 0xa0, 0x8c, 0x03, 0x2a, 0x37, 0x00, 0x55, 0x33, 0x01, 0xca, 0x8a, 0x00, 0x12, 0xae, 0x88, - 0x19, 0x81, 0xf8, 0x0d, 0xa9, 0xba, 0x40, 0x02, 0xb8, 0x8d, 0x80, 0xa9, 0x28, 0x12, 0x45, 0x02, - 0xa9, 0x81, 0x1e, 0x47, 0x13, 0x18, 0x91, 0xba, 0xae, 0x8a, 0x21, 0xa8, 0xbe, 0xb9, 0x28, 0x04, - 0x99, 0x31, 0xb8, 0x0c, 0x35, 0x21, 0x14, 0x90, 0xac, 0x91, 0x0c, 0x61, 0x04, 0x8a, 0x12, 0xbc, - 0x20, 0x63, 0x13, 0xba, 0xab, 0x2b, 0x27, 0xab, 0x99, 0xc9, 0x20, 0x1a, 0x47, 0x42, 0xa0, 0x99, - 0x8a, 0x21, 0xa1, 0x1b, 0x04, 0x89, 0x35, 0xda, 0x09, 0x13, 0x0b, 0xf9, 0x2c, 0x13, 0x29, 0x02, - 0x00, 0x9b, 0xc8, 0x4b, 0xc2, 0x9b, 0x60, 0x93, 0xfa, 0x9f, 0x00, 0x31, 0x02, 0xbb, 0xcb, 0x9b, - 0x18, 0x33, 0xca, 0x00, 0x29, 0xf1, 0x3a, 0x15, 0xca, 0x0a, 0x80, 0x73, 0x85, 0x18, 0x22, 0x90, - 0x00, 0x10, 0x23, 0xcd, 0xa9, 0x9d, 0x41, 0x02, 0xe9, 0x8b, 0x11, 0x99, 0x80, 0x9a, 0x08, 0x64, - 0x23, 0xc9, 0x48, 0x33, 0x02, 0x32, 0x14, 0xab, 0x18, 0x27, 0xda, 0xac, 0xb0, 0x2a, 0x93, 0x28, - 0x14, 0x10, 0xb0, 0xcd, 0x99, 0xbb, 0x40, 0x13, 0x08, 0x01, 0x80, 0x30, 0xfb, 0xff, 0x09, 0x88, - 0x21, 0x43, 0x90, 0x20, 0x13, 0xd8, 0x2b, 0x83, 0xdc, 0x29, 0x12, 0x32, 0xa1, 0x8e, 0x90, 0x9b, - 0x01, 0xec, 0xbc, 0x89, 0x00, 0x21, 0xb9, 0x70, 0x25, 0x01, 0x80, 0x18, 0x43, 0x08, 0x82, 0x39, - 0x33, 0x25, 0x08, 0x00, 0xa8, 0xbb, 0x39, 0xa3, 0x9f, 0x93, 0xcf, 0xbb, 0x08, 0xbb, 0xa0, 0x3a, - 0xf2, 0x9a, 0x1a, 0x83, 0x70, 0x36, 0x10, 0x90, 0x89, 0x73, 0x12, 0xb1, 0x8b, 0xea, 0x08, 0x98, - 0x29, 0xb2, 0xed, 0x2a, 0x02, 0x41, 0x02, 0xa9, 0x99, 0xcf, 0x8a, 0x91, 0x20, 0x00, 0xc9, 0x38, - 0x32, 0x37, 0xa0, 0x59, 0x24, 0x91, 0x9a, 0x99, 0xbb, 0xac, 0xbd, 0x98, 0x98, 0x8b, 0x24, 0x15, - 0xbb, 0x11, 0x61, 0x23, 0x11, 0x10, 0x92, 0x4a, 0x22, 0x47, 0x18, 0x99, 0x45, 0x91, 0x40, 0x13, - 0xdb, 0xad, 0x9a, 0x40, 0x80, 0x88, 0x48, 0x02, 0x88, 0xc9, 0xac, 0x10, 0x98, 0x33, 0x74, 0x82, - 0xb9, 0x5a, 0x83, 0xb9, 0xad, 0xcc, 0x18, 0x12, 0x80, 0xcf, 0x89, 0x08, 0x11, 0x82, 0x0b, 0x34, - 0x91, 0xca, 0x9b, 0x35, 0x33, 0x81, 0x90, 0xbd, 0x19, 0x25, 0xa2, 0x0d, 0x24, 0x28, 0x93, 0xcd, - 0x1a, 0x10, 0x20, 0x46, 0x01, 0x32, 0x05, 0xbc, 0x99, 0x33, 0x11, 0xd0, 0xac, 0x8c, 0x24, 0xa0, - 0xbc, 0x19, 0xa0, 0x8c, 0x23, 0xa8, 0x1a, 0x47, 0x00, 0x42, 0xd0, 0x8b, 0x53, 0x10, 0x02, 0xb0, - 0x9d, 0x90, 0x18, 0x01, 0xea, 0xaa, 0x88, 0xc9, 0x8c, 0x43, 0xd8, 0x9a, 0x22, 0x81, 0x19, 0x36, - 0x00, 0x12, 0x82, 0x1a, 0xa1, 0x32, 0xfc, 0x8f, 0x01, 0x00, 0x08, 0x88, 0x82, 0x8b, 0x9a, 0x91, - 0xff, 0x1a, 0x83, 0x89, 0x30, 0x82, 0x61, 0x34, 0xa0, 0xbc, 0x70, 0x82, 0x08, 0x02, 0x09, 0x83, - 0x9d, 0x30, 0x92, 0x3a, 0x90, 0x9a, 0x32, 0xfb, 0x5b, 0x83, 0x9b, 0x62, 0xa1, 0x1b, 0x03, 0xcf, - 0x8b, 0x31, 0x11, 0x81, 0xcc, 0x2b, 0x95, 0x9b, 0x33, 0x23, 0x83, 0xaf, 0x00, 0xcd, 0x9b, 0x30, - 0x02, 0x81, 0x19, 0x22, 0xfc, 0x3a, 0x15, 0xa1, 0xab, 0xbb, 0x18, 0x00, 0x75, 0x82, 0x31, 0xa9, - 0x28, 0x27, 0xb8, 0xab, 0x89, 0x88, 0x80, 0x22, 0x99, 0x38, 0x37, 0xc8, 0x18, 0x14, 0x08, 0xff, - 0x19, 0x32, 0x90, 0x31, 0xa1, 0x0a, 0xfa, 0x9a, 0x11, 0x30, 0x27, 0x80, 0xb8, 0xae, 0x08, 0x22, - 0x99, 0x31, 0x13, 0x50, 0x13, 0x91, 0xb9, 0x9d, 0x25, 0xb8, 0x9d, 0xba, 0x38, 0x02, 0x22, 0x45, - 0xd1, 0xae, 0x9a, 0x08, 0x00, 0x42, 0x02, 0x10, 0xa0, 0x9d, 0x91, 0x18, 0x98, 0x21, 0xf8, 0xbc, - 0x1b, 0xb9, 0x11, 0xad, 0x99, 0x63, 0x81, 0x63, 0x81, 0x19, 0x16, 0x08, 0xb8, 0x61, 0x01, 0x01, - 0x11, 0x11, 0x02, 0xfa, 0xaa, 0xbb, 0x53, 0x81, 0x9a, 0xaa, 0x89, 0x9b, 0x30, 0x16, 0x51, 0x02, - 0x52, 0x22, 0x01, 0x24, 0xbb, 0x10, 0x40, 0x13, 0x38, 0xb2, 0xff, 0x39, 0xa3, 0xac, 0xeb, 0x09, - 0x02, 0xb9, 0xab, 0xc9, 0x0b, 0x14, 0xdf, 0x09, 0x80, 0x30, 0x82, 0x10, 0xb8, 0xac, 0x72, 0x37, - 0x02, 0x99, 0x00, 0x98, 0x20, 0xa1, 0xbd, 0xbb, 0x1a, 0x23, 0x01, 0xcf, 0xb9, 0x0b, 0xeb, 0x39, - 0x26, 0xb8, 0xbb, 0x09, 0x28, 0x35, 0x51, 0x13, 0x08, 0x31, 0x81, 0x22, 0x51, 0x02, 0xb8, 0x39, - 0xda, 0xa9, 0xac, 0x74, 0x81, 0x30, 0x81, 0x19, 0xf0, 0x1a, 0x18, 0x23, 0xb8, 0xdc, 0x2a, 0x23, - 0xb2, 0x4a, 0x01, 0x67, 0x80, 0xa9, 0x9b, 0x09, 0x24, 0x08, 0x91, 0xbe, 0x0a, 0x80, 0xaa, 0xb8, - 0xcf, 0x20, 0x01, 0xd9, 0xcb, 0x1a, 0x33, 0x20, 0xa2, 0xae, 0x8a, 0x44, 0x81, 0x89, 0xd9, 0x1a, - 0x33, 0x45, 0x00, 0x18, 0xc8, 0x18, 0x01, 0x02, 0xeb, 0xab, 0x39, 0x37, 0x21, 0xa1, 0x9c, 0xab, - 0x38, 0x92, 0x78, 0xa2, 0xaa, 0x0a, 0xe0, 0x0a, 0x21, 0x22, 0x43, 0x33, 0x15, 0x60, 0x14, 0x18, - 0x22, 0x12, 0x11, 0xcb, 0xbc, 0x39, 0x92, 0xdc, 0xaa, 0x9a, 0x02, 0xdc, 0x8c, 0x41, 0x01, 0x11, - 0x81, 0xac, 0xa9, 0x70, 0x22, 0x24, 0x01, 0xfb, 0x9b, 0xa8, 0x19, 0x42, 0xc0, 0xac, 0xaa, 0xac, - 0x08, 0x34, 0xb8, 0x2a, 0x33, 0xd1, 0xae, 0x11, 0x11, 0x01, 0x00, 0xfc, 0x9c, 0x10, 0xa9, 0x9a, - 0x63, 0x14, 0x88, 0x31, 0x93, 0x0c, 0x81, 0x41, 0x11, 0x82, 0x41, 0x28, 0x95, 0xac, 0xbb, 0x72, - 0x15, 0x88, 0x08, 0x12, 0xc8, 0x89, 0x39, 0x37, 0x00, 0x80, 0x81, 0x40, 0x02, 0x93, 0xcf, 0x88, - 0x98, 0x9a, 0x9b, 0x13, 0x8a, 0xf0, 0x9c, 0x99, 0x9a, 0x09, 0x44, 0x33, 0xc0, 0xbd, 0x28, 0x43, - 0x32, 0x26, 0x80, 0xda, 0xa9, 0x09, 0x23, 0xda, 0xbb, 0xbb, 0x2a, 0x37, 0x00, 0xb9, 0x1c, 0x03, - 0xd9, 0xad, 0x00, 0x21, 0x89, 0x13, 0x48, 0x15, 0x98, 0x09, 0x36, 0xb0, 0x19, 0x43, 0x08, 0x27, - 0x98, 0xdb, 0x09, 0x18, 0x02, 0xa9, 0x99, 0x60, 0xb2, 0x8d, 0x31, 0xa1, 0x30, 0x99, 0xb9, 0x73, - 0x26, 0x01, 0x20, 0xc1, 0xad, 0x21, 0x25, 0x12, 0x21, 0xa8, 0x8a, 0x08, 0xfa, 0x9d, 0x99, 0xab, - 0x80, 0x9b, 0xa1, 0xbf, 0x9b, 0x32, 0xdb, 0x38, 0x81, 0x22, 0x38, 0xa3, 0xad, 0x49, 0x47, 0x11, - 0xba, 0x73, 0x14, 0x00, 0x88, 0xbb, 0x81, 0xbc, 0x28, 0x82, 0xb9, 0x1b, 0x96, 0x98, 0xbe, 0x91, - 0xbc, 0x00, 0x11, 0x88, 0x91, 0x2b, 0x35, 0x27, 0xa9, 0x22, 0x25, 0x01, 0x22, 0x91, 0x00, 0x1a, - 0xd3, 0x0e, 0x42, 0xa1, 0x0c, 0xb2, 0xac, 0xac, 0xa9, 0x09, 0x03, 0xdd, 0x1a, 0x63, 0x83, 0xa9, - 0x0b, 0x24, 0x24, 0x10, 0x88, 0x19, 0x14, 0x29, 0x57, 0x12, 0xdd, 0x09, 0x31, 0x12, 0x08, 0xa8, - 0x9b, 0x33, 0xfb, 0x88, 0x88, 0xcb, 0x39, 0xd1, 0xbd, 0x8d, 0x11, 0x21, 0xca, 0x8c, 0x32, 0x23, - 0x20, 0x47, 0x81, 0xaa, 0x08, 0x20, 0x83, 0x1b, 0x34, 0xe9, 0xaa, 0xdb, 0x19, 0x10, 0xa3, 0xbf, - 0x9a, 0x53, 0x23, 0xa8, 0xca, 0x0b, 0x02, 0x20, 0x10, 0x27, 0xba, 0x48, 0x24, 0x90, 0xad, 0x10, - 0x41, 0x02, 0x54, 0x12, 0xb9, 0x19, 0xa8, 0xed, 0x9b, 0x30, 0x24, 0x00, 0x99, 0xc9, 0x99, 0x88, - 0x01, 0xdb, 0x30, 0x30, 0x47, 0x81, 0x41, 0x33, 0x02, 0x00, 0x81, 0xaa, 0xef, 0x0a, 0xa0, 0x8b, - 0x08, 0xc8, 0x8c, 0x99, 0xda, 0x4b, 0x24, 0xa0, 0x89, 0x11, 0x32, 0xc1, 0x9b, 0x89, 0x61, 0xa3, - 0xaf, 0x12, 0x10, 0x23, 0x44, 0xb8, 0xbc, 0x09, 0xb9, 0x64, 0x01, 0xa9, 0x58, 0xd0, 0x9a, 0x19, - 0x02, 0x31, 0x02, 0x90, 0x1b, 0x27, 0x23, 0x99, 0xa9, 0x4b, 0x47, 0x80, 0xaa, 0x29, 0x04, 0xcd, - 0x0b, 0x22, 0x10, 0xb9, 0x3a, 0x16, 0x02, 0x31, 0xd0, 0x8b, 0xb8, 0x89, 0xfb, 0x0a, 0x83, 0x8b, - 0xf8, 0x3a, 0x83, 0x70, 0x01, 0xa0, 0xad, 0x8a, 0x12, 0x8a, 0x47, 0x82, 0x89, 0x10, 0x53, 0x82, - 0xbd, 0x8a, 0x01, 0x18, 0x21, 0x02, 0xfa, 0x8f, 0x81, 0x99, 0xa9, 0x2a, 0x14, 0x88, 0x88, 0x9a, - 0x43, 0x91, 0x59, 0x16, 0xb9, 0x19, 0x53, 0x15, 0x99, 0x91, 0xcd, 0x38, 0x01, 0xa8, 0x30, 0x25, - 0x90, 0xba, 0xbb, 0x50, 0x02, 0xdc, 0x8c, 0x10, 0x01, 0xa9, 0x21, 0x23, 0x21, 0xa8, 0x73, 0x06, - 0x09, 0x13, 0x19, 0x25, 0x36, 0x01, 0xca, 0xaa, 0x09, 0x10, 0xeb, 0x08, 0xa8, 0xce, 0x8a, 0xaa, - 0x80, 0x28, 0x80, 0xb8, 0x8d, 0x13, 0x9b, 0x47, 0xa1, 0x09, 0x84, 0x1b, 0x26, 0x90, 0x18, 0x01, - 0x33, 0x82, 0x6b, 0x07, 0x99, 0x89, 0xb9, 0x8a, 0x20, 0xa0, 0xdf, 0x9c, 0x21, 0x03, 0x0a, 0xb1, - 0x8a, 0x09, 0x53, 0x04, 0x19, 0x24, 0x23, 0xfb, 0x19, 0x81, 0xa9, 0x72, 0x15, 0x01, 0xa0, 0xaa, - 0x39, 0x27, 0x90, 0xab, 0x08, 0x00, 0xdb, 0x08, 0x12, 0xa8, 0xea, 0x0a, 0x98, 0xa8, 0xce, 0xaa, - 0x20, 0x35, 0xa2, 0x19, 0x55, 0xb0, 0x48, 0x03, 0x10, 0x91, 0x9b, 0x54, 0x21, 0x06, 0xab, 0xbb, - 0x9c, 0x01, 0xac, 0x88, 0x99, 0x19, 0xe0, 0xae, 0x8a, 0x43, 0xa1, 0x18, 0x35, 0xc8, 0x9b, 0x10, - 0x10, 0x44, 0x32, 0x92, 0x19, 0xb0, 0x1b, 0x81, 0xcc, 0x21, 0xac, 0x74, 0x13, 0x9a, 0xb9, 0x4a, - 0x26, 0xa0, 0xab, 0x1a, 0x47, 0x80, 0xa8, 0xbc, 0xab, 0x30, 0x43, 0x81, 0xfb, 0x8a, 0x21, 0x11, - 0x02, 0xba, 0x0a, 0x33, 0x77, 0x04, 0x88, 0x80, 0x99, 0x8a, 0x02, 0x61, 0x13, 0xe9, 0x8a, 0x98, - 0x80, 0xa9, 0xbb, 0xa8, 0xbd, 0x0a, 0x75, 0x83, 0x89, 0x88, 0x82, 0xbc, 0xdc, 0x39, 0x34, 0x23, - 0x08, 0xb0, 0x1c, 0xd8, 0x28, 0x12, 0x91, 0x19, 0x51, 0x15, 0xa9, 0x19, 0xf9, 0x0b, 0x12, 0x91, - 0x9e, 0x10, 0xa0, 0xbe, 0x1a, 0x01, 0x11, 0x98, 0xc8, 0x48, 0x13, 0x73, 0x81, 0xca, 0x19, 0x33, - 0x10, 0x35, 0xb9, 0x38, 0x03, 0x10, 0x37, 0x92, 0xce, 0x09, 0x12, 0x88, 0x88, 0x99, 0x0b, 0x27, - 0x99, 0xd0, 0xad, 0x09, 0xb0, 0x18, 0x83, 0xcf, 0x28, 0x32, 0x12, 0x91, 0xab, 0x29, 0x77, 0x04, - 0xa8, 0x09, 0x11, 0x32, 0xa1, 0x1b, 0xc1, 0x9a, 0x8a, 0x14, 0xde, 0x99, 0xa8, 0xa9, 0x08, 0xd9, - 0x9c, 0x21, 0x82, 0x9a, 0x65, 0x12, 0x81, 0xba, 0x08, 0x11, 0x54, 0x24, 0x81, 0x80, 0x29, 0x37, - 0x98, 0xaa, 0x0a, 0x88, 0xfa, 0x9d, 0x99, 0x9b, 0x30, 0xb1, 0xbd, 0x09, 0x30, 0x26, 0x81, 0x89, - 0x20, 0x11, 0x55, 0x13, 0x10, 0xc8, 0x72, 0x84, 0x8a, 0xb9, 0x09, 0x31, 0x27, 0xba, 0x89, 0xba, - 0x89, 0x99, 0x90, 0xb9, 0xab, 0xbc, 0x76, 0x82, 0x99, 0x00, 0x89, 0x43, 0x01, 0x9a, 0x24, 0x38, - 0x36, 0x05, 0x9a, 0x02, 0xba, 0x99, 0x58, 0x14, 0x89, 0xea, 0xac, 0x28, 0x91, 0x08, 0x91, 0xae, - 0x8a, 0xbb, 0x0a, 0x91, 0xcf, 0xbc, 0x38, 0x24, 0x11, 0x01, 0x98, 0x30, 0x25, 0x53, 0x34, 0x90, - 0x11, 0xfc, 0x18, 0xb0, 0x9d, 0x18, 0x98, 0x11, 0x9b, 0x88, 0xaa, 0xdb, 0x0b, 0x37, 0x01, 0x28, - 0x33, 0x28, 0x33, 0x64, 0x03, 0x18, 0x43, 0x35, 0x03, 0xbe, 0x28, 0x45, 0xb1, 0x8a, 0x19, 0xc8, - 0x0b, 0x82, 0x9a, 0xf9, 0x9e, 0x01, 0xa8, 0x09, 0x11, 0x04, 0x89, 0x11, 0x41, 0x82, 0x48, 0x35, - 0x83, 0xad, 0xbb, 0x31, 0x02, 0x8b, 0x27, 0x01, 0x98, 0xb9, 0xdf, 0x9a, 0xaa, 0xcb, 0xdb, 0x89, - 0x30, 0x15, 0x98, 0x88, 0xa0, 0x68, 0x25, 0x81, 0x08, 0xa9, 0x51, 0x23, 0x12, 0xaa, 0xc9, 0x9c, - 0x41, 0x25, 0xc9, 0x0a, 0x23, 0xc9, 0x9b, 0x29, 0x82, 0xaa, 0x10, 0x09, 0x64, 0x16, 0xda, 0x18, - 0x24, 0x80, 0x08, 0x10, 0x42, 0x23, 0xa9, 0x00, 0xab, 0xa0, 0xdc, 0x8e, 0x24, 0x10, 0xb2, 0xbf, - 0x1a, 0x02, 0x08, 0xb9, 0x9d, 0x01, 0xb8, 0xae, 0x72, 0xa0, 0x0a, 0x01, 0x99, 0x08, 0x21, 0x41, - 0x93, 0xd9, 0x1b, 0x47, 0xb0, 0x9c, 0x11, 0x21, 0x23, 0xda, 0x88, 0xbd, 0x48, 0x14, 0x12, 0xda, - 0x9a, 0x99, 0x28, 0xa8, 0x33, 0xc9, 0x48, 0x92, 0x2b, 0x16, 0x53, 0x82, 0xda, 0x8a, 0x31, 0xa1, - 0x49, 0x15, 0x9a, 0x10, 0x13, 0x11, 0x09, 0xd1, 0x79, 0x14, 0x11, 0xc9, 0xbb, 0x9c, 0x64, 0x92, - 0xbb, 0x18, 0x01, 0xd9, 0x8b, 0x98, 0x29, 0x37, 0x32, 0x25, 0x99, 0xbc, 0x8a, 0x20, 0x16, 0xba, - 0x9a, 0xbc, 0x0b, 0x01, 0x18, 0xf0, 0xad, 0x89, 0x10, 0x12, 0x41, 0xd1, 0x9c, 0x31, 0x45, 0x12, - 0xba, 0xb9, 0x19, 0x11, 0x12, 0x91, 0x8d, 0xc9, 0x38, 0xb0, 0xcb, 0x60, 0x84, 0x0a, 0x80, 0x30, - 0x42, 0x12, 0x33, 0x92, 0x59, 0x27, 0x20, 0x12, 0x89, 0x00, 0x11, 0xa0, 0xed, 0x0a, 0x20, 0x65, - 0x12, 0xcb, 0xbb, 0x20, 0x21, 0x03, 0xcd, 0x89, 0x89, 0x89, 0x91, 0x9c, 0xc9, 0x38, 0x05, 0x0b, - 0x16, 0x90, 0x1b, 0x47, 0x02, 0xeb, 0x99, 0x99, 0x99, 0x09, 0x42, 0xd8, 0x9b, 0x98, 0x1a, 0x23, - 0x54, 0x92, 0x30, 0x13, 0xac, 0x11, 0xdb, 0xcb, 0x19, 0xaa, 0x18, 0x33, 0xb9, 0xfb, 0x1a, 0x02, - 0xbb, 0xac, 0x73, 0x15, 0x80, 0x22, 0x00, 0x31, 0x36, 0x01, 0x62, 0x02, 0x10, 0x90, 0xad, 0x10, - 0x61, 0x26, 0x88, 0x99, 0x08, 0x80, 0xb0, 0xbb, 0xde, 0x0a, 0x43, 0x02, 0x89, 0x90, 0x09, 0x02, - 0x01, 0xea, 0x09, 0x9a, 0x34, 0xf9, 0x9d, 0x00, 0x22, 0xb9, 0x39, 0x94, 0xad, 0x20, 0x12, 0xf8, - 0x9b, 0xbc, 0x9c, 0x18, 0x10, 0x11, 0x00, 0x99, 0x43, 0x82, 0x1a, 0x77, 0x03, 0x99, 0xa9, 0x38, - 0xa4, 0x2b, 0x26, 0x98, 0xaa, 0x89, 0x31, 0x02, 0xfd, 0x8a, 0x32, 0x23, 0x00, 0xc9, 0x29, 0x35, - 0xb2, 0x30, 0x15, 0xc9, 0x9b, 0x00, 0xbb, 0x30, 0x65, 0xc1, 0x9c, 0x89, 0x30, 0x45, 0x92, 0xaa, - 0xba, 0xbb, 0x74, 0x14, 0x11, 0x99, 0x19, 0x98, 0x01, 0x99, 0xc9, 0x28, 0xa3, 0xaf, 0x80, 0x9d, - 0x01, 0x9a, 0x89, 0xa9, 0x22, 0xf9, 0x0b, 0x23, 0x00, 0x3a, 0xb5, 0x0f, 0x45, 0x92, 0x9b, 0x28, - 0x35, 0xb8, 0x19, 0x90, 0xec, 0xaa, 0xaa, 0x08, 0x10, 0x31, 0x35, 0xb8, 0x0c, 0x10, 0x92, 0x8d, - 0x22, 0x98, 0x22, 0xbc, 0xb9, 0x72, 0x23, 0x34, 0x02, 0x51, 0x92, 0x40, 0xf8, 0xcb, 0x2a, 0x35, - 0xb8, 0xac, 0x08, 0x43, 0x43, 0x11, 0x02, 0x89, 0x01, 0x0a, 0x54, 0x83, 0xcf, 0xbb, 0x09, 0x28, - 0x05, 0x89, 0x12, 0xb9, 0x2a, 0x15, 0xba, 0x89, 0xba, 0x21, 0x64, 0x11, 0x22, 0x09, 0x44, 0x33, - 0x90, 0xc8, 0x9e, 0x09, 0x12, 0x98, 0xed, 0xbc, 0xaa, 0x9a, 0x10, 0x32, 0x80, 0x53, 0x12, 0x92, - 0x2b, 0x23, 0x77, 0xa2, 0x89, 0xaa, 0xd9, 0x38, 0xc8, 0x9a, 0x19, 0x62, 0x82, 0x89, 0xd9, 0x2a, - 0x82, 0x73, 0x82, 0xa9, 0x2b, 0x47, 0x81, 0x99, 0x09, 0xa8, 0x9b, 0x39, 0x26, 0x12, 0x90, 0xda, - 0x9a, 0x98, 0x61, 0x04, 0xa9, 0x10, 0xa8, 0x8b, 0x51, 0x35, 0x90, 0xcb, 0x30, 0x80, 0xc0, 0x0b, - 0xc9, 0x21, 0x92, 0xa9, 0x2a, 0xb5, 0xbf, 0x09, 0x98, 0x73, 0x04, 0x89, 0xa9, 0x8b, 0x90, 0x0b, - 0x65, 0x34, 0x02, 0x9a, 0x10, 0x32, 0xb8, 0xce, 0x09, 0x81, 0x11, 0xfa, 0xab, 0xbb, 0x29, 0x43, - 0xc9, 0x68, 0xa1, 0xbc, 0x1a, 0x53, 0x14, 0xca, 0x9a, 0x89, 0x20, 0x21, 0x36, 0x81, 0xb0, 0x9d, - 0x99, 0x88, 0x12, 0x54, 0x82, 0x9a, 0x99, 0x98, 0x9a, 0x66, 0x03, 0xca, 0x9b, 0x20, 0x12, 0x73, - 0x04, 0x10, 0x92, 0x8c, 0x53, 0x81, 0x89, 0xb0, 0x2a, 0x82, 0x98, 0x1a, 0x12, 0x94, 0xef, 0xab, - 0x99, 0x99, 0x00, 0x99, 0x51, 0xb0, 0x50, 0x13, 0x33, 0x81, 0x9a, 0xfb, 0x5a, 0x81, 0x00, 0x9a, - 0xfb, 0x8c, 0x10, 0x01, 0x19, 0x15, 0xab, 0x08, 0xca, 0x8b, 0x12, 0xcb, 0xbc, 0x29, 0x25, 0xbd, - 0x11, 0x89, 0x30, 0x04, 0x73, 0xa3, 0x9d, 0x52, 0x33, 0x03, 0x89, 0x21, 0xd8, 0x9b, 0x0a, 0x32, - 0x21, 0xa0, 0xfd, 0x9b, 0xa8, 0xbc, 0x40, 0x81, 0x10, 0x18, 0x44, 0x11, 0x21, 0xda, 0x8b, 0x72, - 0x24, 0x21, 0x01, 0x53, 0x02, 0x10, 0xa8, 0xbb, 0xcd, 0x28, 0x35, 0x81, 0xba, 0xbf, 0x89, 0xb9, - 0xab, 0x88, 0x10, 0xc9, 0x99, 0xbb, 0xcf, 0x0a, 0x19, 0x11, 0x32, 0x55, 0x12, 0xfb, 0x8b, 0x21, - 0x22, 0x14, 0x81, 0xc9, 0x28, 0x63, 0x82, 0x08, 0xba, 0xad, 0x88, 0x9a, 0x31, 0xc2, 0xbd, 0x8a, - 0x41, 0x33, 0x82, 0x0b, 0x44, 0x02, 0x53, 0x92, 0x0c, 0xa1, 0x8c, 0x21, 0x55, 0x23, 0x08, 0x81, - 0x9a, 0xc9, 0xbb, 0x20, 0xee, 0xaa, 0xba, 0xac, 0x80, 0x09, 0x34, 0x08, 0x01, 0x39, 0x57, 0x11, - 0x80, 0x18, 0x22, 0x22, 0x01, 0xbe, 0x51, 0x34, 0x12, 0xd8, 0x9c, 0x08, 0x12, 0x32, 0xc0, 0xcf, - 0x8a, 0x22, 0x90, 0x20, 0x10, 0x91, 0xab, 0xdb, 0x0b, 0xa1, 0x28, 0x40, 0x37, 0x11, 0xa9, 0x82, - 0xaf, 0x21, 0x32, 0x34, 0x91, 0xef, 0x89, 0x81, 0x88, 0x99, 0x89, 0x21, 0x92, 0xbb, 0xae, 0x09, - 0x31, 0xa8, 0x52, 0x32, 0x12, 0xd9, 0xbe, 0x31, 0xb1, 0x0b, 0x37, 0x32, 0x13, 0x33, 0x45, 0x14, - 0x01, 0xea, 0x9a, 0xab, 0x19, 0x21, 0x32, 0xf8, 0xac, 0x89, 0x10, 0x13, 0xcb, 0x28, 0x13, 0x31, - 0x02, 0x40, 0x14, 0x88, 0x35, 0xc9, 0x1a, 0xf8, 0x8a, 0x21, 0x99, 0x73, 0x03, 0xd9, 0x9a, 0x80, - 0x10, 0x32, 0x13, 0xed, 0xbb, 0x08, 0x11, 0xea, 0x19, 0x90, 0x89, 0xa0, 0xae, 0x31, 0x81, 0xaa, - 0x72, 0x05, 0x08, 0x81, 0x89, 0x10, 0x32, 0xb4, 0xbf, 0x09, 0x42, 0x83, 0xab, 0x88, 0xa9, 0x0b, - 0x73, 0x34, 0x93, 0x0a, 0x73, 0x12, 0x21, 0xc8, 0xcd, 0x08, 0x98, 0x09, 0x32, 0x90, 0xcc, 0x70, - 0x13, 0x80, 0x8a, 0x18, 0x14, 0x98, 0x81, 0xc9, 0x9c, 0x81, 0xb9, 0xbd, 0x72, 0x92, 0xab, 0xb9, - 0x09, 0x24, 0xaa, 0x11, 0xca, 0x1b, 0x36, 0xa9, 0x41, 0xc9, 0x50, 0x12, 0x01, 0xaa, 0xca, 0x0a, - 0x31, 0x02, 0xb9, 0x2d, 0x77, 0x01, 0x81, 0x0a, 0x22, 0x89, 0xab, 0xda, 0xbe, 0x0a, 0x14, 0x00, - 0xd8, 0xbd, 0x28, 0x33, 0xb1, 0x8b, 0x88, 0x02, 0x98, 0xcb, 0x40, 0x37, 0x00, 0x33, 0x04, 0xcb, - 0x19, 0x73, 0x23, 0xa8, 0xbb, 0x19, 0x90, 0xaa, 0x00, 0x41, 0xc9, 0x21, 0xdf, 0x29, 0x36, 0x02, - 0xba, 0x99, 0x00, 0x30, 0x03, 0x0b, 0x36, 0xa1, 0x9c, 0x01, 0xaa, 0xbd, 0x8b, 0x99, 0xb9, 0xbf, - 0x89, 0x22, 0xfb, 0x08, 0x18, 0x26, 0x91, 0xab, 0xf9, 0x8b, 0x38, 0x26, 0x11, 0x00, 0x10, 0xa9, - 0xbb, 0xab, 0x22, 0xcb, 0x75, 0x13, 0x89, 0x89, 0x08, 0xa9, 0xb0, 0xae, 0x11, 0x51, 0x27, 0x01, - 0xcb, 0xaa, 0x38, 0x33, 0xb0, 0x0b, 0x43, 0x12, 0x52, 0xa2, 0xcb, 0x08, 0x22, 0x37, 0x92, 0x98, - 0x81, 0xac, 0xb8, 0xad, 0xbb, 0xb9, 0x91, 0xcd, 0xbc, 0x18, 0x01, 0x8a, 0x99, 0x9b, 0x73, 0xa1, - 0x40, 0x25, 0xa8, 0x00, 0x21, 0x11, 0x55, 0x82, 0x99, 0x19, 0xa8, 0x19, 0xcc, 0xbb, 0x01, 0x0b, - 0x04, 0x9d, 0x90, 0xda, 0x9a, 0xa9, 0x00, 0x32, 0x1a, 0x24, 0x31, 0xba, 0x19, 0x45, 0x01, 0x99, - 0x2a, 0x17, 0x19, 0x11, 0x21, 0x34, 0xb8, 0x9b, 0xdb, 0x09, 0x11, 0x33, 0x13, 0xa9, 0xcb, 0xcc, - 0x0b, 0x14, 0x18, 0xc8, 0x0a, 0x00, 0xda, 0xad, 0x89, 0x31, 0x22, 0x53, 0x33, 0x23, 0x52, 0x13, - 0xa9, 0x09, 0xac, 0x20, 0xa1, 0xbb, 0xb1, 0xcb, 0xbc, 0x8a, 0xba, 0x0a, 0x01, 0x51, 0x02, 0x89, - 0x10, 0x99, 0xbb, 0x29, 0x24, 0x32, 0x03, 0x09, 0x11, 0x31, 0x33, 0x01, 0x99, 0xa9, 0x19, 0x90, - 0x9a, 0x00, 0xbb, 0x3a, 0x33, 0x11, 0xba, 0x9a, 0x19, 0x99, 0x20, 0x01, 0x99, 0xab, 0x99, 0x31, - 0x12, 0x31, 0x13, 0x90, 0xa9, 0x19, 0x21, 0x90, 0x00, 0x01, 0x90, 0xa0, 0x99, 0x00, 0x00, 0x19, - 0x90, 0x99, 0x00, 0x09, 0x10, 0x11, 0x11, 0x90, 0x09, 0x10, 0x00, 0x09, 0x90, 0x00, 0x00, 0x70, - 0x02, 0x01, 0x0b, 0x7d, 0x0b, 0x02, 0x88, 0x05, 0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, - 0x77, 0xf8, 0x95, 0x2d, 0x80, 0xe4, 0x49, 0x48, 0xf2, 0x3b, 0x91, 0x43, 0xad, 0x91, 0x38, 0xb1, - 0x10, 0x93, 0x1e, 0x99, 0x87, 0x29, 0x9c, 0x04, 0x30, 0x9d, 0xb2, 0x29, 0x11, 0xc1, 0x5a, 0xa0, - 0x91, 0x3d, 0xa4, 0x11, 0x2b, 0xe8, 0x02, 0x0a, 0x0a, 0xa3, 0x33, 0x8f, 0xc3, 0x22, 0x2c, 0xb3, - 0x5a, 0x99, 0xc1, 0x5a, 0xc0, 0x11, 0x49, 0xbb, 0x86, 0x18, 0x8a, 0x97, 0x18, 0x89, 0xa9, 0x04, - 0x0a, 0xa8, 0x14, 0x0a, 0xb1, 0x59, 0x80, 0x93, 0x7a, 0x9a, 0xd3, 0x29, 0x1a, 0xb5, 0x39, 0x0a, - 0xb2, 0x21, 0x09, 0x68, 0xa2, 0x0a, 0x8a, 0x88, 0x8b, 0xe5, 0x68, 0x89, 0xc1, 0x51, 0x09, 0xb8, - 0x15, 0x5a, 0xd9, 0x00, 0x1a, 0x00, 0x00, 0x90, 0x2a, 0xa0, 0x52, 0x80, 0x80, 0x7a, 0xc1, 0x98, - 0x3a, 0xcc, 0x05, 0x39, 0x9b, 0x94, 0x10, 0x2b, 0x86, 0x19, 0x80, 0xc8, 0x1b, 0xb1, 0x18, 0x58, - 0xb9, 0x96, 0x58, 0x8b, 0x97, 0x20, 0x8a, 0xc2, 0x19, 0x8a, 0x90, 0x10, 0x11, 0xd8, 0x61, 0x99, - 0x04, 0x48, 0xba, 0xa6, 0x8a, 0x29, 0xe2, 0x20, 0x2b, 0xe2, 0x22, 0x8a, 0x11, 0x21, 0xa9, 0x81, - 0x9b, 0x8f, 0xc3, 0x48, 0x0b, 0xb6, 0x49, 0x19, 0xb2, 0x32, 0x3b, 0xd9, 0x93, 0x0f, 0x90, 0x11, - 0x8b, 0x94, 0x29, 0x19, 0xa6, 0x50, 0x19, 0xe0, 0x82, 0x1c, 0xb1, 0x81, 0x3b, 0xa2, 0xa0, 0x60, - 0x90, 0x14, 0x1a, 0xe3, 0x20, 0x9d, 0xb1, 0x22, 0x1d, 0xb0, 0x04, 0x5b, 0x98, 0x81, 0x51, 0x89, - 0x93, 0x2a, 0xfb, 0x8b, 0xa1, 0x70, 0x02, 0x2a, 0xc0, 0x89, 0x22, 0x3a, 0x87, 0x29, 0xdb, 0xaa, - 0x83, 0x7c, 0x91, 0x10, 0x09, 0xc9, 0x22, 0x3a, 0x85, 0x29, 0xb1, 0xcf, 0x91, 0x2d, 0x85, 0x11, - 0x11, 0xec, 0x82, 0x1c, 0x03, 0x10, 0x20, 0xdd, 0x01, 0x0c, 0x03, 0x20, 0x10, 0xf9, 0x10, 0x8c, - 0x13, 0x10, 0x10, 0xf9, 0x18, 0x8c, 0x12, 0x01, 0x30, 0xf8, 0x28, 0xab, 0x04, 0x11, 0x10, 0xf0, - 0x29, 0xbb, 0x14, 0x10, 0x20, 0xe1, 0x2a, 0xc9, 0x32, 0x00, 0x11, 0xe1, 0x1b, 0xe8, 0x30, 0x01, - 0x20, 0xb1, 0x1e, 0xc0, 0x20, 0x11, 0x20, 0xb2, 0x8f, 0xc0, 0x29, 0x03, 0x30, 0x83, 0x9f, 0xb1, - 0x4b, 0x83, 0x21, 0x82, 0xaf, 0xa1, 0x1c, 0x13, 0x30, 0x83, 0xbd, 0xa2, 0x0d, 0x05, 0x10, 0x02, - 0xcc, 0x81, 0x8d, 0x03, 0x28, 0x23, 0xea, 0x11, 0xad, 0x23, 0x1a, 0x14, 0xc9, 0x28, 0xbd, 0x32, - 0x1a, 0x24, 0xc0, 0x28, 0xfa, 0x30, 0x89, 0x23, 0xb8, 0x19, 0xfa, 0x59, 0x98, 0x22, 0xa1, 0x2a, - 0xf8, 0x49, 0x90, 0x21, 0xa0, 0x1a, 0xf1, 0x3b, 0xb2, 0x43, 0x80, 0x9b, 0xa4, 0x2f, 0xb2, 0x31, - 0x91, 0xaa, 0x91, 0x8f, 0x95, 0x28, 0x01, 0x99, 0x01, 0x8f, 0x83, 0x39, 0x82, 0xca, 0x21, 0xaf, - 0x84, 0x18, 0x02, 0xb8, 0x30, 0xbe, 0x05, 0x19, 0x01, 0xb0, 0x39, 0xfc, 0x12, 0x19, 0x02, 0xa0, - 0x49, 0xea, 0x21, 0x88, 0x21, 0xb0, 0x3c, 0xf8, 0x10, 0x08, 0x21, 0xa2, 0x3d, 0xf0, 0x10, 0x80, - 0x01, 0x81, 0x1d, 0xd1, 0x39, 0x90, 0x11, 0x12, 0x0e, 0xb2, 0x2b, 0x83, 0x28, 0x03, 0x9f, 0xc3, - 0x1c, 0x02, 0x18, 0x24, 0xad, 0x94, 0x1b, 0x01, 0x08, 0x43, 0xad, 0x93, 0x0f, 0x11, 0x88, 0x31, - 0xe8, 0x12, 0x9c, 0x02, 0x80, 0x32, 0xfa, 0x11, 0x9c, 0x11, 0x90, 0x61, 0xc0, 0x20, 0x9b, 0x11, - 0x90, 0x50, 0xf1, 0x20, 0xba, 0x20, 0x81, 0x59, 0xd2, 0x38, 0xb9, 0x28, 0x91, 0x69, 0xc2, 0x2a, - 0xb8, 0x29, 0x93, 0x5a, 0xa5, 0x3a, 0xd8, 0x08, 0x83, 0x2a, 0x96, 0x1c, 0xb1, 0x0a, 0x22, 0x2b, - 0x07, 0x1c, 0xb2, 0x0b, 0x13, 0x0b, 0x07, 0x0c, 0xa1, 0x8a, 0x22, 0x9a, 0x37, 0x8c, 0x92, 0x8b, - 0x31, 0xb9, 0x36, 0x9d, 0x93, 0x8c, 0x30, 0xc0, 0x53, 0xaa, 0x03, 0x8c, 0x39, 0xc1, 0x62, 0xaa, - 0x82, 0x8b, 0x39, 0xe3, 0x60, 0xa8, 0x01, 0x8a, 0x29, 0xc4, 0x68, 0xa8, 0x10, 0x8a, 0x0b, 0x96, - 0x49, 0xb1, 0x10, 0x0a, 0x89, 0xa4, 0x7b, 0xb2, 0x08, 0x89, 0x8b, 0x87, 0x2a, 0x92, 0x10, 0xa9, - 0xba, 0x17, 0x2b, 0x93, 0x0c, 0x91, 0xca, 0x23, 0x3b, 0x87, 0x09, 0xa0, 0xaa, 0x34, 0x8c, 0x15, - 0xaa, 0x91, 0xab, 0x51, 0x09, 0x15, 0x8a, 0x92, 0xac, 0x40, 0xb0, 0x44, 0xc9, 0x81, 0xab, 0x30, - 0x90, 0x74, 0xa8, 0x10, 0x9b, 0x29, 0xb3, 0x70, 0xb1, 0x08, 0x9d, 0x18, 0x93, 0x78, 0xb2, 0x28, - 0xba, 0x1a, 0x04, 0x49, 0xc3, 0x3b, 0xda, 0x09, 0x12, 0x48, 0x86, 0x0b, 0xb0, 0x09, 0x21, 0x09, - 0x27, 0x8d, 0xb0, 0x0b, 0x42, 0x91, 0x34, 0x8d, 0xb2, 0x0b, 0x10, 0x83, 0x55, 0xad, 0x92, 0x8a, - 0x18, 0x94, 0x71, 0xa9, 0xa2, 0x1b, 0x01, 0xa3, 0x79, 0xd0, 0x01, 0x0c, 0x88, 0x85, 0x38, 0xd0, - 0x01, 0x0b, 0x80, 0x03, 0x6c, 0xc1, 0x08, 0x0a, 0xa0, 0x14, 0x4a, 0xe3, 0x10, 0xaa, 0x81, 0x23, - 0x2d, 0xc4, 0x19, 0xa9, 0x91, 0x51, 0x1a, 0xa6, 0x2a, 0xb8, 0x81, 0x50, 0x8a, 0x96, 0x0a, 0xa8, - 0x00, 0x59, 0x98, 0x06, 0x8b, 0xa1, 0x08, 0x58, 0xa8, 0x14, 0x0d, 0xa0, 0x19, 0x49, 0xa1, 0x43, - 0x9d, 0xa3, 0x2a, 0x2a, 0xb4, 0x62, 0xcb, 0x82, 0x2c, 0x08, 0xa3, 0x70, 0xa9, 0x01, 0x1d, 0x80, - 0x94, 0x38, 0xd9, 0x11, 0x0d, 0x90, 0x04, 0x49, 0xc8, 0x20, 0x0c, 0x91, 0x02, 0x5a, 0xd1, 0x28, - 0x9b, 0x82, 0x21, 0x3a, 0xf3, 0x38, 0xbb, 0x83, 0x31, 0x2a, 0xd5, 0x3a, 0xca, 0x82, 0x20, 0x20, - 0xb5, 0x3d, 0xd8, 0x01, 0x20, 0x88, 0x94, 0x1d, 0xd0, 0x20, 0x08, 0x01, 0x93, 0x1e, 0xc1, 0x39, - 0x18, 0x01, 0x11, 0x8f, 0xb1, 0x3a, 0x81, 0x22, 0x13, 0xbf, 0xa4, 0x3b, 0x92, 0x21, 0x31, 0xbf, - 0xb3, 0x2e, 0x82, 0x20, 0x20, 0xeb, 0x83, 0x0e, 0x82, 0x30, 0x18, 0xea, 0x11, 0x0d, 0x82, 0x28, - 0x11, 0xe8, 0x10, 0x8c, 0x04, 0x19, 0x01, 0xd0, 0x28, 0x9d, 0x22, 0x29, 0x82, 0xd0, 0x38, 0xeb, - 0x22, 0x2a, 0x03, 0xd0, 0x3b, 0xea, 0x32, 0x0a, 0x13, 0xa0, 0x2d, 0xf8, 0x40, 0x98, 0x02, 0x88, - 0x1b, 0xf0, 0x48, 0x98, 0x13, 0x98, 0x1b, 0xe2, 0x49, 0xa0, 0x13, 0x88, 0x8c, 0xd2, 0x5a, 0xa1, - 0x21, 0x08, 0x9b, 0xb3, 0x3f, 0xa2, 0x50, 0x88, 0xaa, 0xb3, 0x2e, 0xa3, 0x40, 0x80, 0xb9, 0x82, - 0x0f, 0x94, 0x38, 0x91, 0xaa, 0x81, 0x0f, 0x84, 0x3a, 0x82, 0xb9, 0x10, 0x8f, 0x04, 0x3a, 0x91, - 0xa8, 0x18, 0xae, 0x33, 0x3b, 0x85, 0xa9, 0x29, 0xbc, 0x34, 0x1b, 0x07, 0xa9, 0x19, 0xcb, 0x52, - 0x98, 0x13, 0x99, 0x2a, 0xfb, 0x40, 0x80, 0x13, 0xba, 0x09, 0xf8, 0x48, 0x90, 0x32, 0xa8, 0x8b, - 0xc8, 0x69, 0x91, 0x41, 0xb0, 0x89, 0xca, 0x39, 0x04, 0x40, 0xb1, 0x9a, 0xc8, 0x3b, 0x15, 0x50, - 0xb2, 0xab, 0xa9, 0x1d, 0x14, 0x30, 0x94, 0xbb, 0x8a, 0x8c, 0x35, 0x20, 0x95, 0xab, 0x9b, 0xab, - 0x65, 0x80, 0x03, 0xaa, 0x8c, 0xa9, 0x72, 0x01, 0x02, 0xba, 0x8c, 0xb9, 0x60, 0x83, 0x23, 0xca, - 0x9c, 0x90, 0x69, 0x83, 0x21, 0xb8, 0xae, 0xa0, 0x59, 0x84, 0x20, 0x98, 0xac, 0x80, 0x2c, 0x07, - 0x10, 0x98, 0xbb, 0x81, 0x0b, 0x27, 0x29, 0x92, 0xbd, 0x00, 0x0a, 0x27, 0x09, 0x01, 0xdb, 0x18, - 0xab, 0x27, 0x88, 0x01, 0xca, 0x29, 0xb9, 0x45, 0x08, 0x01, 0xda, 0x2a, 0xc8, 0x53, 0x88, 0x11, - 0xc9, 0x2b, 0xc0, 0x71, 0x80, 0x00, 0xb8, 0x1b, 0xd1, 0x50, 0x81, 0x18, 0xb0, 0x0e, 0xb2, 0x68, - 0x81, 0x18, 0xa0, 0x8d, 0xb3, 0x5a, 0x82, 0x18, 0xa1, 0x9e, 0x93, 0x4a, 0x03, 0x09, 0x92, 0xaf, - 0x93, 0x3c, 0x13, 0x89, 0x02, 0xbf, 0x03, 0x1c, 0x14, 0x88, 0x11, 0xbe, 0x12, 0x0c, 0x23, 0x98, - 0x22, 0xdd, 0x11, 0x0b, 0x24, 0xa0, 0x21, 0xfb, 0x38, 0x8c, 0x32, 0x90, 0x30, 0xfb, 0x39, 0xa9, - 0x43, 0x91, 0x38, 0xf8, 0x2a, 0xa9, 0x42, 0x91, 0x28, 0xf1, 0x3b, 0xb0, 0x41, 0x82, 0x19, 0xf3, - 0x2c, 0xa0, 0x20, 0x83, 0x1a, 0xc4, 0x1d, 0xa1, 0x20, 0x13, 0x8a, 0xa5, 0x0f, 0xa1, 0x28, 0x12, - 0x99, 0x95, 0x0e, 0x91, 0x29, 0x22, 0xa8, 0x04, 0x9f, 0x92, 0x19, 0x22, 0xa8, 0x22, 0xaf, 0x82, - 0x1a, 0x33, 0xa0, 0x51, 0xbe, 0x82, 0x89, 0x42, 0x90, 0x40, 0xcc, 0x01, 0x89, 0x42, 0x91, 0x48, - 0xfa, 0x00, 0x89, 0x21, 0x82, 0x39, 0xf9, 0x19, 0x98, 0x41, 0x02, 0x2a, 0xf1, 0x1a, 0x98, 0x30, - 0x12, 0x1a, 0xf3, 0x1c, 0x90, 0x38, 0x14, 0x89, 0xc3, 0x0e, 0x90, 0x28, 0x23, 0x99, 0xa4, 0x8f, - 0x81, 0x19, 0x43, 0x98, 0x01, 0xaf, 0x81, 0x19, 0x33, 0xb0, 0x22, 0xcf, 0x11, 0x0a, 0x43, 0xa1, - 0x20, 0xcd, 0x18, 0x89, 0x43, 0x91, 0x39, 0xfb, 0x29, 0x98, 0x52, 0x92, 0x29, 0xf9, 0x19, 0x98, - 0x31, 0x83, 0x1a, 0xf2, 0x1c, 0x91, 0x30, 0x04, 0x0a, 0xd2, 0x1d, 0x90, 0x38, 0x13, 0x9a, 0xb3, - 0x9f, 0xa3, 0x48, 0x23, 0x9a, 0xa3, 0xbf, 0x93, 0x29, 0x24, 0xb8, 0x03, 0xcf, 0x83, 0x29, 0x32, - 0xc0, 0x21, 0xbf, 0x83, 0x1a, 0x23, 0xb1, 0x48, 0xdd, 0x12, 0x0a, 0x32, 0xa2, 0x4a, 0xfa, 0x28, - 0x8a, 0x32, 0xa1, 0x49, 0xf8, 0x39, 0x8a, 0x32, 0x93, 0x2c, 0xf2, 0x2a, 0x99, 0x22, 0x82, 0x2b, - 0xf4, 0x3a, 0xa8, 0x31, 0x12, 0x8b, 0xc5, 0x2d, 0xa8, 0x21, 0x02, 0x8a, 0xa5, 0x1f, 0xa1, 0x20, - 0x11, 0xa8, 0x83, 0x8f, 0xa1, 0x28, 0x12, 0xa8, 0x14, 0x9f, 0x92, 0x29, 0x22, 0xa0, 0x31, 0xcf, - 0x92, 0x2a, 0x13, 0xa0, 0x51, 0xbd, 0x02, 0x1a, 0x23, 0xa2, 0x58, 0xdc, 0x01, 0x0b, 0x13, 0x92, - 0x69, 0xe9, 0x10, 0x89, 0x12, 0x01, 0x39, 0xf8, 0x19, 0xaa, 0x33, 0x00, 0x39, 0xf4, 0x2a, 0xb8, - 0x32, 0x12, 0x19, 0xf2, 0x1b, 0xd8, 0x21, 0x11, 0x00, 0xb3, 0x8f, 0xa1, 0x48, 0x11, 0x80, 0x82, - 0x9f, 0xb0, 0x49, 0x11, 0x81, 0x21, 0xae, 0xa2, 0x3b, 0x23, 0x04, 0x39, 0xce, 0xa1, 0x2b, 0x02, - 0x33, 0x58, 0xf9, 0x08, 0x0a, 0x02, 0x33, 0x3a, 0xf1, 0x0b, 0x8d, 0x02, 0x32, 0x28, 0xf4, 0x09, - 0x99, 0x02, 0x42, 0x88, 0xd3, 0x0b, 0xbb, 0x13, 0x71, 0x80, 0xa4, 0x0c, 0xa8, 0x01, 0x70, 0x90, - 0x83, 0x8e, 0xa8, 0x10, 0x30, 0x91, 0x15, 0x9d, 0xa0, 0x18, 0x68, 0xa2, 0x21, 0xad, 0xb1, 0x09, - 0x40, 0x94, 0x42, 0xbc, 0x90, 0x08, 0x38, 0x96, 0x41, 0xda, 0x88, 0x0a, 0x38, 0x85, 0x48, 0xc8, - 0x88, 0x8a, 0x28, 0x07, 0x28, 0xc8, 0x89, 0x8a, 0x18, 0x06, 0x30, 0xd1, 0x0a, 0x9a, 0x28, 0x16, - 0x29, 0xb2, 0x8d, 0xaa, 0x18, 0x16, 0x20, 0xa2, 0x8e, 0x98, 0x09, 0x24, 0x20, 0xa3, 0x9f, 0xa8, - 0x09, 0x24, 0x30, 0x84, 0x9e, 0xa0, 0x0a, 0x43, 0x20, 0x02, 0xae, 0xb8, 0x8a, 0x44, 0x20, 0x13, - 0xcc, 0x98, 0x9b, 0x63, 0x20, 0x12, 0xbc, 0xa9, 0xac, 0x53, 0x21, 0x33, 0xfb, 0x89, 0x9a, 0x41, - 0x11, 0x33, 0xea, 0xa9, 0xbb, 0x62, 0x11, 0x23, 0xd8, 0x99, 0xca, 0x48, 0x12, 0x24, 0xc9, 0x9a, - 0xca, 0x30, 0x13, 0x35, 0xb0, 0x9c, 0xdb, 0x38, 0x04, 0x42, 0xb0, 0x9b, 0xeb, 0x29, 0x14, 0x42, - 0x90, 0x9c, 0xb9, 0x2a, 0x05, 0x52, 0x91, 0xbb, 0xd9, 0x2a, 0x04, 0x42, 0x92, 0xab, 0xd9, 0x0b, - 0x24, 0x51, 0x81, 0xab, 0xba, 0x0e, 0x23, 0x51, 0x02, 0xbb, 0xb9, 0x8e, 0x23, 0x50, 0x02, 0xba, - 0xba, 0x9e, 0x33, 0x50, 0x13, 0xca, 0xa9, 0xac, 0x33, 0x40, 0x05, 0xa9, 0xaa, 0xad, 0x32, 0x31, - 0x16, 0xb8, 0x9a, 0xcc, 0x31, 0x30, 0x25, 0xc8, 0xa9, 0xcb, 0x40, 0x11, 0x34, 0xa8, 0xba, 0xdc, - 0x38, 0x21, 0x25, 0xb0, 0xaa, 0xeb, 0x39, 0x21, 0x35, 0xb1, 0xab, 0xea, 0x29, 0x02, 0x44, 0x91, - 0x9b, 0xeb, 0x2a, 0x03, 0x34, 0x92, 0x9c, 0xd9, 0x1b, 0x12, 0x44, 0x92, 0xab, 0xd9, 0x0b, 0x13, - 0x44, 0x03, 0xbb, 0xda, 0x8c, 0x13, 0x43, 0x12, 0xbb, 0xca, 0x8f, 0x02, 0x33, 0x22, 0xca, 0xaa, - 0x9e, 0x02, 0x42, 0x23, 0xc9, 0xaa, 0xad, 0x22, 0x42, 0x32, 0xd0, 0x9a, 0xbc, 0x11, 0x43, 0x33, - 0xc0, 0xab, 0xcd, 0x11, 0x42, 0x22, 0xb2, 0xac, 0xeb, 0x18, 0x32, 0x33, 0xa2, 0x9e, 0xda, 0x08, - 0x32, 0x24, 0x82, 0xad, 0xba, 0x1a, 0x52, 0x32, 0x03, 0xbd, 0xd9, 0x0a, 0x42, 0x23, 0x02, 0xdb, - 0xb9, 0x8c, 0x31, 0x25, 0x22, 0xdb, 0xaa, 0x8b, 0x42, 0x33, 0x24, 0xd9, 0xab, 0x9d, 0x31, 0x24, - 0x21, 0xc8, 0xab, 0xac, 0x30, 0x26, 0x22, 0xb8, 0x9e, 0x9a, 0x28, 0x24, 0x32, 0xc2, 0x9d, 0xba, - 0x38, 0x25, 0x12, 0x92, 0xae, 0xaa, 0x1a, 0x35, 0x22, 0x92, 0xae, 0xa9, 0x0a, 0x35, 0x12, 0x03, - 0xbe, 0xa9, 0x0b, 0x44, 0x12, 0x12, 0xdc, 0x99, 0x8a, 0x53, 0x12, 0x11, 0xfa, 0x89, 0x9a, 0x42, - 0x12, 0x21, 0xe9, 0x8a, 0xaa, 0x61, 0x12, 0x20, 0xd8, 0x8b, 0xb9, 0x50, 0x22, 0x22, 0xe0, 0x8b, - 0xb9, 0x40, 0x14, 0x11, 0xb1, 0x9f, 0xa8, 0x49, 0x13, 0x11, 0xa2, 0x9f, 0xa0, 0x2a, 0x24, 0x21, - 0x91, 0xaf, 0xa0, 0x2a, 0x24, 0x11, 0x12, 0xaf, 0x98, 0x1b, 0x25, 0x01, 0x01, 0xcc, 0x88, 0x8c, - 0x24, 0x11, 0x21, 0xfb, 0x88, 0x8a, 0x33, 0x11, 0x22, 0xfa, 0x0b, 0xab, 0x44, 0x01, 0x21, 0xe8, - 0x0a, 0xb9, 0x52, 0x11, 0x11, 0xe0, 0x0b, 0xc8, 0x31, 0x12, 0x21, 0xd2, 0x8d, 0xc0, 0x30, 0x12, - 0x01, 0xb2, 0x9f, 0xb0, 0x49, 0x13, 0x11, 0x92, 0xaf, 0x90, 0x3a, 0x14, 0x10, 0x01, 0xaf, 0xa0, - 0x2a, 0x15, 0x01, 0x01, 0xcc, 0x80, 0x0b, 0x24, 0x12, 0x01, 0xdd, 0x08, 0x0b, 0x33, 0x12, 0x32, - 0xfb, 0x0b, 0x9b, 0x35, 0x01, 0x20, 0xf9, 0x0a, 0xaa, 0x43, 0x12, 0x21, 0xf8, 0x0a, 0xb8, 0x41, - 0x11, 0x21, 0xd0, 0x8d, 0xa8, 0x50, 0x11, 0x10, 0xa1, 0x8e, 0xb0, 0x38, 0x13, 0x02, 0xa1, 0xbf, - 0xa1, 0x3a, 0x15, 0x12, 0x82, 0xaf, 0x90, 0x3b, 0x23, 0x11, 0x01, 0xde, 0x80, 0x0b, 0x15, 0x11, - 0x11, 0xeb, 0x08, 0x8b, 0x14, 0x11, 0x10, 0xf9, 0x1a, 0x9a, 0x33, 0x22, 0x12, 0xf1, 0x1c, 0xc9, - 0x22, 0x20, 0x10, 0xd1, 0x0d, 0xb0, 0x31, 0x21, 0x12, 0xb3, 0x9f, 0xd0, 0x38, 0x11, 0x00, 0x01, - 0x9f, 0xb1, 0x3a, 0x33, 0x12, 0x12, 0xcf, 0xa2, 0x1b, 0x12, 0x02, 0x42, 0xce, 0x91, 0x1a, 0x23, - 0x11, 0x41, 0xfa, 0x00, 0x9c, 0x22, 0x01, 0x38, 0xf9, 0x18, 0x9b, 0x22, 0x32, 0x40, 0xf2, 0x1a, - 0xba, 0x21, 0x02, 0x20, 0xd5, 0x2b, 0xca, 0x21, 0x23, 0x10, 0xb5, 0x1d, 0xc8, 0x29, 0x21, 0x08, - 0x85, 0x0f, 0xa0, 0x18, 0x12, 0x00, 0x05, 0x9c, 0xb1, 0x0b, 0x32, 0x80, 0x25, 0x9e, 0x91, 0x0c, - 0x22, 0x01, 0x34, 0xbc, 0x90, 0x9d, 0x22, 0x91, 0x62, 0xc9, 0x80, 0x9b, 0x32, 0x03, 0x72, 0xc8, - 0x08, 0xbb, 0x20, 0x02, 0x71, 0xc1, 0x09, 0xaa, 0x48, 0x02, 0x60, 0xa1, 0x0a, 0xea, 0x19, 0x12, - 0x48, 0xb2, 0x0b, 0xd8, 0x2a, 0x23, 0x61, 0xa3, 0xab, 0xc8, 0x0c, 0x22, 0x38, 0x86, 0x9a, 0xa9, - 0x0d, 0x33, 0x30, 0x06, 0xaa, 0xa9, 0x9e, 0x21, 0x10, 0x06, 0x99, 0x99, 0xab, 0x52, 0x10, 0x16, - 0xa8, 0x8a, 0xcc, 0x20, 0x01, 0x24, 0x98, 0x8b, 0xeb, 0x38, 0x12, 0x26, 0x88, 0xab, 0xea, 0x29, - 0x01, 0x43, 0x00, 0xbb, 0xd9, 0x2a, 0x04, 0x34, 0x01, 0xdb, 0xb9, 0x0c, 0x11, 0x63, 0x10, 0xc9, - 0x98, 0x0c, 0x12, 0x62, 0x10, 0xd0, 0x99, 0xab, 0x12, 0x52, 0x11, 0xd1, 0x89, 0xab, 0x22, 0x72, - 0x11, 0xc1, 0x8b, 0xcb, 0x11, 0x40, 0x02, 0xa4, 0x0c, 0xca, 0x20, 0x41, 0x02, 0x94, 0x8d, 0xc9, - 0x09, 0x31, 0x03, 0x05, 0x8d, 0xa8, 0x1a, 0x31, 0x05, 0x13, 0x9e, 0xb8, 0x0c, 0x21, 0x03, 0x43, - 0xac, 0xa0, 0x8c, 0x21, 0x06, 0x41, 0xbb, 0x98, 0x9d, 0x20, 0x03, 0x72, 0xb8, 0x90, 0xab, 0x21, - 0x05, 0x61, 0xb8, 0x89, 0xac, 0x18, 0x23, 0x71, 0xa0, 0x89, 0xba, 0x18, 0x15, 0x60, 0xb1, 0x99, - 0xca, 0x09, 0x33, 0x68, 0x92, 0x99, 0xca, 0x89, 0x34, 0x48, 0x95, 0x8b, 0xba, 0x8c, 0x32, 0x40, - 0x86, 0x89, 0xb9, 0x9a, 0x42, 0x20, 0x07, 0x9a, 0xb8, 0xac, 0x31, 0x21, 0x17, 0x99, 0xa8, 0xab, - 0x50, 0x01, 0x16, 0xa9, 0xb8, 0xac, 0x38, 0x02, 0x37, 0x99, 0x98, 0xac, 0x28, 0x02, 0x55, 0xa8, - 0xa8, 0xcb, 0x29, 0x02, 0x73, 0x91, 0x98, 0xbb, 0x1a, 0x04, 0x72, 0xa1, 0x88, 0xac, 0x0b, 0x03, - 0x72, 0xa3, 0x08, 0xcb, 0x8a, 0x13, 0x70, 0xa3, 0x88, 0xdb, 0x8a, 0x12, 0x60, 0x83, 0x09, 0xd9, - 0x9a, 0x21, 0x58, 0x85, 0x89, 0xb9, 0xab, 0x30, 0x58, 0x07, 0x19, 0xb8, 0x9b, 0x10, 0x10, 0x27, - 0x89, 0xc0, 0xbb, 0x10, 0x11, 0x37, 0x09, 0xb0, 0x9d, 0x19, 0x01, 0x45, 0x89, 0xa0, 0xad, 0x08, - 0x01, 0x45, 0x88, 0x91, 0x9d, 0x09, 0x00, 0x73, 0x90, 0x80, 0xac, 0x09, 0x00, 0x73, 0x91, 0x81, - 0xcb, 0x89, 0x81, 0x72, 0x91, 0x00, 0xcb, 0x89, 0x08, 0x72, 0x82, 0x18, 0xda, 0x89, 0x80, 0x51, - 0x82, 0x18, 0xea, 0x8a, 0x00, 0x50, 0x03, 0x18, 0xf8, 0x8a, 0x80, 0x30, 0x05, 0x08, 0xc8, 0x8c, - 0x80, 0x30, 0x25, 0x09, 0xc1, 0x8d, 0x08, 0x28, 0x24, 0x88, 0xb1, 0x9f, 0x08, 0x28, 0x25, 0x88, - 0x91, 0xae, 0x80, 0x18, 0x34, 0x90, 0x81, 0xaf, 0x08, 0x18, 0x53, 0x80, 0x00, 0xbd, 0x08, 0x19, - 0x63, 0x91, 0x00, 0xfb, 0x08, 0x08, 0x42, 0x81, 0x18, 0xfa, 0x09, 0x08, 0x41, 0x82, 0x08, 0xf9, - 0x09, 0x88, 0x32, 0x04, 0x19, 0xe8, 0x0b, 0x90, 0x41, 0x13, 0x09, 0xe0, 0x0c, 0x90, 0x31, 0x14, - 0x88, 0xc1, 0x8e, 0x80, 0x38, 0x33, 0x98, 0xb1, 0xbf, 0x81, 0x38, 0x25, 0x90, 0x91, 0xaf, 0x80, - 0x28, 0x43, 0x80, 0x80, 0xbf, 0x81, 0x18, 0x34, 0x91, 0x18, 0xce, 0x80, 0x18, 0x42, 0x92, 0x18, - 0xec, 0x08, 0x08, 0x42, 0x82, 0x19, 0xfa, 0x09, 0x08, 0x41, 0x02, 0x09, 0xf8, 0x0a, 0x00, 0x40, - 0x12, 0x89, 0xd8, 0x0c, 0x80, 0x40, 0x13, 0x89, 0xd1, 0x8d, 0x81, 0x20, 0x24, 0x89, 0xb0, 0x9f, - 0x00, 0x10, 0x15, 0x90, 0x90, 0x9e, 0x00, 0x18, 0x34, 0x98, 0x88, 0xbe, 0x10, 0x18, 0x25, 0x91, - 0x08, 0xbe, 0x00, 0x00, 0x34, 0xa2, 0x09, 0xfc, 0x08, 0x80, 0x43, 0x81, 0x08, 0xeb, 0x09, 0x00, - 0x42, 0x83, 0x8a, 0xea, 0x0b, 0x01, 0x62, 0x02, 0x89, 0xd8, 0x8b, 0x82, 0x51, 0x03, 0x99, 0xc9, - 0x9d, 0x01, 0x41, 0x14, 0x98, 0xb8, 0xad, 0x11, 0x38, 0x26, 0x99, 0xa9, 0xbd, 0x21, 0x20, 0x26, - 0x90, 0x89, 0xbd, 0x28, 0x10, 0x35, 0xa0, 0x9a, 0xdc, 0x29, 0x11, 0x25, 0x92, 0x9a, 0xfa, 0x19, - 0x01, 0x42, 0x81, 0x9b, 0xea, 0x1a, 0x83, 0x53, 0x02, 0x9a, 0xe8, 0x0b, 0x02, 0x41, 0x03, 0xac, - 0xc0, 0x8c, 0x03, 0x51, 0x13, 0xaa, 0xa8, 0x9f, 0x02, 0x20, 0x23, 0xca, 0xa8, 0x9f, 0x22, 0x20, - 0x43, 0xb9, 0x88, 0xbe, 0x22, 0x18, 0x43, 0xd8, 0x09, 0xdb, 0x31, 0x10, 0x53, 0xb0, 0x19, 0xfb, - 0x38, 0x88, 0x32, 0xc1, 0x1b, 0xf9, 0x28, 0x01, 0x32, 0xb3, 0x1b, 0xf8, 0x2b, 0x81, 0x40, 0xb3, - 0x8c, 0xd1, 0x3b, 0x83, 0x51, 0x84, 0x8b, 0xb0, 0x1f, 0x01, 0x19, 0x84, 0x9b, 0xa1, 0x0e, 0x13, - 0x28, 0x15, 0x9b, 0x92, 0x9f, 0x02, 0x88, 0x23, 0xcb, 0x01, 0x9e, 0x23, 0x08, 0x44, 0xb9, 0x01, - 0xbd, 0x22, 0x99, 0x52, 0xc9, 0x10, 0xcb, 0x32, 0x81, 0x72, 0xb0, 0x28, 0xea, 0x10, 0x90, 0x48, - 0xb0, 0x3a, 0xf8, 0x20, 0x81, 0x40, 0xa2, 0x2a, 0xf8, 0x29, 0x90, 0x29, 0xb3, 0x2c, 0xd1, 0x29, - 0x12, 0x48, 0x85, 0x0b, 0xe2, 0x09, 0x80, 0x19, 0x84, 0x0d, 0xb2, 0x2a, 0x13, 0x18, 0x17, 0x8b, - 0xc3, 0x0c, 0x81, 0x99, 0x33, 0x9e, 0x93, 0x1c, 0x12, 0x10, 0x44, 0xba, 0x83, 0x9f, 0x81, 0x98, - 0x41, 0xd9, 0x11, 0x8b, 0x13, 0x01, 0x73, 0xc0, 0x11, 0x9d, 0x80, 0x90, 0x38, 0xe1, 0x20, 0x9b, - 0x22, 0x11, 0x61, 0xc2, 0x39, 0xcb, 0x80, 0x98, 0x29, 0xc5, 0x4a, 0xb8, 0x21, 0x21, 0x30, 0x97, - 0x3b, 0xe8, 0x88, 0x88, 0x88, 0x94, 0x2c, 0xc1, 0x20, 0x11, 0x02, 0x07, 0x0b, 0xd1, 0x09, 0x89, - 0xa0, 0x23, 0x0f, 0xa2, 0x29, 0x21, 0x83, 0x45, 0x8c, 0xb2, 0x8c, 0x98, 0xa1, 0x50, 0xab, 0x84, - 0x2a, 0x11, 0x05, 0x61, 0xb8, 0x92, 0x8e, 0x98, 0x80, 0x39, 0xc0, 0x12, 0x0c, 0x03, 0x24, 0x58, - 0xc1, 0x10, 0xad, 0xa0, 0x28, 0x2b, 0xe3, 0x28, 0x89, 0x13, 0x71, 0x18, 0xa4, 0x2a, 0xdb, 0x90, - 0x19, 0x9a, 0xa5, 0x39, 0xa8, 0x43, 0x68, 0x81, 0x94, 0x1a, 0xe9, 0x88, 0x0a, 0xa0, 0x83, 0x1c, - 0xb2, 0x62, 0x30, 0x93, 0x05, 0x8b, 0xf8, 0x19, 0x9a, 0xa1, 0x11, 0x0d, 0x82, 0x79, 0x01, 0x83, - 0x21, 0xac, 0xa0, 0x1d, 0xb8, 0x80, 0x2a, 0xab, 0x14, 0x7a, 0x85, 0x12, 0x18, 0xb9, 0xa0, 0x8e, - 0xb2, 0x09, 0x0a, 0xd9, 0x31, 0x29, 0x37, 0x31, 0x00, 0xe8, 0x09, 0xac, 0x83, 0x0b, 0x89, 0xda, - 0x38, 0x81, 0x67, 0x00, 0x81, 0xa8, 0x0a, 0xca, 0x21, 0xaa, 0xa0, 0xd9, 0x3a, 0x84, 0x65, 0x00, - 0x01, 0xa8, 0x8b, 0xd8, 0x38, 0xc8, 0x08, 0xa9, 0x0c, 0x04, 0x72, 0x83, 0x11, 0xa9, 0x9c, 0xa0, - 0x4b, 0xb1, 0x89, 0xca, 0x9b, 0x16, 0x61, 0x04, 0x28, 0xa8, 0xbb, 0x80, 0x1d, 0xa3, 0x8b, 0xa9, - 0xac, 0x63, 0x30, 0x27, 0x18, 0x98, 0xca, 0x08, 0xaa, 0x85, 0x0b, 0xa8, 0xbb, 0x70, 0x11, 0x27, - 0x08, 0x80, 0xba, 0x0a, 0xb9, 0x24, 0x9c, 0x98, 0xcb, 0x58, 0x02, 0x37, 0x08, 0x81, 0xca, 0x0a, - 0xb8, 0x41, 0xba, 0x90, 0xcb, 0x39, 0x06, 0x64, 0x00, 0x80, 0xb8, 0x8b, 0xb0, 0x59, 0xb8, 0x98, - 0xb9, 0x2b, 0x27, 0x71, 0x82, 0x81, 0xb8, 0x9c, 0x91, 0x2a, 0xb1, 0x9a, 0xd9, 0x0b, 0x26, 0x62, - 0x03, 0x00, 0xb8, 0xad, 0x00, 0x0b, 0x93, 0xac, 0xa8, 0x9c, 0x45, 0x31, 0x16, 0x08, 0x98, 0xcb, - 0x18, 0x9b, 0x83, 0xbb, 0x99, 0xbd, 0x73, 0x22, 0x17, 0x80, 0x88, 0xca, 0x19, 0xa9, 0x12, 0xba, - 0x8a, 0xdb, 0x70, 0x03, 0x25, 0x00, 0x09, 0xda, 0x1a, 0xb8, 0x11, 0xc8, 0x8a, 0xc8, 0x79, 0x02, - 0x43, 0x02, 0x0a, 0xd9, 0x0b, 0xb1, 0x19, 0xa0, 0x8e, 0xa0, 0x4a, 0x06, 0x42, 0x02, 0x89, 0xc0, - 0x8c, 0xa1, 0x1a, 0x80, 0xad, 0x81, 0x1c, 0x17, 0x30, 0x22, 0x99, 0x90, 0x9f, 0x91, 0x8a, 0x00, - 0xbb, 0x01, 0x8c, 0x37, 0x30, 0x43, 0xa8, 0x00, 0xbe, 0x00, 0x9b, 0x10, 0xdb, 0x28, 0xc9, 0x45, - 0x10, 0x33, 0xa1, 0x29, 0xfc, 0x18, 0xaa, 0x18, 0xc0, 0x29, 0xc0, 0x61, 0x11, 0x31, 0xa3, 0x19, - 0xf0, 0x1b, 0xb9, 0x09, 0xb1, 0x2c, 0xd3, 0x68, 0x82, 0x31, 0x84, 0x09, 0xd1, 0x0c, 0xb0, 0x8a, - 0x92, 0x1c, 0xa4, 0x4b, 0x05, 0x20, 0x14, 0x8a, 0xb3, 0x9f, 0x90, 0x8b, 0x02, 0x9b, 0x05, 0x1d, - 0x14, 0x18, 0x24, 0x99, 0x02, 0xaf, 0x80, 0xab, 0x22, 0xba, 0x34, 0x9d, 0x24, 0x08, 0x44, 0x98, - 0x11, 0xcd, 0x80, 0xaa, 0x30, 0xb8, 0x61, 0xba, 0x33, 0x80, 0x74, 0x91, 0x38, 0xfb, 0x08, 0xa9, - 0x28, 0xa1, 0x58, 0xb8, 0x30, 0x91, 0x72, 0x93, 0x39, 0xf9, 0x89, 0xb8, 0x28, 0xa2, 0x49, 0xd2, - 0x28, 0x81, 0x50, 0x04, 0x3a, 0xf1, 0x8a, 0xa8, 0x09, 0x03, 0x3b, 0xb5, 0x2a, 0x82, 0x58, 0x16, - 0x1a, 0xc2, 0x8c, 0xa8, 0x8a, 0x23, 0x0b, 0x97, 0x0a, 0x02, 0x28, 0x27, 0x89, 0x93, 0x9f, 0x88, - 0x9a, 0x22, 0x99, 0x05, 0x8b, 0x03, 0x18, 0x55, 0xa0, 0x03, 0xaf, 0x90, 0x8a, 0x30, 0xb0, 0x34, - 0x9c, 0x11, 0x18, 0x64, 0x90, 0x21, 0xbd, 0x89, 0xaa, 0x48, 0xa1, 0x52, 0xba, 0x22, 0x08, 0x72, - 0xa3, 0x30, 0xfb, 0x89, 0xaa, 0x28, 0xa3, 0x68, 0xb0, 0x20, 0x08, 0x52, 0x85, 0x29, 0xe8, 0x99, - 0xa9, 0x08, 0x83, 0x59, 0xb1, 0x28, 0x80, 0x52, 0x06, 0x29, 0xd0, 0x8b, 0xba, 0x88, 0x23, 0x4a, - 0xa4, 0x2a, 0x80, 0x51, 0x35, 0x09, 0xc2, 0x9e, 0xb9, 0x88, 0x22, 0x29, 0x95, 0x1a, 0x91, 0x31, - 0x37, 0x80, 0xa2, 0xaf, 0xb9, 0x0a, 0x30, 0x00, 0x06, 0x8a, 0x92, 0x48, 0x63, 0x81, 0x81, 0xbd, - 0xd9, 0x0a, 0x10, 0x01, 0x14, 0x9a, 0x92, 0x48, 0x43, 0x04, 0x11, 0xbe, 0xca, 0x8b, 0x10, 0x12, - 0x52, 0xa9, 0x81, 0x3a, 0x35, 0x25, 0x00, 0xfb, 0xb9, 0x8c, 0x00, 0x21, 0x41, 0xa0, 0x88, 0x1a, - 0x25, 0x34, 0x11, 0xf9, 0xab, 0x9d, 0x80, 0x31, 0x31, 0xa1, 0x09, 0x8b, 0x26, 0x63, 0x01, 0xc0, - 0xac, 0xac, 0x88, 0x41, 0x11, 0x83, 0x8a, 0xaa, 0x34, 0x73, 0x83, 0xa0, 0xae, 0xcb, 0x88, 0x30, - 0x04, 0x12, 0x9a, 0xa9, 0x32, 0x74, 0x03, 0x88, 0xbd, 0xdb, 0x09, 0x28, 0x14, 0x21, 0xa9, 0xa9, - 0x31, 0x73, 0x14, 0x08, 0xcc, 0xbb, 0x8a, 0x28, 0x16, 0x11, 0x98, 0xa9, 0x38, 0x53, 0x25, 0x80, - 0xea, 0xbb, 0x8b, 0x18, 0x44, 0x11, 0x90, 0xb9, 0x39, 0x53, 0x45, 0x08, 0xd9, 0xbb, 0x8c, 0x08, - 0x53, 0x01, 0x91, 0x99, 0x1a, 0x33, 0x56, 0x80, 0xb8, 0xbd, 0x8c, 0x08, 0x41, 0x12, 0x81, 0x9a, - 0x8a, 0x24, 0x54, 0x82, 0xa8, 0xbe, 0xac, 0x80, 0x41, 0x03, 0x01, 0xa9, 0x8a, 0x42, 0x72, 0x83, - 0x98, 0xdc, 0xab, 0x09, 0x30, 0x16, 0x10, 0xa8, 0x8a, 0x21, 0x52, 0x15, 0x89, 0xdb, 0xbc, 0x88, - 0x10, 0x25, 0x10, 0x90, 0x9b, 0x21, 0x42, 0x17, 0x88, 0xd9, 0xac, 0x89, 0x18, 0x34, 0x01, 0x91, - 0xba, 0x20, 0x32, 0x57, 0x90, 0xb9, 0xcd, 0x89, 0x08, 0x43, 0x02, 0x81, 0xba, 0x18, 0x22, 0x47, - 0x91, 0xa9, 0xbe, 0x9a, 0x08, 0x52, 0x12, 0x10, 0xaa, 0x1a, 0x12, 0x46, 0x02, 0xaa, 0xce, 0x9b, - 0x08, 0x32, 0x24, 0x10, 0xc8, 0x0a, 0x12, 0x63, 0x13, 0xaa, 0xdd, 0xab, 0x09, 0x41, 0x33, 0x01, - 0xc0, 0x9a, 0x21, 0x44, 0x24, 0xa9, 0xdc, 0xac, 0x89, 0x22, 0x53, 0x81, 0x90, 0xaa, 0x20, 0x34, - 0x72, 0xa0, 0xca, 0xbc, 0x8a, 0x31, 0x62, 0x82, 0x80, 0xaa, 0x19, 0x34, 0x61, 0xa2, 0xca, 0xad, - 0xaa, 0x22, 0x60, 0x83, 0x80, 0x9a, 0x8a, 0x44, 0x30, 0x84, 0xcb, 0xbc, 0xbb, 0x31, 0x51, 0x06, - 0x88, 0x98, 0x8a, 0x51, 0x20, 0x04, 0xba, 0xcc, 0xab, 0x38, 0x31, 0x27, 0x88, 0xa8, 0xa9, 0x50, - 0x02, 0x15, 0xb9, 0xcb, 0xbc, 0x39, 0x11, 0x27, 0x80, 0x98, 0xaa, 0x48, 0x03, 0x44, 0xa9, 0xcb, - 0xbc, 0x1a, 0x03, 0x55, 0x91, 0x88, 0xaa, 0x29, 0x05, 0x52, 0xa0, 0xbb, 0xcc, 0x89, 0x03, 0x73, - 0x81, 0x88, 0xa9, 0x1a, 0x14, 0x51, 0xa2, 0xbb, 0xbd, 0x8b, 0x22, 0x72, 0x03, 0x89, 0xb9, 0x8b, - 0x25, 0x41, 0x94, 0xab, 0xcc, 0x9b, 0x22, 0x51, 0x14, 0x89, 0xb9, 0x9a, 0x43, 0x41, 0x85, 0xaa, - 0xdb, 0xab, 0x21, 0x32, 0x27, 0x89, 0xb8, 0x9a, 0x31, 0x33, 0x27, 0xbb, 0xda, 0xac, 0x20, 0x21, - 0x26, 0x98, 0xa0, 0xab, 0x31, 0x33, 0x27, 0xc9, 0xb9, 0x9e, 0x08, 0x22, 0x63, 0x98, 0x90, 0xab, - 0x20, 0x32, 0x45, 0xb8, 0xba, 0xaf, 0x08, 0x21, 0x44, 0x90, 0x88, 0xac, 0x00, 0x32, 0x44, 0xc1, - 0x9a, 0xbd, 0x88, 0x22, 0x44, 0x92, 0x89, 0xbc, 0x18, 0x32, 0x44, 0xa2, 0x9c, 0xcd, 0x09, 0x20, - 0x43, 0x94, 0x09, 0xda, 0x08, 0x21, 0x33, 0x94, 0x9c, 0xdc, 0x09, 0x10, 0x33, 0x05, 0x0a, 0xda, - 0x09, 0x11, 0x43, 0x03, 0xac, 0xfa, 0x0a, 0x00, 0x33, 0x14, 0x8a, 0xd8, 0x0b, 0x11, 0x34, 0x13, - 0xcb, 0xea, 0x8c, 0x10, 0x32, 0x24, 0x99, 0xc8, 0x8c, 0x10, 0x43, 0x23, 0xc9, 0xda, 0x9c, 0x00, - 0x42, 0x33, 0xa8, 0xb8, 0x9f, 0x10, 0x32, 0x24, 0xb8, 0xbb, 0xbf, 0x00, 0x42, 0x42, 0x90, 0x99, - 0x9e, 0x00, 0x32, 0x33, 0xc1, 0xab, 0xbf, 0x00, 0x31, 0x34, 0x91, 0x9a, 0xae, 0x18, 0x41, 0x33, - 0xa1, 0xac, 0xbe, 0x08, 0x31, 0x34, 0x93, 0x9b, 0xec, 0x08, 0x31, 0x43, 0x92, 0xbb, 0xdd, 0x09, - 0x21, 0x33, 0x04, 0xaa, 0xeb, 0x09, 0x21, 0x34, 0x03, 0xac, 0xcc, 0x0b, 0x21, 0x34, 0x23, 0xca, - 0xca, 0x0c, 0x21, 0x34, 0x13, 0xda, 0xda, 0x8b, 0x21, 0x43, 0x23, 0xb9, 0xcb, 0x9d, 0x12, 0x34, - 0x23, 0xd9, 0xca, 0x9c, 0x11, 0x42, 0x23, 0xc0, 0xaa, 0xac, 0x21, 0x63, 0x22, 0xb8, 0xac, 0xad, - 0x10, 0x42, 0x33, 0xa0, 0xac, 0xdb, 0x20, 0x42, 0x23, 0xa1, 0xae, 0xda, 0x18, 0x32, 0x33, 0x91, - 0xad, 0xca, 0x29, 0x43, 0x33, 0x92, 0xaf, 0xc9, 0x19, 0x22, 0x43, 0x82, 0xbc, 0xc9, 0x1a, 0x43, - 0x43, 0x81, 0xdb, 0xc9, 0x0a, 0x32, 0x43, 0x02, 0xdb, 0xb9, 0x1c, 0x32, 0x34, 0x03, 0xfb, 0xa9, - 0x0c, 0x21, 0x33, 0x22, 0xea, 0xaa, 0x8b, 0x33, 0x35, 0x13, 0xea, 0xaa, 0x9c, 0x22, 0x43, 0x22, - 0xd9, 0xaa, 0x9c, 0x32, 0x53, 0x12, 0xc8, 0xab, 0xad, 0x31, 0x42, 0x22, 0xc0, 0x9c, 0xbb, 0x51, - 0x32, 0x23, 0xc0, 0x9d, 0xbb, 0x30, 0x43, 0x33, 0xc1, 0xad, 0xba, 0x30, 0x34, 0x34, 0xb1, 0xae, - 0xba, 0x28, 0x24, 0x33, 0xa2, 0xaf, 0xb9, 0x39, 0x24, 0x24, 0x81, 0xad, 0xba, 0x2b, 0x24, 0x24, - 0x82, 0xbd, 0xba, 0x2a, 0x34, 0x44, 0x01, 0xac, 0xbb, 0x0b, 0x34, 0x43, 0x02, 0xeb, 0xaa, 0x0b, - 0x43, 0x53, 0x02, 0xca, 0xba, 0x9b, 0x43, 0x43, 0x03, 0xea, 0xaa, 0x8b, 0x52, 0x32, 0x14, 0xba, - 0xac, 0xab, 0x41, 0x43, 0x13, 0xca, 0xac, 0x9b, 0x50, 0x33, 0x24, 0xc8, 0xbb, 0xba, 0x30, 0x26, - 0x23, 0xb9, 0xcd, 0x9a, 0x38, 0x25, 0x33, 0xa0, 0xbd, 0xaa, 0x2a, 0x26, 0x22, 0xb0, 0xcc, 0xaa, - 0x18, 0x35, 0x43, 0x90, 0xda, 0x9a, 0x0a, 0x34, 0x32, 0xa1, 0xdc, 0x9b, 0x1a, 0x44, 0x32, 0x82, - 0xda, 0xab, 0x9a, 0x44, 0x22, 0x92, 0xea, 0xab, 0x99, 0x44, 0x32, 0x03, 0xd9, 0x9c, 0x99, 0x41, - 0x22, 0x02, 0xda, 0x9d, 0x89, 0x41, 0x23, 0x13, 0xc8, 0x9d, 0x99, 0x48, 0x22, 0x12, 0xca, 0xad, - 0x99, 0x40, 0x24, 0x22, 0xb0, 0xad, 0xa9, 0x28, 0x15, 0x22, 0xc8, 0xbc, 0xaa, 0x48, 0x25, 0x32, - 0xa1, 0xbc, 0xaa, 0x1a, 0x26, 0x21, 0xa0, 0xbe, 0x9a, 0x19, 0x36, 0x31, 0x82, 0xbc, 0xaa, 0x8a, - 0x35, 0x21, 0xa2, 0xaf, 0xaa, 0x09, 0x35, 0x32, 0x04, 0xbb, 0xab, 0xab, 0x44, 0x12, 0x84, 0xae, - 0xaa, 0x89, 0x63, 0x22, 0x23, 0xbb, 0xbb, 0xbb, 0x71, 0x11, 0x22, 0xbd, 0xba, 0xab, 0x73, 0x22, - 0x43, 0xb8, 0xb9, 0xba, 0x49, 0x12, 0x52, 0xda, 0xa9, 0xbb, 0x60, 0x13, 0x53, 0x90, 0xa9, 0xbb, - 0x19, 0x13, 0x72, 0xc8, 0xa9, 0xbb, 0x38, 0x17, 0x42, 0x92, 0x99, 0xbb, 0x8a, 0x12, 0x70, 0xb1, - 0xaa, 0xcb, 0x2a, 0x34, 0x73, 0x02, 0x98, 0xba, 0x9b, 0x00, 0x50, 0xa3, 0x9b, 0xdc, 0x8a, 0x42, - 0x62, 0x13, 0x80, 0xca, 0x9b, 0x89, 0x30, 0x05, 0x8a, 0xfa, 0x8a, 0x20, 0x52, 0x24, 0x00, 0xc8, - 0x9b, 0x9a, 0x10, 0x15, 0x89, 0xe8, 0x8b, 0x08, 0x53, 0x25, 0x01, 0xa0, 0x9d, 0xa9, 0x09, 0x33, - 0x80, 0xc0, 0x8f, 0x89, 0x31, 0x45, 0x11, 0x91, 0x9d, 0xb9, 0x89, 0x32, 0x01, 0x91, 0xbf, 0x98, - 0x38, 0x46, 0x22, 0x81, 0xac, 0xc9, 0x8b, 0x31, 0x11, 0x01, 0xcd, 0xa8, 0x19, 0x46, 0x22, 0x12, - 0xcb, 0xba, 0x9d, 0x20, 0x21, 0x11, 0xda, 0x9a, 0x8b, 0x46, 0x32, 0x14, 0xb9, 0xbb, 0xae, 0x00, - 0x22, 0x11, 0xc8, 0x8b, 0xac, 0x44, 0x53, 0x12, 0xb1, 0x9c, 0xbd, 0x00, 0x20, 0x03, 0xa1, 0x8d, - 0xcb, 0x32, 0x54, 0x23, 0x91, 0xac, 0xcc, 0x09, 0x28, 0x14, 0x80, 0x9b, 0xdb, 0x20, 0x63, 0x24, - 0x00, 0xba, 0xcc, 0x8a, 0x10, 0x14, 0x01, 0xaa, 0xdb, 0x29, 0x53, 0x25, 0x11, 0xb9, 0xcc, 0x8b, - 0x08, 0x43, 0x01, 0xa8, 0xcb, 0x0b, 0x53, 0x36, 0x02, 0xa0, 0xbd, 0x9c, 0x08, 0x32, 0x12, 0x90, - 0xbd, 0x8b, 0x32, 0x57, 0x02, 0x80, 0xbc, 0xbb, 0x09, 0x42, 0x13, 0x00, 0xcc, 0xaa, 0x30, 0x65, - 0x12, 0x00, 0xda, 0xbb, 0x89, 0x31, 0x14, 0x01, 0xd9, 0xab, 0x28, 0x54, 0x24, 0x01, 0xca, 0xbc, - 0x9a, 0x30, 0x24, 0x01, 0xd0, 0xab, 0x19, 0x53, 0x26, 0x01, 0xb8, 0xae, 0x9a, 0x10, 0x33, 0x11, - 0xc1, 0xac, 0x99, 0x43, 0x45, 0x11, 0xb0, 0xad, 0xab, 0x19, 0x43, 0x12, 0x81, 0x9f, 0x99, 0x21, - 0x44, 0x03, 0x91, 0xbd, 0xcb, 0x09, 0x32, 0x04, 0x02, 0xad, 0xa9, 0x38, 0x54, 0x23, 0x00, 0xbd, - 0xcb, 0x0a, 0x31, 0x33, 0x11, 0xfb, 0xa9, 0x18, 0x63, 0x33, 0x01, 0xeb, 0xab, 0x9b, 0x21, 0x34, - 0x21, 0xd9, 0xaa, 0x1a, 0x53, 0x35, 0x02, 0xca, 0xbc, 0x9b, 0x28, 0x53, 0x12, 0xa8, 0xac, 0x8a, - 0x43, 0x45, 0x12, 0xa9, 0xbd, 0x9c, 0x08, 0x42, 0x12, 0x90, 0xca, 0x9a, 0x32, 0x55, 0x13, 0xa8, - 0xcc, 0xbb, 0x08, 0x41, 0x33, 0x90, 0xc9, 0x9c, 0x30, 0x63, 0x24, 0xa0, 0xca, 0xad, 0x09, 0x20, - 0x24, 0x91, 0x98, 0xad, 0x20, 0x42, 0x25, 0x91, 0xba, 0xbe, 0x89, 0x18, 0x44, 0x91, 0x80, 0xac, - 0x18, 0x22, 0x46, 0x91, 0x99, 0xbd, 0x8a, 0x08, 0x53, 0x82, 0x18, 0xdb, 0x19, 0x21, 0x54, 0x82, - 0x89, 0xec, 0x89, 0x88, 0x31, 0x04, 0x09, 0xc8, 0x0a, 0x21, 0x53, 0x05, 0x8a, 0xe9, 0x9a, 0x88, - 0x21, 0x24, 0x09, 0xb0, 0x0d, 0x01, 0x42, 0x25, 0x9a, 0xd0, 0x9c, 0x98, 0x10, 0x34, 0x88, 0x91, - 0x9d, 0x11, 0x21, 0x36, 0xa8, 0xb0, 0xbf, 0x88, 0x18, 0x52, 0x80, 0x00, 0xbb, 0x21, 0x21, 0x56, - 0x90, 0x89, 0xcd, 0x88, 0x88, 0x32, 0x93, 0x20, 0xea, 0x18, 0x11, 0x63, 0x92, 0x89, 0xfb, 0x8b, - 0x90, 0x31, 0x04, 0x18, 0xc1, 0x1b, 0x02, 0x72, 0x83, 0x99, 0xf8, 0x9b, 0x90, 0x20, 0x24, 0x08, - 0xa2, 0x8d, 0x02, 0x40, 0x15, 0x99, 0xa8, 0xbf, 0x80, 0x19, 0x33, 0x01, 0x11, 0xbc, 0x12, 0x48, - 0x35, 0xb1, 0x99, 0xef, 0x88, 0x08, 0x31, 0x01, 0x30, 0xda, 0x10, 0x00, 0x34, 0x92, 0x8b, 0xfb, - 0x8e, 0x88, 0x21, 0x13, 0x18, 0xd2, 0x19, 0x00, 0x41, 0x13, 0x9c, 0xf0, 0x8c, 0x88, 0x28, 0x33, - 0x18, 0x93, 0x8d, 0x01, 0x30, 0x25, 0xb9, 0xc0, 0xbf, 0x98, 0x00, 0x63, 0x00, 0x12, 0x9c, 0x00, - 0x10, 0x52, 0xb0, 0x08, 0xcf, 0x88, 0x88, 0x41, 0x02, 0x31, 0xca, 0x00, 0x08, 0x61, 0xa2, 0x09, - 0xfc, 0x89, 0x88, 0x30, 0x04, 0x30, 0xb0, 0x0a, 0x00, 0x58, 0x85, 0x0a, 0xf8, 0x9b, 0x88, 0x28, - 0x16, 0x20, 0x91, 0x8b, 0x00, 0x29, 0x17, 0x8a, 0xc0, 0xad, 0x09, 0x19, 0x35, 0x10, 0x83, 0xab, - 0x00, 0x0a, 0x36, 0x98, 0xb0, 0xdf, 0x89, 0x88, 0x53, 0x11, 0x12, 0xaa, 0x09, 0x99, 0x73, 0x91, - 0x88, 0xec, 0x8a, 0x88, 0x41, 0x13, 0x32, 0xc8, 0x0a, 0x98, 0x50, 0x83, 0x09, 0xec, 0x9c, 0x90, - 0x48, 0x14, 0x21, 0x90, 0x9b, 0xa1, 0x49, 0x14, 0x98, 0xd9, 0xae, 0x88, 0x29, 0x35, 0x21, 0x01, - 0xcb, 0x80, 0x1b, 0x25, 0x80, 0xb9, 0xcf, 0x09, 0x09, 0x34, 0x23, 0x02, 0xe8, 0x09, 0x8a, 0x33, - 0x02, 0xaa, 0xfd, 0x0b, 0x89, 0x43, 0x24, 0x11, 0xb8, 0x0b, 0xaa, 0x61, 0x12, 0xa9, 0xfa, 0x9c, - 0x88, 0x31, 0x35, 0x02, 0xa1, 0xab, 0xb9, 0x40, 0x24, 0x98, 0xea, 0xad, 0x89, 0x20, 0x36, 0x12, - 0x81, 0xac, 0xa8, 0x18, 0x43, 0x91, 0xc9, 0xbe, 0x9a, 0x38, 0x45, 0x23, 0x00, 0xba, 0xab, 0x1a, - 0x63, 0x82, 0xa9, 0xed, 0x9a, 0x18, 0x53, 0x33, 0x01, 0xb9, 0xbb, 0x8a, 0x42, 0x15, 0x98, 0xcd, - 0xbb, 0x09, 0x63, 0x34, 0x11, 0xa8, 0xcb, 0x99, 0x21, 0x24, 0x90, 0xcc, 0xbc, 0x0a, 0x42, 0x45, - 0x02, 0x88, 0xbb, 0x9a, 0x10, 0x53, 0x81, 0xda, 0xbc, 0x8b, 0x31, 0x46, 0x13, 0x80, 0xba, 0xac, - 0x00, 0x42, 0x03, 0xbb, 0xce, 0x9b, 0x30, 0x44, 0x15, 0x80, 0xb8, 0xab, 0x08, 0x41, 0x23, 0xca, - 0xeb, 0xab, 0x28, 0x44, 0x34, 0x81, 0xa9, 0xcb, 0x1a, 0x11, 0x34, 0xc8, 0xca, 0xad, 0x19, 0x43, - 0x44, 0x01, 0x98, 0xcb, 0x0a, 0x01, 0x43, 0xb1, 0xda, 0xcb, 0x0a, 0x43, 0x44, 0x12, 0x98, 0xcb, - 0x9a, 0x20, 0x41, 0x93, 0xbc, 0xcc, 0x8b, 0x52, 0x52, 0x22, 0x98, 0xc9, 0xaa, 0x10, 0x31, 0x13, - 0xeb, 0xcb, 0xab, 0x41, 0x44, 0x33, 0x90, 0xc9, 0xbb, 0x29, 0x22, 0x33, 0xf9, 0xcb, 0xab, 0x38, - 0x36, 0x34, 0x81, 0xaa, 0xbc, 0x0a, 0x23, 0x32, 0xd1, 0xbd, 0xbb, 0x29, 0x46, 0x42, 0x01, 0xa9, - 0xba, 0x9b, 0x32, 0x32, 0xa3, 0xcf, 0xbb, 0x0a, 0x45, 0x33, 0x14, 0xa9, 0xcb, 0xaa, 0x31, 0x12, - 0x13, 0xce, 0xbb, 0x9a, 0x73, 0x23, 0x24, 0xa8, 0xba, 0xbb, 0x49, 0x13, 0x31, 0xfb, 0xac, 0x99, - 0x40, 0x25, 0x32, 0xa0, 0xba, 0xcb, 0x19, 0x14, 0x21, 0xf0, 0xba, 0x9a, 0x38, 0x37, 0x31, 0x92, - 0xab, 0xcb, 0x8a, 0x24, 0x20, 0xc2, 0xae, 0x9a, 0x19, 0x36, 0x32, 0x84, 0xab, 0xb9, 0x9c, 0x33, - 0x01, 0x93, 0xcf, 0xa9, 0x09, 0x54, 0x12, 0x13, 0xba, 0xb9, 0xac, 0x41, 0x01, 0x02, 0xdd, 0xa9, - 0x89, 0x63, 0x22, 0x33, 0xc9, 0xa9, 0xcb, 0x30, 0x02, 0x21, 0xfb, 0x9b, 0x9b, 0x62, 0x24, 0x22, - 0xc1, 0x8a, 0xcb, 0x18, 0x13, 0x20, 0xf9, 0x8b, 0xba, 0x51, 0x34, 0x31, 0xa2, 0x9c, 0xca, 0x19, - 0x12, 0x01, 0xd1, 0x8e, 0xb9, 0x30, 0x44, 0x22, 0x84, 0xab, 0xc9, 0x0a, 0x11, 0x02, 0xa2, 0xbf, - 0xb8, 0x3a, 0x45, 0x23, 0x23, 0xbc, 0xb8, 0x8d, 0x11, 0x11, 0x80, 0xce, 0x90, 0x0b, 0x25, 0x33, - 0x33, 0xd9, 0x89, 0x9d, 0x00, 0x11, 0x18, 0xfb, 0x09, 0x9b, 0x34, 0x43, 0x23, 0xc1, 0x8a, 0xcc, - 0x10, 0x28, 0x00, 0xe9, 0x0a, 0xca, 0x52, 0x32, 0x22, 0xa2, 0x0c, 0xfa, 0x18, 0x08, 0x81, 0xa8, - 0x0d, 0xc8, 0x40, 0x22, 0x14, 0x82, 0x8b, 0xe8, 0x1a, 0x88, 0x01, 0x98, 0x9e, 0xa0, 0x5a, 0x23, - 0x24, 0x12, 0xba, 0xd0, 0x8c, 0x81, 0x18, 0x08, 0xcd, 0x80, 0x1b, 0x26, 0x23, 0x23, 0xb9, 0xa9, - 0xaf, 0x81, 0x08, 0x00, 0xeb, 0x08, 0x8b, 0x45, 0x22, 0x32, 0xb1, 0x8b, 0xcd, 0x18, 0x99, 0x01, - 0xe8, 0x0a, 0xb8, 0x72, 0x13, 0x33, 0x91, 0x8b, 0xfb, 0x1a, 0x98, 0x18, 0xa0, 0x8e, 0xa0, 0x58, - 0x24, 0x32, 0x83, 0xab, 0xf8, 0x8b, 0x91, 0x19, 0x91, 0xac, 0x90, 0x4b, 0x27, 0x41, 0x12, 0xb8, - 0xa8, 0x9f, 0x80, 0x1a, 0x01, 0xba, 0x08, 0x8b, 0x47, 0x31, 0x15, 0x98, 0x99, 0xcc, 0x19, 0x8a, - 0x12, 0xb8, 0x1a, 0xca, 0x72, 0x32, 0x25, 0x91, 0x99, 0xfb, 0x0a, 0x98, 0x11, 0x80, 0x8a, 0xc8, - 0x68, 0x12, 0x35, 0x01, 0xa9, 0xe9, 0x8c, 0x98, 0x11, 0x01, 0xa8, 0xa8, 0x3c, 0x24, 0x46, 0x11, - 0x98, 0xba, 0x9f, 0x98, 0x20, 0x10, 0xa0, 0x99, 0x0c, 0x15, 0x63, 0x12, 0x91, 0xbb, 0xae, 0x99, - 0x20, 0x01, 0x93, 0x9b, 0xac, 0x14, 0x74, 0x12, 0x82, 0xba, 0xcc, 0xa9, 0x18, 0x12, 0x03, 0x9c, - 0xb9, 0x20, 0x74, 0x24, 0x12, 0xbb, 0xeb, 0xaa, 0x29, 0x02, 0x32, 0xca, 0xa8, 0x09, 0x72, 0x16, - 0x22, 0xb9, 0xca, 0xbb, 0x1a, 0x03, 0x61, 0xc0, 0x88, 0x89, 0x40, 0x26, 0x31, 0xc0, 0xaa, 0xbc, - 0x0a, 0x22, 0x48, 0xc3, 0x8a, 0xa8, 0x38, 0x57, 0x20, 0xb3, 0x9c, 0xc9, 0x8b, 0x22, 0x29, 0x85, - 0x8c, 0x90, 0x19, 0x36, 0x11, 0x85, 0xbb, 0xb9, 0x9d, 0x30, 0x88, 0x16, 0x9b, 0x91, 0x8a, 0x64, - 0x01, 0x23, 0xcb, 0xa9, 0xad, 0x28, 0x91, 0x34, 0xc9, 0x00, 0x8b, 0x73, 0x82, 0x52, 0xb9, 0x99, - 0xbc, 0x18, 0x92, 0x70, 0xb0, 0x18, 0x99, 0x50, 0x03, 0x60, 0xc1, 0x89, 0xba, 0x0a, 0x82, 0x58, - 0xb3, 0x2a, 0xc8, 0x30, 0x16, 0x48, 0xa3, 0x0d, 0xca, 0x0a, 0x10, 0x29, 0x86, 0x0a, 0xb1, 0x29, - 0x34, 0x20, 0x07, 0x8c, 0xb8, 0x8c, 0x00, 0x08, 0x15, 0x9a, 0x92, 0x1a, 0x52, 0x01, 0x25, 0xbb, - 0xb0, 0xaf, 0x18, 0x90, 0x53, 0x99, 0x82, 0x9a, 0x41, 0x03, 0x73, 0xb8, 0x98, 0xbd, 0x09, 0x91, - 0x70, 0xa1, 0x01, 0x99, 0x28, 0x14, 0x60, 0xa1, 0x89, 0xdc, 0x89, 0x00, 0x49, 0x93, 0x10, 0xb8, - 0x88, 0x44, 0x38, 0x87, 0x0a, 0xda, 0x9a, 0x29, 0x19, 0x07, 0x08, 0x90, 0x89, 0x40, 0x10, 0x06, - 0x89, 0xc9, 0xbb, 0x2a, 0x80, 0x27, 0x08, 0xa1, 0x9a, 0x38, 0x84, 0x36, 0x98, 0xc9, 0xbc, 0x0b, - 0x81, 0x54, 0x01, 0x90, 0xaa, 0x19, 0x14, 0x73, 0x91, 0xa8, 0xbd, 0x9b, 0x01, 0x62, 0x02, 0x80, - 0xaa, 0x8b, 0x24, 0x73, 0x82, 0x99, 0xdc, 0xaa, 0x01, 0x31, 0x24, 0x00, 0xca, 0x9a, 0x31, 0x63, - 0x04, 0x98, 0xfb, 0xaa, 0x18, 0x20, 0x25, 0x00, 0xb9, 0x9b, 0x28, 0x44, 0x34, 0x88, 0xdc, 0xbb, - 0x09, 0x21, 0x35, 0x02, 0xc8, 0xab, 0x19, 0x53, 0x34, 0x81, 0xea, 0xac, 0x8a, 0x21, 0x43, 0x13, - 0xb8, 0xad, 0x0a, 0x52, 0x33, 0x03, 0xe9, 0xad, 0x9a, 0x20, 0x42, 0x23, 0xa0, 0xad, 0x99, 0x31, - 0x35, 0x23, 0xb9, 0xcf, 0x9a, 0x18, 0x32, 0x24, 0x91, 0xcb, 0xaa, 0x30, 0x35, 0x34, 0xa8, 0xbe, - 0xbb, 0x19, 0x43, 0x53, 0x81, 0xca, 0xa9, 0x29, 0x34, 0x34, 0x80, 0xcd, 0xba, 0x8a, 0x42, 0x43, - 0x02, 0xca, 0xaa, 0x89, 0x44, 0x43, 0x01, 0xeb, 0xba, 0x9a, 0x41, 0x42, 0x12, 0xb9, 0xbb, 0xaa, - 0x73, 0x43, 0x11, 0xd9, 0xab, 0xbb, 0x30, 0x35, 0x23, 0xc0, 0xab, 0xbb, 0x60, 0x24, 0x13, 0xc0, - 0xbc, 0xcb, 0x28, 0x33, 0x34, 0xa1, 0xbc, 0xba, 0x49, 0x35, 0x33, 0xa0, 0xbe, 0xac, 0x1a, 0x42, - 0x33, 0x82, 0xdb, 0xba, 0x2a, 0x45, 0x23, 0x81, 0xdc, 0xba, 0x8a, 0x42, 0x43, 0x02, 0xca, 0xba, - 0x0b, 0x54, 0x23, 0x02, 0xea, 0xbb, 0x9b, 0x32, 0x26, 0x12, 0xb9, 0xac, 0x9b, 0x62, 0x33, 0x13, - 0xd9, 0xbc, 0xab, 0x30, 0x35, 0x13, 0xb0, 0xbd, 0xaa, 0x40, 0x35, 0x13, 0xb8, 0xcd, 0xab, 0x10, - 0x34, 0x14, 0x90, 0xbc, 0xaa, 0x28, 0x46, 0x12, 0x90, 0xcc, 0xba, 0x08, 0x34, 0x14, 0x81, 0xdb, - 0xaa, 0x18, 0x63, 0x23, 0x90, 0xeb, 0xaa, 0x89, 0x43, 0x33, 0x81, 0xea, 0xab, 0x19, 0x62, 0x33, - 0x81, 0xea, 0xbb, 0x89, 0x41, 0x34, 0x01, 0xd9, 0xab, 0x89, 0x52, 0x34, 0x81, 0xd8, 0xbb, 0x9a, - 0x31, 0x36, 0x01, 0xb8, 0xae, 0x89, 0x31, 0x45, 0x81, 0xa8, 0xcc, 0x99, 0x20, 0x53, 0x02, 0x98, - 0xbd, 0x89, 0x20, 0x45, 0x82, 0x90, 0xbd, 0x9a, 0x18, 0x44, 0x12, 0x90, 0xcc, 0x8a, 0x18, 0x54, - 0x02, 0x80, 0xcc, 0x9a, 0x08, 0x43, 0x04, 0x80, 0xda, 0x9a, 0x00, 0x62, 0x13, 0x88, 0xda, 0x9b, - 0x09, 0x51, 0x14, 0x80, 0xc9, 0xab, 0x08, 0x62, 0x14, 0x80, 0xc9, 0xab, 0x89, 0x41, 0x25, 0x80, - 0xc8, 0xbb, 0x08, 0x51, 0x34, 0x00, 0xc9, 0xbc, 0x88, 0x20, 0x36, 0x80, 0xa8, 0xad, 0x09, 0x20, - 0x36, 0x01, 0xa9, 0xbd, 0x89, 0x18, 0x45, 0x01, 0xa8, 0xdb, 0x89, 0x11, 0x54, 0x01, 0x98, 0xdb, - 0x8a, 0x00, 0x63, 0x01, 0x88, 0xcb, 0x8a, 0x10, 0x73, 0x02, 0x88, 0xda, 0x8b, 0x08, 0x62, 0x02, - 0x88, 0xd9, 0x9a, 0x10, 0x52, 0x13, 0x90, 0xda, 0x9c, 0x08, 0x41, 0x14, 0x88, 0xb9, 0x9d, 0x18, - 0x41, 0x15, 0x90, 0xb8, 0xad, 0x08, 0x30, 0x25, 0x80, 0xb9, 0xad, 0x19, 0x41, 0x25, 0x80, 0xb8, - 0xbd, 0x09, 0x30, 0x35, 0x81, 0xa9, 0xcd, 0x09, 0x21, 0x35, 0x82, 0xa9, 0xbd, 0x8a, 0x20, 0x45, - 0x01, 0x99, 0xcc, 0x89, 0x11, 0x54, 0x01, 0x98, 0xcb, 0x9b, 0x10, 0x44, 0x03, 0x99, 0xea, 0x9a, - 0x20, 0x63, 0x12, 0x98, 0xcb, 0x9c, 0x00, 0x52, 0x13, 0x89, 0xda, 0xab, 0x20, 0x62, 0x23, 0x98, - 0xd9, 0xbb, 0x08, 0x52, 0x24, 0x98, 0xb9, 0xad, 0x18, 0x41, 0x25, 0x80, 0xb9, 0xbd, 0x08, 0x31, - 0x35, 0x88, 0xa9, 0xae, 0x09, 0x22, 0x36, 0x80, 0xb8, 0xcc, 0x89, 0x21, 0x44, 0x80, 0x98, 0xbd, - 0x89, 0x22, 0x45, 0x01, 0x99, 0xbc, 0x8b, 0x20, 0x54, 0x82, 0x98, 0xbc, 0x9b, 0x31, 0x45, 0x03, - 0x98, 0xcc, 0x9b, 0x10, 0x63, 0x03, 0x98, 0xdb, 0x9b, 0x20, 0x63, 0x13, 0x90, 0xdb, 0xab, 0x18, - 0x52, 0x14, 0x88, 0xca, 0xbb, 0x28, 0x63, 0x14, 0x80, 0xba, 0xad, 0x19, 0x31, 0x35, 0x80, 0xda, - 0xab, 0x09, 0x43, 0x35, 0x00, 0xc9, 0xbc, 0x89, 0x32, 0x44, 0x81, 0xb9, 0xbd, 0x89, 0x42, 0x44, - 0x81, 0xb8, 0xbc, 0x9a, 0x32, 0x54, 0x01, 0xb8, 0xcc, 0x99, 0x31, 0x54, 0x01, 0xa0, 0xbc, 0xaa, - 0x30, 0x44, 0x03, 0xa8, 0xbd, 0x9b, 0x30, 0x45, 0x13, 0x98, 0xdc, 0x9a, 0x28, 0x43, 0x13, 0x98, - 0xdc, 0xaa, 0x20, 0x53, 0x23, 0x90, 0xcc, 0xab, 0x29, 0x53, 0x23, 0x80, 0xdc, 0xaa, 0x29, 0x53, - 0x33, 0x80, 0xeb, 0xab, 0x09, 0x43, 0x24, 0x81, 0xdb, 0xab, 0x1a, 0x53, 0x24, 0x01, 0xca, 0xac, - 0x0a, 0x32, 0x25, 0x82, 0xca, 0xbc, 0x89, 0x52, 0x43, 0x01, 0xb9, 0xbd, 0x8a, 0x32, 0x35, 0x01, - 0xc8, 0xad, 0x8a, 0x41, 0x43, 0x02, 0xa9, 0xbd, 0x9a, 0x31, 0x44, 0x02, 0xa8, 0xae, 0x8b, 0x21, - 0x35, 0x12, 0xa8, 0xbd, 0xab, 0x30, 0x45, 0x12, 0x99, 0xcc, 0x9b, 0x30, 0x44, 0x22, 0x98, 0xcc, - 0x9b, 0x28, 0x34, 0x14, 0x98, 0xeb, 0xaa, 0x10, 0x53, 0x23, 0x90, 0xdb, 0xbb, 0x18, 0x63, 0x23, - 0x98, 0xcb, 0xad, 0x18, 0x43, 0x24, 0x80, 0xbb, 0xbd, 0x18, 0x42, 0x33, 0x91, 0xeb, 0xcb, 0x08, - 0x33, 0x35, 0x81, 0xca, 0xbc, 0x09, 0x42, 0x24, 0x81, 0xca, 0xcb, 0x0a, 0x33, 0x45, 0x01, 0xaa, - 0xcc, 0x89, 0x22, 0x34, 0x02, 0xcb, 0xdb, 0x8a, 0x32, 0x44, 0x83, 0xa9, 0xcc, 0x9a, 0x22, 0x44, - 0x02, 0xb9, 0xcc, 0x8b, 0x31, 0x44, 0x13, 0xa9, 0xcc, 0x9b, 0x31, 0x53, 0x13, 0xb9, 0xcc, 0xab, - 0x31, 0x44, 0x14, 0xa8, 0xbb, 0xad, 0x21, 0x42, 0x14, 0xb0, 0xcb, 0xac, 0x20, 0x43, 0x15, 0x90, - 0xab, 0xad, 0x28, 0x42, 0x33, 0xa8, 0xbc, 0xbd, 0x28, 0x43, 0x34, 0x90, 0xca, 0xbc, 0x18, 0x33, - 0x35, 0x91, 0xbc, 0xad, 0x19, 0x33, 0x35, 0x81, 0xcb, 0xcb, 0x1a, 0x33, 0x35, 0x92, 0xdb, 0xcb, - 0x1a, 0x32, 0x35, 0x02, 0xca, 0xcb, 0x8a, 0x33, 0x44, 0x02, 0xcb, 0xac, 0x8b, 0x33, 0x54, 0x02, - 0xa9, 0xbc, 0x9b, 0x43, 0x43, 0x03, 0xca, 0xbc, 0xab, 0x52, 0x42, 0x13, 0xb8, 0xad, 0x9b, 0x31, - 0x34, 0x15, 0xb9, 0xbc, 0xbb, 0x51, 0x42, 0x13, 0x98, 0xcc, 0xaa, 0x30, 0x43, 0x24, 0xa9, 0xbd, - 0xaa, 0x49, 0x33, 0x25, 0x90, 0xdb, 0xaa, 0x39, 0x24, 0x24, 0xa0, 0xcc, 0xab, 0x29, 0x34, 0x34, - 0x91, 0xdb, 0xab, 0x19, 0x25, 0x33, 0xa1, 0xfb, 0xab, 0x09, 0x34, 0x43, 0x81, 0xd9, 0xab, 0x89, - 0x34, 0x43, 0x91, 0xda, 0xac, 0x89, 0x43, 0x33, 0x83, 0xc9, 0xad, 0x8a, 0x42, 0x33, 0x83, 0xcb, - 0xaf, 0x89, 0x31, 0x43, 0x03, 0xa9, 0xbd, 0x8a, 0x41, 0x43, 0x02, 0xaa, 0xbf, 0x89, 0x30, 0x34, - 0x13, 0x99, 0xcd, 0x8a, 0x20, 0x34, 0x13, 0xaa, 0xce, 0x9a, 0x20, 0x34, 0x33, 0x99, 0xfb, 0x9a, - 0x10, 0x43, 0x23, 0xa9, 0xec, 0x9a, 0x00, 0x43, 0x24, 0x98, 0xc9, 0x8c, 0x08, 0x33, 0x34, 0xa9, - 0xea, 0x9c, 0x00, 0x32, 0x34, 0x80, 0xc9, 0x9d, 0x08, 0x41, 0x23, 0xa1, 0xda, 0xad, 0x08, 0x41, - 0x33, 0x92, 0xa9, 0xaf, 0x08, 0x30, 0x34, 0x91, 0xba, 0xbf, 0x08, 0x30, 0x44, 0x82, 0x99, 0xcc, - 0x09, 0x21, 0x34, 0x81, 0xaa, 0xce, 0x09, 0x10, 0x44, 0x01, 0x98, 0xda, 0x0a, 0x10, 0x34, 0x83, - 0xaa, 0xec, 0x8a, 0x10, 0x34, 0x13, 0x98, 0xfa, 0x8a, 0x10, 0x52, 0x02, 0x99, 0xdb, 0x8c, 0x10, - 0x42, 0x23, 0x98, 0xd9, 0x8c, 0x00, 0x42, 0x13, 0xb8, 0xda, 0x9d, 0x00, 0x42, 0x23, 0x90, 0xb9, - 0x9f, 0x00, 0x31, 0x24, 0xa8, 0xba, 0xaf, 0x00, 0x30, 0x26, 0x80, 0x99, 0xbc, 0x00, 0x21, 0x26, - 0x90, 0xaa, 0xcd, 0x18, 0x20, 0x34, 0x01, 0x9a, 0xcc, 0x19, 0x20, 0x35, 0x80, 0xab, 0xec, 0x19, - 0x10, 0x53, 0x01, 0x89, 0xda, 0x09, 0x00, 0x34, 0x82, 0xaa, 0xfb, 0x0b, 0x10, 0x63, 0x02, 0x98, - 0xc8, 0x0c, 0x00, 0x42, 0x12, 0xaa, 0xea, 0x8c, 0x01, 0x51, 0x22, 0x98, 0xb9, 0x9c, 0x01, 0x51, - 0x13, 0xb8, 0xda, 0x9d, 0x00, 0x41, 0x14, 0x91, 0x99, 0x9d, 0x00, 0x30, 0x24, 0xb0, 0xba, 0xbf, - 0x00, 0x40, 0x24, 0x92, 0x98, 0xbd, 0x18, 0x38, 0x25, 0xa1, 0xaa, 0xdd, 0x08, 0x20, 0x34, 0x83, - 0x99, 0xeb, 0x09, 0x18, 0x25, 0x92, 0x9a, 0xdc, 0x0a, 0x10, 0x44, 0x12, 0x89, 0xd9, 0x0b, 0x00, - 0x43, 0x03, 0xaa, 0xfb, 0x8c, 0x10, 0x42, 0x23, 0x98, 0xc8, 0x9d, 0x81, 0x32, 0x14, 0xa9, 0xd9, - 0x9d, 0x00, 0x42, 0x33, 0x88, 0xb8, 0xaf, 0x00, 0x21, 0x24, 0xa8, 0xb9, 0xaf, 0x18, 0x30, 0x35, - 0x80, 0x98, 0xbd, 0x08, 0x11, 0x44, 0x90, 0xa9, 0xcd, 0x19, 0x20, 0x44, 0x82, 0x88, 0xcc, 0x09, - 0x10, 0x43, 0x92, 0x9a, 0xcd, 0x0a, 0x20, 0x44, 0x83, 0x80, 0xdb, 0x0b, 0x00, 0x62, 0x82, 0x8a, - 0xea, 0x8b, 0x11, 0x53, 0x13, 0x88, 0xd9, 0x9b, 0x10, 0x41, 0x04, 0x99, 0xe9, 0xab, 0x11, 0x42, - 0x25, 0x88, 0xa8, 0xad, 0x00, 0x20, 0x15, 0x98, 0xb9, 0xae, 0x28, 0x21, 0x26, 0x00, 0x98, 0xbd, - 0x18, 0x10, 0x34, 0x98, 0xa9, 0xbf, 0x29, 0x11, 0x45, 0x81, 0x88, 0xdb, 0x09, 0x00, 0x43, 0x81, - 0x9a, 0xcd, 0x0a, 0x12, 0x54, 0x82, 0x88, 0xda, 0x8a, 0x01, 0x42, 0x02, 0x9a, 0xdc, 0x0b, 0x21, - 0x62, 0x13, 0x89, 0xd9, 0x9b, 0x01, 0x42, 0x03, 0x9a, 0xeb, 0x9c, 0x21, 0x42, 0x24, 0x98, 0xc8, - 0xac, 0x01, 0x21, 0x15, 0x99, 0xc9, 0x9d, 0x10, 0x32, 0x35, 0x90, 0xa9, 0xae, 0x18, 0x20, 0x43, - 0xa8, 0xb9, 0xbe, 0x28, 0x32, 0x36, 0x91, 0xa8, 0xbd, 0x19, 0x11, 0x63, 0xa0, 0x99, 0xcc, 0x19, - 0x32, 0x63, 0x82, 0x99, 0xdb, 0x0a, 0x11, 0x52, 0xa2, 0x9a, 0xeb, 0x0a, 0x23, 0x53, 0x03, 0xa9, - 0xea, 0x8b, 0x12, 0x41, 0x84, 0xaa, 0xda, 0x8b, 0x33, 0x43, 0x15, 0x99, 0xba, 0x9d, 0x30, 0x11, - 0x06, 0x9a, 0xba, 0xac, 0x42, 0x23, 0x35, 0xa9, 0xc9, 0xac, 0x30, 0x11, 0x34, 0xc9, 0xaa, 0xad, - 0x48, 0x13, 0x44, 0xa0, 0xa9, 0xbc, 0x28, 0x12, 0x63, 0xb0, 0xaa, 0xdb, 0x29, 0x15, 0x52, 0x91, - 0x9a, 0xca, 0x1a, 0x03, 0x61, 0x91, 0x9b, 0xcb, 0x1a, 0x25, 0x42, 0x93, 0xaa, 0xdb, 0x8b, 0x14, - 0x30, 0x85, 0xab, 0xba, 0x8c, 0x34, 0x42, 0x05, 0x9a, 0xba, 0x9c, 0x31, 0x21, 0x16, 0xab, 0xc9, - 0xaa, 0x52, 0x22, 0x25, 0xaa, 0xb9, 0xad, 0x30, 0x21, 0x34, 0xca, 0xa9, 0xad, 0x40, 0x23, 0x34, - 0xb9, 0xb9, 0xbe, 0x38, 0x12, 0x44, 0xb8, 0xa9, 0xad, 0x38, 0x24, 0x53, 0xa0, 0xaa, 0xcc, 0x29, - 0x22, 0x52, 0xb1, 0xaa, 0xcc, 0x28, 0x33, 0x44, 0xa2, 0xab, 0xcc, 0x0a, 0x33, 0x42, 0x93, 0x9d, - 0xda, 0x19, 0x42, 0x32, 0x83, 0x9d, 0xda, 0x0a, 0x31, 0x23, 0x84, 0xbb, 0xeb, 0x0a, 0x43, 0x33, - 0x13, 0xad, 0xdb, 0x8a, 0x31, 0x24, 0x22, 0xcb, 0xda, 0x0b, 0x42, 0x33, 0x23, 0xeb, 0xc9, 0x8b, - 0x21, 0x25, 0x21, 0xca, 0xc9, 0x8b, 0x32, 0x26, 0x21, 0xc9, 0xba, 0x9d, 0x21, 0x24, 0x12, 0xc8, - 0xba, 0x9d, 0x22, 0x34, 0x22, 0xc8, 0xbc, 0x9c, 0x11, 0x44, 0x11, 0xb0, 0xbb, 0xad, 0x31, 0x54, - 0x11, 0xa8, 0xac, 0xcb, 0x21, 0x52, 0x12, 0xa0, 0xac, 0xbb, 0x40, 0x63, 0x02, 0x90, 0xbc, 0xcb, - 0x20, 0x52, 0x13, 0x90, 0xcb, 0xcb, 0x38, 0x43, 0x14, 0x90, 0xbc, 0xbc, 0x28, 0x43, 0x15, 0x80, - 0xca, 0xba, 0x29, 0x53, 0x14, 0x80, 0xdb, 0xba, 0x1a, 0x34, 0x34, 0x80, 0xd9, 0xba, 0x1a, 0x43, - 0x25, 0x90, 0xc9, 0xac, 0x8a, 0x24, 0x34, 0x00, 0xb9, 0xbc, 0x8b, 0x34, 0x44, 0x80, 0xb9, 0xbd, - 0x8b, 0x43, 0x53, 0x82, 0xa0, 0xad, 0x9a, 0x32, 0x34, 0x82, 0xb9, 0xaf, 0xab, 0x32, 0x44, 0x03, - 0x90, 0xbc, 0xbb, 0x50, 0x42, 0x02, 0x99, 0xbe, 0xb9, 0x40, 0x33, 0x24, 0x88, 0xdb, 0xba, 0x38, - 0x24, 0x14, 0x89, 0xcd, 0xaa, 0x38, 0x24, 0x24, 0x00, 0xda, 0xaa, 0x2a, 0x33, 0x24, 0x98, 0xfb, - 0xab, 0x09, 0x35, 0x33, 0x01, 0xd9, 0xbb, 0x8a, 0x34, 0x33, 0x91, 0xfb, 0x9d, 0x89, 0x52, 0x32, - 0x01, 0xb8, 0xad, 0x8a, 0x41, 0x22, 0x82, 0xe9, 0xac, 0x99, 0x42, 0x24, 0x03, 0xa0, 0xad, 0xaa, - 0x40, 0x22, 0x83, 0xc8, 0xae, 0x9a, 0x40, 0x34, 0x22, 0x88, 0xad, 0xab, 0x39, 0x15, 0x12, 0xa8, - 0xbe, 0xaa, 0x38, 0x27, 0x13, 0x81, 0xdb, 0x9a, 0x0a, 0x34, 0x21, 0x98, 0xcd, 0x9b, 0x29, 0x45, - 0x22, 0x82, 0xda, 0xaa, 0x8a, 0x34, 0x12, 0x80, 0xec, 0x9a, 0x09, 0x63, 0x13, 0x02, 0xc9, 0xab, - 0xaa, 0x52, 0x12, 0x01, 0xeb, 0xab, 0x99, 0x73, 0x14, 0x11, 0xb8, 0xac, 0x99, 0x30, 0x14, 0x01, - 0xda, 0xac, 0x89, 0x61, 0x23, 0x22, 0xb8, 0xbd, 0x99, 0x28, 0x25, 0x00, 0xc8, 0xad, 0x89, 0x40, - 0x35, 0x11, 0xa0, 0xbc, 0x9a, 0x19, 0x35, 0x00, 0xb0, 0xaf, 0x89, 0x28, 0x36, 0x12, 0x91, 0xdb, - 0x9a, 0x09, 0x52, 0x81, 0x90, 0xcc, 0x8a, 0x10, 0x74, 0x11, 0x00, 0xba, 0xab, 0x98, 0x61, 0x82, - 0x80, 0xdb, 0x8b, 0x00, 0x72, 0x14, 0x00, 0xa9, 0xac, 0x88, 0x38, 0x04, 0x80, 0xd9, 0x9c, 0x00, - 0x51, 0x15, 0x00, 0xa0, 0xbc, 0x88, 0x29, 0x15, 0x88, 0xb8, 0xbd, 0x10, 0x40, 0x27, 0x00, 0x90, - 0xbc, 0x98, 0x08, 0x24, 0x88, 0x90, 0xbe, 0x18, 0x10, 0x37, 0x01, 0x00, 0xcc, 0x89, 0x89, 0x42, - 0x80, 0x80, 0xdc, 0x09, 0x01, 0x64, 0x01, 0x00, 0xd9, 0x8a, 0x98, 0x31, 0x82, 0x19, 0xfa, 0x8a, - 0x02, 0x62, 0x13, 0x18, 0xd8, 0x9c, 0x90, 0x38, 0x83, 0x19, 0xf0, 0x8b, 0x01, 0x51, 0x15, 0x08, - 0xb1, 0x9d, 0x98, 0x18, 0x23, 0x8a, 0xc2, 0x9f, 0x01, 0x21, 0x26, 0x80, 0x80, 0xae, 0x90, 0x08, - 0x32, 0xa9, 0x82, 0xaf, 0x10, 0x11, 0x45, 0x80, 0x00, 0xcc, 0x88, 0x89, 0x32, 0xa0, 0x20, 0xce, - 0x28, 0x10, 0x73, 0x92, 0x10, 0xdb, 0x89, 0x98, 0x30, 0xb3, 0x28, 0xfa, 0x2a, 0x10, 0x73, 0x02, - 0x19, 0xe8, 0x8a, 0x98, 0x20, 0x93, 0x1a, 0xf1, 0x1a, 0x11, 0x41, 0x15, 0x09, 0xd1, 0x8b, 0xa8, - 0x18, 0x13, 0x0c, 0xb3, 0x8e, 0x12, 0x30, 0x27, 0x88, 0xa1, 0xad, 0x98, 0x89, 0x33, 0x9a, 0x83, - 0x9f, 0x21, 0x20, 0x46, 0x88, 0x81, 0xbc, 0x99, 0x9a, 0x42, 0xb8, 0x32, 0xcc, 0x21, 0x01, 0x56, - 0x91, 0x10, 0xdb, 0x89, 0xaa, 0x30, 0xb1, 0x40, 0xd0, 0x28, 0x01, 0x72, 0x83, 0x28, 0xd9, 0x9b, - 0xb9, 0x19, 0x82, 0x49, 0xb3, 0x2c, 0x84, 0x61, 0x04, 0x08, 0xb1, 0x9e, 0xb8, 0x8a, 0x02, 0x08, - 0x05, 0x8a, 0x14, 0x28, 0x26, 0x80, 0x82, 0xaf, 0xa9, 0x9b, 0x11, 0x80, 0x25, 0x99, 0x13, 0x29, - 0x46, 0x81, 0x20, 0xec, 0x99, 0xab, 0x18, 0x01, 0x62, 0xa0, 0x21, 0x08, 0x42, 0x04, 0x38, 0xf8, - 0x9b, 0xbc, 0x08, 0x01, 0x50, 0x83, 0x29, 0x91, 0x30, 0x17, 0x00, 0xc2, 0xad, 0xca, 0x8a, 0x21, - 0x20, 0x07, 0x09, 0x81, 0x00, 0x43, 0x00, 0x83, 0xcf, 0xb9, 0xaa, 0x20, 0x12, 0x27, 0x88, 0x00, - 0x89, 0x42, 0x82, 0x23, 0xce, 0xba, 0x9d, 0x18, 0x02, 0x44, 0x91, 0x00, 0x99, 0x30, 0x15, 0x40, - 0xe9, 0xaa, 0xbc, 0x19, 0x22, 0x72, 0x92, 0x18, 0xa9, 0x28, 0x14, 0x21, 0xe2, 0xac, 0xda, 0x89, - 0x21, 0x42, 0x04, 0x09, 0x98, 0x1a, 0x32, 0x42, 0xa3, 0xcf, 0xba, 0x8c, 0x30, 0x42, 0x24, 0x98, - 0xa0, 0x8b, 0x42, 0x23, 0x13, 0xcf, 0xba, 0x9d, 0x10, 0x33, 0x44, 0x90, 0x89, 0x9b, 0x21, 0x34, - 0x32, 0xfb, 0xac, 0xac, 0x18, 0x33, 0x44, 0x81, 0x89, 0xbb, 0x20, 0x53, 0x32, 0xd8, 0xad, 0xbc, - 0x19, 0x42, 0x43, 0x02, 0x99, 0xca, 0x19, 0x43, 0x32, 0xb1, 0xbf, 0xbc, 0x8a, 0x52, 0x33, 0x13, - 0xa9, 0xd9, 0x0a, 0x42, 0x23, 0x82, 0xbf, 0xcb, 0x8b, 0x31, 0x26, 0x22, 0xa0, 0xaa, 0x8c, 0x31, - 0x34, 0x02, 0xfb, 0xac, 0x9b, 0x20, 0x35, 0x33, 0xa0, 0xaa, 0xad, 0x21, 0x34, 0x22, 0xfa, 0xbb, - 0xac, 0x10, 0x44, 0x23, 0x91, 0xaa, 0xbb, 0x28, 0x36, 0x22, 0xc8, 0xbe, 0xbb, 0x29, 0x63, 0x33, - 0x82, 0xaa, 0xcb, 0x19, 0x53, 0x23, 0xa0, 0xbf, 0xcb, 0x09, 0x42, 0x34, 0x02, 0xb9, 0xba, 0x0b, - 0x53, 0x24, 0x91, 0xdc, 0xcb, 0x89, 0x31, 0x35, 0x13, 0xa9, 0xca, 0x9a, 0x32, 0x35, 0x81, 0xeb, - 0xac, 0x9b, 0x31, 0x45, 0x22, 0x98, 0xba, 0xab, 0x31, 0x35, 0x12, 0xe9, 0xad, 0x9b, 0x20, 0x63, - 0x23, 0x80, 0xba, 0xbb, 0x28, 0x54, 0x12, 0xb9, 0xbe, 0xac, 0x10, 0x53, 0x33, 0x01, 0xbb, 0xcb, - 0x19, 0x53, 0x13, 0x98, 0xce, 0xbb, 0x29, 0x52, 0x34, 0x01, 0xa9, 0xcb, 0x09, 0x32, 0x24, 0x80, - 0xdd, 0xbb, 0x1a, 0x42, 0x44, 0x12, 0xa8, 0xcb, 0x0a, 0x21, 0x34, 0x91, 0xeb, 0xbc, 0x8a, 0x32, - 0x45, 0x22, 0x98, 0xbb, 0x8c, 0x20, 0x43, 0x02, 0xda, 0xbd, 0x9b, 0x31, 0x45, 0x22, 0x91, 0xbb, - 0x9c, 0x10, 0x52, 0x12, 0xc9, 0xcc, 0x9b, 0x38, 0x63, 0x23, 0x81, 0xba, 0xcb, 0x18, 0x32, 0x25, - 0xb8, 0xbe, 0xcb, 0x18, 0x34, 0x34, 0x82, 0xb9, 0xbc, 0x09, 0x42, 0x23, 0xa1, 0xce, 0xcb, 0x19, - 0x42, 0x34, 0x02, 0xa9, 0xcb, 0x8a, 0x22, 0x24, 0x93, 0xcd, 0xac, 0x8a, 0x42, 0x34, 0x23, 0xa8, - 0xbc, 0x9b, 0x30, 0x34, 0x03, 0xdc, 0xbc, 0x9b, 0x42, 0x44, 0x13, 0x90, 0xbb, 0xac, 0x20, 0x33, - 0x33, 0xfb, 0xbc, 0xab, 0x40, 0x44, 0x32, 0x90, 0xb9, 0xad, 0x18, 0x23, 0x32, 0xd8, 0xad, 0x9c, - 0x18, 0x34, 0x34, 0x92, 0xaa, 0xbc, 0x09, 0x42, 0x22, 0xb1, 0xaf, 0xac, 0x08, 0x53, 0x33, 0x03, - 0xaa, 0xcc, 0x8a, 0x32, 0x32, 0x92, 0xbf, 0xcb, 0x89, 0x53, 0x43, 0x12, 0x99, 0xcb, 0x9a, 0x31, - 0x22, 0x03, 0xed, 0xba, 0x8a, 0x51, 0x24, 0x14, 0x98, 0xaa, 0xbb, 0x20, 0x14, 0x13, 0xfa, 0xbb, - 0xaa, 0x41, 0x35, 0x43, 0xa0, 0xaa, 0xbb, 0x29, 0x33, 0x33, 0xf9, 0xad, 0xab, 0x30, 0x45, 0x42, - 0x91, 0x9a, 0xca, 0x09, 0x22, 0x21, 0xc1, 0xbd, 0xbb, 0x28, 0x45, 0x24, 0x03, 0x9b, 0xcb, 0x8b, - 0x22, 0x22, 0xa3, 0xcf, 0xb9, 0x1a, 0x63, 0x33, 0x23, 0xba, 0xda, 0x9b, 0x20, 0x23, 0x11, 0xce, - 0xba, 0x8b, 0x44, 0x34, 0x33, 0xb8, 0xca, 0xac, 0x00, 0x22, 0x21, 0xfa, 0x9b, 0x9c, 0x22, 0x45, - 0x32, 0xa1, 0xaa, 0xbc, 0x09, 0x31, 0x12, 0xe0, 0x9c, 0xcb, 0x21, 0x54, 0x22, 0x93, 0x9a, 0xcc, - 0x09, 0x20, 0x01, 0xa1, 0xae, 0xc9, 0x28, 0x53, 0x24, 0x12, 0xaa, 0xe9, 0x0a, 0x18, 0x01, 0x01, - 0xad, 0xc9, 0x1a, 0x53, 0x24, 0x23, 0xa9, 0xd9, 0x9b, 0x08, 0x11, 0x21, 0xfb, 0xa9, 0x0c, 0x42, - 0x43, 0x33, 0xb1, 0xba, 0x9f, 0x88, 0x10, 0x20, 0xd8, 0x8a, 0x9c, 0x32, 0x44, 0x43, 0x92, 0xaa, - 0xcc, 0x88, 0x08, 0x21, 0xb1, 0x9d, 0xca, 0x30, 0x44, 0x34, 0x83, 0xaa, 0xeb, 0x8a, 0x08, 0x11, - 0x82, 0x9e, 0xc8, 0x29, 0x43, 0x34, 0x14, 0xa9, 0xd9, 0x9b, 0x88, 0x11, 0x22, 0xbc, 0xb9, 0x0c, - 0x34, 0x55, 0x23, 0xa8, 0xb9, 0xae, 0x98, 0x10, 0x22, 0xc8, 0x99, 0xbb, 0x43, 0x55, 0x33, 0x91, - 0xaa, 0xce, 0x98, 0x00, 0x12, 0xa2, 0x8b, 0xbc, 0x30, 0x64, 0x24, 0x82, 0x99, 0xdc, 0x8a, 0x08, - 0x12, 0x02, 0xab, 0xe9, 0x29, 0x51, 0x34, 0x13, 0xaa, 0xfa, 0x9b, 0x88, 0x22, 0x22, 0xaa, 0xd9, - 0x0b, 0x42, 0x36, 0x33, 0xb8, 0xda, 0x9e, 0x88, 0x11, 0x21, 0xa0, 0xa9, 0x8d, 0x11, 0x36, 0x43, - 0x90, 0xba, 0xae, 0x8a, 0x11, 0x32, 0xa2, 0xaa, 0x9e, 0x00, 0x64, 0x22, 0x93, 0xaa, 0xbe, 0xa9, - 0x20, 0x31, 0x84, 0x9a, 0xcb, 0x88, 0x64, 0x23, 0x13, 0xbb, 0xdc, 0x9b, 0x18, 0x22, 0x14, 0xaa, - 0xc9, 0x8a, 0x72, 0x33, 0x14, 0xa9, 0xdb, 0xbb, 0x19, 0x13, 0x53, 0xb8, 0xa9, 0xab, 0x71, 0x24, - 0x43, 0xb8, 0xba, 0xbd, 0x0a, 0x13, 0x52, 0xb1, 0x99, 0xbb, 0x58, 0x26, 0x41, 0xa1, 0xaa, 0xcc, - 0x8a, 0x12, 0x40, 0x93, 0x8b, 0xbb, 0x3a, 0x47, 0x41, 0x92, 0xaa, 0xeb, 0x9a, 0x11, 0x30, 0x85, - 0x8a, 0xa9, 0x0b, 0x45, 0x22, 0x05, 0xaa, 0xca, 0xac, 0x20, 0x10, 0x15, 0x99, 0xa8, 0x8c, 0x53, - 0x12, 0x25, 0xba, 0xb9, 0xae, 0x18, 0x01, 0x43, 0xa8, 0x98, 0x9c, 0x51, 0x22, 0x63, 0xb8, 0x99, - 0xbd, 0x19, 0x01, 0x61, 0x90, 0x09, 0xba, 0x40, 0x23, 0x73, 0xa1, 0x9a, 0xcc, 0x89, 0x11, 0x40, - 0xa3, 0x1a, 0xca, 0x29, 0x25, 0x51, 0x93, 0x8c, 0xda, 0x8a, 0x00, 0x30, 0x05, 0x8a, 0xb0, 0x0a, - 0x34, 0x42, 0x05, 0x9b, 0xe9, 0x9b, 0x00, 0x01, 0x25, 0x8a, 0xa1, 0x8c, 0x32, 0x14, 0x35, 0xba, - 0xd8, 0xac, 0x88, 0x01, 0x34, 0xa0, 0x91, 0x9d, 0x21, 0x24, 0x62, 0xa0, 0xa9, 0xae, 0x89, 0x01, - 0x51, 0x91, 0x00, 0xbb, 0x10, 0x34, 0x72, 0xa2, 0x99, 0xdc, 0x99, 0x10, 0x30, 0x84, 0x00, 0xba, - 0x89, 0x63, 0x31, 0x86, 0x89, 0xeb, 0x9a, 0x18, 0x10, 0x06, 0x00, 0xa9, 0x8a, 0x40, 0x22, 0x16, - 0x89, 0xda, 0xab, 0x1a, 0x01, 0x26, 0x00, 0xa8, 0x9b, 0x28, 0x15, 0x26, 0x88, 0xc9, 0xbc, 0x8a, - 0x02, 0x44, 0x01, 0xa0, 0xbb, 0x19, 0x34, 0x45, 0x81, 0xb9, 0xbf, 0x99, 0x01, 0x52, 0x02, 0x80, - 0xac, 0x89, 0x32, 0x44, 0x03, 0xa9, 0xbf, 0xab, 0x10, 0x42, 0x14, 0x00, 0xcb, 0x8a, 0x30, 0x63, - 0x23, 0xa8, 0xec, 0x9b, 0x19, 0x31, 0x34, 0x81, 0xd9, 0xaa, 0x28, 0x34, 0x25, 0x90, 0xfa, 0xaa, - 0x0a, 0x22, 0x43, 0x02, 0xc9, 0xab, 0x19, 0x63, 0x33, 0x82, 0xfb, 0xbb, 0x8a, 0x21, 0x44, 0x12, - 0xb8, 0xac, 0x0a, 0x42, 0x34, 0x13, 0xe9, 0xbc, 0x9a, 0x20, 0x43, 0x33, 0xa8, 0xbd, 0x99, 0x40, - 0x25, 0x13, 0xb8, 0xaf, 0x9b, 0x18, 0x33, 0x34, 0x91, 0xad, 0xaa, 0x20, 0x26, 0x23, 0xa0, 0xcd, - 0xab, 0x1a, 0x33, 0x35, 0x01, 0xbc, 0xaa, 0x19, 0x36, 0x33, 0x81, 0xce, 0xaa, 0x8a, 0x32, 0x34, - 0x13, 0xdb, 0xaa, 0x8a, 0x54, 0x32, 0x02, 0xeb, 0xab, 0xab, 0x41, 0x43, 0x22, 0xc9, 0xaa, 0x9b, - 0x62, 0x33, 0x13, 0xe9, 0xbb, 0xac, 0x20, 0x34, 0x23, 0xb0, 0xbc, 0xbb, 0x60, 0x24, 0x23, 0xb8, - 0xbe, 0xca, 0x18, 0x33, 0x24, 0x91, 0xbc, 0xba, 0x49, 0x44, 0x23, 0xa1, 0xad, 0xac, 0x8b, 0x73, - 0x02, 0x01, 0x07, 0x7d, 0x0b, 0x02, 0x70, 0x02, 0x42, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x7f, 0x77, 0x92, 0x98, 0xb9, 0xce, 0x19, 0x62, 0x24, 0x81, 0xea, 0xac, 0x19, 0x24, 0x12, - 0xa9, 0xb8, 0xad, 0x9c, 0x20, 0x75, 0x23, 0x81, 0xeb, 0xaa, 0x18, 0x35, 0x01, 0x88, 0xc8, 0xbb, - 0x9b, 0x10, 0x74, 0x24, 0x80, 0xcd, 0x9a, 0x21, 0x12, 0x91, 0x98, 0xda, 0xbc, 0x09, 0x32, 0x57, - 0x23, 0xa1, 0xcc, 0x99, 0x31, 0x24, 0x88, 0x90, 0xcb, 0xbc, 0x19, 0x11, 0x55, 0x22, 0xc8, 0xbd, - 0x19, 0x42, 0x01, 0x89, 0xa9, 0xcc, 0x9a, 0x08, 0x52, 0x36, 0x23, 0xb8, 0x9f, 0x19, 0x22, 0x02, - 0x90, 0x98, 0xcc, 0xaa, 0x10, 0x21, 0x44, 0x14, 0xea, 0xab, 0x28, 0x24, 0x80, 0x98, 0xaa, 0xbd, - 0x99, 0x08, 0x64, 0x34, 0x02, 0xd9, 0x9a, 0x28, 0x24, 0x11, 0x80, 0xca, 0xbc, 0x8b, 0x80, 0x31, - 0x37, 0x82, 0xdc, 0x8a, 0x21, 0x04, 0x88, 0xa8, 0xa9, 0xbd, 0x89, 0x18, 0x55, 0x34, 0x81, 0xda, - 0x8a, 0x42, 0x02, 0x02, 0x98, 0xcb, 0xbc, 0x99, 0x18, 0x21, 0x36, 0x82, 0xbe, 0x19, 0x42, 0x81, - 0x80, 0xbb, 0xcb, 0x9d, 0xa9, 0x30, 0x47, 0x13, 0x80, 0xcb, 0x09, 0x44, 0x01, 0x11, 0x99, 0xdb, - 0x9b, 0x9a, 0x08, 0x40, 0x16, 0xa8, 0xab, 0x21, 0x35, 0x90, 0xa8, 0xac, 0xca, 0xad, 0x99, 0x51, - 0x54, 0x02, 0x98, 0xba, 0x38, 0x35, 0x01, 0x81, 0x9a, 0xfa, 0x9a, 0x9a, 0x81, 0x50, 0x03, 0xa8, - 0xab, 0x43, 0x26, 0xb8, 0xcb, 0x19, 0xd8, 0xbc, 0x0a, 0x35, 0x53, 0x01, 0xa0, 0x9b, 0x40, 0x44, - 0x00, 0x88, 0x88, 0xbd, 0xcb, 0x1b, 0x02, 0x43, 0x00, 0xc1, 0x0b, 0x45, 0x82, 0xaa, 0xaa, 0x80, - 0xed, 0xbb, 0x39, 0x26, 0x23, 0x82, 0xc8, 0x0a, 0x42, 0x13, 0x10, 0x00, 0xc0, 0xbf, 0xbb, 0x18, - 0x22, 0x24, 0x10, 0xc9, 0x19, 0x36, 0xc8, 0x9a, 0x08, 0xb0, 0xcf, 0x9a, 0x41, 0x33, 0x24, 0x00, - 0xca, 0x09, 0x32, 0x12, 0x32, 0x21, 0xf8, 0xaf, 0x9b, 0x11, 0x22, 0x02, 0x81, 0xbc, 0x28, 0x16, - 0xa9, 0x89, 0x08, 0xf8, 0xbe, 0x1a, 0x53, 0x22, 0x22, 0xa0, 0x9d, 0x18, 0x21, 0x31, 0x23, 0x02, - 0xee, 0xba, 0x0b, 0x32, 0x13, 0x11, 0xd0, 0x9c, 0x31, 0x02, 0x09, 0x98, 0x81, 0xff, 0xad, 0x28, - 0x33, 0x22, 0x24, 0xb9, 0x9c, 0x20, 0x22, 0x32, 0x22, 0x91, 0xff, 0x9b, 0x18, 0x12, 0x12, 0x02, - 0xda, 0x0a, 0x31, 0x90, 0x00, 0x98, 0xe1, 0xef, 0x8a, 0x31, 0x13, 0x22, 0x13, 0xdb, 0x09, 0x20, - 0x21, 0x43, 0x12, 0xd8, 0xbf, 0x0b, 0x21, 0x22, 0x20, 0x91, 0xdc, 0x19, 0x21, 0x80, 0x09, 0x08, - 0xf9, 0xcf, 0x19, 0x32, 0x12, 0x32, 0x93, 0xad, 0x09, 0x32, 0x03, 0x21, 0x00, 0xf0, 0xcf, 0x09, - 0x22, 0x01, 0x10, 0xa1, 0xac, 0x28, 0x14, 0x88, 0xb9, 0x28, 0xfb, 0xbf, 0x38, 0x14, 0x01, 0x22, - 0xa0, 0xab, 0x38, 0x15, 0x00, 0x81, 0x68, 0xf0, 0xac, 0x18, 0x22, 0x02, 0x00, 0xb9, 0x9b, 0x72, - 0x91, 0x89, 0x99, 0x20, 0xdf, 0x9b, 0x51, 0x12, 0x00, 0x22, 0xb9, 0x89, 0x42, 0x81, 0x08, 0x18, - 0x37, 0xec, 0x9b, 0x28, 0x23, 0x00, 0x81, 0xbb, 0x1a, 0x16, 0xa9, 0x99, 0x2a, 0x96, 0xcf, 0x89, - 0x42, 0x02, 0x00, 0x03, 0x99, 0x08, 0x03, 0xaa, 0x88, 0x70, 0x07, 0xbc, 0x9b, 0x41, 0x12, 0x00, - 0x81, 0xab, 0x19, 0x92, 0xae, 0x08, 0x60, 0xd0, 0xac, 0x1a, 0x35, 0x81, 0x20, 0x81, 0x08, 0x00, - 0xa9, 0xbb, 0x38, 0x77, 0xa3, 0xbd, 0x0b, 0x33, 0x02, 0x11, 0xb1, 0x9b, 0x09, 0xc9, 0x8c, 0x10, - 0x53, 0xfc, 0xba, 0x48, 0x24, 0x80, 0x21, 0x90, 0x10, 0xa9, 0xaa, 0x0c, 0x72, 0x26, 0xb8, 0xbd, - 0x19, 0x23, 0x02, 0x20, 0xb9, 0x9b, 0x99, 0xcc, 0x38, 0x11, 0x86, 0xbe, 0xaa, 0x61, 0x22, 0x01, - 0x01, 0x80, 0x00, 0xda, 0xbb, 0x48, 0x54, 0x04, 0xda, 0xac, 0x21, 0x22, 0x82, 0x80, 0xaa, 0x99, - 0x99, 0xab, 0x34, 0x50, 0xe1, 0xbd, 0x89, 0x34, 0x22, 0x11, 0x00, 0x89, 0xa0, 0xad, 0xaa, 0x63, - 0x45, 0x82, 0xdd, 0x8a, 0x32, 0x22, 0x80, 0x99, 0xbb, 0x89, 0x99, 0x2a, 0x15, 0x31, 0xfa, 0xad, - 0x09, 0x34, 0x22, 0x01, 0x81, 0x8a, 0xb8, 0xbd, 0x0a, 0x46, 0x35, 0xb0, 0xaf, 0x1a, 0x23, 0x22, - 0x88, 0xba, 0x8d, 0x91, 0x9a, 0x21, 0x31, 0x03, 0xcf, 0xaa, 0x39, 0x25, 0x22, 0x81, 0x91, 0x1a, - 0xe8, 0xac, 0x28, 0x55, 0x23, 0xf9, 0xab, 0x20, 0x13, 0x22, 0x98, 0xcc, 0x18, 0xa8, 0x00, 0x18, - 0x22, 0x82, 0xcf, 0xa9, 0x31, 0x12, 0x25, 0x08, 0xa8, 0x10, 0xcc, 0xac, 0x40, 0x46, 0x03, 0xbd, - 0x9b, 0x31, 0x32, 0x23, 0xea, 0xaa, 0x81, 0x89, 0x81, 0x08, 0x30, 0x85, 0xbb, 0xac, 0x40, 0x31, - 0x06, 0x08, 0x90, 0x80, 0xeb, 0x9c, 0x51, 0x44, 0x92, 0xbd, 0x8a, 0x32, 0x32, 0x83, 0xcd, 0x89, - 0x80, 0x28, 0xa8, 0x8a, 0x72, 0x83, 0xab, 0xbb, 0x21, 0x71, 0x02, 0x08, 0x08, 0xa2, 0xce, 0x8b, - 0x63, 0x35, 0xb0, 0xbc, 0x0a, 0x32, 0x43, 0xb2, 0xae, 0x08, 0x80, 0x81, 0xaa, 0x19, 0x56, 0x81, - 0x9a, 0xab, 0x18, 0x52, 0x91, 0x18, 0x20, 0xb0, 0xdf, 0x09, 0x62, 0x14, 0xb8, 0xab, 0x08, 0x23, - 0x25, 0xe8, 0x8a, 0x00, 0x00, 0xa8, 0xab, 0x50, 0x26, 0xa0, 0xa9, 0xab, 0x11, 0x53, 0x88, 0x10, - 0x02, 0xfb, 0xbb, 0x28, 0x57, 0x02, 0xba, 0xaa, 0x18, 0x34, 0x03, 0xbd, 0x09, 0x00, 0x80, 0xcb, - 0x8c, 0x73, 0x14, 0xa8, 0xca, 0x89, 0x21, 0x12, 0x08, 0x22, 0xb8, 0xce, 0x9b, 0x52, 0x35, 0x81, - 0xca, 0xab, 0x30, 0x34, 0xa1, 0xac, 0x10, 0x90, 0xb9, 0xbd, 0x39, 0x57, 0x03, 0xba, 0xbc, 0x19, - 0x33, 0x12, 0x19, 0x83, 0xcd, 0xac, 0x18, 0x44, 0x32, 0x92, 0xbd, 0x9b, 0x50, 0x33, 0xa8, 0x8b, - 0x02, 0xcb, 0xbc, 0x9a, 0x72, 0x44, 0x92, 0xbc, 0xab, 0x20, 0x34, 0x01, 0x20, 0xd1, 0xbc, 0x8a, - 0x30, 0x35, 0x33, 0xc1, 0xbd, 0x9a, 0x63, 0x02, 0x99, 0x10, 0xb8, 0xac, 0x9a, 0x09, 0x65, 0x33, - 0xb8, 0xae, 0x9b, 0x41, 0x23, 0x00, 0x02, 0xfb, 0xaa, 0x18, 0x31, 0x43, 0x23, 0xd9, 0xac, 0x0b, - 0x45, 0x00, 0x88, 0x00, 0xca, 0xab, 0x98, 0x30, 0x47, 0x12, 0xd9, 0xab, 0x8b, 0x63, 0x12, 0x00, - 0x91, 0xbd, 0x8a, 0x00, 0x31, 0x34, 0x13, 0xda, 0xbc, 0x2a, 0x26, 0x00, 0x00, 0x91, 0xbd, 0x9a, - 0x89, 0x72, 0x23, 0x01, 0xcc, 0xbb, 0x0a, 0x27, 0x11, 0x10, 0xc9, 0xab, 0x08, 0x00, 0x42, 0x23, - 0x83, 0xcc, 0xad, 0x38, 0x25, 0x00, 0x00, 0xc8, 0xac, 0x89, 0x18, 0x46, 0x01, 0x90, 0xad, 0xbb, - 0x40, 0x25, 0x01, 0x90, 0xda, 0x8a, 0x08, 0x10, 0x43, 0x11, 0x91, 0xeb, 0x9c, 0x40, 0x23, 0x11, - 0x80, 0xdc, 0x9a, 0x98, 0x30, 0x27, 0x10, 0xb8, 0xbc, 0x9c, 0x61, 0x13, 0x00, 0x98, 0xad, 0x08, - 0x98, 0x10, 0x32, 0x42, 0x93, 0xdd, 0x9a, 0x51, 0x23, 0x00, 0xb8, 0xad, 0x89, 0x98, 0x61, 0x03, - 0x80, 0xc9, 0xac, 0x8a, 0x55, 0x12, 0x88, 0xc9, 0x9a, 0x81, 0x98, 0x30, 0x33, 0x34, 0xc2, 0xbe, - 0x9a, 0x54, 0x03, 0x80, 0xda, 0x99, 0x88, 0x88, 0x53, 0x02, 0x88, 0xdb, 0xab, 0x38, 0x57, 0x00, - 0x98, 0xbb, 0x08, 0x81, 0x9b, 0x31, 0x53, 0x15, 0xb9, 0xbc, 0x19, 0x47, 0x00, 0xa0, 0x9b, 0x88, - 0xa8, 0x09, 0x25, 0x02, 0xc9, 0xac, 0x89, 0x51, 0x26, 0x88, 0xa8, 0xaa, 0x10, 0xe9, 0x0a, 0x21, - 0x44, 0x03, 0xba, 0xac, 0x2a, 0x47, 0x80, 0x98, 0x89, 0x99, 0xb9, 0x29, 0x33, 0x80, 0xb8, 0x9b, - 0xa1, 0x7a, 0x37, 0x8a, 0xa0, 0x99, 0x11, 0xdd, 0xab, 0x41, 0x45, 0x01, 0xa9, 0xaa, 0x39, 0x17, - 0x00, 0xa8, 0x99, 0x08, 0xca, 0x0a, 0x80, 0x38, 0x84, 0x38, 0xa5, 0x2c, 0x94, 0x40, 0xc9, 0x09, - 0x80, 0xcf, 0x9a, 0x62, 0x33, 0x91, 0x9a, 0xca, 0x59, 0x03, 0x12, 0xa9, 0x8a, 0xa1, 0xbf, 0x89, - 0x88, 0x62, 0x82, 0x32, 0xfa, 0x1a, 0x10, 0x13, 0x9a, 0x10, 0xe8, 0xbe, 0x19, 0x53, 0x23, 0x80, - 0x81, 0xdd, 0x20, 0x01, 0x02, 0x9a, 0x11, 0xe8, 0x9c, 0x89, 0x00, 0x34, 0x32, 0x93, 0xdf, 0x08, - 0x22, 0x92, 0x09, 0x90, 0xdc, 0xac, 0x21, 0x44, 0x03, 0x10, 0xd8, 0x9d, 0x21, 0x21, 0x80, 0x08, - 0xa1, 0xdc, 0x9b, 0x88, 0x32, 0x37, 0x12, 0xe8, 0xac, 0x20, 0x32, 0x98, 0x10, 0xa8, 0xce, 0x8a, - 0x21, 0x44, 0x12, 0x82, 0xdc, 0x8a, 0x21, 0x23, 0x88, 0x10, 0xc9, 0xbd, 0x9a, 0x10, 0x54, 0x34, - 0x90, 0xdc, 0x8b, 0x41, 0x03, 0x89, 0x91, 0xda, 0xab, 0x08, 0x63, 0x32, 0x14, 0xb8, 0xbe, 0x09, - 0x43, 0x02, 0x00, 0x90, 0xeb, 0xab, 0x8a, 0x42, 0x45, 0x03, 0xba, 0xdc, 0x1a, 0x33, 0x02, 0x08, - 0xa8, 0xbd, 0x9b, 0x28, 0x44, 0x44, 0x02, 0xcb, 0xcb, 0x18, 0x24, 0x02, 0x00, 0xc8, 0xac, 0x9b, - 0x09, 0x54, 0x25, 0x90, 0xba, 0xbc, 0x49, 0x24, 0x80, 0x88, 0xba, 0xaa, 0x99, 0x31, 0x46, 0x25, - 0xa0, 0xcb, 0x9c, 0x30, 0x34, 0x01, 0xa0, 0xbc, 0xac, 0x99, 0x31, 0x47, 0x03, 0xb9, 0xdb, 0x9b, - 0x52, 0x03, 0x80, 0xa8, 0xab, 0x9a, 0x88, 0x51, 0x64, 0x13, 0xb8, 0xcc, 0x9a, 0x51, 0x22, 0x01, - 0xc9, 0xba, 0x9a, 0x88, 0x52, 0x36, 0x82, 0xcb, 0xbb, 0x1b, 0x45, 0x01, 0x98, 0xaa, 0x89, 0x98, - 0x88, 0x42, 0x47, 0x02, 0xba, 0xcc, 0x09, 0x34, 0x13, 0xa0, 0xbc, 0xab, 0x89, 0x18, 0x74, 0x24, - 0xa0, 0xbb, 0xbc, 0x28, 0x26, 0x81, 0x9a, 0x9a, 0x08, 0x98, 0x89, 0x73, 0x36, 0x90, 0xba, 0xad, - 0x28, 0x35, 0x01, 0xa9, 0xac, 0x9a, 0x08, 0x20, 0x55, 0x23, 0xc9, 0xcb, 0x9a, 0x40, 0x15, 0x98, - 0x8a, 0x89, 0x80, 0x99, 0x18, 0x65, 0x33, 0xb8, 0xcc, 0x9b, 0x61, 0x23, 0x90, 0xca, 0xaa, 0x09, - 0x00, 0x41, 0x44, 0x02, 0xdb, 0xba, 0x8a, 0x73, 0x82, 0x99, 0x99, 0x08, 0x88, 0x88, 0x58, 0x45, - 0x03, 0xca, 0xdb, 0x1a, 0x63, 0x02, 0xa8, 0xba, 0x9a, 0x00, 0x10, 0x53, 0x43, 0xa2, 0xbd, 0xbb, - 0x2a, 0x36, 0x91, 0x99, 0x9a, 0x08, 0x90, 0x89, 0x55, 0x54, 0x92, 0xcb, 0xac, 0x39, 0x26, 0x81, - 0xa9, 0xab, 0x88, 0x00, 0x21, 0x43, 0x44, 0xb8, 0xbc, 0xcb, 0x38, 0x15, 0x90, 0x99, 0x89, 0x00, - 0xa8, 0x30, 0x46, 0x36, 0xa0, 0xbd, 0x9c, 0x51, 0x23, 0x98, 0xba, 0x9b, 0x08, 0x10, 0x23, 0x73, - 0x13, 0xca, 0xdb, 0x9c, 0x31, 0x13, 0x80, 0x98, 0x8b, 0x98, 0x1a, 0x21, 0x77, 0x24, 0xb9, 0xcc, - 0x0a, 0x52, 0x12, 0xa8, 0xb9, 0x8a, 0x00, 0x10, 0x18, 0x55, 0x12, 0xba, 0xcd, 0x8b, 0x22, 0x12, - 0x00, 0xb9, 0x08, 0x10, 0x00, 0x4a, 0x77, 0x03, 0xda, 0xbb, 0x39, 0x34, 0x03, 0xa9, 0xcc, 0x09, - 0x11, 0x81, 0x48, 0x34, 0x82, 0xcd, 0xbc, 0x19, 0x12, 0x33, 0x90, 0xab, 0x00, 0x00, 0xb8, 0x73, - 0x57, 0x81, 0xcb, 0xab, 0x30, 0x33, 0x03, 0xca, 0xbb, 0x28, 0x02, 0x9b, 0x44, 0x45, 0xa2, 0xbd, - 0x9d, 0x08, 0x20, 0x14, 0x99, 0x88, 0x21, 0x80, 0x9b, 0x64, 0x53, 0xb0, 0xbc, 0x9b, 0x32, 0x44, - 0x91, 0xca, 0x8a, 0x21, 0x91, 0x19, 0x34, 0x35, 0xd8, 0xbd, 0xab, 0x10, 0x53, 0x82, 0xa9, 0x18, - 0x12, 0x98, 0x38, 0x37, 0x25, 0xe9, 0xbb, 0x0a, 0x32, 0x25, 0xa0, 0xaa, 0x0a, 0x12, 0x89, 0x52, - 0x32, 0x17, 0xdb, 0xbc, 0x8b, 0x21, 0x44, 0x90, 0x88, 0x28, 0x90, 0x0a, 0x51, 0x34, 0x05, 0xda, - 0xac, 0x19, 0x31, 0x23, 0xb8, 0xaa, 0x28, 0xa0, 0x18, 0x33, 0x75, 0x84, 0xdb, 0xcc, 0x09, 0x11, - 0x33, 0x89, 0x10, 0x11, 0x9a, 0x00, 0x31, 0x66, 0x93, 0xcc, 0xac, 0x20, 0x21, 0x14, 0xa9, 0x9a, - 0x02, 0x08, 0x01, 0x11, 0x65, 0xa1, 0xce, 0xac, 0x01, 0x11, 0x13, 0x18, 0x11, 0x90, 0x0a, 0x22, - 0x73, 0x33, 0xf8, 0xcc, 0x0a, 0x22, 0x21, 0x03, 0xab, 0x19, 0xa8, 0x20, 0x14, 0x32, 0x26, 0xfa, - 0xbf, 0x09, 0x01, 0x30, 0x03, 0x00, 0x02, 0xba, 0x28, 0x21, 0x37, 0x14, 0xfb, 0xac, 0x18, 0x02, - 0x31, 0x93, 0x9a, 0x90, 0x9a, 0x31, 0x43, 0x53, 0x13, 0xff, 0xbb, 0x18, 0x00, 0x51, 0x02, 0x11, - 0x98, 0x9b, 0x08, 0x52, 0x34, 0x92, 0xcf, 0x9a, 0x11, 0x80, 0x53, 0x91, 0x08, 0x89, 0x9a, 0x10, - 0x42, 0x53, 0xa1, 0xef, 0x8a, 0x00, 0x09, 0x42, 0x11, 0x02, 0xa9, 0x9a, 0x28, 0x44, 0x33, 0xf8, - 0xbc, 0x19, 0x01, 0x20, 0x24, 0x90, 0x88, 0x98, 0x9b, 0x52, 0x33, 0x24, 0xfa, 0xbf, 0x89, 0x00, - 0x20, 0x24, 0x11, 0x90, 0x9a, 0x8b, 0x63, 0x33, 0x02, 0xed, 0xab, 0x28, 0x01, 0x41, 0x13, 0x98, - 0x89, 0xca, 0x09, 0x45, 0x22, 0x81, 0xdf, 0xab, 0x08, 0x08, 0x33, 0x25, 0x82, 0xa9, 0xba, 0x39, - 0x27, 0x12, 0x91, 0xcf, 0x9a, 0x11, 0x11, 0x32, 0x13, 0x99, 0xc9, 0xab, 0x48, 0x25, 0x22, 0xb1, - 0xff, 0x9a, 0x08, 0x20, 0x21, 0x24, 0x80, 0xba, 0xaa, 0x51, 0x24, 0x11, 0xc8, 0xbe, 0x0a, 0x21, - 0x12, 0x42, 0x82, 0x89, 0xba, 0x9b, 0x52, 0x43, 0x22, 0xf8, 0xbf, 0x99, 0x10, 0x21, 0x42, 0x12, - 0xa8, 0xbb, 0x1a, 0x54, 0x22, 0x81, 0xfa, 0xac, 0x18, 0x12, 0x12, 0x32, 0x91, 0xa9, 0xbb, 0x09, - 0x53, 0x22, 0x34, 0xfd, 0x9f, 0x88, 0x10, 0x01, 0x32, 0x03, 0xaa, 0xab, 0x30, 0x25, 0x02, 0xa0, - 0xdf, 0x8a, 0x21, 0x12, 0x21, 0x13, 0xa1, 0xaa, 0x89, 0xa9, 0x20, 0x45, 0x93, 0xff, 0x8d, 0x08, - 0x01, 0x11, 0x33, 0x91, 0xbb, 0x08, 0x21, 0x34, 0x81, 0xea, 0xbf, 0x29, 0x32, 0x21, 0x12, 0x31, - 0xb9, 0x19, 0x90, 0xbd, 0x18, 0x44, 0xf1, 0xbf, 0x88, 0x00, 0x12, 0x12, 0x25, 0xa9, 0x99, 0x10, - 0x20, 0x14, 0xa8, 0xfc, 0x8c, 0x20, 0x23, 0x22, 0x88, 0x02, 0x8b, 0x23, 0xda, 0x9b, 0x31, 0x23, - 0xff, 0x9d, 0x80, 0x00, 0x12, 0x21, 0x04, 0xaa, 0x00, 0x10, 0x40, 0x84, 0xcb, 0xbe, 0x1a, 0x24, - 0x33, 0x02, 0x0a, 0xa1, 0x59, 0x84, 0xcb, 0x8a, 0x21, 0xa1, 0xef, 0x89, 0x88, 0x21, 0x12, 0x31, - 0x92, 0x8c, 0x01, 0x88, 0x63, 0xb1, 0xcd, 0x9c, 0x20, 0x25, 0x32, 0x90, 0x0a, 0x81, 0x62, 0xb0, - 0xad, 0x19, 0x11, 0xc0, 0xad, 0x99, 0x89, 0x32, 0x25, 0x31, 0xc1, 0x19, 0x98, 0x19, 0x25, 0xea, - 0xad, 0x09, 0x62, 0x13, 0x02, 0xa9, 0x29, 0x13, 0x14, 0xdc, 0x9b, 0x08, 0x02, 0xaa, 0xdb, 0x89, - 0xaa, 0x72, 0x12, 0x42, 0xa8, 0x88, 0x9b, 0x42, 0x92, 0xdf, 0x89, 0x18, 0x36, 0x01, 0x81, 0xab, - 0x51, 0x22, 0xb1, 0xbd, 0x9a, 0x18, 0x00, 0x90, 0x9c, 0xb8, 0x8e, 0x43, 0x10, 0x33, 0xb9, 0x99, - 0x39, 0x16, 0xfb, 0xac, 0x08, 0x71, 0x23, 0x10, 0xa8, 0x8c, 0x43, 0x11, 0xba, 0xab, 0xab, 0x18, - 0x10, 0xc0, 0x1a, 0xfc, 0x2a, 0x23, 0x30, 0x83, 0xaf, 0x18, 0x23, 0x91, 0xdd, 0x9c, 0x10, 0x56, - 0x01, 0x80, 0xb9, 0x18, 0x24, 0x98, 0x9a, 0xca, 0x8a, 0x11, 0x20, 0x98, 0xa2, 0xff, 0x10, 0x11, - 0x10, 0xb0, 0x9c, 0x31, 0x02, 0xa9, 0xec, 0x8b, 0x62, 0x17, 0x00, 0x98, 0x99, 0x38, 0x03, 0xaa, - 0x99, 0xbd, 0x28, 0x81, 0x28, 0x41, 0xf1, 0x8c, 0x20, 0x12, 0x98, 0xdc, 0x19, 0x33, 0x90, 0xa0, - 0xcf, 0x08, 0x64, 0x12, 0x88, 0x98, 0x98, 0x40, 0xb0, 0x89, 0xa9, 0xab, 0x33, 0x9a, 0x53, 0x14, - 0xdd, 0x89, 0x42, 0x91, 0xba, 0xad, 0x31, 0x03, 0x28, 0xf0, 0xac, 0x40, 0x26, 0x81, 0x80, 0x98, - 0x89, 0x12, 0xc9, 0x99, 0xaa, 0x4a, 0x94, 0x09, 0x53, 0xb1, 0xbd, 0x28, 0x24, 0xb9, 0xcc, 0x8a, - 0x33, 0x81, 0x32, 0xfc, 0x8b, 0x54, 0x23, 0x80, 0x80, 0xa9, 0x18, 0x80, 0xdb, 0x9a, 0x9a, 0x52, - 0x98, 0x71, 0x12, 0xca, 0xab, 0x32, 0x82, 0xfb, 0xab, 0x19, 0x32, 0x11, 0xa2, 0xcf, 0x48, 0x44, - 0x02, 0x80, 0x98, 0x99, 0x08, 0x80, 0xbc, 0x99, 0x08, 0x00, 0x39, 0x77, 0x81, 0xca, 0x09, 0x21, - 0xa8, 0xce, 0x89, 0x20, 0x13, 0x80, 0xd9, 0x0a, 0x63, 0x34, 0x11, 0x80, 0xa9, 0x99, 0x99, 0xb0, - 0x9f, 0x01, 0x90, 0x08, 0x44, 0x23, 0xc0, 0x9e, 0x10, 0x01, 0xeb, 0xac, 0x08, 0x30, 0x04, 0xa9, - 0x99, 0x11, 0x74, 0x05, 0x10, 0x88, 0x99, 0x98, 0x89, 0xb8, 0x2b, 0x93, 0x9c, 0x42, 0x15, 0x33, - 0xea, 0x8a, 0x00, 0xb0, 0xcf, 0x9b, 0x08, 0x63, 0x91, 0x9a, 0x20, 0x11, 0x56, 0x01, 0x00, 0x88, - 0x99, 0xa9, 0x9b, 0xba, 0x62, 0xb0, 0x29, 0x25, 0x11, 0x83, 0xae, 0x88, 0x11, 0xfb, 0xcc, 0x9a, - 0x30, 0x15, 0xa9, 0x28, 0x11, 0x51, 0x16, 0x80, 0x90, 0x88, 0x00, 0xc9, 0x9c, 0x19, 0x02, 0x9a, - 0x73, 0x02, 0x30, 0xd1, 0x8b, 0x09, 0x90, 0xfb, 0xcc, 0x8a, 0x42, 0x82, 0x8b, 0x32, 0x02, 0x74, - 0x83, 0x88, 0x98, 0x18, 0x01, 0xfc, 0x89, 0x01, 0x80, 0x19, 0x24, 0x01, 0x32, 0xea, 0x89, 0x89, - 0xa0, 0xdd, 0xbd, 0x29, 0x24, 0xa8, 0x19, 0x23, 0x32, 0x47, 0x90, 0x88, 0x88, 0x20, 0x91, 0xdf, - 0x00, 0x01, 0x89, 0x11, 0x02, 0x30, 0x04, 0xac, 0x98, 0x19, 0xe8, 0xcd, 0x9d, 0x31, 0x82, 0x8a, - 0x11, 0x32, 0x72, 0x04, 0x99, 0x88, 0x10, 0x12, 0xf8, 0x8e, 0x11, 0x90, 0x10, 0x11, 0x08, 0x28, - 0xa3, 0x8e, 0x08, 0x11, 0xea, 0xce, 0x8a, 0x14, 0x90, 0x00, 0x11, 0x02, 0x62, 0x82, 0x9b, 0x10, - 0x22, 0x83, 0xdf, 0x0b, 0x03, 0x08, 0x32, 0x81, 0x98, 0x40, 0xd8, 0x1a, 0x20, 0x83, 0xdf, 0xcd, - 0x18, 0x12, 0x09, 0x11, 0x12, 0x00, 0x54, 0xb8, 0x09, 0x31, 0x33, 0xe1, 0xcd, 0x29, 0x01, 0x28, - 0x13, 0x90, 0x9a, 0x22, 0xbd, 0x21, 0x42, 0xd1, 0xcf, 0xbb, 0x41, 0x81, 0x10, 0x11, 0x11, 0x38, - 0x07, 0xba, 0x11, 0x22, 0x12, 0xfa, 0x9d, 0x10, 0x01, 0x22, 0x02, 0xc9, 0x09, 0xa2, 0x1c, 0x15, - 0x01, 0xfa, 0xbd, 0x8b, 0x23, 0x00, 0x21, 0x11, 0x91, 0x72, 0x94, 0x8a, 0x11, 0x21, 0x81, 0xcd, - 0x9c, 0x22, 0x21, 0x32, 0xa1, 0xbd, 0x28, 0xa8, 0x72, 0x83, 0xa8, 0xde, 0xcb, 0x09, 0x13, 0x01, - 0x22, 0x00, 0x09, 0x45, 0xa0, 0x28, 0x02, 0x20, 0xa2, 0xef, 0x89, 0x22, 0x21, 0x04, 0xb9, 0x9d, - 0x01, 0x18, 0x26, 0xa0, 0xba, 0xcd, 0xac, 0x18, 0x13, 0x20, 0x04, 0x98, 0x38, 0x16, 0x98, 0x12, - 0x99, 0x31, 0xb2, 0xdf, 0x19, 0x23, 0x42, 0xa2, 0xcc, 0x09, 0x00, 0x52, 0x03, 0xca, 0xac, 0xdb, - 0x8c, 0x20, 0x02, 0x32, 0x80, 0x98, 0x63, 0x02, 0x10, 0x98, 0x9a, 0x73, 0xc0, 0xac, 0x38, 0x25, - 0x12, 0xb8, 0xbd, 0x18, 0x30, 0x35, 0x91, 0xbd, 0xab, 0xbe, 0x0a, 0x21, 0x22, 0x13, 0x10, 0x18, - 0x34, 0x43, 0xa2, 0xba, 0x3b, 0x47, 0xda, 0xab, 0x50, 0x24, 0x00, 0xaa, 0xac, 0x10, 0x44, 0x02, - 0xb8, 0xae, 0xb9, 0xad, 0x88, 0x41, 0x11, 0x11, 0x00, 0x01, 0x42, 0x33, 0xc9, 0xaa, 0x61, 0x93, - 0xdb, 0x9c, 0x54, 0x01, 0x80, 0xaa, 0x9b, 0x41, 0x34, 0x01, 0xeb, 0xab, 0xcb, 0x9b, 0x19, 0x34, - 0x01, 0x12, 0x01, 0x30, 0x36, 0x14, 0xcb, 0x08, 0x22, 0xb8, 0xce, 0x29, 0x36, 0x01, 0x98, 0xdb, - 0x1a, 0x52, 0x13, 0x98, 0xda, 0xbc, 0xab, 0xaa, 0x31, 0x34, 0x11, 0x12, 0xb8, 0x73, 0x42, 0x91, - 0x8c, 0x11, 0x88, 0xa8, 0xad, 0x41, 0x37, 0x88, 0xa9, 0xbc, 0x20, 0x54, 0x81, 0x90, 0xdb, 0xac, - 0x9a, 0x88, 0x20, 0x34, 0x81, 0x80, 0x2b, 0x26, 0x43, 0xb8, 0x29, 0xa8, 0xa9, 0x88, 0x89, 0x71, - 0x57, 0x98, 0xb9, 0x8b, 0x42, 0x23, 0x08, 0xb1, 0xdf, 0x9b, 0x09, 0x80, 0x38, 0x16, 0x88, 0x99, - 0x40, 0x23, 0x01, 0x8a, 0x92, 0xac, 0x0a, 0x32, 0xb0, 0x74, 0x17, 0xaa, 0xaa, 0x28, 0x13, 0x13, - 0x11, 0xf9, 0xbf, 0x8a, 0x08, 0x80, 0x52, 0x02, 0xaa, 0x0a, 0x45, 0x01, 0x00, 0x09, 0xc8, 0x99, - 0x28, 0x15, 0x09, 0x65, 0xa1, 0xab, 0x8b, 0x32, 0x01, 0x24, 0x91, 0xcf, 0xac, 0x09, 0x80, 0x10, - 0x35, 0xb0, 0x9b, 0x58, 0x15, 0x08, 0x01, 0x98, 0xac, 0x88, 0x41, 0x02, 0x39, 0x37, 0xca, 0xaa, - 0x30, 0x92, 0x59, 0x13, 0xca, 0xce, 0x9a, 0x18, 0x80, 0x48, 0x05, 0xba, 0x09, 0x63, 0x81, 0x21, - 0x91, 0xcb, 0x8a, 0x28, 0x34, 0x82, 0x50, 0x93, 0xae, 0x0a, 0x31, 0xa8, 0x64, 0x91, 0xdb, 0xbb, - 0x8b, 0x11, 0x08, 0x44, 0xa2, 0xad, 0x20, 0x34, 0x11, 0x33, 0xe9, 0x9c, 0x08, 0x30, 0x24, 0x00, - 0x11, 0xc0, 0xad, 0x18, 0x12, 0x2a, 0x47, 0xb9, 0xbc, 0xbb, 0x18, 0x80, 0x28, 0x35, 0xd8, 0x8b, - 0x31, 0x36, 0x31, 0x93, 0xaf, 0x9a, 0x11, 0x33, 0x23, 0x90, 0x00, 0xe9, 0x9b, 0x29, 0x04, 0x70, - 0x93, 0xad, 0xcb, 0x0a, 0x80, 0x88, 0x30, 0x05, 0xba, 0x8a, 0x72, 0x24, 0x23, 0xd9, 0xab, 0x0a, - 0x43, 0x22, 0x12, 0x88, 0x89, 0xca, 0xbb, 0x71, 0x02, 0x42, 0xd9, 0xcb, 0xab, 0x88, 0x89, 0x88, - 0x35, 0x92, 0xdb, 0x09, 0x74, 0x23, 0x81, 0xdb, 0x9a, 0x20, 0x23, 0x22, 0x12, 0xb0, 0x9b, 0xea, - 0x8c, 0x44, 0x01, 0x81, 0xdb, 0xac, 0x8a, 0x9a, 0x89, 0x41, 0x23, 0xb8, 0xbe, 0x38, 0x67, 0x02, - 0x98, 0xba, 0x09, 0x22, 0x22, 0x33, 0x02, 0xfa, 0x0a, 0xca, 0x49, 0x24, 0x90, 0x98, 0xbc, 0xaa, - 0xcb, 0xaa, 0x31, 0x32, 0x92, 0xd9, 0x9e, 0x73, 0x24, 0x91, 0xa9, 0xaa, 0x20, 0x22, 0x63, 0x23, - 0xa9, 0xbd, 0x80, 0xab, 0x55, 0x82, 0xaa, 0x9a, 0x89, 0xda, 0xac, 0x10, 0x03, 0xb9, 0x0a, 0x92, - 0x2e, 0x77, 0x81, 0x98, 0x88, 0x08, 0x08, 0x42, 0x23, 0xa8, 0xca, 0x8c, 0x91, 0x3a, 0x47, 0xa8, - 0x9b, 0x01, 0xb9, 0xbc, 0x0a, 0x11, 0xc9, 0x9a, 0x40, 0x91, 0x71, 0x27, 0x98, 0x09, 0x80, 0x00, - 0x29, 0x36, 0x82, 0xbb, 0xbb, 0x0b, 0x91, 0x74, 0x86, 0xba, 0x19, 0x81, 0xba, 0x9c, 0x00, 0x90, - 0xbc, 0x89, 0x40, 0x22, 0x77, 0x91, 0x99, 0x10, 0x00, 0x90, 0x41, 0x24, 0xb8, 0x9c, 0xb8, 0x1a, - 0x31, 0x37, 0xc8, 0xab, 0x41, 0xa0, 0xcb, 0x0a, 0x88, 0xca, 0x8a, 0x88, 0x62, 0x53, 0x15, 0xb9, - 0x89, 0x32, 0x82, 0x18, 0x45, 0x01, 0xbd, 0x08, 0xba, 0x20, 0x73, 0x83, 0xcc, 0x0a, 0x13, 0xc8, - 0x9b, 0x80, 0xa9, 0xcb, 0x81, 0x0b, 0x56, 0x43, 0x92, 0xbc, 0x28, 0x24, 0x00, 0x30, 0x13, 0xd0, - 0x8d, 0x90, 0xab, 0x51, 0x24, 0xc1, 0xac, 0x28, 0x83, 0xbc, 0x89, 0xa8, 0x99, 0x0a, 0xd0, 0x2b, - 0x67, 0x22, 0xc8, 0x8a, 0x31, 0x22, 0x18, 0x21, 0x00, 0xcc, 0x20, 0xea, 0x8b, 0x63, 0x03, 0xdb, - 0x0a, 0x12, 0xa0, 0x9c, 0x99, 0x99, 0x09, 0x12, 0xde, 0x38, 0x37, 0x81, 0xbb, 0x18, 0x43, 0x12, - 0x00, 0x00, 0x98, 0x0c, 0x83, 0xcf, 0x2a, 0x35, 0xb0, 0x9d, 0x10, 0x10, 0xb9, 0x9a, 0xa9, 0x09, - 0x30, 0xf2, 0xaf, 0x62, 0x13, 0xa9, 0x8a, 0x11, 0x43, 0x01, 0x08, 0x90, 0x89, 0x21, 0xf9, 0xac, - 0x51, 0x13, 0xdb, 0x09, 0x00, 0x81, 0xac, 0x9a, 0x08, 0x11, 0x82, 0xfd, 0x1b, 0x55, 0x01, 0xaa, - 0x08, 0x20, 0x24, 0x00, 0x80, 0x88, 0x08, 0x90, 0xdd, 0x0a, 0x54, 0x91, 0x9c, 0x88, 0x01, 0xa9, - 0xac, 0x09, 0x13, 0x01, 0xd9, 0xaf, 0x48, 0x44, 0x91, 0x8a, 0x08, 0x31, 0x13, 0x88, 0x10, 0x90, - 0x08, 0xd9, 0xad, 0x18, 0x45, 0xc0, 0x8b, 0x00, 0xb8, 0xcb, 0xac, 0x52, 0x81, 0x90, 0xea, 0x9b, - 0x53, 0x35, 0x98, 0x0a, 0x00, 0x41, 0x02, 0x18, 0x81, 0x99, 0x89, 0xb9, 0x9d, 0x28, 0x47, 0xda, - 0x08, 0xa0, 0x9c, 0xba, 0x39, 0x25, 0x80, 0xbb, 0xdb, 0x1b, 0x65, 0x14, 0x99, 0x81, 0x99, 0x32, - 0x11, 0x22, 0xb8, 0x99, 0x09, 0xc1, 0xbc, 0x5a, 0x07, 0x8b, 0x81, 0xdc, 0x9b, 0x8a, 0x42, 0x13, - 0xb0, 0x8c, 0xda, 0x19, 0x55, 0x03, 0x80, 0xa8, 0x8a, 0x43, 0x23, 0x80, 0x8a, 0xab, 0x54, 0xc0, - 0xab, 0x49, 0x04, 0x88, 0xf9, 0xbc, 0x0a, 0x00, 0x43, 0x82, 0xba, 0x81, 0xae, 0x28, 0x55, 0x04, - 0x90, 0xba, 0x1a, 0x34, 0x02, 0x88, 0xa9, 0x4a, 0x06, 0xaa, 0xbb, 0x71, 0x02, 0xaa, 0xeb, 0xab, - 0x00, 0x30, 0x25, 0xa8, 0x1a, 0xa0, 0xac, 0x40, 0x57, 0x81, 0x99, 0xab, 0x48, 0x13, 0x80, 0x90, - 0x8a, 0x63, 0xa2, 0xdb, 0x09, 0x34, 0xa0, 0xbc, 0xbd, 0x09, 0x00, 0x53, 0x81, 0x99, 0x11, 0xe9, - 0x9a, 0x73, 0x24, 0xa0, 0xba, 0x9a, 0x53, 0x01, 0x81, 0x99, 0x48, 0x15, 0xc9, 0x9b, 0x31, 0x14, - 0xcb, 0xac, 0xbb, 0x09, 0x51, 0x13, 0x80, 0x18, 0xa2, 0xce, 0x28, 0x46, 0x02, 0xb9, 0xbb, 0x08, - 0x34, 0x12, 0xa9, 0x29, 0x46, 0xa2, 0xbc, 0x18, 0x22, 0xa0, 0xcf, 0x99, 0xab, 0x28, 0x25, 0x01, - 0x00, 0x11, 0xda, 0x8c, 0x52, 0x24, 0x80, 0xcb, 0x9a, 0x18, 0x44, 0x91, 0x89, 0x52, 0x23, 0xda, - 0x8a, 0x11, 0x00, 0xeb, 0x9b, 0xcb, 0x8c, 0x43, 0x02, 0x11, 0x11, 0xa0, 0xbe, 0x20, 0x34, 0x13, - 0xa8, 0xbd, 0xab, 0x61, 0x05, 0x99, 0x30, 0x25, 0x90, 0xab, 0x01, 0x89, 0xd9, 0xab, 0xda, 0xbd, - 0x28, 0x24, 0x10, 0x42, 0x81, 0xba, 0x0b, 0x22, 0x45, 0x80, 0x90, 0xbf, 0x0a, 0x73, 0x81, 0x0a, - 0x53, 0x82, 0x99, 0x08, 0xa8, 0xba, 0x9d, 0xa0, 0xbe, 0x9c, 0x42, 0x02, 0x30, 0x14, 0xa9, 0x98, - 0x80, 0x00, 0x03, 0x73, 0xe0, 0x9c, 0x28, 0x24, 0xa9, 0x50, 0x24, 0x88, 0x08, 0x90, 0xcc, 0x9a, - 0x18, 0xe9, 0xbb, 0x19, 0x24, 0x11, 0x53, 0x91, 0x0a, 0x81, 0x9a, 0x99, 0x61, 0x15, 0xeb, 0x8a, - 0x41, 0x82, 0x0a, 0x44, 0x02, 0x20, 0x90, 0xfa, 0x9c, 0x08, 0x80, 0xdb, 0x8a, 0x20, 0x22, 0x33, - 0x23, 0xa9, 0x63, 0xc8, 0xcb, 0x18, 0x34, 0xa2, 0xbf, 0x28, 0x13, 0x80, 0x40, 0x34, 0x22, 0x12, - 0xd9, 0xbf, 0x0a, 0x80, 0xa8, 0xbd, 0x18, 0x10, 0x44, 0x02, 0x00, 0x20, 0x03, 0xce, 0x9b, 0x42, - 0x12, 0xc8, 0x8d, 0x12, 0x10, 0x00, 0x32, 0x35, 0x24, 0x91, 0xed, 0x9b, 0x00, 0x88, 0xc9, 0x8b, - 0x00, 0x60, 0x23, 0x80, 0x10, 0x32, 0xe0, 0xbd, 0x28, 0x23, 0x91, 0xdb, 0x18, 0x11, 0x21, 0x21, - 0x44, 0x44, 0x13, 0xe8, 0xcc, 0x09, 0x00, 0xa9, 0xaa, 0x9a, 0x10, 0x65, 0x11, 0x80, 0x28, 0x02, - 0xdc, 0x9b, 0x41, 0x03, 0xb9, 0x89, 0x18, 0x22, 0x21, 0x52, 0x34, 0x36, 0x83, 0xfc, 0xab, 0x11, - 0xa8, 0xaa, 0xb9, 0x8a, 0x52, 0x36, 0x01, 0x9a, 0x32, 0xb1, 0xbf, 0x1a, 0x25, 0x98, 0x99, 0x80, - 0x29, 0x11, 0x34, 0x12, 0x72, 0x25, 0xa0, 0xbf, 0x19, 0x81, 0xba, 0x8a, 0xb9, 0x1a, 0x55, 0x15, - 0x98, 0x09, 0x13, 0xd9, 0x9c, 0x40, 0x01, 0xa9, 0x28, 0x98, 0x18, 0x42, 0x04, 0x18, 0x54, 0x23, - 0xfa, 0xab, 0x20, 0xb8, 0xac, 0x88, 0xba, 0x50, 0x45, 0x92, 0x99, 0x20, 0x02, 0xbe, 0x0a, 0x33, - 0xa0, 0x9b, 0x23, 0xaa, 0x62, 0x23, 0xb0, 0x61, 0x45, 0x93, 0xcd, 0x89, 0x82, 0xba, 0x8b, 0x98, - 0x0c, 0x54, 0x23, 0xa9, 0x09, 0x52, 0xc1, 0x9d, 0x28, 0x02, 0x99, 0x08, 0x81, 0x3a, 0x16, 0x90, - 0x8b, 0x56, 0x23, 0xb8, 0xae, 0x28, 0xa0, 0xac, 0x89, 0xa9, 0x60, 0x23, 0x81, 0x8b, 0x32, 0x23, - 0xfd, 0x8a, 0x31, 0x90, 0x88, 0x09, 0x11, 0x62, 0xa0, 0xab, 0x71, 0x26, 0x01, 0xca, 0x9a, 0x11, - 0xca, 0x9a, 0x9a, 0x20, 0x34, 0x91, 0x88, 0x51, 0x23, 0xb1, 0xcf, 0x09, 0x23, 0x89, 0xa9, 0x39, - 0x25, 0x02, 0xbf, 0x29, 0x46, 0x13, 0xa0, 0xac, 0x89, 0x01, 0xbc, 0xab, 0x28, 0x33, 0x92, 0x9e, - 0x43, 0x33, 0x81, 0xeb, 0xab, 0x20, 0x14, 0xa9, 0x8b, 0x54, 0x02, 0xea, 0x9c, 0x43, 0x44, 0x01, - 0xa9, 0xaa, 0x09, 0xa1, 0xae, 0x0a, 0x23, 0xa1, 0xda, 0x3a, 0x26, 0x13, 0xa9, 0x9c, 0x89, 0x30, - 0x93, 0xad, 0x31, 0x26, 0xc8, 0xcc, 0x39, 0x44, 0x23, 0x90, 0x99, 0xac, 0x18, 0xc9, 0x9b, 0x31, - 0x84, 0xbd, 0x9b, 0x73, 0x23, 0x91, 0xba, 0x89, 0x8a, 0x53, 0xb8, 0x8a, 0x54, 0x82, 0xbd, 0xbb, - 0x73, 0x33, 0x13, 0x89, 0xc9, 0x9c, 0x81, 0xab, 0x29, 0x33, 0xf8, 0x9e, 0x18, 0x53, 0x11, 0xa9, - 0x8a, 0x90, 0x28, 0x84, 0xaa, 0x39, 0x26, 0xd8, 0xba, 0x0b, 0x37, 0x23, 0x01, 0x80, 0xfb, 0x89, - 0x80, 0x99, 0x31, 0xa1, 0xcf, 0x89, 0x31, 0x26, 0x80, 0xaa, 0x09, 0x88, 0x40, 0x91, 0xab, 0x51, - 0x82, 0xcb, 0xcb, 0x59, 0x25, 0x22, 0x01, 0xa8, 0xbd, 0x88, 0x88, 0x08, 0x23, 0xfc, 0x9c, 0x18, - 0x53, 0x03, 0x99, 0xaa, 0x00, 0x88, 0x34, 0xc8, 0x8d, 0x42, 0x80, 0xbb, 0xab, 0x72, 0x24, 0x31, - 0x01, 0xca, 0x9d, 0x00, 0x98, 0x28, 0xa3, 0xcf, 0x0a, 0x21, 0x34, 0x91, 0xa9, 0x8a, 0x80, 0x51, - 0x84, 0xfb, 0x19, 0x23, 0xa8, 0xaa, 0x8b, 0x64, 0x22, 0x24, 0xa8, 0xcb, 0x09, 0x90, 0xa9, 0x61, - 0xd0, 0xac, 0x10, 0x32, 0x23, 0x98, 0xaa, 0xac, 0x31, 0x36, 0xd0, 0xad, 0x41, 0x81, 0x98, 0xa9, - 0x19, 0x44, 0x53, 0x02, 0xbb, 0x8b, 0x80, 0xba, 0x2c, 0x17, 0xcc, 0x89, 0x21, 0x22, 0x82, 0x88, - 0xca, 0x1b, 0x35, 0x82, 0xde, 0x09, 0x24, 0x98, 0x89, 0x99, 0x38, 0x45, 0x24, 0xb0, 0xab, 0x08, - 0xa9, 0xac, 0x72, 0xb1, 0xad, 0x28, 0x32, 0x10, 0x11, 0xb8, 0xad, 0x30, 0x24, 0xea, 0x9c, 0x31, - 0x04, 0x8a, 0x89, 0x9a, 0x71, 0x44, 0x01, 0xaa, 0x99, 0x98, 0xbb, 0x38, 0x26, 0xfb, 0x8a, 0x31, - 0x02, 0x20, 0x81, 0xdb, 0x09, 0x22, 0xb1, 0xbf, 0x18, 0x34, 0x90, 0x99, 0xa8, 0x8b, 0x77, 0x13, - 0x90, 0xb9, 0x8a, 0xb9, 0x09, 0x44, 0xa1, 0xbf, 0x19, 0x33, 0x11, 0x12, 0xc9, 0x9b, 0x01, 0x09, - 0xea, 0x8a, 0x40, 0x25, 0x99, 0x09, 0xba, 0x70, 0x27, 0x01, 0x98, 0xcb, 0x8a, 0x80, 0x31, 0x02, - 0xfb, 0x9d, 0x31, 0x22, 0x20, 0x80, 0xbb, 0x0a, 0xd9, 0x19, 0x99, 0x80, 0x50, 0x05, 0x89, 0x90, - 0x0a, 0x76, 0x23, 0x80, 0xca, 0xad, 0x10, 0x01, 0x12, 0xb9, 0xce, 0x09, 0x43, 0x13, 0x00, 0x99, - 0xab, 0x99, 0xaf, 0x22, 0x88, 0xa8, 0x51, 0x01, 0x00, 0x00, 0x38, 0x67, 0x12, 0xa8, 0xfb, 0x0c, - 0x12, 0x01, 0x90, 0xbb, 0x9c, 0x30, 0x35, 0x12, 0x98, 0xa9, 0xba, 0xcd, 0x2b, 0x04, 0x98, 0x99, - 0x63, 0x02, 0x11, 0x99, 0x42, 0x45, 0x81, 0xea, 0xac, 0x38, 0x13, 0x00, 0xdb, 0x9b, 0x09, 0x35, - 0x24, 0x90, 0x98, 0xba, 0xad, 0xcb, 0x50, 0x92, 0x99, 0x09, 0x35, 0x22, 0x91, 0x19, 0x33, 0x35, - 0xd8, 0xcd, 0x9a, 0x53, 0x01, 0xb8, 0xac, 0x88, 0x41, 0x43, 0x02, 0xa9, 0xa9, 0xdb, 0xbb, 0x9a, - 0x54, 0x98, 0xba, 0x71, 0x33, 0x02, 0x99, 0x11, 0x18, 0x83, 0xdd, 0xbb, 0x19, 0x37, 0x90, 0xcb, - 0x8a, 0x11, 0x34, 0x33, 0xa1, 0xad, 0xb9, 0xbb, 0xcc, 0x2a, 0x15, 0xba, 0x19, 0x56, 0x23, 0x88, - 0x08, 0x80, 0x09, 0x90, 0xbc, 0xad, 0x58, 0x14, 0xb9, 0xac, 0x20, 0x32, 0x44, 0x12, 0xe9, 0xab, - 0x88, 0xa9, 0xbc, 0x30, 0x92, 0xab, 0x71, 0x37, 0x02, 0x09, 0x80, 0xaa, 0x09, 0x81, 0xca, 0x9c, - 0x52, 0x02, 0xcc, 0x09, 0x22, 0x43, 0x24, 0x90, 0xce, 0x8a, 0x00, 0xb9, 0xab, 0x21, 0x90, 0x29, - 0x77, 0x23, 0x80, 0x08, 0xa9, 0xbb, 0x30, 0x82, 0xcc, 0x0a, 0x23, 0xa2, 0xae, 0x31, 0x32, 0x47, - 0x01, 0xea, 0xab, 0x18, 0xa0, 0xbb, 0x9b, 0x20, 0x12, 0x74, 0x35, 0x12, 0x00, 0xa9, 0xbc, 0x8b, - 0x33, 0x98, 0xdb, 0x1a, 0x32, 0xa2, 0x8a, 0x33, 0x76, 0x15, 0xb8, 0xbc, 0x8b, 0x01, 0xba, 0xdb, - 0x0b, 0x30, 0x25, 0x63, 0x24, 0x01, 0x80, 0xdb, 0x9a, 0x08, 0x13, 0xa8, 0xdb, 0x18, 0x42, 0x91, - 0x88, 0x31, 0x67, 0x91, 0xca, 0xaa, 0x0a, 0x80, 0xba, 0xad, 0x09, 0x73, 0x13, 0x42, 0x13, 0x01, - 0xda, 0xab, 0x99, 0x20, 0x14, 0xa8, 0x9e, 0x18, 0x34, 0x98, 0x19, 0x73, 0x12, 0xc9, 0xbb, 0xbb, - 0x09, 0xa0, 0xeb, 0xac, 0x38, 0x47, 0x10, 0x32, 0x21, 0xb8, 0xbc, 0xa9, 0x9a, 0x52, 0x12, 0xd9, - 0x9b, 0x42, 0x23, 0xb9, 0x41, 0x34, 0xa0, 0xca, 0xdc, 0xaa, 0x00, 0x99, 0xfb, 0x0a, 0x63, 0x13, - 0x20, 0x23, 0x82, 0xbd, 0x99, 0xaa, 0x0a, 0x45, 0x81, 0xeb, 0x28, 0x22, 0x82, 0x8c, 0x33, 0x03, - 0x9a, 0xf9, 0xbc, 0x9a, 0x00, 0xb8, 0xbf, 0x41, 0x43, 0x02, 0x22, 0x33, 0xc9, 0x9c, 0xa9, 0xab, - 0x38, 0x37, 0xc0, 0x8c, 0x32, 0x12, 0xb0, 0x2a, 0x14, 0x08, 0x00, 0xde, 0x9c, 0x89, 0x01, 0xdb, - 0x0b, 0x35, 0x23, 0x12, 0x32, 0x93, 0xcb, 0xcb, 0xba, 0xaa, 0x72, 0x07, 0xaa, 0x29, 0x13, 0x11, - 0xbb, 0x31, 0x10, 0x11, 0xe8, 0xbf, 0x9a, 0x39, 0xa1, 0xcd, 0x38, 0x25, 0x12, 0x11, 0x22, 0x91, - 0xcc, 0xab, 0xaa, 0x2a, 0x57, 0x81, 0xab, 0x31, 0x12, 0xa0, 0x8c, 0x12, 0x22, 0x80, 0xed, 0xbc, - 0x8a, 0x32, 0xd8, 0x9c, 0x43, 0x22, 0x11, 0x21, 0x25, 0xb8, 0xbd, 0x9a, 0xab, 0x72, 0x24, 0xb8, - 0x1a, 0x33, 0x91, 0xdb, 0x29, 0x23, 0x82, 0xa9, 0xee, 0xbb, 0x10, 0x03, 0xeb, 0x3a, 0x25, 0x00, - 0x18, 0x52, 0x03, 0xdb, 0xaa, 0xa9, 0x2a, 0x46, 0x02, 0xbb, 0x40, 0x13, 0xc9, 0x9b, 0x22, 0x03, - 0x88, 0xc0, 0xdf, 0x89, 0x21, 0xa0, 0xbb, 0x73, 0x82, 0x98, 0x31, 0x26, 0xb0, 0xbb, 0xa9, 0xab, - 0x73, 0x24, 0xb0, 0x8a, 0x25, 0x80, 0xbc, 0x28, 0x12, 0x90, 0x18, 0xf9, 0xbc, 0x28, 0x82, 0xd9, - 0x29, 0x25, 0x98, 0x0a, 0x37, 0x01, 0xca, 0x9a, 0xa9, 0x28, 0x27, 0x02, 0xba, 0x30, 0x04, 0xc9, - 0x8b, 0x22, 0x80, 0x88, 0x91, 0xcf, 0x8a, 0x21, 0xa8, 0x9c, 0x52, 0x93, 0xbb, 0x71, 0x17, 0x98, - 0x9a, 0x8a, 0x89, 0x52, 0x23, 0xa8, 0x0a, 0x43, 0xb0, 0xac, 0x28, 0x92, 0x88, 0x18, 0xe8, 0xac, - 0x08, 0xa1, 0xab, 0x38, 0x37, 0xdb, 0x19, 0x66, 0x81, 0xa9, 0xaa, 0x98, 0x30, 0x26, 0x82, 0x99, - 0x10, 0x03, 0xbc, 0x8a, 0x21, 0xaa, 0x10, 0x02, 0xbc, 0xdb, 0xaa, 0xbc, 0x28, 0x63, 0xc1, 0x9d, - 0x52, 0x26, 0xa0, 0xaa, 0x9b, 0x10, 0x43, 0x24, 0x80, 0x89, 0x31, 0xd1, 0x8b, 0x98, 0xa9, 0x0a, - 0x42, 0x03, 0xa0, 0xdf, 0xbb, 0x29, 0x12, 0x81, 0xcc, 0x3a, 0x47, 0x13, 0xba, 0xcb, 0x29, 0x23, - 0x43, 0x22, 0xa1, 0x99, 0x41, 0xca, 0x00, 0xdc, 0x9b, 0x32, 0x23, 0x24, 0xfa, 0xad, 0x89, 0x21, - 0x90, 0x9a, 0x99, 0x63, 0x24, 0x82, 0xda, 0x8b, 0x33, 0x12, 0x43, 0x15, 0xa8, 0x8c, 0x22, 0x89, - 0xd9, 0xbe, 0x20, 0x33, 0x33, 0xb1, 0xdf, 0xaa, 0x11, 0x80, 0x8a, 0x80, 0x00, 0x32, 0x53, 0x03, - 0xdb, 0x48, 0x02, 0x18, 0x55, 0x81, 0xcb, 0x38, 0x13, 0xa0, 0xef, 0x0b, 0x33, 0x42, 0x01, 0xda, - 0xbb, 0x0a, 0x12, 0xa8, 0x29, 0x81, 0x80, 0x99, 0x72, 0x05, 0x09, 0x22, 0x88, 0x32, 0x24, 0xfa, - 0x9a, 0x73, 0x01, 0xc9, 0xbd, 0x39, 0x25, 0x22, 0xa0, 0xbd, 0xaa, 0x18, 0x01, 0xa8, 0x32, 0x80, - 0xda, 0x09, 0x54, 0x02, 0x28, 0x81, 0x18, 0x20, 0xb2, 0xae, 0x2a, 0x67, 0x90, 0xeb, 0x9a, 0x42, - 0x14, 0x82, 0xaa, 0xbc, 0x9a, 0x20, 0x82, 0x1a, 0x05, 0xb8, 0xac, 0x21, 0x45, 0x01, 0x08, 0x01, - 0x98, 0x08, 0xab, 0xb8, 0x78, 0x47, 0xc9, 0xab, 0x09, 0x45, 0x22, 0x98, 0xca, 0xbc, 0x09, 0x32, - 0x90, 0x30, 0x93, 0xcd, 0x19, 0x11, 0x35, 0x90, 0x21, 0x90, 0xab, 0x89, 0x90, 0x9c, 0x77, 0x93, - 0xbc, 0x9a, 0x28, 0x47, 0x01, 0xa8, 0xcb, 0xab, 0x38, 0x12, 0x00, 0x33, 0xe9, 0x9b, 0x81, 0x31, - 0x16, 0x10, 0x82, 0xaa, 0xba, 0x00, 0xda, 0x70, 0x17, 0xa9, 0x9b, 0x98, 0x50, 0x25, 0x01, 0xda, - 0xbb, 0x89, 0x21, 0x11, 0x31, 0x92, 0xae, 0x19, 0x80, 0x50, 0x23, 0x21, 0xba, 0xaa, 0x8b, 0xa0, - 0x0d, 0x77, 0x81, 0xaa, 0x9a, 0x89, 0x64, 0x24, 0xa8, 0xcc, 0x9a, 0x00, 0x11, 0x11, 0x14, 0xaa, - 0x9a, 0x81, 0x8a, 0x73, 0x14, 0xa0, 0x9a, 0x90, 0x9a, 0x99, 0x71, 0x17, 0x98, 0xa9, 0x99, 0x1a, - 0x66, 0x02, 0xca, 0xaa, 0x89, 0x18, 0x21, 0x32, 0x92, 0xac, 0x18, 0xb9, 0x1a, 0x77, 0x81, 0x9a, - 0x18, 0x98, 0xaa, 0x28, 0x55, 0x02, 0xa9, 0xa9, 0xac, 0x60, 0x35, 0xa0, 0xad, 0x9a, 0x88, 0x10, - 0x22, 0x43, 0xa8, 0x0b, 0xa1, 0xac, 0x60, 0x25, 0xa9, 0x8a, 0x21, 0xba, 0x8c, 0x31, 0x37, 0x82, - 0x9a, 0xdb, 0x1b, 0x45, 0x04, 0xca, 0xab, 0x88, 0x89, 0x22, 0x32, 0x24, 0xa9, 0x09, 0xeb, 0x19, - 0x44, 0x82, 0xac, 0x28, 0x92, 0xbc, 0x19, 0x62, 0x26, 0x90, 0xb9, 0xbb, 0x61, 0x23, 0xa1, 0xaf, - 0x89, 0x99, 0x10, 0x12, 0x31, 0x04, 0x88, 0xaa, 0x9d, 0x31, 0x22, 0xc0, 0x8b, 0x33, 0xe9, 0xab, - 0x18, 0x76, 0x14, 0xa8, 0xaa, 0x0a, 0x24, 0x01, 0xca, 0x9d, 0x99, 0x88, 0x21, 0x12, 0x62, 0x03, - 0xa9, 0xbb, 0x19, 0x12, 0x8a, 0x98, 0x30, 0x80, 0xeb, 0xad, 0x30, 0x77, 0x07, 0xa9, 0x89, 0x18, - 0x02, 0x89, 0xba, 0xab, 0x8a, 0x20, 0x43, 0x00, 0x65, 0x01, 0xb9, 0x99, 0x08, 0xc0, 0x2b, 0x12, - 0x88, 0x08, 0xa9, 0xbb, 0x7b, 0x77, 0x85, 0x9a, 0x88, 0x10, 0x98, 0x89, 0xba, 0x9c, 0x00, 0x32, - 0x83, 0x39, 0x47, 0x00, 0xaa, 0x89, 0xa9, 0xdc, 0x30, 0x92, 0x00, 0x10, 0x90, 0xbc, 0x75, 0x27, - 0x98, 0x9a, 0x88, 0x80, 0x99, 0x88, 0xcc, 0x09, 0x21, 0x23, 0xa0, 0x40, 0x44, 0x93, 0xab, 0xc9, - 0xac, 0xab, 0x34, 0x00, 0x81, 0x23, 0xea, 0x09, 0x77, 0x22, 0xa8, 0x9b, 0x98, 0x99, 0x99, 0xb8, - 0xad, 0x10, 0x34, 0x22, 0xb9, 0x59, 0x36, 0xa1, 0xaa, 0xda, 0xaa, 0x0a, 0x33, 0x11, 0x41, 0xa1, - 0xaa, 0x3b, 0x77, 0x17, 0xa8, 0x99, 0x98, 0x89, 0x89, 0xb8, 0x8a, 0x42, 0x33, 0x82, 0xbd, 0x72, - 0x13, 0xa0, 0xab, 0xcb, 0xba, 0x2b, 0x16, 0x31, 0x83, 0x9a, 0xb9, 0x78, 0x57, 0x81, 0xaa, 0x99, - 0x98, 0xa9, 0x09, 0xb9, 0x39, 0x45, 0x12, 0xa9, 0x0b, 0x45, 0x02, 0xa8, 0xbb, 0xdc, 0xab, 0x30, - 0x43, 0x34, 0xb0, 0xaa, 0x1a, 0x67, 0x14, 0x98, 0xba, 0x98, 0xba, 0x9a, 0x08, 0x99, 0x62, 0x24, - 0x80, 0xb8, 0x29, 0x25, 0x11, 0xa8, 0xec, 0xbc, 0x0a, 0x31, 0x54, 0x03, 0xca, 0x89, 0x31, 0x45, - 0x02, 0x99, 0xbb, 0xba, 0xac, 0xa9, 0x08, 0x18, 0x47, 0x81, 0x01, 0x9a, 0x88, 0x33, 0x34, 0xc0, - 0xcf, 0x9b, 0x89, 0x52, 0x34, 0xa1, 0x9d, 0x01, 0x32, 0x23, 0x02, 0xda, 0xba, 0xcb, 0x9a, 0x1a, - 0x11, 0x20, 0x30, 0x57, 0xa2, 0xac, 0x19, 0x43, 0x12, 0xca, 0xbe, 0x8a, 0x20, 0x45, 0x03, 0xcb, - 0x18, 0x00, 0x31, 0x23, 0x13, 0xea, 0xbc, 0xba, 0x99, 0x00, 0x03, 0x89, 0x75, 0x14, 0xba, 0xab, - 0x58, 0x23, 0x81, 0xeb, 0xcb, 0x08, 0x41, 0x24, 0x90, 0x9b, 0x80, 0x38, 0x24, 0x42, 0x81, 0xda, - 0xbc, 0x8a, 0x99, 0x18, 0x01, 0x30, 0x77, 0x91, 0xab, 0x9b, 0x44, 0x11, 0x91, 0xbc, 0xbb, 0x18, - 0x54, 0x14, 0xa8, 0x8a, 0x9a, 0x41, 0x33, 0x03, 0x08, 0xfa, 0x9b, 0x9a, 0xaa, 0x1a, 0x04, 0x73, - 0x14, 0xc9, 0xab, 0x29, 0x25, 0x22, 0xb8, 0xae, 0x9a, 0x11, 0x54, 0x02, 0xa9, 0xbb, 0x0a, 0x64, - 0x02, 0x80, 0x00, 0xba, 0xab, 0xab, 0xcc, 0x38, 0x43, 0x25, 0xa9, 0xab, 0x10, 0x18, 0x46, 0x02, - 0xca, 0xad, 0x18, 0x01, 0x64, 0x81, 0xda, 0x9b, 0x40, 0x16, 0x98, 0x18, 0x08, 0xa8, 0x8a, 0xb8, - 0xbd, 0x41, 0x24, 0x90, 0x9a, 0x29, 0xb1, 0x49, 0x35, 0x81, 0xeb, 0x8a, 0x81, 0x19, 0x37, 0xa0, - 0xcd, 0x08, 0x53, 0x92, 0x8a, 0x11, 0x01, 0xc9, 0x89, 0xcc, 0x8b, 0x73, 0x01, 0x8a, 0x08, 0x11, - 0xba, 0x52, 0x22, 0xa0, 0xac, 0x18, 0xb8, 0x78, 0x23, 0xfa, 0x8b, 0x21, 0x34, 0xaa, 0x29, 0x24, - 0x81, 0xcb, 0xba, 0xce, 0x19, 0x25, 0xa0, 0x00, 0x01, 0xa0, 0x8c, 0x44, 0x02, 0xa9, 0x8b, 0x12, - 0xac, 0x50, 0x92, 0xaf, 0x10, 0x31, 0x93, 0x9c, 0x52, 0x13, 0xa1, 0xbc, 0xda, 0xbc, 0x59, 0x13, - 0x19, 0x81, 0x08, 0xd0, 0x3a, 0x26, 0x80, 0xa9, 0x19, 0xa2, 0xad, 0x31, 0xd8, 0x29, 0x02, 0x42, - 0xfa, 0x29, 0x24, 0x12, 0xa8, 0xac, 0xdc, 0x9b, 0x41, 0x22, 0x02, 0x99, 0x00, 0xcc, 0x62, 0x02, - 0xa0, 0x89, 0x21, 0xe9, 0x9a, 0x18, 0x20, 0x12, 0x18, 0xc1, 0x9f, 0x53, 0x22, 0x01, 0xba, 0xcc, - 0xbd, 0x8a, 0x61, 0x23, 0x91, 0x99, 0xb8, 0x2a, 0x27, 0x81, 0x8a, 0x18, 0x82, 0xdc, 0xba, 0x40, - 0x23, 0x00, 0x98, 0xcc, 0x39, 0x36, 0x11, 0x81, 0xcb, 0xdc, 0xab, 0x1b, 0x55, 0x03, 0x98, 0x99, - 0x9a, 0x41, 0x14, 0xa8, 0x08, 0x12, 0xc9, 0xbd, 0x8b, 0x55, 0x81, 0x80, 0x9a, 0x9a, 0x42, 0x14, - 0x11, 0x90, 0xfb, 0xac, 0xab, 0x48, 0x36, 0x01, 0xb9, 0x8a, 0x18, 0x32, 0x02, 0x8a, 0x31, 0x92, - 0xcf, 0xcb, 0x3a, 0x27, 0x00, 0xb9, 0x89, 0x18, 0x32, 0x23, 0x43, 0xe8, 0xbd, 0xbb, 0x9a, 0x72, - 0x16, 0x80, 0xaa, 0x08, 0x10, 0x11, 0x00, 0x18, 0x00, 0xb9, 0xbd, 0xad, 0x71, 0x13, 0xa8, 0xab, - 0x81, 0x00, 0x41, 0x24, 0x13, 0xed, 0xab, 0x8a, 0x19, 0x65, 0x03, 0xb9, 0x9a, 0x10, 0x10, 0x11, - 0x21, 0x80, 0xaa, 0xac, 0xda, 0x0c, 0x56, 0x91, 0xa9, 0x09, 0x80, 0x09, 0x63, 0x23, 0xc8, 0xbd, - 0x9a, 0x99, 0x50, 0x36, 0x80, 0xab, 0x09, 0x00, 0x11, 0x21, 0x03, 0xcb, 0x89, 0x90, 0xbe, 0x51, - 0x24, 0xb8, 0xac, 0x10, 0x98, 0x39, 0x67, 0x00, 0xca, 0x8b, 0x99, 0x19, 0x54, 0x22, 0xa8, 0x8c, - 0x88, 0x00, 0x21, 0x33, 0xc9, 0x8b, 0x20, 0xe9, 0x3a, 0x24, 0x01, 0xeb, 0x0b, 0x01, 0x88, 0x71, - 0x15, 0xa9, 0xbc, 0x99, 0x9a, 0x72, 0x13, 0x02, 0xca, 0x89, 0x08, 0x12, 0x31, 0xa3, 0xae, 0x28, - 0x82, 0x8d, 0x43, 0x90, 0xa0, 0xae, 0x18, 0x81, 0x08, 0x56, 0x91, 0xca, 0x9a, 0xba, 0x39, 0x37, - 0x02, 0x90, 0xaa, 0x88, 0x28, 0x13, 0x12, 0xfb, 0x0a, 0x43, 0xa0, 0x48, 0x02, 0xca, 0xca, 0x9d, - 0x32, 0x81, 0x28, 0x07, 0x9a, 0xba, 0xbb, 0x8e, 0x53, 0x34, 0xa1, 0x98, 0x9a, 0x08, 0x31, 0x91, - 0xda, 0x8b, 0x72, 0x03, 0x19, 0x12, 0xb2, 0xcf, 0xa9, 0x19, 0x15, 0x80, 0x98, 0x88, 0x80, 0xca, - 0xbf, 0x30, 0x54, 0x03, 0x9a, 0x81, 0x0a, 0x00, 0x01, 0xdd, 0x09, 0x18, 0x45, 0x00, 0x11, 0x00, - 0xfa, 0x9b, 0xa8, 0x41, 0x12, 0xb9, 0x9c, 0x21, 0x02, 0xfa, 0x0c, 0x33, 0x44, 0xb0, 0x2a, 0x90, - 0x19, 0x80, 0xf8, 0x8c, 0x10, 0x41, 0x14, 0x11, 0x01, 0xc9, 0xcc, 0x89, 0x9a, 0x44, 0x91, 0xbc, - 0x2a, 0x33, 0x91, 0xbd, 0x58, 0x33, 0x22, 0xda, 0x20, 0xb9, 0x01, 0xb8, 0xbf, 0x29, 0x04, 0x52, - 0x22, 0x32, 0xc0, 0xbb, 0xbe, 0xa9, 0x4a, 0x15, 0xb9, 0x9c, 0x50, 0x01, 0xa8, 0x89, 0x34, 0x22, - 0x03, 0x9e, 0x90, 0x1a, 0xb1, 0xad, 0x00, 0x42, 0x98, 0x63, 0x33, 0x05, 0x99, 0xdb, 0xbb, 0xac, - 0x52, 0x80, 0xaa, 0x18, 0x34, 0xa8, 0xab, 0x62, 0x33, 0x23, 0xb8, 0x9c, 0xb9, 0x9a, 0xcc, 0x38, - 0x32, 0xa3, 0x8f, 0x55, 0x33, 0x82, 0xca, 0xbc, 0xbc, 0x0a, 0x33, 0x88, 0x88, 0x30, 0xa4, 0xad, - 0x48, 0x35, 0x32, 0x81, 0xdb, 0xaa, 0x9a, 0x88, 0x2a, 0x27, 0x91, 0xeb, 0x2a, 0x47, 0x11, 0x90, - 0xb9, 0xdb, 0xab, 0x28, 0x13, 0x21, 0x88, 0x88, 0xdc, 0x29, 0x44, 0x33, 0x81, 0x91, 0xcc, 0xbb, - 0x1a, 0x00, 0x54, 0x02, 0xcb, 0xad, 0x71, 0x33, 0x02, 0xaa, 0xcb, 0xcc, 0x9a, 0x32, 0x33, 0x81, - 0xba, 0xbb, 0x9d, 0x54, 0x34, 0x81, 0x88, 0xa9, 0xea, 0x8b, 0x21, 0x31, 0x32, 0xd8, 0xbd, 0x0b, - 0x57, 0x12, 0x90, 0xa9, 0xca, 0xcb, 0x2a, 0x34, 0x12, 0xa8, 0xcb, 0x9a, 0x49, 0x36, 0x12, 0x98, - 0x98, 0xaa, 0xdc, 0x29, 0x13, 0x22, 0x80, 0xdc, 0xac, 0x61, 0x24, 0x02, 0xa9, 0xba, 0xbc, 0xac, - 0x51, 0x23, 0x81, 0xbb, 0xac, 0x0a, 0x55, 0x22, 0x81, 0x99, 0xa9, 0xb9, 0xad, 0x52, 0x02, 0x81, - 0xb8, 0xcd, 0x29, 0x45, 0x22, 0x91, 0xaa, 0xcb, 0xad, 0x0b, 0x36, 0x01, 0xa8, 0xba, 0x9c, 0x42, - 0x34, 0x12, 0xa8, 0x9a, 0xaa, 0xda, 0x2a, 0x26, 0x00, 0x99, 0xca, 0x8c, 0x53, 0x24, 0x12, 0xa9, - 0xbb, 0xdc, 0xab, 0x58, 0x24, 0x91, 0xaa, 0xac, 0x29, 0x44, 0x23, 0x81, 0xaa, 0x9a, 0xaa, 0xac, - 0x60, 0x13, 0x88, 0xba, 0xac, 0x49, 0x36, 0x14, 0x80, 0xaa, 0xc9, 0xae, 0x8a, 0x62, 0x02, 0x98, - 0xab, 0x8b, 0x51, 0x24, 0x13, 0xa8, 0x99, 0xaa, 0xbb, 0x8a, 0x55, 0x81, 0x99, 0xab, 0x8a, 0x73, - 0x26, 0x01, 0x89, 0x99, 0xdc, 0x9b, 0x19, 0x45, 0x91, 0xa9, 0xab, 0x19, 0x45, 0x23, 0x00, 0x99, - 0xa9, 0xbb, 0x9a, 0x1a, 0x36, 0x91, 0xab, 0xa9, 0x39, 0x77, 0x03, 0x88, 0x01, 0xda, 0xbd, 0x8a, - 0x20, 0x26, 0x98, 0xaa, 0x9a, 0x40, 0x44, 0x11, 0x00, 0x88, 0xbb, 0xab, 0xab, 0x48, 0x25, 0xa8, - 0x99, 0x89, 0x60, 0x36, 0x80, 0x21, 0xa1, 0xcf, 0xbb, 0x89, 0x52, 0x13, 0xa9, 0xbb, 0x09, 0x63, - 0x14, 0x22, 0x81, 0xb8, 0xbd, 0xaa, 0x99, 0x51, 0x04, 0x99, 0x89, 0x08, 0x62, 0x23, 0x21, 0x24, - 0xf9, 0xbd, 0x9b, 0x19, 0x54, 0x81, 0x9a, 0x9a, 0x18, 0x43, 0x43, 0x23, 0x98, 0xcb, 0xdb, 0x9a, - 0x09, 0x44, 0x91, 0x98, 0x08, 0x08, 0x72, 0x22, 0x32, 0x91, 0xee, 0xcb, 0x89, 0x31, 0x14, 0xa0, - 0xa9, 0x9a, 0x21, 0x35, 0x44, 0x02, 0xba, 0xba, 0xad, 0x99, 0x40, 0x13, 0x88, 0x98, 0x88, 0x19, - 0x56, 0x24, 0x02, 0xc0, 0xbf, 0xab, 0x08, 0x34, 0x01, 0xa8, 0xba, 0x19, 0x43, 0x45, 0x24, 0xb0, - 0x9b, 0xca, 0x9b, 0x09, 0x24, 0x11, 0x98, 0x99, 0x11, 0x3a, 0x77, 0x04, 0x08, 0xc9, 0xbd, 0x8a, - 0x20, 0x14, 0x00, 0xb9, 0x8a, 0x12, 0x61, 0x35, 0x82, 0xba, 0xa9, 0xbc, 0x89, 0x18, 0x03, 0x12, - 0xca, 0x30, 0xb2, 0x71, 0x57, 0x80, 0x08, 0xeb, 0xab, 0x08, 0x31, 0x82, 0x80, 0xba, 0x20, 0x81, - 0x67, 0x12, 0x90, 0x9a, 0xb9, 0x9c, 0x98, 0x30, 0x81, 0x80, 0x29, 0x84, 0x2a, 0x77, 0x82, 0x00, - 0xb1, 0xcf, 0x8a, 0x08, 0x32, 0x98, 0x80, 0x19, 0x01, 0x50, 0x26, 0x01, 0x90, 0x9a, 0xbc, 0x9b, - 0x89, 0x04, 0x8a, 0x12, 0x32, 0xa9, 0x75, 0x33, 0x08, 0x43, 0xfa, 0xaf, 0x88, 0x28, 0x82, 0x09, - 0x01, 0x00, 0x19, 0x34, 0x21, 0x23, 0xa0, 0xdb, 0xae, 0x9a, 0x18, 0xb1, 0x3a, 0x25, 0x01, 0x39, - 0x23, 0x36, 0x52, 0x84, 0xee, 0xaa, 0x08, 0x20, 0x91, 0x29, 0x13, 0x91, 0x18, 0x10, 0x55, 0x13, - 0xa8, 0xeb, 0xab, 0x99, 0x11, 0xaa, 0x71, 0x12, 0xa0, 0x00, 0x49, 0x25, 0x34, 0xd0, 0xbe, 0x9a, - 0x80, 0x22, 0xa8, 0x52, 0x12, 0x99, 0x89, 0x38, 0x47, 0x82, 0xba, 0xca, 0x8a, 0x09, 0x81, 0x8b, - 0x54, 0x02, 0xa9, 0x80, 0x72, 0x24, 0x02, 0xfb, 0xac, 0x89, 0x10, 0x82, 0x08, 0x43, 0x92, 0x9a, - 0xa9, 0x73, 0x26, 0xa8, 0x9a, 0xab, 0x08, 0x00, 0xa8, 0x28, 0x35, 0xb1, 0x9a, 0x38, 0x77, 0x12, - 0x98, 0xbd, 0x9c, 0x80, 0x10, 0x01, 0x10, 0x42, 0x90, 0xaa, 0x3a, 0x57, 0x02, 0xa9, 0xac, 0x19, - 0x98, 0x88, 0x88, 0x88, 0x35, 0xb8, 0x19, 0x73, 0x35, 0x10, 0xe9, 0xac, 0x09, 0x98, 0x11, 0x02, - 0x8b, 0x27, 0x88, 0x99, 0x38, 0x27, 0x80, 0xd9, 0x1a, 0x82, 0xab, 0x01, 0xba, 0x1d, 0x25, 0x09, - 0x11, 0x31, 0x14, 0x13, 0xef, 0x88, 0x90, 0x8a, 0x12, 0xb8, 0x4b, 0x26, 0x08, 0xa9, 0x38, 0x34, - 0xa1, 0xae, 0x42, 0xc8, 0x0a, 0xa0, 0xbc, 0x40, 0x14, 0x01, 0x99, 0x30, 0x24, 0xc0, 0x0c, 0x92, - 0xcc, 0x2a, 0x91, 0xbb, 0x71, 0x06, 0x90, 0x9a, 0x20, 0x23, 0xa0, 0x49, 0xa3, 0xbf, 0x18, 0xcb, - 0x8a, 0x73, 0x12, 0xa8, 0x89, 0x40, 0x02, 0x90, 0x10, 0xe9, 0xcb, 0x00, 0x98, 0x8a, 0x57, 0x01, - 0xaa, 0x9a, 0x31, 0x24, 0x01, 0x21, 0xfb, 0x9c, 0x98, 0x9a, 0x20, 0x46, 0x91, 0x9a, 0x89, 0x33, - 0x33, 0x10, 0xa1, 0xdf, 0x9a, 0x08, 0x88, 0x39, 0x47, 0x90, 0xaa, 0x9a, 0x52, 0x24, 0x81, 0xa0, - 0xcd, 0x89, 0x98, 0x89, 0x51, 0x15, 0xa9, 0x8a, 0x18, 0x35, 0x12, 0x90, 0xda, 0xbb, 0x0b, 0x02, - 0x90, 0x70, 0x14, 0xa9, 0xbb, 0x2b, 0x57, 0x22, 0x98, 0xca, 0xac, 0x00, 0x88, 0x80, 0x52, 0x92, - 0xab, 0x89, 0x72, 0x24, 0x01, 0xa9, 0xad, 0xaa, 0x30, 0x92, 0xa9, 0x51, 0x04, 0xba, 0xac, 0x51, - 0x36, 0x82, 0xba, 0xbc, 0x9a, 0x11, 0x91, 0x19, 0x23, 0xc0, 0x9b, 0x32, 0x77, 0x13, 0xa0, 0xbc, - 0x99, 0x89, 0x33, 0xc8, 0x9b, 0x63, 0x92, 0xb9, 0x9a, 0x73, 0x37, 0xa8, 0xab, 0xa9, 0x19, 0x11, - 0xa9, 0x09, 0x01, 0x98, 0x41, 0x63, 0x37, 0x02, 0xcc, 0x99, 0x90, 0x28, 0x92, 0xcc, 0x19, 0x43, - 0x82, 0xba, 0x1b, 0x77, 0x82, 0xaa, 0x8a, 0x89, 0x18, 0x80, 0xbb, 0x80, 0x30, 0x13, 0x43, 0x74, - 0x25, 0xc9, 0x9a, 0x00, 0x88, 0x10, 0xca, 0x9e, 0x20, 0x34, 0x98, 0xa9, 0x58, 0x17, 0xa8, 0x8a, - 0x88, 0x89, 0x88, 0xa8, 0x9c, 0x08, 0x52, 0x21, 0x34, 0x44, 0xa1, 0xad, 0x29, 0x81, 0x99, 0xa9, - 0xdd, 0x1a, 0x43, 0x14, 0x99, 0x8a, 0x53, 0x83, 0xaa, 0x88, 0xab, 0xbc, 0x88, 0xeb, 0x89, 0x30, - 0x25, 0x53, 0x33, 0x02, 0xfb, 0x09, 0x12, 0xa0, 0x9d, 0xba, 0x9d, 0x30, 0x35, 0x02, 0xa8, 0x09, - 0x42, 0x00, 0x11, 0xdc, 0xbb, 0x0c, 0x98, 0x9b, 0x10, 0x30, 0x57, 0x33, 0x03, 0xb9, 0x9c, 0x23, - 0x01, 0xde, 0x9a, 0xaa, 0x19, 0x35, 0x23, 0x03, 0xba, 0x8a, 0x33, 0x56, 0xb0, 0xbc, 0xad, 0x08, - 0x99, 0x10, 0x91, 0x50, 0x36, 0x23, 0x98, 0xaa, 0x30, 0x81, 0xf1, 0x9f, 0x98, 0x89, 0x21, 0x14, - 0x22, 0x82, 0xbc, 0x89, 0x64, 0x83, 0xca, 0xcb, 0x0b, 0x81, 0x09, 0x12, 0x99, 0x64, 0x34, 0x81, - 0x9a, 0x20, 0xa2, 0x89, 0xff, 0x09, 0x88, 0x00, 0x12, 0x22, 0x32, 0xc0, 0xac, 0x38, 0x47, 0xa8, - 0xbb, 0x9d, 0x10, 0x90, 0x10, 0x91, 0x18, 0x45, 0x24, 0x90, 0x1a, 0x13, 0xac, 0xfa, 0x8c, 0x01, - 0x09, 0x10, 0x22, 0x23, 0x22, 0xfa, 0x8a, 0x73, 0x93, 0xbb, 0xbd, 0x09, 0x02, 0x88, 0x11, 0x08, - 0x11, 0x47, 0x13, 0xa8, 0x42, 0xc8, 0xbb, 0xbe, 0x38, 0x81, 0x89, 0x31, 0x34, 0x10, 0x02, 0xaf, - 0x30, 0x27, 0xa9, 0xbd, 0x8b, 0x21, 0x90, 0x08, 0x22, 0x80, 0x48, 0x47, 0x01, 0x18, 0x92, 0xcc, - 0xac, 0x8a, 0x32, 0x98, 0x09, 0x53, 0x12, 0x20, 0xb1, 0x8d, 0x73, 0x92, 0xeb, 0x9c, 0x18, 0x01, - 0x88, 0x08, 0x13, 0x98, 0x72, 0x24, 0x10, 0x10, 0xd9, 0xbd, 0x99, 0x28, 0x12, 0xa8, 0x2a, 0x26, - 0x12, 0x10, 0xa8, 0x39, 0x14, 0xfb, 0xbe, 0x89, 0x11, 0x82, 0x99, 0x40, 0x83, 0x19, 0x56, 0x12, - 0x01, 0xb8, 0xcd, 0xab, 0x88, 0x30, 0x03, 0xca, 0x60, 0x13, 0x11, 0x08, 0x88, 0x81, 0xac, 0xdd, - 0xab, 0x09, 0x33, 0xa0, 0x8a, 0x64, 0x81, 0x21, 0x36, 0x23, 0xb0, 0xad, 0xcd, 0x09, 0x88, 0x31, - 0x91, 0x8c, 0x54, 0x12, 0x90, 0x08, 0x00, 0xdb, 0x99, 0xbc, 0xa9, 0x18, 0x16, 0x9a, 0x18, 0x35, - 0x01, 0x31, 0x36, 0x82, 0xcc, 0xba, 0x9c, 0x80, 0x09, 0x25, 0xba, 0x38, 0x47, 0x01, 0x98, 0x18, - 0xb9, 0x9c, 0xa8, 0x9b, 0xca, 0x48, 0x93, 0x0a, 0x42, 0x37, 0x80, 0x40, 0x23, 0xe9, 0x9a, 0xb9, - 0x8a, 0xa8, 0x4a, 0x84, 0x0a, 0x73, 0x26, 0x98, 0x89, 0x90, 0xac, 0x88, 0x89, 0xa0, 0xab, 0x40, - 0x91, 0x11, 0x72, 0x27, 0x99, 0x21, 0x92, 0x9c, 0xb9, 0x89, 0xa8, 0xeb, 0x48, 0x81, 0x20, 0x57, - 0x82, 0x9a, 0x88, 0xaa, 0x8a, 0x98, 0x00, 0xda, 0x9c, 0x21, 0x22, 0x32, 0x77, 0x90, 0x09, 0x01, - 0xb8, 0x99, 0x89, 0x92, 0xbc, 0x9e, 0x32, 0x11, 0x71, 0x25, 0x98, 0x99, 0xba, 0x9a, 0x88, 0x20, - 0x92, 0xde, 0x8b, 0x43, 0x12, 0x42, 0x14, 0xba, 0x18, 0x81, 0xdb, 0x09, 0x21, 0xd9, 0xeb, 0x0b, - 0x25, 0x11, 0x53, 0x12, 0xc9, 0x9a, 0xba, 0x89, 0x20, 0x22, 0xf9, 0xbd, 0x29, 0x26, 0x01, 0x12, - 0x80, 0x9c, 0x00, 0x98, 0x89, 0x32, 0xa0, 0xcf, 0xdb, 0x40, 0x23, 0x21, 0x23, 0x90, 0xad, 0xb9, - 0x9c, 0x18, 0x23, 0x91, 0xdf, 0x9b, 0x62, 0x13, 0x10, 0x80, 0xa8, 0x8a, 0xa8, 0x88, 0x51, 0x83, - 0xda, 0xcd, 0x8b, 0x54, 0x02, 0x21, 0x81, 0xa9, 0x9a, 0xeb, 0x09, 0x32, 0x81, 0xd9, 0xbd, 0x29, - 0x36, 0x02, 0x01, 0xa9, 0x9a, 0x98, 0x8a, 0x22, 0x27, 0xb8, 0xbd, 0xbc, 0x48, 0x35, 0x21, 0x01, - 0x99, 0xa9, 0xca, 0xab, 0x38, 0x27, 0xb9, 0xdb, 0x9b, 0x62, 0x24, 0x82, 0xa8, 0xaa, 0x80, 0x9a, - 0x20, 0x54, 0x82, 0xcd, 0x9a, 0x8a, 0x52, 0x34, 0x82, 0x90, 0x9a, 0xb9, 0xaa, 0x9b, 0x76, 0xa1, - 0xaa, 0xbb, 0x29, 0x55, 0x14, 0x88, 0xaa, 0x89, 0xa0, 0x08, 0x51, 0x33, 0xea, 0xac, 0x08, 0x08, - 0x52, 0x15, 0x80, 0xa8, 0x89, 0x99, 0xa9, 0x48, 0x17, 0xca, 0x9a, 0x09, 0x30, 0x55, 0x82, 0xa9, - 0xaa, 0x88, 0x00, 0x10, 0x54, 0x91, 0xcd, 0x0a, 0x81, 0x08, 0x64, 0x01, 0x88, 0x99, 0x99, 0x90, - 0x09, 0x55, 0xa0, 0xae, 0x88, 0x00, 0x51, 0x33, 0xb0, 0xba, 0xba, 0x28, 0x02, 0x61, 0x04, 0xe9, - 0xab, 0x20, 0x90, 0x30, 0x27, 0x80, 0x98, 0xb9, 0x18, 0xa8, 0x63, 0x13, 0xfb, 0x8d, 0x80, 0x18, - 0x44, 0x82, 0xa9, 0x9a, 0xaa, 0x41, 0x11, 0x33, 0xb8, 0xcf, 0x0a, 0x02, 0x09, 0x52, 0x22, 0x90, - 0xa9, 0xac, 0x02, 0x49, 0x06, 0x91, 0xbe, 0x0a, 0x80, 0x61, 0x14, 0x90, 0xb9, 0xb9, 0x8a, 0x35, - 0x31, 0x91, 0xdb, 0xad, 0x20, 0x91, 0x20, 0x22, 0x14, 0x88, 0xda, 0x0b, 0x13, 0x54, 0x80, 0xd0, - 0xae, 0x18, 0x08, 0x54, 0x01, 0xa8, 0xaa, 0xba, 0x38, 0x27, 0x82, 0xa9, 0xda, 0x0a, 0x21, 0x08, - 0x10, 0x40, 0x12, 0x98, 0xbe, 0x19, 0x45, 0x02, 0x08, 0xfa, 0x8c, 0x00, 0x38, 0x34, 0x90, 0xa9, - 0xdb, 0x9a, 0x71, 0x23, 0x98, 0xaa, 0xbc, 0x38, 0x01, 0x88, 0x00, 0x53, 0x13, 0xc9, 0xcc, 0x58, - 0x24, 0x98, 0x80, 0xbd, 0x08, 0x88, 0x61, 0x13, 0x99, 0xc9, 0xbb, 0x09, 0x67, 0x81, 0x99, 0xb9, - 0x1a, 0x21, 0x80, 0x99, 0x20, 0x53, 0x91, 0xba, 0x9d, 0x56, 0x81, 0x89, 0xa8, 0x89, 0x99, 0x8a, - 0x55, 0x82, 0x89, 0xcb, 0x9b, 0x78, 0x16, 0xa0, 0xaa, 0x99, 0x20, 0x02, 0xaa, 0x88, 0x40, 0x14, - 0x89, 0xba, 0x79, 0x25, 0xa8, 0x0a, 0x01, 0x98, 0xcc, 0x2a, 0x26, 0x88, 0xaa, 0xab, 0x09, 0x67, - 0x82, 0xba, 0x99, 0x08, 0x12, 0xb0, 0x8a, 0xa9, 0x73, 0x12, 0x98, 0x0b, 0x44, 0x13, 0xae, 0x31, - 0x82, 0xda, 0xac, 0x32, 0x83, 0xba, 0x88, 0xbb, 0x70, 0x37, 0xb0, 0xac, 0x08, 0x00, 0x02, 0xa8, - 0xc9, 0x8b, 0x73, 0x83, 0x99, 0x50, 0x01, 0xb0, 0x2d, 0x16, 0x98, 0xaa, 0x0a, 0x12, 0xb8, 0x0c, - 0x91, 0x1c, 0x57, 0x80, 0xb9, 0x0a, 0x80, 0x10, 0x02, 0xca, 0xbd, 0x2a, 0x37, 0xa1, 0x19, 0x05, - 0x8a, 0xb9, 0x72, 0x83, 0x99, 0xa9, 0x8a, 0x80, 0xba, 0x58, 0xb2, 0x71, 0x85, 0x9b, 0x99, 0x18, - 0x00, 0x42, 0xc1, 0xcc, 0x8b, 0x40, 0x24, 0x88, 0x53, 0xc8, 0x8a, 0x08, 0x27, 0x90, 0x88, 0xba, - 0x89, 0x88, 0xa9, 0x43, 0x31, 0x37, 0xeb, 0x89, 0x00, 0x81, 0x28, 0x84, 0xdb, 0xac, 0x08, 0x43, - 0x03, 0x51, 0x92, 0xaf, 0x18, 0x40, 0x03, 0x08, 0xb8, 0xbc, 0x89, 0x98, 0x29, 0x45, 0x53, 0xc0, - 0xac, 0x18, 0x21, 0x90, 0x32, 0xc0, 0xbe, 0x8a, 0x20, 0x43, 0x23, 0x15, 0xea, 0x8b, 0x28, 0x34, - 0x02, 0x80, 0xea, 0xab, 0x08, 0x80, 0x40, 0x35, 0x82, 0xcd, 0xaa, 0x31, 0x03, 0x18, 0x03, 0xed, - 0x9b, 0x08, 0x32, 0x43, 0x33, 0xb2, 0xcf, 0x89, 0x41, 0x23, 0x10, 0xb0, 0xcd, 0x8a, 0x80, 0x10, - 0x73, 0x12, 0xa9, 0xbd, 0x0a, 0x34, 0x80, 0x11, 0xc1, 0xbd, 0x89, 0x28, 0x33, 0x44, 0x03, 0xd9, - 0xbc, 0x18, 0x34, 0x23, 0x01, 0xfa, 0xab, 0x89, 0x10, 0x31, 0x36, 0x80, 0xda, 0xac, 0x38, 0x14, - 0x00, 0x81, 0xeb, 0x9b, 0x08, 0x31, 0x43, 0x43, 0x81, 0xdc, 0x9b, 0x30, 0x44, 0x13, 0xb0, 0xbd, - 0xaa, 0x18, 0x21, 0x62, 0x04, 0xa8, 0xcc, 0x9a, 0x52, 0x02, 0x00, 0xb8, 0xbc, 0x8a, 0x28, 0x33, - 0x63, 0x33, 0xb0, 0xbf, 0x9a, 0x52, 0x24, 0x82, 0xca, 0xab, 0x89, 0x10, 0x22, 0x54, 0x82, 0xdb, - 0xbb, 0x1a, 0x45, 0x11, 0xa8, 0xbb, 0xba, 0x88, 0x41, 0x33, 0x64, 0x03, 0xda, 0xbb, 0x09, 0x55, - 0x13, 0xb0, 0xbb, 0xab, 0x08, 0x12, 0x43, 0x36, 0xb0, 0xae, 0xaa, 0x20, 0x35, 0x92, 0xbb, 0xab, - 0x8b, 0x08, 0x52, 0x43, 0x45, 0xa1, 0xcb, 0xab, 0x39, 0x57, 0x81, 0x99, 0xaa, 0x99, 0x10, 0x20, - 0x52, 0x14, 0xda, 0xaa, 0x89, 0x30, 0x17, 0xa8, 0x9a, 0x99, 0x98, 0x00, 0x42, 0x53, 0x15, 0xb8, - 0xcb, 0x9b, 0x71, 0x15, 0x98, 0x99, 0x9a, 0x09, 0x01, 0x30, 0x53, 0xa3, 0xbd, 0xa9, 0x89, 0x72, - 0x93, 0xaa, 0xa9, 0x99, 0x08, 0x11, 0x45, 0x53, 0x93, 0xbb, 0xbd, 0x0a, 0x66, 0x01, 0x89, 0xaa, - 0x99, 0x10, 0x08, 0x33, 0x34, 0xe0, 0x9b, 0x9a, 0x1a, 0x36, 0xb0, 0xa9, 0x9a, 0x99, 0x00, 0x50, - 0x35, 0x44, 0xa0, 0xcb, 0xbb, 0x58, 0x26, 0x81, 0xb9, 0xaa, 0x08, 0x80, 0x30, 0x43, 0x14, 0xeb, - 0x99, 0xa9, 0x29, 0x15, 0xa8, 0xb9, 0x9a, 0x89, 0x10, 0x56, 0x33, 0x24, 0xca, 0xac, 0x9b, 0x72, - 0x14, 0x90, 0xba, 0x99, 0x00, 0x18, 0x22, 0x53, 0x92, 0xbc, 0xba, 0xae, 0x21, 0x04, 0x88, 0xb9, - 0xab, 0x89, 0x61, 0x24, 0x35, 0x02, 0xdb, 0xbb, 0x1b, 0x46, 0x13, 0xa9, 0xca, 0x89, 0x81, 0x00, - 0x31, 0x16, 0x90, 0xaa, 0xdc, 0x8b, 0x11, 0x12, 0x80, 0xdb, 0x0a, 0x28, 0x34, 0x54, 0x23, 0xa2, - 0xbe, 0xac, 0x30, 0x35, 0x03, 0xba, 0xbc, 0x18, 0x10, 0x88, 0x54, 0x02, 0xa0, 0xcc, 0xbc, 0x89, - 0x21, 0x24, 0xb0, 0xac, 0x08, 0x21, 0x43, 0x26, 0x23, 0xb1, 0xcf, 0x8a, 0x31, 0x53, 0x82, 0xba, - 0x9c, 0x11, 0x90, 0x29, 0x16, 0x11, 0xc0, 0xbc, 0xac, 0x89, 0x31, 0x06, 0xb9, 0x09, 0x12, 0x00, - 0x43, 0x25, 0x12, 0xf8, 0xac, 0x08, 0x31, 0x35, 0x90, 0xcb, 0x09, 0x02, 0xa9, 0x61, 0x12, 0x00, - 0xe9, 0xbb, 0xcb, 0x19, 0x53, 0x92, 0x9b, 0x20, 0x82, 0x39, 0x46, 0x02, 0x21, 0xec, 0x9b, 0x08, - 0x43, 0x34, 0xb9, 0xab, 0x28, 0xa1, 0x2a, 0x47, 0x80, 0x80, 0xcc, 0xca, 0xab, 0x20, 0x35, 0xa8, - 0x19, 0x22, 0xb9, 0x60, 0x43, 0x10, 0x93, 0xbe, 0x9c, 0x39, 0x34, 0x13, 0xba, 0x9b, 0x21, 0xba, - 0x71, 0x04, 0x88, 0x80, 0xbd, 0xbe, 0x0b, 0x21, 0x23, 0x99, 0x53, 0x81, 0x8c, 0x53, 0x02, 0x20, - 0xb2, 0xcf, 0x8b, 0x32, 0x14, 0x02, 0xba, 0x89, 0x02, 0x09, 0x45, 0x90, 0x09, 0xa0, 0xef, 0x9c, - 0x18, 0x18, 0x12, 0x20, 0x23, 0xc9, 0x2a, 0x26, 0x10, 0x12, 0xd9, 0xce, 0x19, 0x14, 0x01, 0x81, - 0xa9, 0x10, 0xa0, 0x30, 0x05, 0x99, 0x18, 0xe8, 0xcf, 0x89, 0x81, 0x39, 0x23, 0x22, 0x92, 0xbd, - 0x40, 0x12, 0x33, 0x11, 0xfd, 0x9c, 0x20, 0x03, 0x20, 0x92, 0x0b, 0x01, 0xa9, 0x41, 0x01, 0x88, - 0x31, 0xff, 0x9e, 0x08, 0x98, 0x40, 0x22, 0x22, 0xb9, 0x9c, 0x21, 0x33, 0x24, 0xb2, 0xff, 0x09, - 0x11, 0x81, 0x21, 0x90, 0x18, 0x91, 0xaa, 0x11, 0x11, 0x21, 0xc4, 0xff, 0x8a, 0x90, 0x89, 0x53, - 0x22, 0x82, 0xba, 0x9b, 0x42, 0x34, 0x12, 0xfa, 0xac, 0x18, 0x12, 0x10, 0x13, 0x88, 0x12, 0xc0, - 0x9c, 0x31, 0x02, 0x22, 0xfa, 0xdf, 0x89, 0xa0, 0x28, 0x25, 0x13, 0xa0, 0xbb, 0x1b, 0x45, 0x22, - 0x80, 0xcd, 0x9b, 0x30, 0x02, 0x31, 0x02, 0x10, 0x02, 0xdd, 0x0a, 0x33, 0x11, 0x82, 0xef, 0xbb, - 0x89, 0x88, 0x52, 0x44, 0x01, 0xa9, 0xac, 0x38, 0x25, 0x11, 0xa8, 0xcd, 0x8a, 0x31, 0x11, 0x12, - 0x12, 0x11, 0xd0, 0xac, 0x39, 0x23, 0x21, 0xc1, 0xff, 0x9a, 0x88, 0x01, 0x32, 0x35, 0x91, 0xdb, - 0x8a, 0x42, 0x13, 0x01, 0xd9, 0xbc, 0x1a, 0x33, 0x12, 0x20, 0x23, 0x11, 0xdc, 0x9b, 0x21, 0x23, - 0x22, 0xf8, 0xef, 0x89, 0x00, 0x01, 0x32, 0x14, 0xa8, 0xad, 0x18, 0x33, 0x13, 0x90, 0xfb, 0xac, - 0x20, 0x23, 0x01, 0x30, 0x12, 0xa0, 0xad, 0x8a, 0x31, 0x21, 0x23, 0xff, 0x9e, 0x08, 0x00, 0x01, - 0x43, 0x03, 0xda, 0x8a, 0x20, 0x33, 0x82, 0xa9, 0xcf, 0x8a, 0x42, 0x12, 0x18, 0x21, 0x01, 0xaa, - 0x99, 0xab, 0x21, 0x32, 0xb4, 0xff, 0x8f, 0x00, 0x00, 0x10, 0x33, 0x91, 0xbc, 0x08, 0x22, 0x33, - 0x90, 0xfa, 0xae, 0x28, 0x33, 0x01, 0x01, 0x41, 0x98, 0x08, 0xa9, 0x9c, 0x18, 0x22, 0xf8, 0xdf, - 0x08, 0x00, 0x10, 0x21, 0x24, 0xc8, 0x8a, 0x10, 0x11, 0x14, 0xa9, 0xdd, 0x8a, 0x41, 0x13, 0x11, - 0x08, 0x12, 0x89, 0x02, 0xdc, 0x8a, 0x01, 0x82, 0xef, 0x8a, 0x08, 0x00, 0x22, 0x41, 0x04, 0xab, - 0x09, 0x01, 0x52, 0x82, 0xcc, 0xbd, 0x18, 0x44, 0x12, 0x81, 0x19, 0x81, 0x38, 0xb3, 0xce, 0x09, - 0x08, 0xc1, 0xbd, 0x89, 0x80, 0x30, 0x25, 0x31, 0x92, 0x8d, 0x08, 0x08, 0x44, 0xb8, 0xce, 0x8a, - 0x31, 0x26, 0x21, 0x90, 0x09, 0x11, 0x42, 0xd9, 0xac, 0x88, 0x00, 0xb9, 0xbb, 0x9b, 0x98, 0x73, - 0x15, 0x21, 0xb0, 0x09, 0xa8, 0x48, 0x04, 0xfb, 0x9d, 0x00, 0x62, 0x12, 0x01, 0xb8, 0x28, 0x32, - 0x83, 0xde, 0x89, 0x89, 0x88, 0x89, 0xb8, 0x0a, 0xaa, 0x66, 0x81, 0x21, 0xa8, 0x98, 0x9b, 0x44, - 0xa1, 0xcf, 0x19, 0x10, 0x35, 0x11, 0x82, 0xac, 0x41, 0x23, 0xd8, 0xab, 0x99, 0x8a, 0x88, 0x12, - 0xbb, 0xc8, 0x1e, 0x16, 0x80, 0x12, 0x99, 0xaa, 0x49, 0x04, 0xfb, 0x9b, 0x10, 0x62, 0x15, 0x10, - 0xa8, 0x8b, 0x53, 0x81, 0xba, 0x9a, 0xba, 0x8a, 0x28, 0x93, 0x1b, 0xfc, 0x58, 0x82, 0x18, 0x82, - 0xbc, 0x09, 0x34, 0xa0, 0xbf, 0x0b, 0x21, 0x57, 0x02, 0x00, 0xab, 0x19, 0x16, 0xa8, 0x8a, 0xb8, - 0xab, 0x00, 0x31, 0x91, 0x90, 0xbf, 0x33, 0x11, 0x21, 0xf8, 0x9d, 0x21, 0x82, 0xa9, 0xeb, 0x0a, - 0x72, 0x35, 0x00, 0x98, 0xaa, 0x40, 0x93, 0xab, 0x98, 0xdc, 0x08, 0x80, 0x20, 0x21, 0xd1, 0x8a, - 0x30, 0x04, 0x99, 0xde, 0x19, 0x23, 0x98, 0x98, 0xbf, 0x18, 0x56, 0x03, 0x80, 0x99, 0x98, 0x31, - 0xc0, 0x8a, 0xa8, 0x9d, 0x01, 0x8a, 0x33, 0x15, 0xda, 0x8a, 0x34, 0x90, 0xdb, 0x9d, 0x31, 0x81, - 0x28, 0xe0, 0xac, 0x50, 0x35, 0x01, 0x98, 0x98, 0x89, 0x13, 0xcb, 0x99, 0xb9, 0x3a, 0xc3, 0x2b, - 0x27, 0x92, 0xcb, 0x39, 0x05, 0xb9, 0xbd, 0x0a, 0x33, 0x80, 0x32, 0xfd, 0x8a, 0x63, 0x24, 0x80, - 0x88, 0x99, 0x19, 0x91, 0xba, 0xaa, 0x99, 0x32, 0xdb, 0x72, 0x13, 0xb0, 0xad, 0x32, 0x91, 0xdc, - 0x9c, 0x08, 0x22, 0x10, 0xa2, 0xaf, 0x38, 0x56, 0x02, 0x08, 0xa8, 0x89, 0x88, 0x80, 0xca, 0x88, - 0x08, 0x98, 0x3a, 0x37, 0x13, 0xfa, 0x1a, 0x11, 0xb8, 0xbf, 0x89, 0x20, 0x13, 0x81, 0xca, 0x0b, - 0x72, 0x36, 0x01, 0x80, 0xa9, 0x99, 0x88, 0xb0, 0x9d, 0x11, 0x98, 0x09, 0x53, 0x32, 0x94, 0x9f, - 0x01, 0x01, 0xec, 0x9b, 0x98, 0x41, 0x12, 0xa9, 0x89, 0x80, 0x73, 0x27, 0x10, 0x98, 0x99, 0x89, - 0x89, 0xb8, 0x2a, 0x93, 0x9c, 0x32, 0x13, 0x46, 0xc0, 0x0a, 0x10, 0xd9, 0xbe, 0x9b, 0x09, 0x54, - 0xa1, 0x89, 0x11, 0x09, 0x57, 0x11, 0x00, 0x99, 0x99, 0x98, 0x9a, 0xaa, 0x42, 0xa8, 0x39, 0x15, - 0x18, 0x06, 0x9b, 0x08, 0x01, 0xed, 0xbc, 0x9b, 0x40, 0x14, 0xa9, 0x20, 0x92, 0x60, 0x16, 0x10, - 0x88, 0x99, 0x08, 0xb8, 0x9d, 0x19, 0x83, 0x8a, 0x44, 0x92, 0x40, 0xb1, 0x0b, 0x89, 0xa0, 0xef, - 0xdb, 0x0a, 0x42, 0x91, 0x89, 0x23, 0x88, 0x65, 0x02, 0x80, 0x98, 0x09, 0x01, 0xec, 0x89, 0x11, - 0x88, 0x28, 0x24, 0x88, 0x23, 0xca, 0x08, 0x9a, 0xd0, 0xce, 0xae, 0x29, 0x14, 0xa8, 0x10, 0x02, - 0x30, 0x37, 0x90, 0x80, 0x89, 0x20, 0xb2, 0xdf, 0x18, 0x81, 0x88, 0x22, 0x00, 0x30, 0x84, 0x9b, - 0xa0, 0x1a, 0xf9, 0xcf, 0x9c, 0x41, 0x81, 0x89, 0x11, 0x11, 0x51, 0x14, 0x99, 0x88, 0x28, 0x12, - 0xf9, 0x8f, 0x11, 0x88, 0x20, 0x01, 0x88, 0x18, 0x92, 0x8c, 0x00, 0x21, 0xfc, 0xcd, 0x0a, 0x23, - 0x90, 0x10, 0x02, 0x02, 0x73, 0x93, 0x8b, 0x10, 0x32, 0x82, 0xff, 0x1a, 0x01, 0x18, 0x12, 0x81, - 0x99, 0x20, 0xd0, 0x19, 0x21, 0x93, 0xff, 0xcb, 0x28, 0x02, 0x08, 0x21, 0x11, 0x80, 0x45, 0xb8, - 0x19, 0x21, 0x34, 0xe0, 0xad, 0x29, 0x01, 0x20, 0x13, 0xa0, 0x9b, 0x13, 0x9e, 0x21, 0x32, 0xf1, - 0xce, 0x9c, 0x31, 0x80, 0x20, 0x11, 0x01, 0x38, 0x07, 0xab, 0x21, 0x21, 0x03, 0xfb, 0x9d, 0x20, - 0x10, 0x22, 0x82, 0xba, 0x1a, 0xb2, 0x2c, 0x17, 0x81, 0xfa, 0xbd, 0x0a, 0x22, 0x00, 0x21, 0x01, - 0x80, 0x72, 0xa3, 0x8a, 0x22, 0x21, 0x91, 0xde, 0x9a, 0x22, 0x12, 0x43, 0xa0, 0xad, 0x10, 0xa8, - 0x73, 0x01, 0xa8, 0xce, 0xcb, 0x19, 0x22, 0x10, 0x12, 0x01, 0x89, 0x36, 0xa8, 0x38, 0x02, 0x21, - 0xb2, 0xff, 0x09, 0x21, 0x21, 0x13, 0xda, 0x9b, 0x01, 0x28, 0x27, 0x98, 0xca, 0xdb, 0x9d, 0x28, - 0x02, 0x20, 0x12, 0x98, 0x48, 0x14, 0x89, 0x03, 0xa8, 0x41, 0xc2, 0xbe, 0x19, 0x34, 0x42, 0xa1, - 0xcc, 0x09, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0x28, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x78, 0x77, 0x77, 0x37, 0xc9, 0x8b, 0xa4, 0x8e, 0x61, 0xc3, 0x8e, 0x20, - 0x98, 0x88, 0x43, 0x9a, 0xd1, 0x48, 0x80, 0x10, 0x11, 0x81, 0x89, 0xa0, 0x88, 0x8a, 0xa1, 0x62, - 0xfa, 0xab, 0x2a, 0xa1, 0x0e, 0x02, 0x62, 0x02, 0x12, 0x30, 0x01, 0x00, 0xc0, 0x0b, 0xc0, 0xbc, - 0xdb, 0x68, 0x84, 0xbc, 0x19, 0x00, 0x80, 0x30, 0xb2, 0x1b, 0x84, 0xaa, 0x18, 0x14, 0x71, 0xb1, - 0x2c, 0x16, 0xa9, 0x89, 0x00, 0x88, 0x9a, 0x88, 0xab, 0x0d, 0x34, 0xf9, 0x2a, 0x17, 0xcb, 0x18, - 0xb8, 0x40, 0x91, 0x49, 0x24, 0x90, 0x19, 0x03, 0xba, 0xcb, 0x30, 0x24, 0x98, 0x08, 0x81, 0x40, - 0xb3, 0xbe, 0xa9, 0x19, 0x80, 0x90, 0x51, 0xb9, 0xff, 0x0c, 0x23, 0x11, 0x18, 0x35, 0x03, 0xa9, - 0x08, 0x90, 0x20, 0xfb, 0xa9, 0x2b, 0x95, 0x3b, 0x15, 0xeb, 0x9a, 0x88, 0x80, 0x8a, 0x12, 0x50, - 0x93, 0x1d, 0x15, 0x88, 0x98, 0x28, 0x82, 0x30, 0x18, 0xf2, 0x9f, 0x20, 0x81, 0xbc, 0x1b, 0x12, - 0x00, 0x29, 0x77, 0xa1, 0xad, 0x19, 0x01, 0x00, 0x90, 0x1a, 0x37, 0x80, 0x20, 0x92, 0x9b, 0xea, - 0x9b, 0x41, 0x82, 0x00, 0x01, 0x18, 0x03, 0xee, 0x09, 0x01, 0x99, 0x52, 0x88, 0x21, 0x80, 0x99, - 0x90, 0xac, 0x29, 0x47, 0x90, 0x31, 0x34, 0xb8, 0xae, 0xba, 0x2a, 0xb1, 0x9d, 0x53, 0x01, 0x00, - 0xd9, 0x0a, 0x02, 0x01, 0x19, 0xb1, 0x1d, 0x17, 0x98, 0xba, 0x3a, 0x25, 0xb2, 0x9f, 0x32, 0xb8, - 0xcb, 0x29, 0x04, 0x8b, 0x21, 0x13, 0x40, 0x37, 0x01, 0xda, 0x9c, 0x21, 0xa0, 0xdb, 0xab, 0x28, - 0x13, 0x61, 0x26, 0x98, 0x88, 0x00, 0xb8, 0xaa, 0xac, 0x20, 0x81, 0x58, 0x27, 0xc9, 0x28, 0x93, - 0xbc, 0x18, 0x21, 0x01, 0x62, 0x83, 0x40, 0x82, 0xca, 0x0b, 0x13, 0xfb, 0x0a, 0x08, 0x91, 0xbf, - 0x10, 0x80, 0x91, 0x1a, 0x36, 0x81, 0x18, 0x22, 0x21, 0xa0, 0xed, 0xac, 0x22, 0xb1, 0x2a, 0x35, - 0xb8, 0xbd, 0xaa, 0x00, 0xaa, 0x02, 0x8b, 0x42, 0x67, 0x01, 0x90, 0x9a, 0x10, 0x46, 0x03, 0x10, - 0x98, 0xbb, 0xad, 0xa9, 0xae, 0x09, 0xa0, 0xac, 0x73, 0x93, 0x89, 0x32, 0x90, 0x89, 0x34, 0x91, - 0x89, 0x24, 0xfc, 0x0c, 0x32, 0x03, 0xb9, 0x20, 0x25, 0xa1, 0x10, 0xa0, 0xac, 0x9a, 0x9c, 0x28, - 0x22, 0x25, 0xb9, 0x99, 0xdc, 0xac, 0x51, 0xb0, 0x8c, 0x08, 0x71, 0x23, 0x82, 0x00, 0xc0, 0x8c, - 0x08, 0xb8, 0x1a, 0xa0, 0x61, 0x91, 0x09, 0x91, 0xdc, 0xab, 0x63, 0x02, 0xd9, 0x8a, 0x02, 0xab, - 0x38, 0x36, 0x81, 0x0a, 0x54, 0x01, 0x20, 0x94, 0x0a, 0x26, 0xfb, 0x8b, 0x98, 0x99, 0x21, 0x01, - 0x81, 0xda, 0xbc, 0x19, 0x34, 0x02, 0x11, 0x52, 0x13, 0x98, 0x51, 0x34, 0xe1, 0xae, 0x31, 0x82, - 0x0a, 0x43, 0xa9, 0x9a, 0x9a, 0x08, 0x10, 0xea, 0x9c, 0x8a, 0x44, 0x43, 0x23, 0xb9, 0x9d, 0x80, - 0x9a, 0x21, 0x90, 0xad, 0x18, 0x32, 0x15, 0x98, 0xaa, 0x41, 0xfb, 0x8c, 0x90, 0x89, 0x53, 0x33, - 0x81, 0xab, 0x12, 0xeb, 0xca, 0x1a, 0x12, 0x12, 0xea, 0x8a, 0x72, 0x92, 0x8a, 0x44, 0x22, 0x20, - 0xd8, 0xac, 0xbb, 0x9a, 0x73, 0x92, 0x18, 0x02, 0x81, 0xcb, 0xa9, 0xaa, 0x09, 0x51, 0x12, 0xb0, - 0x78, 0x06, 0x08, 0x00, 0x90, 0x18, 0x03, 0x42, 0x91, 0x60, 0x24, 0x81, 0xdc, 0x9b, 0x21, 0xc9, - 0x99, 0x88, 0xd9, 0x09, 0x11, 0x40, 0x15, 0xd9, 0xbb, 0x18, 0x81, 0x51, 0x03, 0xbc, 0x38, 0x23, - 0x01, 0xa2, 0xbf, 0x19, 0xa0, 0xbd, 0xac, 0x71, 0x13, 0x89, 0x31, 0x33, 0x33, 0x12, 0xf9, 0xbe, - 0xaa, 0xbb, 0x1b, 0x53, 0x53, 0x13, 0x91, 0xab, 0x22, 0xa9, 0x9a, 0x98, 0x78, 0x46, 0x01, 0x9a, - 0x8a, 0xcc, 0x8b, 0x09, 0x80, 0x89, 0x80, 0x90, 0x58, 0x16, 0x42, 0x83, 0x18, 0x45, 0x03, 0x98, - 0x20, 0x20, 0xc3, 0x9d, 0x11, 0x88, 0xcc, 0xca, 0x9a, 0xa8, 0xcc, 0xac, 0x99, 0x89, 0x10, 0x25, - 0x12, 0x62, 0x24, 0x90, 0x09, 0x22, 0xb8, 0xbd, 0x10, 0x11, 0x08, 0x91, 0x18, 0xc0, 0xcf, 0x09, - 0x20, 0x53, 0x13, 0x08, 0xd8, 0x9c, 0x88, 0x20, 0xfa, 0xbc, 0x8a, 0x90, 0x40, 0x45, 0x34, 0x88, - 0x08, 0x01, 0x00, 0x8a, 0xa8, 0xab, 0xfc, 0x8c, 0x31, 0x03, 0x09, 0xa1, 0xad, 0x88, 0x21, 0x11, - 0x03, 0x1a, 0x77, 0x22, 0x02, 0x89, 0x99, 0xa9, 0x08, 0x44, 0x12, 0xc9, 0x38, 0x31, 0xd1, 0xbe, - 0x8a, 0xda, 0x99, 0xb9, 0xaf, 0x8a, 0x21, 0x32, 0x35, 0xa1, 0x9c, 0x19, 0x91, 0x51, 0x36, 0x91, - 0xaa, 0x38, 0x36, 0xc8, 0xad, 0x38, 0x22, 0x23, 0xb8, 0xcc, 0x9c, 0x98, 0xab, 0x89, 0x20, 0x53, - 0x11, 0x81, 0x80, 0xba, 0x60, 0x13, 0xba, 0x2a, 0x77, 0x12, 0x88, 0xab, 0xca, 0x19, 0x22, 0x22, - 0xb8, 0xcc, 0x58, 0x14, 0x99, 0x0a, 0x90, 0x9a, 0x88, 0xac, 0x18, 0x36, 0x33, 0x44, 0x54, 0x34, - 0x01, 0xa9, 0xbc, 0xab, 0xe9, 0x8a, 0x22, 0x81, 0xab, 0xa0, 0xcc, 0x09, 0x90, 0x1a, 0x83, 0xef, - 0xab, 0x20, 0x15, 0x10, 0x21, 0x02, 0x11, 0x62, 0x14, 0xb9, 0x8c, 0x63, 0x02, 0xa8, 0x8a, 0x31, - 0xe9, 0xbb, 0xbb, 0xcd, 0x09, 0x52, 0x02, 0xa9, 0xa9, 0x28, 0x35, 0x01, 0xca, 0x8b, 0x45, 0x03, - 0xb9, 0x1a, 0x81, 0x32, 0x08, 0x66, 0x12, 0xb8, 0x8b, 0xb0, 0xad, 0x19, 0x01, 0xea, 0x08, 0x98, - 0x31, 0x21, 0x14, 0x43, 0x11, 0x84, 0x9c, 0x61, 0x37, 0x12, 0x91, 0xeb, 0xcc, 0x8a, 0x99, 0x88, - 0x52, 0x03, 0x11, 0x90, 0x09, 0x02, 0xfd, 0x9a, 0x08, 0x99, 0x28, 0x36, 0x02, 0x99, 0xaa, 0x28, - 0x27, 0x81, 0x08, 0x81, 0xba, 0x51, 0x84, 0x89, 0x01, 0xda, 0x9b, 0x08, 0xfa, 0x9a, 0x81, 0xac, - 0x40, 0x83, 0xdc, 0x89, 0x10, 0x11, 0x45, 0x12, 0x88, 0x80, 0x21, 0x36, 0x81, 0xab, 0x08, 0x00, - 0xa0, 0x00, 0xfb, 0xbf, 0x2a, 0x24, 0x81, 0x98, 0x9b, 0x30, 0x47, 0xa0, 0xaa, 0x9a, 0x00, 0x32, - 0x12, 0x55, 0x02, 0xca, 0x8a, 0xa0, 0xbd, 0x30, 0x05, 0xaa, 0x99, 0x08, 0x21, 0x04, 0xce, 0x8a, - 0xa9, 0x8b, 0x18, 0x34, 0x53, 0x25, 0x12, 0x00, 0x11, 0x24, 0xdb, 0x8a, 0x98, 0xa9, 0x19, 0xf8, - 0xad, 0x28, 0x53, 0x22, 0x98, 0x89, 0x99, 0xf8, 0xae, 0x98, 0x08, 0x81, 0x11, 0x28, 0x35, 0x98, - 0x00, 0x32, 0x83, 0x8b, 0x77, 0x14, 0x10, 0x10, 0x90, 0x9a, 0xc8, 0x8b, 0xb9, 0xca, 0x9b, 0x01, - 0x89, 0x80, 0xec, 0xbc, 0x09, 0x55, 0x22, 0x90, 0x58, 0x24, 0x08, 0xb8, 0xab, 0xaa, 0x31, 0xa9, - 0xfa, 0xad, 0x88, 0x30, 0x12, 0x00, 0x9b, 0x21, 0x55, 0x12, 0xa0, 0xcf, 0x89, 0x10, 0x81, 0x42, - 0x34, 0x82, 0x08, 0x02, 0xba, 0xee, 0xab, 0x08, 0x88, 0x73, 0x24, 0x02, 0x89, 0xba, 0x9c, 0xba, - 0x8c, 0x98, 0xcc, 0x0a, 0x10, 0x01, 0x53, 0x44, 0x12, 0x00, 0x90, 0x09, 0x36, 0x90, 0x30, 0x33, - 0x81, 0xcb, 0x30, 0xc9, 0x29, 0x25, 0xd1, 0x9d, 0x99, 0x89, 0xa8, 0xaa, 0xdc, 0xbc, 0x89, 0x00, - 0x41, 0x55, 0x92, 0x0a, 0x42, 0x33, 0x91, 0x9b, 0xab, 0x81, 0xb9, 0x8b, 0xf9, 0x9d, 0x41, 0x35, - 0xa0, 0xab, 0x88, 0xec, 0xac, 0x10, 0x22, 0xa0, 0x40, 0x45, 0x23, 0x00, 0x10, 0xc1, 0xbf, 0x8a, - 0x11, 0x81, 0x8a, 0x43, 0xb2, 0xdf, 0x89, 0x08, 0x11, 0x33, 0x25, 0x98, 0xa0, 0x8a, 0xb8, 0xbc, - 0x18, 0x33, 0x54, 0x24, 0x00, 0xca, 0x8b, 0x41, 0x25, 0x92, 0x39, 0x27, 0x80, 0x20, 0xc0, 0xbf, - 0x9b, 0x08, 0x98, 0x89, 0xaa, 0x3a, 0x37, 0x81, 0xb9, 0x0b, 0xa1, 0x2a, 0x43, 0x25, 0x32, 0x33, - 0x92, 0x19, 0x14, 0x00, 0xd8, 0xce, 0x9a, 0x10, 0x90, 0x0a, 0x37, 0xf8, 0x8a, 0x21, 0xa9, 0x8a, - 0x99, 0x33, 0xa9, 0x71, 0x25, 0x12, 0x90, 0xaa, 0x41, 0xa1, 0xbf, 0xa9, 0xab, 0x20, 0x34, 0xa8, - 0x60, 0x91, 0x99, 0xcd, 0x19, 0x12, 0x80, 0x99, 0x73, 0x27, 0xa8, 0x19, 0x33, 0x90, 0x9c, 0x88, - 0x12, 0xb9, 0x8a, 0x54, 0x33, 0x45, 0x82, 0xeb, 0xac, 0x8b, 0x12, 0x98, 0x88, 0x9a, 0x89, 0x00, - 0x20, 0x05, 0xbd, 0x9a, 0x98, 0x48, 0x57, 0x11, 0x99, 0x20, 0x53, 0x33, 0x03, 0xda, 0xcb, 0x89, - 0xca, 0x08, 0x90, 0xac, 0x08, 0x01, 0x12, 0xc9, 0x9c, 0x18, 0x08, 0x65, 0x25, 0x90, 0x09, 0x90, - 0xab, 0x40, 0x92, 0x8b, 0xfb, 0x9c, 0x89, 0x22, 0x42, 0x03, 0x89, 0xcb, 0x18, 0x08, 0x23, 0x12, - 0xa8, 0x75, 0x17, 0x00, 0x10, 0x98, 0xbb, 0xc9, 0x9b, 0x0a, 0x73, 0x12, 0x54, 0x81, 0xa9, 0x89, - 0x89, 0xa0, 0x9b, 0xd9, 0x1a, 0xb1, 0xbf, 0xaa, 0x19, 0x90, 0x09, 0x74, 0x82, 0x09, 0x10, 0x88, - 0x21, 0x73, 0x46, 0x12, 0x90, 0xab, 0x08, 0xb9, 0xad, 0xaa, 0x10, 0x08, 0x51, 0x14, 0xcb, 0x08, - 0xa8, 0x89, 0x42, 0xfc, 0x9c, 0x08, 0xa8, 0x09, 0x42, 0x23, 0x63, 0x34, 0x82, 0x9a, 0x90, 0x08, - 0xcb, 0xa0, 0xef, 0x88, 0x08, 0x98, 0x41, 0x25, 0x01, 0x98, 0x89, 0x20, 0x92, 0x3a, 0x33, 0x46, - 0x32, 0x81, 0xab, 0xd9, 0xbf, 0x0a, 0x83, 0xbb, 0x8a, 0x32, 0x82, 0xab, 0x18, 0x98, 0xbf, 0xbd, - 0x40, 0x25, 0x11, 0x11, 0x90, 0x8a, 0xb8, 0xde, 0x0a, 0x42, 0x84, 0xaa, 0x73, 0x23, 0x80, 0x28, - 0x90, 0x88, 0xfb, 0x9c, 0x18, 0x98, 0x49, 0x05, 0xba, 0x0a, 0xc9, 0x9a, 0x00, 0xda, 0xaa, 0x30, - 0xa1, 0x71, 0x37, 0x22, 0x80, 0x99, 0x88, 0xa0, 0x9b, 0xaa, 0xdb, 0xbe, 0x19, 0x53, 0x35, 0x23, - 0x00, 0xb9, 0x0a, 0x14, 0xeb, 0xaa, 0x10, 0xa0, 0x09, 0x53, 0x13, 0x30, 0x27, 0xc9, 0xac, 0x31, - 0x82, 0xeb, 0x89, 0x00, 0xb9, 0x9c, 0x08, 0x01, 0x99, 0x80, 0x0b, 0x56, 0x43, 0x91, 0x88, 0x21, - 0x12, 0xda, 0x2a, 0x33, 0xd0, 0x59, 0x24, 0xa9, 0xcb, 0x38, 0x82, 0xce, 0x89, 0x19, 0x81, 0xbc, - 0x58, 0x15, 0x99, 0x00, 0xb8, 0x9a, 0x9a, 0xde, 0xab, 0x10, 0x32, 0x22, 0x32, 0x37, 0x22, 0x42, - 0xa8, 0x3a, 0x25, 0xa8, 0xac, 0x38, 0x47, 0x91, 0x89, 0x89, 0x08, 0xfb, 0xbc, 0x18, 0x81, 0x18, - 0x14, 0x98, 0x51, 0x35, 0x14, 0x01, 0xd9, 0xaa, 0xba, 0xcd, 0x8a, 0x22, 0x01, 0x89, 0x81, 0x09, - 0x33, 0x92, 0x1c, 0x25, 0x92, 0x08, 0x80, 0x8b, 0x43, 0xa8, 0x29, 0x02, 0x66, 0x34, 0xc0, 0x9b, - 0x18, 0x82, 0x30, 0x05, 0xba, 0xbf, 0x63, 0x80, 0xcc, 0x8a, 0x00, 0x10, 0x12, 0xca, 0xbd, 0xbc, - 0x2a, 0x23, 0x02, 0x10, 0x43, 0x44, 0x44, 0x22, 0x32, 0xa3, 0xce, 0xba, 0x18, 0x00, 0x44, 0x80, - 0x00, 0x20, 0xa2, 0xac, 0xcb, 0xdb, 0x8a, 0xa8, 0x30, 0x36, 0x12, 0x42, 0xd0, 0xbe, 0x08, 0x20, - 0x81, 0xaa, 0x50, 0x81, 0x08, 0x52, 0x02, 0x9a, 0x10, 0xcc, 0x9b, 0xc8, 0x8c, 0x99, 0xc8, 0x48, - 0x24, 0x11, 0x54, 0x23, 0x01, 0x80, 0x31, 0x26, 0xc9, 0xbd, 0xab, 0x08, 0xa0, 0xbc, 0x50, 0x24, - 0xa0, 0xcb, 0xab, 0x28, 0x35, 0x81, 0x19, 0x13, 0x99, 0x29, 0x57, 0xfa, 0xbb, 0x18, 0x31, 0x43, - 0x04, 0xa8, 0x19, 0x22, 0x13, 0x01, 0x52, 0xb0, 0xae, 0x18, 0x23, 0x01, 0xd8, 0xcd, 0x9a, 0x00, - 0x00, 0xb8, 0xbd, 0x8a, 0x18, 0x57, 0x13, 0xa8, 0x8a, 0xa9, 0x18, 0x44, 0x23, 0x81, 0xca, 0xbc, - 0xab, 0x19, 0x34, 0xc8, 0xac, 0x51, 0x23, 0xa0, 0xac, 0x28, 0x45, 0x32, 0x81, 0x9a, 0x8a, 0x91, - 0xee, 0xab, 0x10, 0x11, 0x20, 0x46, 0x22, 0x00, 0xb9, 0xbf, 0xab, 0x29, 0x01, 0xda, 0xab, 0x28, - 0x55, 0x22, 0x88, 0x80, 0x88, 0x21, 0x31, 0x14, 0xc8, 0xaf, 0x28, 0x24, 0x32, 0x82, 0xeb, 0xaa, - 0x38, 0x25, 0x90, 0x9a, 0xbb, 0xcc, 0x28, 0x32, 0x16, 0xa8, 0xba, 0x09, 0xca, 0x09, 0xa9, 0x8c, - 0x64, 0x02, 0x99, 0x19, 0x34, 0x12, 0xfb, 0x1a, 0x43, 0x81, 0x00, 0xda, 0x8a, 0x08, 0x81, 0x9a, - 0x88, 0xcb, 0x1b, 0x67, 0x81, 0x00, 0x80, 0x21, 0x73, 0x81, 0xbb, 0x9d, 0x10, 0x01, 0x00, 0x98, - 0xcd, 0xbb, 0x89, 0xda, 0xac, 0x40, 0x02, 0x40, 0x44, 0x23, 0x40, 0x82, 0xcc, 0x19, 0x13, 0x81, - 0x90, 0xbf, 0xbb, 0x28, 0x22, 0x23, 0x00, 0x64, 0x24, 0x01, 0x80, 0x88, 0xe9, 0xbc, 0x9b, 0x10, - 0xa9, 0xbb, 0x88, 0x8b, 0x37, 0x08, 0x00, 0x43, 0xb9, 0x18, 0xab, 0x52, 0x44, 0xc0, 0xbd, 0x29, - 0x15, 0x08, 0x10, 0x21, 0x23, 0xb8, 0xae, 0x19, 0xb9, 0x9d, 0x44, 0x08, 0x31, 0x72, 0x13, 0x99, - 0xfa, 0x9a, 0x89, 0xa9, 0x89, 0x22, 0x92, 0xec, 0x9a, 0x62, 0x25, 0x82, 0x18, 0xa0, 0xab, 0xac, - 0x88, 0xaa, 0x0a, 0x41, 0x36, 0x23, 0xa9, 0x71, 0x81, 0x01, 0x01, 0xeb, 0x0b, 0x32, 0x25, 0x00, - 0x81, 0x20, 0xe8, 0xcd, 0xbb, 0x9a, 0x9a, 0x22, 0x45, 0x22, 0x11, 0x98, 0x11, 0x98, 0xa8, 0x39, - 0xfc, 0x9b, 0x99, 0x22, 0xa9, 0xf9, 0x8c, 0x08, 0x38, 0x27, 0x31, 0x12, 0x10, 0x34, 0x82, 0xaa, - 0xda, 0xed, 0x9b, 0x09, 0x21, 0x24, 0x91, 0x09, 0x01, 0xa9, 0x99, 0x08, 0xa0, 0xdb, 0xbd, 0x70, - 0x27, 0x01, 0x98, 0xaa, 0x28, 0xa3, 0xae, 0x9a, 0x20, 0x82, 0xca, 0x28, 0x45, 0x33, 0x13, 0x11, - 0x83, 0xeb, 0x0a, 0x12, 0xfa, 0xbc, 0x99, 0x10, 0x01, 0x28, 0x67, 0x81, 0x98, 0x99, 0x99, 0xaa, - 0x99, 0x01, 0x30, 0xc2, 0x9b, 0x41, 0x43, 0xb8, 0xcc, 0x8a, 0x28, 0x36, 0x10, 0x12, 0x31, 0x46, - 0x02, 0xcc, 0xbb, 0x89, 0x89, 0xc8, 0x0c, 0x13, 0x44, 0x00, 0x63, 0x82, 0x99, 0x89, 0xaa, 0x21, - 0xe9, 0x8c, 0x23, 0xb0, 0x9b, 0xd9, 0xbf, 0x19, 0x83, 0x08, 0x52, 0x35, 0x12, 0x80, 0x90, 0x10, - 0x20, 0xd8, 0xbb, 0xbe, 0x08, 0x81, 0x99, 0x50, 0x35, 0x01, 0x18, 0xa8, 0x0a, 0x55, 0xe0, 0x8b, - 0x00, 0x32, 0x11, 0x24, 0x01, 0xcf, 0xaa, 0xaa, 0xaa, 0x8a, 0x82, 0x99, 0x60, 0x24, 0x53, 0x35, - 0x01, 0x88, 0x08, 0xa9, 0xbd, 0xdc, 0x8b, 0x01, 0x18, 0x20, 0x14, 0x81, 0x0b, 0x26, 0x91, 0x88, - 0x22, 0x03, 0x20, 0x31, 0xb0, 0xf0, 0xbf, 0xeb, 0x89, 0x89, 0x10, 0x43, 0x23, 0x11, 0x33, 0x43, - 0x23, 0xed, 0x9b, 0x99, 0xdb, 0x30, 0x42, 0x23, 0xa8, 0x08, 0xa8, 0xec, 0x99, 0x1a, 0x33, 0x33, - 0x73, 0x35, 0x12, 0xa8, 0xbe, 0x8b, 0x10, 0xd8, 0x8a, 0x32, 0x02, 0xca, 0xaa, 0x52, 0x91, 0x10, - 0x01, 0xb8, 0xab, 0x09, 0x77, 0x83, 0xa8, 0x9a, 0xeb, 0xac, 0x19, 0x35, 0x12, 0x80, 0x88, 0x88, - 0x11, 0xa8, 0x8a, 0x48, 0x34, 0x44, 0xa8, 0xbc, 0xbe, 0xbd, 0xad, 0x20, 0x32, 0x32, 0x35, 0x34, - 0x11, 0x90, 0x99, 0xea, 0xad, 0x08, 0x32, 0x92, 0xda, 0x9b, 0x80, 0xb9, 0x1b, 0x36, 0xb8, 0x8d, - 0x54, 0x33, 0x02, 0x88, 0x88, 0x88, 0x11, 0xf9, 0xbe, 0xaa, 0x88, 0x20, 0x33, 0x45, 0x23, 0x01, - 0x12, 0xc9, 0xab, 0xd9, 0xbc, 0x9a, 0x00, 0x33, 0x24, 0x88, 0xf9, 0x0b, 0x43, 0x81, 0x8a, 0x20, - 0xd0, 0x19, 0x11, 0xb0, 0xad, 0x28, 0x63, 0x14, 0x88, 0x98, 0x0a, 0x34, 0xe1, 0xbe, 0x8a, 0x99, - 0x18, 0x34, 0x23, 0x21, 0x26, 0x21, 0xa2, 0xbb, 0x9b, 0x18, 0xdc, 0x20, 0x00, 0xf9, 0x0a, 0x90, - 0x50, 0x03, 0x41, 0x23, 0x91, 0xbd, 0xbc, 0x20, 0xc9, 0xbc, 0x8a, 0x08, 0x44, 0x81, 0x01, 0x48, - 0x24, 0x12, 0xa0, 0x0d, 0x24, 0x20, 0x57, 0x82, 0xa8, 0xdb, 0xac, 0x8a, 0x80, 0xba, 0x9b, 0x52, - 0x34, 0x22, 0x33, 0x33, 0x34, 0xb0, 0xcf, 0xaa, 0xb9, 0xac, 0x8a, 0x32, 0xb8, 0x3a, 0x62, 0x35, - 0x32, 0x33, 0xb1, 0xbd, 0x39, 0x05, 0x9a, 0xa8, 0xac, 0xaa, 0xeb, 0x19, 0x12, 0xa8, 0x0b, 0x33, - 0x22, 0x65, 0x14, 0x41, 0x82, 0x10, 0x80, 0x81, 0x9a, 0x30, 0x67, 0xc9, 0xbd, 0xba, 0x99, 0x01, - 0xa8, 0x8b, 0x31, 0x44, 0x55, 0x02, 0x00, 0x31, 0xa0, 0x89, 0x99, 0x98, 0xdd, 0xab, 0x20, 0x88, - 0x46, 0x31, 0x13, 0x81, 0xba, 0xdb, 0x1a, 0x83, 0xee, 0x9b, 0x08, 0x88, 0x08, 0x80, 0xa9, 0x9a, - 0x51, 0x27, 0x22, 0x32, 0x81, 0xa9, 0x29, 0x44, 0xb0, 0xad, 0x08, 0xfa, 0x8a, 0x81, 0xba, 0x8c, - 0x22, 0x80, 0x72, 0x26, 0x81, 0x21, 0xa8, 0xdc, 0x89, 0x32, 0x00, 0x88, 0x12, 0x98, 0xcc, 0x0a, - 0x32, 0x12, 0xa8, 0x28, 0xe2, 0xae, 0x30, 0x45, 0xa0, 0xaa, 0xa8, 0xbe, 0xa9, 0x9a, 0x10, 0x01, - 0xa8, 0x74, 0x17, 0x88, 0x11, 0x31, 0x33, 0x02, 0x20, 0x10, 0x91, 0xbe, 0x99, 0x9b, 0xf9, 0xcf, - 0xba, 0xa9, 0xa9, 0x09, 0x42, 0x34, 0x24, 0x42, 0x34, 0x80, 0x89, 0xb9, 0xbd, 0xa9, 0xa9, 0xac, - 0x08, 0x18, 0x13, 0x66, 0x23, 0x02, 0x99, 0x81, 0x89, 0x89, 0x33, 0xe9, 0xbb, 0xca, 0xab, 0xca, - 0xcb, 0xaa, 0x51, 0x47, 0x13, 0x02, 0x10, 0x81, 0xa9, 0x09, 0x91, 0xbc, 0xac, 0xea, 0xcb, 0xaa, - 0x88, 0x08, 0x53, 0x24, 0x43, 0x01, 0xa9, 0xba, 0xcc, 0x20, 0x34, 0x01, 0x21, 0x90, 0x49, 0x46, - 0x03, 0x00, 0xcd, 0x9a, 0x21, 0x03, 0x98, 0x09, 0xe9, 0xac, 0x89, 0x01, 0xda, 0xcd, 0x9a, 0x88, - 0x28, 0x54, 0x82, 0xab, 0x89, 0x10, 0x66, 0x13, 0x01, 0x18, 0x34, 0x00, 0xb0, 0x9c, 0xb9, 0xba, - 0xcf, 0xa9, 0xab, 0x39, 0x14, 0x80, 0x22, 0x32, 0x46, 0x33, 0x42, 0x03, 0xa9, 0xdb, 0xdb, 0xaa, - 0xaa, 0x21, 0x80, 0xcb, 0x89, 0xa8, 0x71, 0x17, 0x00, 0x20, 0x21, 0x04, 0xb8, 0xbb, 0xcc, 0xbc, - 0xaa, 0xaa, 0x09, 0x33, 0x52, 0x43, 0x46, 0x23, 0x11, 0x20, 0x12, 0x90, 0xcb, 0xbd, 0xcc, 0xbb, - 0x19, 0x00, 0xdb, 0x28, 0x84, 0x99, 0x9c, 0x03, 0xbb, 0xcb, 0x09, 0x73, 0x14, 0x08, 0x43, 0x44, - 0x82, 0xa8, 0x09, 0xb8, 0xac, 0xb9, 0x28, 0x35, 0x14, 0x30, 0xc1, 0x9b, 0xaa, 0x73, 0x43, 0xa1, - 0xcd, 0xbb, 0x09, 0xa9, 0x19, 0x82, 0x10, 0x71, 0x36, 0x53, 0x00, 0x88, 0x10, 0xc9, 0xaa, 0xab, - 0x88, 0xf9, 0x9c, 0x89, 0x80, 0x11, 0xa9, 0x70, 0x14, 0x88, 0x11, 0x12, 0x43, 0x12, 0xa0, 0x19, - 0xa8, 0xc9, 0xaf, 0xba, 0x99, 0xd9, 0x19, 0x73, 0x14, 0x90, 0x09, 0x33, 0x83, 0xcb, 0xbe, 0x9b, - 0xbb, 0xbc, 0xcb, 0xaa, 0x20, 0x73, 0x25, 0x12, 0x22, 0x33, 0x02, 0x89, 0x19, 0x03, 0x98, 0x99, - 0xb0, 0xff, 0x8a, 0x20, 0x92, 0xcb, 0xac, 0x20, 0x98, 0x08, 0x80, 0xda, 0x29, 0x46, 0x33, 0x23, - 0x12, 0x32, 0xb0, 0xbe, 0xdb, 0xad, 0x08, 0xa9, 0xad, 0xa8, 0x38, 0x34, 0x23, 0x10, 0x24, 0x21, - 0x54, 0x23, 0x90, 0xfa, 0xae, 0xaa, 0x8b, 0x32, 0x81, 0x41, 0x45, 0x11, 0x23, 0x22, 0x99, 0xf9, - 0x8b, 0x99, 0xeb, 0x8a, 0x21, 0xc9, 0xbb, 0x8a, 0x11, 0x91, 0x00, 0x54, 0x11, 0x41, 0x45, 0x02, - 0x32, 0xb9, 0xcd, 0x09, 0xc8, 0x29, 0x02, 0x21, 0x62, 0x33, 0x43, 0x02, 0x20, 0xa1, 0xdb, 0x9e, - 0x89, 0x00, 0xeb, 0xbb, 0xdb, 0xbb, 0x19, 0x01, 0x63, 0x34, 0x12, 0x10, 0x35, 0x91, 0xac, 0x18, - 0xa0, 0xcc, 0x38, 0x91, 0xaa, 0x69, 0xa1, 0x9a, 0x10, 0xaa, 0x0b, 0xd3, 0x8f, 0x32, 0x25, 0x31, - 0x03, 0x08, 0x22, 0x12, 0xd8, 0xce, 0x0a, 0xa0, 0xba, 0x9b, 0x28, 0x15, 0x19, 0x00, 0x44, 0x90, - 0x8a, 0x99, 0xb8, 0x9d, 0xcf, 0x98, 0xaa, 0xbc, 0x08, 0x18, 0x57, 0x22, 0x42, 0x35, 0x03, 0x80, - 0x00, 0xa8, 0x9b, 0x0a, 0x81, 0xce, 0xab, 0xca, 0xab, 0xba, 0xbc, 0x9b, 0x39, 0x47, 0x34, 0x12, - 0x90, 0xb8, 0x9d, 0x9a, 0x89, 0x10, 0x18, 0x21, 0x53, 0x24, 0x32, 0x25, 0xa0, 0x1c, 0x03, 0xfb, - 0x9a, 0xa9, 0x8b, 0x33, 0x33, 0xe0, 0x9c, 0x81, 0x98, 0x08, 0x30, 0x13, 0x62, 0x47, 0x04, 0xa8, - 0xab, 0x99, 0x89, 0x02, 0x18, 0x42, 0xe0, 0xbe, 0x99, 0xaa, 0x8a, 0x12, 0x98, 0x99, 0x73, 0x15, - 0x20, 0x33, 0x43, 0x33, 0x02, 0x60, 0x83, 0xda, 0x99, 0x9b, 0x99, 0x33, 0x91, 0xad, 0x99, 0x21, - 0x29, 0x67, 0x01, 0xac, 0x89, 0xcb, 0xbd, 0xad, 0x9b, 0x08, 0x00, 0x20, 0x18, 0x46, 0x33, 0x24, - 0x22, 0x22, 0x42, 0x32, 0x81, 0x99, 0xdc, 0xbd, 0xbb, 0xbc, 0x99, 0x00, 0x11, 0x64, 0x23, 0x01, - 0x00, 0x98, 0xa9, 0xaa, 0xdd, 0x9a, 0x09, 0xc8, 0x9b, 0x63, 0x03, 0x80, 0x20, 0x45, 0x01, 0x00, - 0xb8, 0x9c, 0xa8, 0xcc, 0x9b, 0x22, 0x00, 0x32, 0xfd, 0x9b, 0x30, 0x36, 0x34, 0x01, 0x10, 0x92, - 0xa9, 0x6a, 0x25, 0x81, 0x38, 0x04, 0x98, 0x0a, 0xd9, 0xbe, 0xbc, 0x9b, 0xdb, 0x9b, 0x10, 0x08, - 0x00, 0x38, 0x45, 0x12, 0x80, 0x38, 0xd8, 0x48, 0x55, 0x02, 0x08, 0xa8, 0x9b, 0x9a, 0x22, 0x64, - 0x01, 0x31, 0x23, 0xc8, 0xaa, 0x9b, 0xfb, 0xab, 0xba, 0x9a, 0xca, 0xac, 0xa9, 0xbc, 0x8a, 0x43, - 0x67, 0x23, 0x32, 0x13, 0x01, 0x99, 0xa0, 0xbe, 0xcb, 0xaa, 0x89, 0xa9, 0x8b, 0x21, 0x14, 0x09, - 0x44, 0x33, 0x34, 0x23, 0x21, 0x44, 0x90, 0x10, 0xb1, 0xcf, 0x30, 0x13, 0xb8, 0x28, 0xc0, 0x30, - 0x23, 0xfc, 0x9e, 0x98, 0xca, 0x9c, 0x01, 0xad, 0x19, 0x91, 0x89, 0x32, 0x03, 0x40, 0x03, 0x08, - 0x52, 0x24, 0x09, 0x45, 0x34, 0x03, 0x52, 0x24, 0x82, 0xa9, 0xeb, 0xcc, 0xaa, 0x9b, 0x80, 0x08, - 0x11, 0x9a, 0x22, 0xb1, 0xdf, 0x31, 0x23, 0x81, 0x11, 0x11, 0x12, 0xba, 0xcd, 0xcb, 0x8b, 0x62, - 0x12, 0x18, 0x44, 0x13, 0x32, 0x16, 0x00, 0xb9, 0xab, 0xcc, 0xab, 0x9c, 0xa8, 0x38, 0xd0, 0xac, - 0x22, 0x32, 0x55, 0x12, 0x73, 0x82, 0x99, 0x00, 0xc9, 0xac, 0x98, 0xaa, 0xbb, 0x09, 0x43, 0x92, - 0xab, 0xb9, 0xcf, 0x18, 0x90, 0x08, 0x42, 0x45, 0x03, 0x99, 0x08, 0x42, 0x22, 0x90, 0x79, 0x45, - 0x12, 0x12, 0xa0, 0xbc, 0x89, 0xa1, 0xad, 0xac, 0x08, 0xc9, 0xac, 0x09, 0x91, 0xbe, 0x9b, 0x22, - 0x89, 0x10, 0x23, 0x88, 0x76, 0x23, 0x43, 0x43, 0x23, 0x14, 0xa9, 0x89, 0x80, 0xbe, 0x08, 0xb8, - 0xbe, 0x9a, 0x0a, 0x91, 0xdb, 0x8d, 0x44, 0x02, 0x89, 0x31, 0x42, 0x83, 0x9c, 0x89, 0xb0, 0x8a, - 0xc9, 0xad, 0x63, 0x11, 0x33, 0x83, 0xa9, 0xb9, 0xcf, 0x89, 0xb9, 0xae, 0x89, 0x08, 0xa9, 0x19, - 0x72, 0x25, 0x01, 0x81, 0x31, 0x34, 0x34, 0x21, 0x21, 0x90, 0xca, 0xbb, 0xbf, 0x99, 0x10, 0xe8, - 0xbb, 0x9a, 0x99, 0xbc, 0x8a, 0x88, 0xa8, 0x61, 0x45, 0x04, 0x99, 0x01, 0x91, 0x9d, 0x40, 0x05, - 0x18, 0x36, 0x82, 0xa9, 0x28, 0xc9, 0xba, 0x2a, 0x01, 0x81, 0x9b, 0x73, 0xa4, 0x9c, 0x98, 0xdb, - 0xdb, 0x8a, 0x8a, 0x11, 0x53, 0x35, 0x33, 0x01, 0x12, 0x01, 0x90, 0xb9, 0x09, 0x90, 0xcf, 0x9a, - 0xc9, 0xdd, 0xab, 0x09, 0x12, 0x98, 0x51, 0x26, 0x81, 0x01, 0x11, 0x33, 0x81, 0x99, 0x89, 0xba, - 0x9a, 0xce, 0x80, 0x9a, 0x71, 0x25, 0x00, 0x18, 0x32, 0xc0, 0xcd, 0x9b, 0xb8, 0xbf, 0x9b, 0x81, - 0x09, 0xa9, 0x08, 0x35, 0x21, 0x64, 0x33, 0x22, 0x21, 0x24, 0x01, 0x89, 0x53, 0xa1, 0x29, 0xa0, - 0xdd, 0x99, 0xca, 0xbb, 0xca, 0xbb, 0xba, 0xab, 0x68, 0x34, 0x12, 0x80, 0x32, 0x83, 0x9c, 0x73, - 0x14, 0x88, 0x43, 0x80, 0x38, 0xa2, 0xbf, 0xcb, 0xcc, 0x19, 0x11, 0x22, 0x34, 0x90, 0xab, 0xa9, - 0xaa, 0x2a, 0xf0, 0x8b, 0x52, 0x12, 0x40, 0x26, 0x90, 0xca, 0x19, 0x22, 0x34, 0x33, 0x34, 0xb1, - 0xcf, 0x8a, 0xaa, 0xbc, 0xbb, 0x99, 0x18, 0x80, 0x61, 0x14, 0x02, 0x19, 0x25, 0xa8, 0x41, 0x12, - 0x90, 0x80, 0x00, 0x13, 0x30, 0x57, 0x12, 0x10, 0x18, 0x26, 0x12, 0xa8, 0xfb, 0xbd, 0xbb, 0xca, - 0x8a, 0xcb, 0x9a, 0x09, 0x00, 0x54, 0x02, 0x32, 0x34, 0x04, 0x00, 0x08, 0x34, 0x22, 0x22, 0x03, - 0xa9, 0x10, 0xfd, 0x9d, 0xa9, 0x9a, 0x99, 0xa9, 0x8c, 0xba, 0x10, 0x73, 0x92, 0x8b, 0x65, 0x82, - 0x30, 0x24, 0x02, 0xa9, 0x08, 0x80, 0xeb, 0xab, 0x8a, 0x20, 0x91, 0x89, 0x09, 0x14, 0x9d, 0xe8, - 0xaf, 0x09, 0x80, 0x0a, 0x10, 0x90, 0x28, 0x08, 0x16, 0xb9, 0x70, 0x37, 0x02, 0x20, 0x33, 0x33, - 0x34, 0x14, 0xc9, 0xcd, 0xac, 0x98, 0xa9, 0xaa, 0x08, 0xc9, 0x9a, 0x18, 0x22, 0xb8, 0x8a, 0x64, - 0x83, 0x1a, 0x64, 0x23, 0x12, 0x98, 0x11, 0x41, 0x34, 0x34, 0x00, 0x90, 0xcd, 0xbc, 0x98, 0xbc, - 0x8a, 0xb9, 0x9a, 0xdd, 0x9a, 0x33, 0x10, 0x33, 0x10, 0x80, 0x74, 0x43, 0x03, 0x52, 0x03, 0x01, - 0xa9, 0x09, 0x99, 0xfb, 0xbe, 0xaa, 0x8a, 0x41, 0xa1, 0x9b, 0x12, 0xd9, 0x29, 0xd0, 0xac, 0x39, - 0x17, 0x11, 0x11, 0x26, 0x81, 0x98, 0x18, 0x34, 0x90, 0x09, 0x42, 0xb9, 0xca, 0xbc, 0x9a, 0x09, - 0x81, 0xc8, 0xcd, 0xcb, 0xbb, 0xab, 0xa9, 0x0b, 0x02, 0x8b, 0x76, 0x35, 0x13, 0x32, 0x53, 0x82, - 0x80, 0x63, 0x02, 0xb9, 0x9c, 0xba, 0x88, 0xbc, 0xb9, 0xba, 0xdf, 0x09, 0x90, 0x10, 0x22, 0xb9, - 0x52, 0x01, 0x20, 0x32, 0xa0, 0x54, 0x91, 0x49, 0x37, 0x82, 0x9a, 0x0a, 0x80, 0xb9, 0xbd, 0x9a, - 0x88, 0x81, 0xbc, 0xa0, 0xdf, 0x9a, 0x28, 0x81, 0xa8, 0x68, 0x14, 0x01, 0x99, 0x52, 0x36, 0x80, - 0x31, 0x23, 0x80, 0x12, 0xca, 0x9c, 0x90, 0xaf, 0xa8, 0xa9, 0xac, 0xaa, 0xfb, 0xbc, 0x99, 0x9a, - 0x62, 0x33, 0x10, 0x35, 0x13, 0x11, 0x98, 0x10, 0x63, 0x13, 0x88, 0x32, 0xd8, 0xab, 0x80, 0xb9, - 0xdf, 0x9a, 0xa9, 0x0b, 0x82, 0xaa, 0x38, 0x83, 0xda, 0xbc, 0x29, 0x94, 0xdb, 0x3a, 0x67, 0x11, - 0x22, 0x11, 0x80, 0x01, 0xc9, 0x09, 0x32, 0xa0, 0xb9, 0x9f, 0xb9, 0xbd, 0xca, 0x9a, 0x19, 0x10, - 0x44, 0x10, 0x90, 0x50, 0x02, 0xa8, 0x9c, 0x53, 0x43, 0x43, 0x33, 0x01, 0x89, 0x88, 0xc8, 0xbf, - 0x09, 0xc1, 0xab, 0x09, 0xa8, 0x8c, 0x81, 0xd8, 0xbf, 0x99, 0x18, 0x41, 0x16, 0x80, 0x01, 0x28, - 0x03, 0x43, 0x52, 0xa3, 0x09, 0x40, 0x12, 0x61, 0x03, 0x99, 0xa8, 0xfb, 0xac, 0xca, 0xad, 0xaa, - 0x98, 0xaa, 0x98, 0x61, 0x23, 0x12, 0x23, 0x98, 0x28, 0x27, 0x11, 0x42, 0x14, 0x44, 0x43, 0xa1, - 0xba, 0xac, 0xb9, 0xce, 0x8a, 0x01, 0x08, 0x88, 0x90, 0x18, 0xd8, 0xac, 0x10, 0xaa, 0x31, 0x54, - 0x35, 0x23, 0x52, 0x23, 0x80, 0x29, 0x15, 0xc9, 0x9b, 0xa0, 0xea, 0x9d, 0x08, 0xb0, 0x9a, 0xb9, - 0x0b, 0x11, 0x99, 0x74, 0x95, 0xac, 0x10, 0x32, 0x00, 0x12, 0x74, 0x23, 0x00, 0x08, 0x88, 0x89, - 0xdb, 0x89, 0x00, 0xb8, 0x9c, 0x9a, 0xb8, 0xff, 0x9d, 0x18, 0x80, 0x88, 0x88, 0x21, 0x32, 0x11, - 0x46, 0x80, 0x18, 0x81, 0x28, 0x37, 0x82, 0x19, 0x32, 0xb0, 0x1a, 0xa1, 0xcb, 0xde, 0xac, 0xaa, - 0xba, 0xaa, 0x18, 0x21, 0x21, 0x38, 0x16, 0x60, 0x33, 0x11, 0x53, 0x25, 0x90, 0x09, 0x53, 0x92, - 0xac, 0x21, 0xc8, 0xca, 0xbc, 0xbb, 0x18, 0xb1, 0x0c, 0x22, 0x24, 0xa0, 0x9a, 0xb1, 0xaf, 0xdb, - 0x41, 0x33, 0x32, 0x25, 0x12, 0x73, 0x82, 0x18, 0x81, 0xcd, 0x89, 0x98, 0x9a, 0x99, 0xcd, 0x8a, - 0x00, 0x10, 0x90, 0x10, 0xfa, 0x9f, 0x18, 0x80, 0x18, 0x45, 0x22, 0x12, 0x88, 0x22, 0x11, 0x43, - 0x02, 0xc9, 0x9b, 0x19, 0x20, 0x27, 0xb9, 0xbf, 0x9b, 0xca, 0xad, 0x20, 0x80, 0x8a, 0x53, 0x13, - 0x80, 0x09, 0xa1, 0xce, 0x0a, 0x43, 0x21, 0x44, 0x33, 0x00, 0x81, 0x08, 0x43, 0xb0, 0xbf, 0xaa, - 0xbc, 0xbb, 0xac, 0x10, 0xc0, 0xaa, 0x89, 0x72, 0x25, 0x00, 0x51, 0x13, 0xa8, 0x19, 0x13, 0x02, - 0xaa, 0x98, 0xba, 0x8b, 0x54, 0xe8, 0xbc, 0xa9, 0x9b, 0x52, 0x33, 0xc8, 0x99, 0xca, 0xcd, 0x99, - 0x00, 0xca, 0x89, 0x62, 0x34, 0x23, 0x21, 0x10, 0x13, 0x10, 0x54, 0x53, 0x33, 0x90, 0xbb, 0xac, - 0x99, 0xde, 0x9b, 0xa8, 0xcc, 0x89, 0x9a, 0x88, 0x32, 0xba, 0x31, 0x25, 0x11, 0x37, 0x90, 0x52, - 0x12, 0x12, 0x42, 0x23, 0x24, 0x01, 0x8a, 0x90, 0xfb, 0xcd, 0xab, 0xab, 0x8a, 0x38, 0x25, 0xa8, - 0x00, 0x9a, 0xb8, 0x9d, 0x10, 0x90, 0x2a, 0x56, 0x15, 0x21, 0x34, 0x23, 0x12, 0x91, 0xbd, 0x98, - 0xb9, 0xcf, 0x9a, 0xa8, 0xdb, 0x99, 0xba, 0x08, 0x10, 0xa8, 0x61, 0x11, 0x31, 0x56, 0x33, 0x24, - 0x01, 0x31, 0x02, 0x88, 0x01, 0xbe, 0x11, 0xb8, 0xbc, 0x19, 0x90, 0xc1, 0xff, 0x9a, 0x99, 0xbb, - 0x08, 0x99, 0x99, 0x10, 0x11, 0x47, 0x01, 0x22, 0x33, 0x46, 0x35, 0x21, 0x10, 0x10, 0xa0, 0xba, - 0x09, 0xd8, 0xae, 0x9a, 0xca, 0xbd, 0xaa, 0x89, 0x21, 0xa0, 0x8a, 0x31, 0x32, 0x66, 0x25, 0x80, - 0x20, 0x22, 0x23, 0x03, 0x10, 0x08, 0xfb, 0xbf, 0x98, 0x89, 0x89, 0xb8, 0xae, 0x08, 0x11, 0x89, - 0x44, 0x91, 0x8a, 0x31, 0x03, 0xa8, 0x70, 0x22, 0x91, 0x49, 0x35, 0x32, 0x34, 0x14, 0xba, 0xdb, - 0x2a, 0x03, 0xf9, 0x9c, 0x90, 0xda, 0xac, 0x98, 0xab, 0xcb, 0x48, 0x12, 0x21, 0x42, 0x23, 0x64, - 0x12, 0x02, 0x11, 0x02, 0x88, 0x88, 0x82, 0x9a, 0xa9, 0x34, 0xdb, 0x9a, 0x00, 0xe3, 0xae, 0xbb, - 0xc9, 0x9b, 0x9a, 0xc0, 0xbc, 0x19, 0x10, 0x10, 0x22, 0x67, 0x23, 0x33, 0x12, 0x08, 0x24, 0xda, - 0x2a, 0x13, 0xdd, 0x19, 0xa0, 0x9a, 0xd9, 0xab, 0x88, 0xad, 0x01, 0x98, 0x40, 0x03, 0x40, 0x13, - 0xcc, 0x72, 0x35, 0x12, 0x22, 0xa0, 0xaa, 0xa9, 0xec, 0x89, 0x00, 0x91, 0xce, 0x19, 0x22, 0x88, - 0xa0, 0x9d, 0xa8, 0xaa, 0x38, 0x04, 0xaa, 0x01, 0x8b, 0x43, 0x37, 0x18, 0x33, 0x45, 0x31, 0x36, - 0x33, 0x12, 0x42, 0x93, 0x99, 0xc9, 0xcc, 0xad, 0xcc, 0xac, 0xaa, 0xab, 0x9a, 0x18, 0x63, 0x33, - 0x12, 0x33, 0x32, 0x24, 0xa2, 0x8e, 0x32, 0x91, 0x09, 0x61, 0x93, 0xcb, 0x0a, 0x32, 0x91, 0x9c, - 0xb9, 0xcc, 0xba, 0xce, 0xaa, 0x09, 0x10, 0x34, 0x11, 0x43, 0x23, 0x42, 0x33, 0x32, 0x34, 0x11, - 0x22, 0x12, 0xbc, 0x91, 0xdf, 0xcc, 0x9a, 0x99, 0xda, 0xad, 0x11, 0x01, 0xea, 0x09, 0x11, 0x98, - 0x41, 0x44, 0x33, 0x01, 0x00, 0x72, 0x23, 0x01, 0x11, 0xb8, 0x9a, 0xbb, 0x49, 0xc3, 0xbf, 0x98, - 0xc9, 0x9d, 0x88, 0x98, 0x99, 0x89, 0x11, 0x22, 0xbc, 0xa8, 0xad, 0xc9, 0x69, 0x14, 0x22, 0x41, - 0x25, 0x21, 0x41, 0x25, 0x01, 0x00, 0x89, 0xdb, 0xcb, 0xcd, 0xab, 0x9a, 0xab, 0x18, 0x31, 0x24, - 0x11, 0x33, 0x46, 0x13, 0x80, 0x28, 0x44, 0x02, 0x89, 0xca, 0xbc, 0xac, 0x89, 0x89, 0x01, 0x02, - 0xec, 0x0a, 0x01, 0x11, 0x34, 0x81, 0x32, 0x92, 0xbe, 0x32, 0xba, 0x81, 0x9c, 0x39, 0x14, 0x11, - 0x77, 0x04, 0x20, 0x13, 0x08, 0x00, 0x98, 0x21, 0xfb, 0xaf, 0x89, 0x89, 0xb9, 0xcb, 0x89, 0xea, - 0x9b, 0x21, 0xb8, 0x28, 0x46, 0x03, 0x22, 0x44, 0x33, 0x91, 0x88, 0x90, 0x9a, 0x08, 0xc9, 0x8b, - 0xc9, 0x9d, 0x98, 0x38, 0x26, 0xa8, 0x1a, 0x02, 0xdc, 0xcc, 0xbd, 0x8a, 0x00, 0x90, 0x40, 0x23, - 0x12, 0x55, 0x24, 0x32, 0x12, 0x11, 0x22, 0x03, 0xce, 0xba, 0xaa, 0xdc, 0xac, 0x99, 0x98, 0x89, - 0x89, 0x21, 0x04, 0x31, 0x65, 0x24, 0x22, 0x21, 0x01, 0x90, 0x88, 0xaa, 0x08, 0xb8, 0x0c, 0x80, - 0xfd, 0xab, 0x89, 0x99, 0x99, 0xe8, 0x9e, 0x00, 0xba, 0x8b, 0x12, 0xa8, 0x0b, 0x03, 0x01, 0x77, - 0x06, 0x90, 0x20, 0x23, 0x11, 0x01, 0x81, 0x48, 0x53, 0x12, 0x88, 0x91, 0xcf, 0xbb, 0xb9, 0xbd, - 0xdb, 0xab, 0x89, 0x11, 0x33, 0x03, 0x1a, 0x56, 0x24, 0x28, 0x34, 0x82, 0x88, 0x02, 0xba, 0x9d, - 0x10, 0xb9, 0xae, 0x18, 0x80, 0x00, 0x88, 0x88, 0x61, 0xc1, 0x09, 0x18, 0xf8, 0x9d, 0x99, 0x30, - 0x11, 0x44, 0x32, 0x43, 0x33, 0x23, 0x33, 0x83, 0xcd, 0x09, 0xb9, 0xdb, 0xce, 0xbd, 0x9a, 0xac, - 0x8a, 0x09, 0x11, 0x44, 0x33, 0x24, 0x11, 0xa8, 0x08, 0x99, 0x55, 0x33, 0xc8, 0x8a, 0x21, 0x33, - 0x80, 0x98, 0x9b, 0x10, 0xb8, 0x9c, 0x90, 0xcd, 0x19, 0x82, 0xbf, 0xbc, 0xdc, 0x9d, 0x00, 0xa9, - 0x00, 0x00, 0x21, 0x23, 0x57, 0x23, 0x23, 0x24, 0x99, 0x30, 0x34, 0x43, 0x92, 0xbd, 0xba, 0xcd, - 0xab, 0x90, 0xeb, 0xab, 0x18, 0x98, 0x00, 0x50, 0x36, 0x33, 0x23, 0x10, 0x33, 0x24, 0x9a, 0xe9, - 0xcc, 0xab, 0xb8, 0xaa, 0x10, 0x82, 0xab, 0x08, 0x71, 0x17, 0x80, 0x19, 0x90, 0xac, 0xb9, 0xad, - 0x09, 0x22, 0x91, 0x8b, 0x66, 0x23, 0x22, 0x33, 0x23, 0x21, 0x45, 0x81, 0xb9, 0xcd, 0xb9, 0xbb, - 0xbd, 0xba, 0x9d, 0x08, 0x09, 0x88, 0x32, 0x23, 0x00, 0x82, 0x69, 0x37, 0x13, 0x08, 0x52, 0x12, - 0x00, 0x22, 0xfa, 0x9b, 0x12, 0x89, 0x62, 0x13, 0xa0, 0xac, 0xa0, 0xbc, 0x8a, 0xdb, 0x8c, 0x13, - 0xa9, 0xbd, 0x10, 0x88, 0x09, 0x44, 0x11, 0x54, 0x12, 0x33, 0x37, 0x12, 0x90, 0x99, 0xc8, 0xaf, - 0xb9, 0x99, 0xa9, 0xdc, 0x9c, 0x99, 0x99, 0x32, 0x23, 0x64, 0x34, 0x33, 0x23, 0x13, 0x81, 0xea, - 0x8b, 0xc9, 0xbb, 0xaa, 0x98, 0xab, 0x21, 0x51, 0x02, 0x40, 0x43, 0x35, 0xb0, 0xaa, 0x9a, 0xfc, - 0x9c, 0xa9, 0xdb, 0x8a, 0x12, 0x80, 0x61, 0x34, 0x12, 0x21, 0x44, 0x24, 0x81, 0x98, 0x08, 0x10, - 0xea, 0xab, 0x88, 0x8a, 0xfb, 0xab, 0x08, 0x00, 0x88, 0xbc, 0xbc, 0x19, 0x45, 0x43, 0x01, 0x00, - 0x22, 0x22, 0x32, 0x93, 0xfb, 0xbf, 0x08, 0x10, 0x00, 0x33, 0xb0, 0x18, 0xcb, 0xac, 0x30, 0xd8, - 0xcb, 0x29, 0x23, 0x80, 0xb8, 0xdf, 0x18, 0x22, 0x21, 0x10, 0x72, 0x15, 0x88, 0x00, 0x22, 0xa8, - 0x2a, 0x26, 0xa0, 0xcd, 0xdb, 0xab, 0xbc, 0xab, 0x19, 0x23, 0x28, 0x37, 0x63, 0x22, 0x01, 0x10, - 0x00, 0xa9, 0x9c, 0x00, 0x00, 0xb8, 0x1a, 0x09, 0x47, 0x13, 0x00, 0x18, 0xa1, 0x0a, 0xa0, 0xbe, - 0xbd, 0xce, 0x9a, 0x89, 0xb8, 0xbc, 0xad, 0x30, 0x25, 0x22, 0x22, 0x35, 0x13, 0x42, 0x33, 0x24, - 0xc8, 0xbd, 0x9a, 0x0a, 0x90, 0xda, 0x9c, 0xa9, 0xba, 0x19, 0x22, 0x33, 0x43, 0x13, 0x74, 0x23, - 0x01, 0xfb, 0x0a, 0x00, 0x99, 0x89, 0x90, 0x30, 0x08, 0x47, 0xa0, 0x8a, 0x21, 0xa9, 0xba, 0x68, - 0x93, 0x9d, 0x30, 0x92, 0xae, 0x18, 0x13, 0xa9, 0xcc, 0xcb, 0x2a, 0x25, 0x42, 0x46, 0x22, 0x22, - 0x13, 0x00, 0xb9, 0xad, 0x88, 0xdc, 0xbc, 0xaa, 0xca, 0x8a, 0x08, 0x22, 0x44, 0x33, 0x14, 0xb9, - 0x00, 0xaa, 0xbb, 0xab, 0x9b, 0x42, 0x74, 0x25, 0x89, 0x09, 0x10, 0x92, 0x1a, 0x45, 0x25, 0x00, - 0xa8, 0x08, 0xf9, 0xbb, 0xce, 0xab, 0x00, 0x90, 0x89, 0x30, 0x23, 0x21, 0x54, 0x34, 0x13, 0x22, - 0x13, 0x33, 0x92, 0x9a, 0x39, 0x95, 0xff, 0xab, 0xa9, 0xba, 0xaa, 0x40, 0x24, 0x00, 0x02, 0x42, - 0x24, 0xba, 0x49, 0x26, 0xa8, 0x09, 0x01, 0xb8, 0x8b, 0x21, 0x00, 0x98, 0x24, 0x98, 0xc9, 0x79, - 0x23, 0x12, 0xc8, 0xaa, 0xce, 0x09, 0xfa, 0xbb, 0xb9, 0xae, 0x10, 0x32, 0x22, 0x33, 0x24, 0x32, - 0x35, 0x34, 0x35, 0x13, 0x80, 0xb8, 0xaf, 0xb9, 0xbc, 0xbc, 0xaa, 0x8a, 0x21, 0x12, 0xc9, 0x40, - 0x33, 0xa2, 0xae, 0x00, 0x34, 0x12, 0x03, 0x20, 0x93, 0xda, 0xaf, 0x13, 0x99, 0x8a, 0x67, 0x12, - 0x02, 0x09, 0x81, 0xb8, 0xcd, 0xaa, 0xaa, 0x9b, 0x81, 0xcd, 0x28, 0x26, 0x11, 0x98, 0x08, 0x31, - 0x54, 0x23, 0x12, 0x22, 0x01, 0x13, 0xca, 0xce, 0xbc, 0x9b, 0xb9, 0x0b, 0x04, 0x09, 0x10, 0x22, - 0x25, 0xb0, 0x8a, 0x9b, 0x22, 0x82, 0xbf, 0xab, 0xbc, 0xc9, 0x2b, 0x12, 0x57, 0x00, 0x18, 0x34, - 0x34, 0x25, 0x80, 0xa0, 0x19, 0xca, 0xc0, 0xbe, 0xce, 0xaa, 0x88, 0x9a, 0x08, 0x23, 0x31, 0x64, - 0x15, 0x21, 0x23, 0x81, 0x08, 0x01, 0x08, 0xc0, 0xac, 0xaa, 0x80, 0x48, 0x92, 0xbe, 0xab, 0xaa, - 0xac, 0x10, 0x52, 0x83, 0x8c, 0x73, 0x82, 0xaa, 0x09, 0x21, 0x04, 0x80, 0xaa, 0x89, 0x45, 0x03, - 0x51, 0x35, 0x02, 0x99, 0x10, 0xf8, 0xad, 0x99, 0x98, 0xa9, 0xb9, 0x3a, 0x06, 0xbe, 0x9b, 0x98, - 0x8a, 0x64, 0x12, 0x21, 0x53, 0x33, 0x02, 0x09, 0x02, 0xed, 0xab, 0xaa, 0x19, 0x34, 0x90, 0xba, - 0xa9, 0xbe, 0x28, 0x23, 0x82, 0x0a, 0x11, 0x08, 0x45, 0xb0, 0x9f, 0x09, 0x08, 0x9a, 0x46, 0x32, - 0x34, 0x33, 0x53, 0x82, 0x09, 0x22, 0xba, 0xcd, 0xcc, 0xbc, 0xba, 0xaa, 0x98, 0xba, 0x18, 0x47, - 0x32, 0x14, 0x21, 0x11, 0x22, 0x90, 0xa9, 0x69, 0x15, 0x08, 0x98, 0xd9, 0x8c, 0x90, 0xda, 0xab, - 0xaa, 0xac, 0x21, 0x53, 0x01, 0x01, 0x31, 0x23, 0x90, 0xfa, 0x9d, 0x9a, 0x80, 0x88, 0x18, 0x33, - 0x83, 0x59, 0x67, 0x12, 0x11, 0x12, 0xca, 0x19, 0x80, 0xdb, 0xaa, 0xac, 0x98, 0xba, 0xdb, 0xab, - 0xa9, 0x9a, 0x1a, 0x57, 0x45, 0x22, 0x01, 0x10, 0x33, 0x02, 0xda, 0x9c, 0x10, 0xa0, 0x0a, 0x02, - 0xdb, 0xac, 0x8b, 0x99, 0x88, 0xa9, 0x0a, 0x72, 0x37, 0x00, 0x21, 0xb1, 0xdf, 0x9a, 0x18, 0x21, - 0x22, 0x88, 0x36, 0x12, 0x22, 0x25, 0xb8, 0xcc, 0x99, 0xca, 0x8c, 0x80, 0xa0, 0xac, 0x20, 0x22, - 0x90, 0xba, 0xcc, 0x9a, 0x50, 0x35, 0x13, 0x89, 0x32, 0x23, 0x01, 0x81, 0x68, 0x25, 0xcb, 0x8a, - 0x42, 0xd0, 0xbb, 0x9c, 0x10, 0x08, 0x11, 0x62, 0x83, 0x99, 0x8b, 0xc1, 0x9e, 0x08, 0xeb, 0xaa, - 0x32, 0x22, 0x81, 0x73, 0x27, 0x20, 0x32, 0x13, 0x10, 0xa1, 0xad, 0xca, 0xab, 0xcc, 0xcc, 0xab, - 0x08, 0x98, 0x8a, 0x11, 0x81, 0x71, 0x36, 0x32, 0x01, 0x10, 0x99, 0x30, 0x32, 0x92, 0xac, 0x09, - 0xba, 0xde, 0x8b, 0xa1, 0xcd, 0x89, 0x33, 0x91, 0x89, 0x11, 0xba, 0xbe, 0xed, 0x8a, 0x21, 0x04, - 0x89, 0x18, 0x34, 0x54, 0x23, 0x13, 0x88, 0x08, 0x30, 0xc2, 0x9b, 0x00, 0xfc, 0xbc, 0x98, 0xaa, - 0x89, 0x80, 0x89, 0xba, 0x52, 0x23, 0x99, 0x61, 0x27, 0x98, 0x31, 0x25, 0x02, 0x20, 0x33, 0x25, - 0xd9, 0x09, 0xda, 0xbc, 0xa9, 0x8a, 0x38, 0x81, 0x38, 0x36, 0x81, 0xda, 0x9d, 0xa9, 0x99, 0x28, - 0x81, 0x31, 0x15, 0x10, 0x62, 0x23, 0x01, 0x21, 0x21, 0x37, 0x02, 0x00, 0x02, 0xfb, 0xcd, 0xcc, - 0xaa, 0x99, 0x9a, 0x9a, 0x21, 0x01, 0x18, 0x35, 0x43, 0x63, 0x23, 0x42, 0x03, 0x20, 0xa1, 0x8a, - 0xb8, 0xce, 0x0a, 0x91, 0xac, 0x73, 0x83, 0x99, 0x10, 0x01, 0x80, 0xb8, 0xcf, 0xcb, 0x8a, 0x00, - 0x22, 0x43, 0x34, 0x21, 0x21, 0x83, 0xab, 0xeb, 0x89, 0x51, 0x03, 0x20, 0x46, 0x91, 0xcb, 0xab, - 0x99, 0x9a, 0xec, 0x9a, 0x80, 0x00, 0x90, 0x80, 0x8b, 0xa0, 0x1a, 0x55, 0x46, 0x23, 0x02, 0x31, - 0x23, 0xa8, 0x18, 0xc0, 0xec, 0xbc, 0x8b, 0x89, 0x00, 0x01, 0xd9, 0x9c, 0xba, 0xbe, 0x9b, 0x00, - 0x00, 0x63, 0x00, 0x43, 0x63, 0x12, 0x23, 0x90, 0x29, 0x47, 0x13, 0x20, 0x02, 0xfb, 0x0a, 0x00, - 0xb8, 0xbc, 0xca, 0xcd, 0x9a, 0x00, 0x18, 0x34, 0x22, 0x10, 0x43, 0x24, 0x11, 0x01, 0xa9, 0xda, - 0xaf, 0x18, 0x22, 0xa0, 0x8a, 0x09, 0x44, 0x36, 0x82, 0xcb, 0xbb, 0x99, 0x9a, 0xba, 0xbc, 0x19, - 0x12, 0x29, 0x25, 0x12, 0xdc, 0x19, 0x54, 0x14, 0xb0, 0x8a, 0x32, 0x25, 0xa8, 0x29, 0x02, 0xca, - 0xcb, 0x9b, 0x00, 0x10, 0xfb, 0xdf, 0x88, 0xa9, 0xab, 0x20, 0x81, 0x40, 0x13, 0x73, 0x45, 0x13, - 0x18, 0x01, 0x11, 0x80, 0x08, 0x21, 0x00, 0x91, 0xcf, 0x88, 0xea, 0xbc, 0xa9, 0xba, 0x18, 0x01, - 0xdb, 0x19, 0x53, 0x33, 0x12, 0x08, 0x21, 0x32, 0x24, 0xa0, 0x9b, 0x40, 0x57, 0x22, 0x43, 0x23, - 0xf9, 0xac, 0xbb, 0x9a, 0xbb, 0x1a, 0x32, 0x90, 0x88, 0x20, 0x55, 0x34, 0xa1, 0x89, 0xa9, 0x0b, - 0xb8, 0x0a, 0x45, 0x12, 0x41, 0x14, 0x88, 0x61, 0x14, 0xa9, 0xb9, 0xaa, 0xed, 0xbb, 0xbc, 0xba, - 0x8a, 0x09, 0x65, 0x32, 0x34, 0x12, 0xb9, 0x38, 0x24, 0x22, 0x32, 0x43, 0x13, 0xd9, 0x1a, 0x63, - 0xa1, 0xbd, 0xbb, 0xaa, 0x9a, 0xca, 0x9b, 0xfd, 0xbb, 0x19, 0x02, 0x20, 0x35, 0x21, 0x00, 0x32, - 0x33, 0x54, 0x13, 0xd8, 0x0b, 0x21, 0x41, 0x34, 0x82, 0x99, 0xbd, 0xac, 0xea, 0xbc, 0x29, 0x12, - 0x19, 0x43, 0x03, 0x9a, 0xa8, 0xb9, 0xbf, 0x30, 0xb1, 0xab, 0xad, 0x41, 0x37, 0x81, 0x10, 0x52, - 0x22, 0x12, 0xca, 0xbd, 0xdb, 0xbb, 0x19, 0x33, 0x03, 0x10, 0x41, 0x02, 0x01, 0xba, 0xdf, 0x29, - 0x23, 0x88, 0x10, 0x54, 0x33, 0x84, 0x08, 0x21, 0x81, 0x41, 0x82, 0xca, 0xbf, 0x99, 0xba, 0xdc, - 0xab, 0xa9, 0x98, 0x9a, 0x09, 0x99, 0xda, 0x70, 0x25, 0x11, 0x32, 0x24, 0x34, 0x80, 0x08, 0x90, - 0x8b, 0x60, 0x25, 0x82, 0xaa, 0x38, 0xd2, 0xbe, 0xac, 0xca, 0xab, 0xab, 0x31, 0x04, 0xaa, 0x21, - 0xb2, 0x79, 0x25, 0x80, 0x09, 0x28, 0x64, 0x22, 0x12, 0x80, 0xcb, 0xbb, 0xba, 0x9b, 0xa9, 0x89, - 0x72, 0x34, 0x23, 0xd8, 0xbb, 0xca, 0xcc, 0x9b, 0x89, 0x41, 0x43, 0x34, 0x43, 0x22, 0x31, 0x23, - 0x31, 0x01, 0xd9, 0xbb, 0xa8, 0xdd, 0xbc, 0xbc, 0x9b, 0x89, 0x99, 0x98, 0x9b, 0x88, 0x9b, 0x73, - 0x27, 0x08, 0x32, 0x33, 0x43, 0x45, 0x22, 0x98, 0x18, 0x13, 0x88, 0x52, 0x92, 0xce, 0xab, 0xb9, - 0xbd, 0xbc, 0xba, 0xaa, 0x9a, 0x00, 0x18, 0x64, 0x13, 0x21, 0x22, 0x44, 0x12, 0x91, 0x39, 0x35, - 0x90, 0x38, 0x14, 0x18, 0x15, 0xb9, 0x1a, 0xe8, 0xbd, 0x9a, 0x89, 0xc8, 0x9d, 0x90, 0xba, 0x0b, - 0x43, 0x21, 0x45, 0x22, 0x22, 0x44, 0x34, 0x22, 0x00, 0xb9, 0x0a, 0x99, 0xf9, 0xdf, 0x98, 0x99, - 0x00, 0x30, 0x24, 0x80, 0xaa, 0xcc, 0xbc, 0xba, 0x8a, 0x53, 0x43, 0x43, 0x23, 0x23, 0x34, 0x33, - 0x11, 0x01, 0xca, 0x8b, 0xa0, 0xae, 0xbb, 0xbe, 0x9c, 0x88, 0xa0, 0xbc, 0x89, 0xc9, 0xac, 0x10, - 0x20, 0xd0, 0x2a, 0x12, 0xcb, 0x70, 0x27, 0x12, 0x01, 0x10, 0x00, 0x09, 0x20, 0x24, 0xb9, 0x1a, - 0xc1, 0x8c, 0x81, 0xd9, 0xbe, 0xba, 0x9d, 0x08, 0x20, 0x34, 0x13, 0x08, 0x53, 0x92, 0xac, 0x18, - 0xa9, 0x9a, 0x71, 0x02, 0x28, 0x36, 0x03, 0xcb, 0x09, 0x88, 0x51, 0x24, 0xea, 0xbc, 0xb9, 0xaa, - 0xac, 0x19, 0x82, 0x89, 0x75, 0x23, 0x21, 0x02, 0x98, 0x18, 0x33, 0x32, 0x00, 0x22, 0x02, 0xbb, - 0xd8, 0xaf, 0x88, 0xb8, 0xdf, 0xcb, 0xcc, 0x9a, 0x99, 0xba, 0x9a, 0x52, 0x34, 0x45, 0x32, 0x13, - 0x88, 0x88, 0x88, 0x10, 0xa8, 0x38, 0x27, 0x91, 0x18, 0x91, 0xdc, 0xad, 0x09, 0x18, 0x01, 0x08, - 0x98, 0xdd, 0xbc, 0xaa, 0x88, 0x08, 0x10, 0x45, 0x23, 0x12, 0x44, 0x54, 0x12, 0x80, 0x98, 0xa8, - 0xbb, 0x18, 0xb9, 0x1b, 0xf8, 0xdf, 0x88, 0x89, 0x08, 0x80, 0x08, 0x53, 0x12, 0x00, 0x28, 0x12, - 0xb0, 0xad, 0x52, 0x53, 0x33, 0x01, 0x08, 0x91, 0xcd, 0x88, 0x88, 0x11, 0xfa, 0x9f, 0x88, 0x9a, - 0xca, 0x9a, 0x8b, 0x32, 0x34, 0x32, 0x34, 0x13, 0x11, 0x31, 0x24, 0x42, 0x13, 0xba, 0x5a, 0x57, - 0x81, 0x00, 0x98, 0x99, 0xb9, 0xca, 0xba, 0xdf, 0xab, 0x9a, 0x99, 0x10, 0x81, 0x39, 0x32, 0x35, - 0x44, 0x35, 0x23, 0x00, 0x21, 0x81, 0x18, 0x90, 0xdf, 0x19, 0xa8, 0x09, 0x01, 0xca, 0x09, 0xca, - 0x0a, 0x41, 0x92, 0xac, 0xfa, 0x8a, 0x89, 0x00, 0x54, 0x12, 0x63, 0x33, 0x32, 0x80, 0xbb, 0x0b, - 0x12, 0xa8, 0xdc, 0x9d, 0x08, 0xcc, 0xbb, 0xcd, 0xba, 0x8a, 0x00, 0x41, 0x14, 0x01, 0x53, 0x12, - 0x92, 0x0a, 0x63, 0x03, 0x21, 0x23, 0x22, 0x02, 0x18, 0x36, 0xe9, 0x9b, 0x22, 0xfa, 0xaa, 0xa8, - 0xab, 0xc9, 0xbb, 0x8b, 0xaa, 0x88, 0x41, 0x77, 0x03, 0x99, 0x09, 0x91, 0x30, 0x03, 0x00, 0x54, - 0x91, 0x71, 0x17, 0x88, 0x08, 0xa0, 0xbc, 0x88, 0xa8, 0xc9, 0xbd, 0x8a, 0x80, 0x28, 0x03, 0x20, - 0x53, 0x23, 0x73, 0x13, 0x00, 0x88, 0x00, 0x08, 0xd8, 0x8b, 0x12, 0xc0, 0xae, 0x98, 0x9d, 0x00, - 0x91, 0xdc, 0xbb, 0x8a, 0x10, 0x11, 0x90, 0x28, 0x46, 0x23, 0x22, 0x11, 0x46, 0x43, 0x34, 0x12, - 0x80, 0x08, 0x80, 0x43, 0xc8, 0xbc, 0xab, 0xcd, 0xab, 0x99, 0xca, 0xbc, 0x9b, 0x09, 0x22, 0x21, - 0xfa, 0x8d, 0x32, 0x10, 0x45, 0x22, 0x33, 0x33, 0xa1, 0x2b, 0x47, 0x80, 0x99, 0x11, 0xc9, 0xcc, - 0x9c, 0xa8, 0x8b, 0xa0, 0xcb, 0x20, 0x34, 0x43, 0x82, 0x9a, 0x00, 0x98, 0x09, 0x01, 0xcb, 0x88, - 0x30, 0x75, 0x15, 0x20, 0x45, 0x92, 0x9a, 0xb8, 0xdf, 0xcb, 0x09, 0x02, 0xa9, 0x08, 0x20, 0x53, - 0x02, 0x21, 0x23, 0x00, 0x10, 0x24, 0x51, 0x25, 0x90, 0x28, 0xc0, 0x8c, 0x20, 0x80, 0x88, 0xba, - 0x19, 0xb2, 0xff, 0xad, 0x99, 0xba, 0x99, 0x08, 0x90, 0x29, 0x34, 0x33, 0x55, 0x25, 0x01, 0x10, - 0x11, 0x40, 0x05, 0x08, 0x10, 0x90, 0x20, 0xa1, 0xff, 0x8a, 0x98, 0xa9, 0x20, 0x82, 0xa9, 0xbd, - 0x29, 0x12, 0x20, 0x82, 0xbe, 0x19, 0x34, 0x12, 0x20, 0xa8, 0x31, 0x72, 0x27, 0x01, 0xa8, 0x8a, - 0xfc, 0x9b, 0x88, 0x80, 0x38, 0x26, 0x01, 0x08, 0x90, 0xcb, 0x18, 0x91, 0x8d, 0x11, 0xc9, 0xac, - 0x39, 0x77, 0x22, 0x10, 0x12, 0x00, 0x12, 0x81, 0xfd, 0xac, 0x8a, 0x98, 0x89, 0x09, 0x01, 0x21, - 0xa0, 0x9a, 0x9a, 0x52, 0x42, 0xb3, 0xae, 0x31, 0x26, 0x20, 0x34, 0x11, 0x08, 0x21, 0x34, 0x01, - 0x99, 0x0a, 0xa3, 0xcf, 0xcd, 0x89, 0x9a, 0x98, 0x8d, 0x11, 0x01, 0x89, 0xa9, 0xbc, 0xcb, 0x0a, - 0x64, 0x12, 0x34, 0x33, 0x12, 0x31, 0x16, 0xb9, 0xaf, 0x0a, 0x01, 0xa9, 0x40, 0x82, 0xb9, 0x8a, - 0xa0, 0xdb, 0xbd, 0x98, 0x8a, 0x40, 0x37, 0x23, 0x01, 0x98, 0x19, 0x26, 0x22, 0x91, 0xa9, 0x68, - 0x93, 0xdf, 0xaa, 0x9b, 0x00, 0x10, 0x52, 0x12, 0x90, 0xa9, 0xcb, 0xcd, 0xab, 0x18, 0x31, 0x27, - 0x12, 0x01, 0x30, 0x54, 0x33, 0x31, 0x23, 0x82, 0xcb, 0x88, 0xca, 0xcf, 0xac, 0x19, 0x91, 0x09, - 0x88, 0x00, 0xeb, 0x9a, 0x89, 0x09, 0x02, 0x88, 0x30, 0x57, 0x01, 0x32, 0x02, 0x20, 0x22, 0x80, - 0x73, 0x23, 0xcb, 0x9b, 0x9a, 0x80, 0xfb, 0x9b, 0xdb, 0x9b, 0x18, 0x11, 0x02, 0x80, 0x71, 0x13, - 0x20, 0x84, 0xbc, 0x70, 0x24, 0x12, 0x11, 0xa9, 0xcb, 0xcc, 0x89, 0xa9, 0xa9, 0x29, 0x92, 0x38, - 0x93, 0xdd, 0xbd, 0x9d, 0x01, 0x51, 0x23, 0x02, 0x00, 0x31, 0x73, 0x35, 0x12, 0x21, 0x81, 0x9b, - 0xca, 0xdb, 0xbd, 0x8a, 0x98, 0xbd, 0x19, 0x32, 0x12, 0x43, 0xd8, 0x9a, 0xeb, 0xac, 0x0a, 0x11, - 0x44, 0x12, 0x32, 0x33, 0x14, 0xa8, 0x9b, 0x89, 0x98, 0x20, 0x37, 0xa1, 0xbd, 0x18, 0x41, 0x92, - 0xac, 0x08, 0x02, 0xdc, 0x09, 0x12, 0xc9, 0xba, 0xad, 0x40, 0x84, 0x08, 0x44, 0x21, 0x01, 0x98, - 0xbc, 0xec, 0xac, 0x9a, 0x38, 0x36, 0x01, 0x80, 0x11, 0x22, 0xc1, 0xad, 0x8a, 0x90, 0x09, 0x31, - 0x12, 0x23, 0x12, 0x72, 0x16, 0x32, 0x82, 0xde, 0x89, 0x00, 0x01, 0x99, 0x01, 0x89, 0x52, 0x24, - 0x02, 0xeb, 0xcb, 0xba, 0x9a, 0xa0, 0xad, 0x9a, 0x31, 0x24, 0x64, 0x13, 0xa0, 0xcb, 0x09, 0x11, - 0x21, 0x20, 0x34, 0x55, 0x35, 0x02, 0x08, 0x11, 0xc8, 0xae, 0x08, 0xb8, 0xbc, 0xcb, 0xbb, 0x9c, - 0x18, 0x81, 0x19, 0x14, 0x51, 0x44, 0x23, 0x08, 0x81, 0x98, 0xac, 0x33, 0xb9, 0xbb, 0x58, 0x24, - 0x81, 0x89, 0xfb, 0xab, 0xba, 0x49, 0x25, 0xb0, 0x9e, 0x00, 0x00, 0x88, 0x61, 0x13, 0x02, 0x41, - 0x16, 0x12, 0x90, 0x9c, 0x00, 0xd9, 0xad, 0x80, 0x88, 0x10, 0x22, 0xb0, 0xff, 0xaa, 0x09, 0x22, - 0x21, 0x00, 0x24, 0xb8, 0xaa, 0x40, 0x13, 0x45, 0x12, 0x10, 0x45, 0x01, 0x89, 0x30, 0x34, 0xc8, - 0x9b, 0xe9, 0xbe, 0x9b, 0xaa, 0xbb, 0xab, 0xaa, 0x71, 0x25, 0x00, 0x22, 0x33, 0x90, 0xaa, 0x18, - 0x32, 0xb2, 0xbf, 0x58, 0x12, 0x00, 0x42, 0xb1, 0xae, 0x89, 0x18, 0x22, 0xc8, 0x8c, 0x30, 0x25, - 0x90, 0xaa, 0x53, 0x82, 0xac, 0x18, 0x56, 0x23, 0x88, 0x80, 0xda, 0xbb, 0xba, 0x18, 0x12, 0xfc, - 0xab, 0x28, 0x81, 0x88, 0x11, 0x83, 0xa9, 0x38, 0x27, 0x90, 0x30, 0x90, 0x49, 0x14, 0x42, 0x55, - 0x04, 0x08, 0xb8, 0xae, 0x08, 0xc8, 0xac, 0x21, 0x33, 0x12, 0x32, 0x83, 0xfe, 0x9c, 0x10, 0xaa, - 0x89, 0x42, 0x32, 0x13, 0xa9, 0xb9, 0x9a, 0xad, 0x09, 0x20, 0xa3, 0x79, 0x14, 0x22, 0x44, 0x14, - 0xa8, 0x98, 0x88, 0xbc, 0x0a, 0x25, 0xea, 0x8b, 0x53, 0x12, 0x88, 0x80, 0x52, 0x03, 0xca, 0xaa, - 0x21, 0xb1, 0xcf, 0x19, 0x91, 0xeb, 0x9c, 0x08, 0x32, 0x82, 0x8a, 0x13, 0x32, 0x11, 0x42, 0x67, - 0x80, 0x9a, 0x99, 0x01, 0x08, 0xc9, 0x98, 0x9b, 0xe9, 0x1b, 0x24, 0x92, 0xbf, 0x08, 0x22, 0x44, - 0x53, 0x82, 0xba, 0x10, 0x00, 0x01, 0xaa, 0x18, 0xfb, 0xbf, 0x18, 0xa1, 0xbc, 0x8a, 0x32, 0x33, - 0x13, 0x38, 0x43, 0xb8, 0xff, 0x28, 0x11, 0x31, 0x37, 0x81, 0x00, 0x98, 0xaa, 0x18, 0x80, 0xbc, - 0x40, 0x02, 0x18, 0x12, 0xb8, 0xcf, 0xaa, 0xcb, 0xbc, 0x9b, 0x18, 0x32, 0x43, 0x37, 0x03, 0x10, - 0x01, 0x08, 0xb9, 0xbd, 0xcd, 0xaa, 0x00, 0x20, 0x43, 0x23, 0x51, 0x15, 0x80, 0xa9, 0xdc, 0xbb, - 0x9b, 0xb8, 0x9b, 0x42, 0x02, 0x31, 0x55, 0x22, 0x20, 0x43, 0x34, 0x34, 0xd8, 0xab, 0x99, 0xdc, - 0x0a, 0x82, 0xcb, 0xbb, 0x99, 0x28, 0x06, 0x88, 0x08, 0x24, 0x32, 0x37, 0x24, 0x80, 0x31, 0x81, - 0x18, 0x24, 0xb9, 0xaa, 0x9a, 0xda, 0x9a, 0x9a, 0xab, 0xcf, 0xac, 0x9a, 0x89, 0x31, 0x24, 0x22, - 0x92, 0x20, 0xc9, 0x60, 0x34, 0x12, 0x33, 0x03, 0xfb, 0x8d, 0x98, 0xdc, 0xaa, 0xbc, 0x8c, 0x80, - 0x38, 0x46, 0x24, 0x12, 0x02, 0x80, 0xe9, 0x9b, 0x89, 0x00, 0x09, 0xba, 0x18, 0x31, 0x22, 0x31, - 0x92, 0x64, 0xfa, 0x8d, 0x20, 0xa0, 0x8c, 0x20, 0x13, 0xaa, 0x8a, 0x73, 0x34, 0x91, 0x19, 0x22, - 0x80, 0x10, 0xc8, 0xcc, 0x89, 0x91, 0xed, 0x89, 0x21, 0x44, 0x33, 0x23, 0xc8, 0xbc, 0x38, 0x02, - 0xa9, 0xd9, 0x8c, 0x00, 0x08, 0x88, 0x10, 0x91, 0xfc, 0x29, 0x37, 0xa1, 0xaa, 0xba, 0x9a, 0xca, - 0x9c, 0x31, 0x24, 0x34, 0xb8, 0x2a, 0x92, 0xdf, 0x09, 0x10, 0x62, 0x24, 0x00, 0x89, 0x22, 0x83, - 0xcd, 0xab, 0x98, 0x9a, 0xab, 0x41, 0x33, 0xc8, 0x9b, 0x48, 0x33, 0xeb, 0x8a, 0xd9, 0xcd, 0x28, - 0x35, 0x23, 0x12, 0x01, 0x89, 0x41, 0x24, 0x98, 0xda, 0xbd, 0x8a, 0x98, 0x9a, 0x0a, 0x43, 0x23, - 0x42, 0x36, 0x14, 0x80, 0x90, 0x19, 0xb1, 0xad, 0x9a, 0x99, 0x32, 0xf0, 0x1a, 0x25, 0xa1, 0x9a, - 0x89, 0xaa, 0x08, 0x10, 0xfb, 0xbb, 0xce, 0x9b, 0x89, 0x11, 0x29, 0x25, 0x08, 0x74, 0x15, 0x99, - 0x08, 0x80, 0x98, 0x8a, 0xca, 0x8c, 0x31, 0x35, 0x83, 0xbc, 0x09, 0x23, 0xc0, 0xbd, 0x09, 0x92, - 0xae, 0x30, 0x02, 0xaa, 0x9a, 0x18, 0x35, 0x44, 0x02, 0x09, 0x82, 0x72, 0x57, 0x02, 0x99, 0xba, - 0xdb, 0x9a, 0x01, 0x00, 0x01, 0x20, 0x12, 0x82, 0x61, 0x13, 0x90, 0xcb, 0x9a, 0x51, 0x35, 0x11, - 0x80, 0xb9, 0x10, 0x18, 0x57, 0x03, 0xdc, 0xac, 0xab, 0x9a, 0x08, 0x98, 0x32, 0x12, 0x21, 0x31, - 0x54, 0x02, 0xbc, 0x61, 0x22, 0x90, 0x0b, 0xb9, 0x09, 0xec, 0x89, 0x00, 0xd9, 0xbb, 0x30, 0x15, - 0x22, 0x41, 0x26, 0x11, 0x92, 0xdd, 0xbb, 0xbb, 0xab, 0x42, 0x24, 0x12, 0x18, 0x13, 0x20, 0x91, - 0xbf, 0x59, 0x45, 0x03, 0x8a, 0x98, 0xaa, 0xcb, 0x9a, 0x99, 0x38, 0x47, 0x12, 0x28, 0x43, 0x02, - 0xba, 0xbc, 0xcb, 0xab, 0x53, 0x82, 0xca, 0x28, 0x43, 0x02, 0x40, 0x45, 0xa1, 0xac, 0xb9, 0xac, - 0xab, 0x89, 0x31, 0x32, 0x73, 0x81, 0x89, 0x10, 0x02, 0x32, 0x90, 0xfe, 0xcc, 0x9a, 0x80, 0x81, - 0x08, 0x20, 0x04, 0x88, 0x72, 0x16, 0xa0, 0x0a, 0x10, 0x00, 0x10, 0x98, 0xaa, 0xcf, 0x89, 0x99, - 0x28, 0x14, 0x98, 0x19, 0x22, 0x20, 0x46, 0x82, 0xba, 0x9a, 0xa9, 0x8b, 0x56, 0x82, 0xab, 0x54, - 0x02, 0x31, 0x35, 0x23, 0x91, 0xac, 0x89, 0xf9, 0x9b, 0x08, 0x82, 0xeb, 0xbb, 0x18, 0x32, 0x54, - 0x81, 0xca, 0x29, 0x23, 0xa8, 0x18, 0x08, 0x02, 0x80, 0xa0, 0x0f, 0x34, 0x32, 0xb9, 0xde, 0x8b, - 0x90, 0xae, 0x9b, 0x89, 0x88, 0x99, 0x00, 0xaf, 0x62, 0x81, 0x18, 0x36, 0x02, 0x80, 0x53, 0x91, - 0xaa, 0xb9, 0xbe, 0x8b, 0x21, 0x01, 0x54, 0x83, 0xaa, 0x00, 0xd9, 0xac, 0x80, 0x30, 0x14, 0xcd, - 0x0a, 0x02, 0x40, 0x14, 0x21, 0x53, 0x33, 0x35, 0x12, 0xb8, 0xdc, 0xcb, 0xbb, 0xab, 0x09, 0x21, - 0x32, 0x55, 0x01, 0x20, 0x24, 0xa1, 0xb9, 0xbb, 0xcb, 0xdf, 0x8a, 0x21, 0x81, 0x00, 0x43, 0x35, - 0x82, 0x90, 0xba, 0xbc, 0xbc, 0x0a, 0x42, 0x93, 0x9a, 0x12, 0xc9, 0x19, 0xa9, 0xba, 0xee, 0x1b, - 0x34, 0x81, 0x10, 0xa8, 0x3a, 0x57, 0xa8, 0x88, 0x99, 0xbb, 0x71, 0x25, 0x81, 0x98, 0x00, 0x32, - 0x02, 0xa0, 0xbf, 0x89, 0xca, 0x29, 0x02, 0xcb, 0x9a, 0xaa, 0x9b, 0x61, 0x55, 0x23, 0x32, 0x32, - 0x91, 0xaa, 0xdb, 0xbb, 0x9b, 0xab, 0xaa, 0x70, 0x26, 0x31, 0x23, 0xc8, 0xbd, 0xba, 0xda, 0x9e, - 0x89, 0x00, 0x00, 0x31, 0x24, 0x53, 0x44, 0x22, 0x80, 0x99, 0xba, 0xad, 0xa9, 0xbc, 0xaa, 0xaa, - 0x39, 0x25, 0x43, 0x21, 0x25, 0x22, 0xb1, 0xcf, 0xbb, 0xbd, 0x9a, 0x20, 0x44, 0x12, 0x20, 0x23, - 0x02, 0x08, 0xa0, 0x89, 0x29, 0x73, 0x37, 0x11, 0xb9, 0xdb, 0xab, 0x08, 0xc9, 0x9a, 0x18, 0x01, - 0x41, 0x33, 0x23, 0xa0, 0xaa, 0xb9, 0xac, 0x55, 0x33, 0xe9, 0x09, 0x33, 0x84, 0xaa, 0x58, 0x36, - 0xa0, 0x19, 0xc8, 0xcd, 0x9a, 0x89, 0x12, 0x22, 0xb0, 0xaf, 0x00, 0x20, 0x41, 0x43, 0x12, 0x11, - 0x91, 0x9a, 0x02, 0xda, 0xde, 0x9b, 0x21, 0x90, 0x2a, 0x36, 0x12, 0x91, 0x18, 0x83, 0xff, 0xab, - 0xcb, 0xbb, 0x29, 0x33, 0x31, 0x45, 0x34, 0x82, 0x98, 0x10, 0x43, 0xa0, 0x9c, 0x10, 0x12, 0x40, - 0x03, 0xb9, 0x4a, 0x15, 0xba, 0x19, 0x91, 0xed, 0xab, 0x98, 0xab, 0xbb, 0x0a, 0x52, 0x03, 0xca, - 0xbb, 0x2b, 0x77, 0x22, 0x23, 0x23, 0x12, 0x11, 0x92, 0xca, 0xdd, 0xbd, 0xbc, 0x1a, 0x43, 0x03, - 0xa9, 0x08, 0x10, 0x22, 0x25, 0xb9, 0xda, 0x8b, 0x73, 0x03, 0x80, 0x99, 0x09, 0x11, 0x33, 0xcb, - 0x8a, 0x01, 0xfd, 0xab, 0xbb, 0x80, 0xcb, 0x99, 0x11, 0x22, 0x22, 0x34, 0xb1, 0xef, 0xba, 0x42, - 0x32, 0x32, 0x23, 0x44, 0x01, 0x31, 0x35, 0x11, 0x90, 0x48, 0x44, 0x83, 0x99, 0xca, 0xce, 0xbb, - 0xbc, 0x9c, 0x00, 0x10, 0x01, 0xca, 0x38, 0x33, 0x44, 0x23, 0x62, 0x33, 0x81, 0x10, 0xa1, 0x0b, - 0xd1, 0xcf, 0x9a, 0x00, 0x21, 0x01, 0xba, 0x89, 0x89, 0x30, 0x25, 0xfb, 0x89, 0x21, 0x33, 0x08, - 0x12, 0xfc, 0x9b, 0x43, 0xb1, 0x0c, 0x52, 0x34, 0x34, 0xc8, 0xad, 0x88, 0xba, 0xbc, 0x99, 0x90, - 0x8a, 0x30, 0x36, 0x02, 0x31, 0x04, 0x98, 0xab, 0x41, 0x45, 0x12, 0x42, 0x83, 0x10, 0x31, 0x45, - 0xa2, 0xcd, 0x0a, 0xa0, 0xab, 0x88, 0xda, 0xa9, 0xbb, 0x1a, 0x24, 0x33, 0x73, 0xc1, 0xab, 0x19, - 0x11, 0xeb, 0xab, 0x30, 0xb8, 0x73, 0x27, 0x21, 0x22, 0x01, 0x28, 0x13, 0xcd, 0xab, 0x99, 0x11, - 0xdd, 0xac, 0x88, 0x00, 0x11, 0x01, 0x18, 0x44, 0x33, 0x82, 0xbc, 0x0c, 0x21, 0x52, 0x84, 0xaa, - 0xa9, 0xeb, 0xbb, 0x99, 0xaa, 0x30, 0x24, 0x02, 0x42, 0xb0, 0xa9, 0xdb, 0xab, 0x20, 0x09, 0x57, - 0x24, 0x82, 0xab, 0x20, 0x20, 0x67, 0x43, 0x12, 0x80, 0x99, 0xb9, 0xbe, 0x99, 0x00, 0xc8, 0x0a, - 0x24, 0x13, 0xd9, 0xbe, 0x8a, 0xba, 0xac, 0x00, 0x51, 0x13, 0x21, 0x37, 0x01, 0xaa, 0x89, 0x08, - 0x73, 0x12, 0x11, 0x11, 0x90, 0xb9, 0xbe, 0x89, 0xaa, 0x8b, 0x53, 0x10, 0xc8, 0x9b, 0x01, 0x99, - 0x99, 0xdd, 0xab, 0x21, 0xb0, 0xaa, 0x0b, 0xec, 0x59, 0x34, 0x32, 0x44, 0x24, 0x01, 0xa9, 0xbc, - 0xcb, 0xcb, 0xcb, 0xab, 0x20, 0x53, 0x12, 0x31, 0x24, 0x22, 0x82, 0x38, 0x36, 0x13, 0x98, 0x19, - 0x36, 0x90, 0xab, 0xdb, 0x9a, 0xc9, 0x8b, 0x81, 0xfa, 0xbb, 0xb0, 0xbe, 0x09, 0x01, 0xcb, 0x39, - 0x52, 0x13, 0x19, 0x13, 0xa9, 0xa0, 0x58, 0x37, 0x46, 0x12, 0x00, 0x08, 0x11, 0x11, 0x99, 0x73, - 0x91, 0xea, 0xcb, 0xbb, 0x9b, 0xac, 0x89, 0x9a, 0x28, 0x47, 0x83, 0x08, 0x11, 0xa8, 0xac, 0x31, - 0x02, 0x99, 0x41, 0x24, 0x23, 0x33, 0xfc, 0x9a, 0x99, 0xa9, 0x09, 0xa8, 0x51, 0x63, 0x25, 0x10, - 0x00, 0xa9, 0x0a, 0xa1, 0xbf, 0x99, 0xa0, 0xab, 0x54, 0x42, 0x25, 0x00, 0x30, 0x16, 0xa0, 0x89, - 0xfb, 0xba, 0xba, 0xbc, 0x89, 0x00, 0x10, 0x32, 0x37, 0x80, 0x21, 0x02, 0xda, 0x1a, 0x52, 0x34, - 0x14, 0x81, 0x10, 0x81, 0x9b, 0xda, 0xae, 0x19, 0x90, 0x18, 0x14, 0xba, 0xab, 0x02, 0xcc, 0x89, - 0x88, 0xba, 0x1b, 0x52, 0x05, 0xcc, 0x9a, 0x89, 0x62, 0x32, 0x23, 0xca, 0x0a, 0x13, 0x19, 0x77, - 0x12, 0x80, 0x88, 0x10, 0x00, 0xba, 0xdc, 0xbb, 0xca, 0xab, 0x00, 0x00, 0x42, 0x45, 0x14, 0x00, - 0xa9, 0x38, 0x37, 0x92, 0x08, 0x01, 0xa0, 0xbd, 0xab, 0xb9, 0xcf, 0x99, 0x09, 0x41, 0x12, 0x31, - 0x02, 0xba, 0xbd, 0x11, 0xa8, 0xcd, 0x18, 0x10, 0x23, 0x73, 0x24, 0x22, 0x12, 0x23, 0x20, 0x33, - 0xa1, 0xce, 0xbb, 0xcc, 0xcd, 0x9b, 0x98, 0x00, 0xb9, 0x8b, 0x90, 0xdb, 0x50, 0x24, 0x21, 0x12, - 0x90, 0x3a, 0x37, 0x88, 0x11, 0x82, 0x99, 0xa9, 0x50, 0x57, 0x12, 0x81, 0x88, 0x98, 0xda, 0xab, - 0x00, 0xba, 0x8b, 0xda, 0x9b, 0x30, 0x13, 0x10, 0xa1, 0x53, 0x45, 0x01, 0x20, 0x12, 0x99, 0xcb, - 0xaa, 0x0a, 0x32, 0x45, 0x23, 0xa9, 0xdd, 0xdb, 0xcb, 0xaa, 0xaa, 0x9a, 0x52, 0x24, 0x11, 0x31, - 0x33, 0x52, 0x34, 0x12, 0x54, 0x23, 0x90, 0x19, 0xda, 0xdb, 0xcc, 0xba, 0x9a, 0x09, 0x00, 0x10, - 0x11, 0x90, 0x19, 0xb1, 0x9c, 0x12, 0x44, 0x55, 0x23, 0xa0, 0x99, 0x09, 0x44, 0x12, 0x00, 0x42, - 0x01, 0x20, 0x43, 0x92, 0x9c, 0xb8, 0xcf, 0xbb, 0x9a, 0x09, 0x19, 0x11, 0x32, 0x91, 0x1b, 0x30, - 0x17, 0xbb, 0x41, 0x23, 0x13, 0x90, 0xbb, 0xb9, 0x99, 0xdb, 0xeb, 0x8a, 0x32, 0x34, 0x81, 0xcb, - 0xba, 0xbe, 0x8b, 0x53, 0x82, 0x90, 0x09, 0x63, 0x11, 0xa0, 0x30, 0x25, 0x90, 0x0a, 0x56, 0x13, - 0x80, 0x88, 0xeb, 0xbc, 0x8a, 0x21, 0xa8, 0xba, 0xca, 0xdb, 0xab, 0xa8, 0x9b, 0x33, 0x26, 0x42, - 0x44, 0x25, 0x22, 0x11, 0x90, 0x99, 0x09, 0x91, 0xca, 0xcd, 0x9a, 0x89, 0x99, 0x3a, 0x37, 0x21, - 0x20, 0x22, 0xb9, 0x0b, 0xfb, 0xbc, 0x9c, 0x88, 0x18, 0x43, 0x81, 0x31, 0x02, 0x00, 0x12, 0x33, - 0x14, 0x10, 0x21, 0x33, 0x03, 0xcf, 0xaa, 0xaa, 0xab, 0x0a, 0x12, 0x41, 0x35, 0x90, 0xaa, 0xa1, - 0xbb, 0x31, 0x51, 0x13, 0x89, 0x55, 0x13, 0x80, 0x19, 0x22, 0xe9, 0xab, 0x88, 0xa8, 0xdc, 0xab, - 0xb9, 0x09, 0xa0, 0xcb, 0x28, 0x73, 0x02, 0x01, 0x11, 0x24, 0x99, 0x40, 0x25, 0x01, 0x00, 0x20, - 0x91, 0x99, 0x9a, 0x09, 0x42, 0x92, 0x10, 0x43, 0xb0, 0xbe, 0xb9, 0xbd, 0xdb, 0xab, 0x11, 0x00, - 0x28, 0x55, 0x22, 0x11, 0x10, 0x32, 0x34, 0x02, 0xcb, 0x9b, 0xb9, 0xaf, 0x9a, 0xa9, 0xcb, 0x09, - 0x23, 0x33, 0x13, 0x21, 0x23, 0x21, 0x11, 0xb0, 0x9b, 0x39, 0x13, 0xab, 0x00, 0x00, 0x20, 0x33, - 0x33, 0x21, 0x01, 0x99, 0x19, 0x93, 0xbd, 0xcb, 0x99, 0xcb, 0x89, 0x41, 0x24, 0x81, 0xa8, 0x9a, - 0x9a, 0x09, 0x30, 0x53, 0x01, 0x30, 0x35, 0x14, 0x10, 0x33, 0xa1, 0xbb, 0xbb, 0x9a, 0xb9, 0xab, - 0xbb, 0x0a, 0xbb, 0xac, 0x10, 0xba, 0xbb, 0xbb, 0x32, 0x43, 0x33, 0x33, 0x12, 0x12, 0x99, 0x9a, - 0x10, 0xd9, 0xab, 0x20, 0x12, 0x31, 0x01, 0x01, 0xb9, 0x9a, 0x09, 0x21, 0xb0, 0xae, 0x10, 0x90, - 0xa9, 0x20, 0x53, 0x13, 0x00, 0x19, 0x35, 0x83, 0x99, 0x0b, 0x21, 0xb9, 0xbc, 0xba, 0xdb, 0x89, - 0x09, 0x21, 0x33, 0x43, 0x00, 0x31, 0x13, 0xb0, 0xab, 0xb9, 0x99, 0x10, 0x23, 0xa0, 0x99, 0x32, - 0x31, 0x53, 0x02, 0x98, 0x00, 0x90, 0x9b, 0x00, 0xb9, 0xac, 0x08, 0x31, 0x92, 0xb9, 0x10, 0xc9, - 0x9b, 0x23, 0xb0, 0x9b, 0x21, 0x11, 0x22, 0x11, 0x21, 0x33, 0x03, 0xa9, 0x19, 0x21, 0x90, 0x9a, - 0xa9, 0x19, 0x99, 0xab, 0x99, 0xbb, 0x1a, 0x12, 0x12, 0x12, 0x01, 0x99, 0x10, 0x12, 0x11, 0x11, - 0x11, 0x91, 0x09, 0x10, 0x00, 0x9a, 0x29, 0x23, 0x91, 0x99, 0xa9, 0xab, 0xa9, 0x9a, 0x10, 0x01, - 0x09, 0x99, 0x11, 0x13, 0x11, 0x11, 0x22, 0x21, 0x12, 0x11, 0x01, 0xb9, 0x9b, 0xa9, 0x9a, 0x10, - 0x11, 0x21, 0x91, 0x19, 0x90, 0xa9, 0x99, 0x99, 0x99, 0x90, 0x99, 0x09, 0x00, 0x99, 0x10, 0x31, - 0x12, 0x01, 0x21, 0x22, 0x11, 0x10, 0x90, 0xb9, 0xab, 0x99, 0x9a, 0x11, 0x12, 0x90, 0x09, 0x90, - 0x99, 0x0a, 0x01, 0x00, 0x11, 0x11, 0x12, 0x11, 0x09, 0x00, 0x90, 0x19, 0x11, 0x11, 0x91, 0x90, - 0x90, 0xa9, 0x99, 0x0a, 0x99, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x01, 0x00, 0x01, - 0x99, 0x99, 0x99, 0x10, 0x00, 0x10, 0x19, 0x10, 0x01, 0x00, 0x00, 0x00, 0x99, 0x90, 0x09, 0x09, - 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, -}; - diff --git a/build/tests/yuv2rgb/yuv2rgb.rsf.template b/build/tests/yuv2rgb/yuv2rgb.rsf.template deleted file mode 100644 index a67b1fa4..00000000 --- a/build/tests/yuv2rgb/yuv2rgb.rsf.template +++ /dev/null @@ -1,222 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, 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$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit TmpJump: for TWL "ApplicationJump" function - # - #PermitLandingTmpJump $(TWL_IPL_MAKEROM_PERMIT_TMP_JUMP) - - ### - ### Setting for TWL - ### - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - WramMappingDirect $(TWL_IPL_RED_ROOT)/build/components/jackal.TWL/wram_regs/wram_regs.rbin - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SCFG: scfg lock [TRUE/FALSE] - # - LockSCFG FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # NANDAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # use "4NAJ" for hyena - GameCode HNAJ - GameCode NTRJ - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/debugsoft/AppJumpChecker/ReadMe_AppJumpChecker.txt b/debugsoft/AppJumpChecker/ReadMe_AppJumpChecker.txt deleted file mode 100644 index 5577ca42..00000000 --- a/debugsoft/AppJumpChecker/ReadMe_AppJumpChecker.txt +++ /dev/null @@ -1,57 +0,0 @@ -AppJumpChecker - -アプリジャンプ機能(ノーマルジャンプ)をテストするためのアプリセットです。 -======================================================== - -<概要> =============================================== -このテストでは、TWL本体にインポートされている全ての NAND アプリ、 -挿入されているカードアプリにアプリジャンプ(ノーマルジャンプ)を試すことが -できるテストアプリです。 - - -<使い方> ============================================= - -TwlNMenu を使って、appJumpChecker.tad をインポートします。 - -appJumpChecker を起動すると、下画面にランチャーを含むインポート済みの -NANDアプリのリスト(現在、36個までしか表示されません)、および -挿入されているカードアプリのイニシャルコード(英数字4文字)とタイトルID下位32ビットが表示されます。 - -(多少全ての表示までに時間がかかります) - -イニシャルコードは、製品用ROMヘッダを組み込んだ ROM でないと NTRJ が表示されます。 -タイトルID下位32ビットについて、NTRアプリは今後 TwlSDK で特別に作らない限りは何も表示されません。 -TWL アプリではイニシャルコードが逆順になった文字列が表示されます。 - -それぞれのイニシャルコードの右隣には、そのアプリがアプリジャンプされることを -許可しているかどうかのフラグが表示されています。 -○がつけられているアプリを選択し、Aボタンを押すことでアプリジャンプすることが可能です。 - -<操作方法> ============================================= -基本的に上画面に書いてあるとおりです。 - -Aボタン:選択中のNANDアプリにアプリジャンプを試みる。 - 失敗時には、上画面にエラーメッセージが表示されます。 - -Bボタン:選択中のNANDアプリにアプリジャンプを試みる。 - Aボタンとは異なり、通常外からは使われない内部関数を用います。 - 失敗時には、上画面にエラーメッセージが表示されます。 - -Yボタン:カードアプリに対して、アプリジャンプを試みる。 - 失敗時には、上画面にエラーメッセージが表示されます。 - -十字キー:NANDアプリの選択 - -<注意事項> ============================================= -アプリ起動中の、ゲームカードの挿抜には対応していません。 -あらかじめゲームカードを挿した状態で、本アプリを起動してください。 - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - - -<更新履歴>============================================ -2008/09/01 Bボタンに内部関数を使ってのアプリジャンプ(ノーマルジャンプ)を行う機能を追加 -2008/08/25 データタイトルへの判定の誤りを修正 -2008/08/23 新規追加 diff --git a/debugsoft/AppJumpChecker/appJumpChecker.nand.srl b/debugsoft/AppJumpChecker/appJumpChecker.nand.srl deleted file mode 100644 index e215f64e..00000000 Binary files a/debugsoft/AppJumpChecker/appJumpChecker.nand.srl and /dev/null differ diff --git a/debugsoft/AppJumpChecker/appJumpChecker.tad b/debugsoft/AppJumpChecker/appJumpChecker.tad deleted file mode 100644 index 5d53d88f..00000000 Binary files a/debugsoft/AppJumpChecker/appJumpChecker.tad and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/ReadMe_AppJump.txt b/debugsoft/ApplicationJumpTest/ReadMe_AppJump.txt deleted file mode 100644 index 7980ed21..00000000 --- a/debugsoft/ApplicationJumpTest/ReadMe_AppJump.txt +++ /dev/null @@ -1,77 +0,0 @@ -appjumpTest - -アプリジャンプ機能をテストするためのアプリセットです。 -======================================================== - -<概要> =============================================== -2種類のNAND アプリと 3種類のカードアプリで構成されます。 -各アプリ間で、アプリジャンプの機能を一通り試すことができます。 -アプリ間でのパラメータの受け渡し、ジャンプ元へのリターンも可能です。 - - -3種類のカードアプリについて - -| ファイル名 | イニシャルコード | 被ノーマルジャンプ | -| appjumpTestForCard.srl | 430A |  許可 | -| appjumpTestForCard_Fail.srl | 460A | 不許可 | -| appjumpTestForCard_AID.srl | 461A |  許可 | ------------------------------------------------------------------------------ - -<使い方> ============================================= -2種類のNAND アプリを TWL にインポートした状態で、カードアプリを起動してください。 - -操作方法は、下画面下部に一覧表示されます。 -ABXY ボタンがそれぞれに対応したターゲットへのアプリジャンプを実行します。 - -L/R ボタンで、アプリ間パラメータ(文字列データ)を次のジャンプ先へ渡すかどうかを -切り替えることができます(デフォルトは ON になっています)。 - -START ボタンを押すと、現在起動中のアプリ自身へのアプリジャンプを自動で繰り返すモードに入ります。 -中断するには、起動後上画面にメッセージが出ている間(約2秒間)に START ボタンを押してください。 - -(2008/08/30 追記) -異常系チェックのために、カードアプリを2種追加しました。 - -・ひとつめ(460A)について - 被ノーマルジャンプを許可していない TWL カードアプリです。 - NAND アプリからこのアプリにジャンプしようとすると、必ずエラーが返るはずです。 - -・ふたつめ(461A)について - 被ノーマルジャンプは許可していますが、最初のカードアプリとは TitleID が別物の TWL カードアプリです。 - 最初に、もう一方のノーマルジャンプを許可しているカードアプリ[430A]をスロットに挿入した状態で - テストを開始します。そこから NAND アプリにジャンプした後、カードを[461A] に差し替えます。 - そして、NAND アプリからカードアプリへノーマルジャンプを実行した際に、ジャンプできるかどうかをチェックします。 - - -<画面の見方> ========================================== -・上画面について - 起動中のアプリが 3種類の内どれかを色と文字で表します。 - (黄:CARD、紫:NAND-1、水色:NAND-2) - - APP JUMP -> 今までのアプリジャンプ実行回数です。 - DELIVERED PARAM -> アプリ間パラメータ渡しをONにしている場合、ジャンプ元へのリターンも含めて -  これまでのジャンプ元の履歴が 6つまで表示されます。 - エラー表示 -> アプリジャンプに失敗した場合、赤字でエラーが表示されます。 -  エラー表示が出た場合、それ以上アプリの実行はできませんので再起動してください。 - -・下画面について - DELIVER ARG: (ON or OFF) -> アプリ間パラメータ渡しを有効にするかどうかのフラグの状態です。 -  L/R ボタンで ON/OFF を切り替えることができます。 - AUTO JUMP TEST: (ON or OFF) -> 自分自身へのアプリジャンプを中断するまで繰り返すテストモードかどうかを示す値です。 - 操作方法一覧 -> 各ボタンの説明を表示しています。アプリによって、ボタンに割り当てられた -  ジャンプ先が異なりますので注意してください。 -  ただし、ジャンプ元へのリターンは Bボタン、自分自身へのジャンプは Xボタン固定です。 - -<その他注意事項> -初回起動時(アプリジャンプを一度も実行していない状態)に、ジャンプ元へのリターンを行うと、 -必ずエラーになります。 - - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - - -<更新履歴>============================================ -2008/08/30 カードアプリ2種追加について加筆修正 -2008/07/31 新規追加 diff --git a/debugsoft/ApplicationJumpTest/appendix_AppJump.txt b/debugsoft/ApplicationJumpTest/appendix_AppJump.txt deleted file mode 100644 index 3c082938..00000000 --- a/debugsoft/ApplicationJumpTest/appendix_AppJump.txt +++ /dev/null @@ -1,27 +0,0 @@ -appjumpTest - -資料 -======================================================== - -この手順でデバッグを行ってもらうと良いかもしれません。 - -(1) カードアプリから起動(NAND-1, NAND-2 はインポート済み) -(2) NAND-1 へのジャンプ(チェックシート No.1 に該当) -(3) NAND-2 へのジャンプ(同上) -(4) CARD へのジャンプ(同上) - -(5) NAND-1 or NAND-2 へジャンプ(チェックシート No.2 に該当) -(6) ジャンプ元リターン(チェックシート No.3 に該当) -(7) START ボタンで自動ジャンプを行わせ、しばらく放置(チェックシート No.4 に該当) - -(8) アプリジャンプ時に受け渡されるテキストデータが乱れたりしていないかをチェック - (チェックシート No.5 に該当) -(9) アプリジャンプ時に受け渡されるバイナリデータが壊れていたりしないかをチェック - (チェックシート No.6 に該当) - -(10) 適当にジャンプ先やジャンプ方法を組み合わせて、しばらくチェック。 - (チェックシート No.7 に該当) - - -<更新履歴>============================================ -2008/08/01 新規追加 diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForCard.srl b/debugsoft/ApplicationJumpTest/appjumpTestForCard.srl deleted file mode 100644 index 917e4c11..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForCard.srl and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForCard_AID.srl b/debugsoft/ApplicationJumpTest/appjumpTestForCard_AID.srl deleted file mode 100644 index 230f54e5..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForCard_AID.srl and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForCard_Fail.srl b/debugsoft/ApplicationJumpTest/appjumpTestForCard_Fail.srl deleted file mode 100644 index 78e4c4ce..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForCard_Fail.srl and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForNand1.nand.srl b/debugsoft/ApplicationJumpTest/appjumpTestForNand1.nand.srl deleted file mode 100644 index 78f13327..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForNand1.nand.srl and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForNand1.tad b/debugsoft/ApplicationJumpTest/appjumpTestForNand1.tad deleted file mode 100644 index a951b0d5..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForNand1.tad and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForNand2.nand.srl b/debugsoft/ApplicationJumpTest/appjumpTestForNand2.nand.srl deleted file mode 100644 index 90082c02..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForNand2.nand.srl and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjumpTestForNand2.tad b/debugsoft/ApplicationJumpTest/appjumpTestForNand2.tad deleted file mode 100644 index 757a0f3c..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjumpTestForNand2.tad and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjump_check_list_080801.xls b/debugsoft/ApplicationJumpTest/appjump_check_list_080801.xls deleted file mode 100644 index aa89475f..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjump_check_list_080801.xls and /dev/null differ diff --git a/debugsoft/ApplicationJumpTest/appjump_check_list_080823.xls b/debugsoft/ApplicationJumpTest/appjump_check_list_080823.xls deleted file mode 100644 index 33e5ec27..00000000 Binary files a/debugsoft/ApplicationJumpTest/appjump_check_list_080823.xls and /dev/null differ diff --git a/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.srl b/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.srl deleted file mode 100644 index 58814b4e..00000000 Binary files a/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.srl and /dev/null differ diff --git a/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.tad b/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.tad deleted file mode 100644 index c33c658d..00000000 Binary files a/debugsoft/CardRomHeaderChecker/CardRomHeaderChecker.tad and /dev/null differ diff --git a/debugsoft/NCFGCrusher/NCFGCrusher.srl b/debugsoft/NCFGCrusher/NCFGCrusher.srl deleted file mode 100644 index 5e69ef22..00000000 Binary files a/debugsoft/NCFGCrusher/NCFGCrusher.srl and /dev/null differ diff --git a/debugsoft/NotLaunch/NotLaunch_SYSTEM_ALL.tad b/debugsoft/NotLaunch/NotLaunch_SYSTEM_ALL.tad deleted file mode 100644 index 0387ca1a..00000000 Binary files a/debugsoft/NotLaunch/NotLaunch_SYSTEM_ALL.tad and /dev/null differ diff --git a/debugsoft/NotLaunch/NotLaunch_SYSTEM_America.tad b/debugsoft/NotLaunch/NotLaunch_SYSTEM_America.tad deleted file mode 100644 index a7f1a261..00000000 Binary files a/debugsoft/NotLaunch/NotLaunch_SYSTEM_America.tad and /dev/null differ diff --git a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Australia.tad b/debugsoft/NotLaunch/NotLaunch_SYSTEM_Australia.tad deleted file mode 100644 index b4102d0a..00000000 Binary files a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Australia.tad and /dev/null differ diff --git a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Europe.tad b/debugsoft/NotLaunch/NotLaunch_SYSTEM_Europe.tad deleted file mode 100644 index 3e5f04ba..00000000 Binary files a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Europe.tad and /dev/null differ diff --git a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Japan.tad b/debugsoft/NotLaunch/NotLaunch_SYSTEM_Japan.tad deleted file mode 100644 index ef311b51..00000000 Binary files a/debugsoft/NotLaunch/NotLaunch_SYSTEM_Japan.tad and /dev/null differ diff --git a/debugsoft/NotLaunch/ReadMe_NotLaunch.BAK b/debugsoft/NotLaunch/ReadMe_NotLaunch.BAK deleted file mode 100644 index 86cfe840..00000000 --- a/debugsoft/NotLaunch/ReadMe_NotLaunch.BAK +++ /dev/null @@ -1,19 +0,0 @@ -NotLaunch - -ランチャー上に表示されないシステムNANDアプリです。 -=================================================================== - -各リージョン版を用意しています。 - -NotLaunch_SYSTEM_ALL.tad 457A -NotLaunch_SYSTEM_Japan.tad 457J -NotLaunch_SYSTEM_America.tad 457E -NotLaunch_SYSTEM_Europe.tad 457P -NotLaunch_SYSTEM_Austraila.tad 457U - - - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - diff --git a/debugsoft/NotLaunch/ReadMe_NotLaunch.txt b/debugsoft/NotLaunch/ReadMe_NotLaunch.txt deleted file mode 100644 index 9c2c12b7..00000000 --- a/debugsoft/NotLaunch/ReadMe_NotLaunch.txt +++ /dev/null @@ -1,22 +0,0 @@ -NotLaunch - -ランチャー上に表示されないシステムNANDアプリです。 -=================================================================== - -各リージョン版を用意しています。 - -NotLaunch_SYSTEM_ALL.tad 457A -NotLaunch_SYSTEM_Japan.tad 457J -NotLaunch_SYSTEM_America.tad 457E -NotLaunch_SYSTEM_Europe.tad 457P -NotLaunch_SYSTEM_Austraila.tad 457U - - - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - -======================================================== -2008/08/25 新規追加 - diff --git a/debugsoft/SaveDataTest/SaveDataTest_SEQURE.tad b/debugsoft/SaveDataTest/SaveDataTest_SEQURE.tad deleted file mode 100644 index c5501f64..00000000 Binary files a/debugsoft/SaveDataTest/SaveDataTest_SEQURE.tad and /dev/null differ diff --git a/debugsoft/SaveDataTest/SaveDataTest_TARGET.tad b/debugsoft/SaveDataTest/SaveDataTest_TARGET.tad deleted file mode 100644 index bbc6ef08..00000000 Binary files a/debugsoft/SaveDataTest/SaveDataTest_TARGET.tad and /dev/null differ diff --git a/debugsoft/SaveDataTest/SaveDataTest_USER.tad b/debugsoft/SaveDataTest/SaveDataTest_USER.tad deleted file mode 100644 index b584a6ce..00000000 Binary files a/debugsoft/SaveDataTest/SaveDataTest_USER.tad and /dev/null differ diff --git a/debugsoft/TMPJumpTest/ReadMe_TMPJump.txt b/debugsoft/TMPJumpTest/ReadMe_TMPJump.txt deleted file mode 100644 index f20823bf..00000000 --- a/debugsoft/TMPJumpTest/ReadMe_TMPJump.txt +++ /dev/null @@ -1,56 +0,0 @@ -tmpjumpTest - -アプリジャンプ機能(TMPジャンプ)をテストするためのアプリセットです。 -======================================================== - -<概要> =============================================== -このテストでは、以下の 7つのアプリを使用します。 - ---------------------------------------------------------- -address | GameCode | Media | ---------------------------------+-----------+-----------+ -data/TestApp.srl | 433A | GameCard | -data/TestApp_HYBRID.srl | 434A | GameCard | -data/TestApp_LIMITED.srl | 435A | GameCard | tmp 格納用 ROM -data/TestApp_NTR_fail.srl | 458A | GameCard | -data/TestApp_TWL_fail.srl | 459A | GameCard | ---------------------------------------------------------- -bin/.../tmpjumpTest.srl | 436A | GameCard | 起動用 ROM -bin/.../tmpjumpTest.nand.tad | 437A | NAND | ---------------------------------------------------------- - -上の 5つのアプリは、下 2つのアプリに埋め込まれています。 - -<使い方> ============================================= - -まず、「フラッシュカードに書き込んだ 436A」または「インポートした 437A」を起動します。 - -436A, 437A では、選択したアプリを NAND の /tmp 以下へコピーし、TMPジャンプを実行します。 -TMP ジャンプ先のアプリからは、NITRO モードでビルドされている 433A を除く全てのアプリは -ジャンプ元のアプリへ戻ってくることができます。 - - - -(08/08/28 追加)アプリ2点追加、機能追加2点 -TMP ジャンプ先となるアプリとして、458A、459A の 2つを追加しました。 -これら 2つのアプリは「TMP ジャンプ不許可」のアプリなので、TMP ジャンプを実行すると -「必ず失敗」する仕様になっています。 - -TMP ジャンプ先のアプリから、さらに TMP ジャンプが実行できるようにしました。 -仕様では、「必ず失敗」するようになっています。 - -起動用 ROM で、リターンジャンプが可能になりました。 -一度 TMP ジャンプで飛んだあと、リターンジャンプによって起動用 ROM に戻り、 -再度リターンジャンプを実行すると、戻り先が設定されていないために -「必ず失敗」するはずです。 - - -======================================================== -なにか問題がありましたら、環境制作部 西本まで。 -nishimoto_takashi@nintendo.co.jp - -<更新履歴>============================================ -2008/09/02 量産機用ロムを追加 -2008/08/28 仕様追加に伴う加筆修正 -2008/08/12 新規追加 - diff --git a/debugsoft/TMPJumpTest/tmpjumpTest.srl b/debugsoft/TMPJumpTest/tmpjumpTest.srl deleted file mode 100644 index 79207218..00000000 Binary files a/debugsoft/TMPJumpTest/tmpjumpTest.srl and /dev/null differ diff --git a/debugsoft/TMPJumpTest/tmpjumpTest.tad b/debugsoft/TMPJumpTest/tmpjumpTest.tad deleted file mode 100644 index 058c1da8..00000000 Binary files a/debugsoft/TMPJumpTest/tmpjumpTest.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_A.tad b/debugsoft/TitleList/NORMAL/TitleList_A.tad deleted file mode 100644 index d509dc6f..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_A.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_B.tad b/debugsoft/TitleList/NORMAL/TitleList_B.tad deleted file mode 100644 index 5f88abad..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_B.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_C.tad b/debugsoft/TitleList/NORMAL/TitleList_C.tad deleted file mode 100644 index fee830d8..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_C.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_D.tad b/debugsoft/TitleList/NORMAL/TitleList_D.tad deleted file mode 100644 index b36172f6..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_D.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_E.tad b/debugsoft/TitleList/NORMAL/TitleList_E.tad deleted file mode 100644 index efb0b2e4..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_E.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_F.tad b/debugsoft/TitleList/NORMAL/TitleList_F.tad deleted file mode 100644 index 45e7b605..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_F.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_G.tad b/debugsoft/TitleList/NORMAL/TitleList_G.tad deleted file mode 100644 index f153bbcf..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_G.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_H.tad b/debugsoft/TitleList/NORMAL/TitleList_H.tad deleted file mode 100644 index 06cf49fd..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_H.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_I.tad b/debugsoft/TitleList/NORMAL/TitleList_I.tad deleted file mode 100644 index 67732ff5..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_I.tad and /dev/null differ diff --git a/debugsoft/TitleList/NORMAL/TitleList_J.tad b/debugsoft/TitleList/NORMAL/TitleList_J.tad deleted file mode 100644 index 5587c15a..00000000 Binary files a/debugsoft/TitleList/NORMAL/TitleList_J.tad and /dev/null differ diff --git a/debugsoft/TitleList/ROMset.xls b/debugsoft/TitleList/ROMset.xls deleted file mode 100644 index de182daf..00000000 Binary files a/debugsoft/TitleList/ROMset.xls and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_A.tad b/debugsoft/TitleList/SPECIAL/TitleList_A.tad deleted file mode 100644 index 58c652d3..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_A.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_B.tad b/debugsoft/TitleList/SPECIAL/TitleList_B.tad deleted file mode 100644 index a9fdff9f..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_B.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_C.tad b/debugsoft/TitleList/SPECIAL/TitleList_C.tad deleted file mode 100644 index 7a139fea..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_C.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_D.tad b/debugsoft/TitleList/SPECIAL/TitleList_D.tad deleted file mode 100644 index 7b60f54f..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_D.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_E.tad b/debugsoft/TitleList/SPECIAL/TitleList_E.tad deleted file mode 100644 index c528e5f4..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_E.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_F.tad b/debugsoft/TitleList/SPECIAL/TitleList_F.tad deleted file mode 100644 index bffdd916..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_F.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_G.tad b/debugsoft/TitleList/SPECIAL/TitleList_G.tad deleted file mode 100644 index 216d737d..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_G.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_H.tad b/debugsoft/TitleList/SPECIAL/TitleList_H.tad deleted file mode 100644 index d85fd8c4..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_H.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_I.tad b/debugsoft/TitleList/SPECIAL/TitleList_I.tad deleted file mode 100644 index b5fc96d2..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_I.tad and /dev/null differ diff --git a/debugsoft/TitleList/SPECIAL/TitleList_J.tad b/debugsoft/TitleList/SPECIAL/TitleList_J.tad deleted file mode 100644 index b5ac03f4..00000000 Binary files a/debugsoft/TitleList/SPECIAL/TitleList_J.tad and /dev/null differ diff --git a/debugsoft/TitleList/readme.txt b/debugsoft/TitleList/readme.txt deleted file mode 100644 index 805952a0..00000000 --- a/debugsoft/TitleList/readme.txt +++ /dev/null @@ -1,63 +0,0 @@ -TitleList - -【概要】 - メーカーコードやアプリ種別、セーブデータ領域の有無などが異なるアプリ間で - セーブデータアクセスが正常に行われるかどうかを確認するアプリセットです。 - - -【ファイル】 - - NORMAL ディレクトリ以下 … 外部向けAPIを用いて作られたロムです - SPECIALディレクトリ以下 … 内部向けAPIを用いて作られたロムです - ROMset.xls … ロムの内容とテストケース - readme.txt … このファイル - -【操作方法】 - @/debugsoft/TitleList/(NORMAL or SPECIAL) 以下の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ボタンを押すと、ロムセットのセーブデータを全てクリアし、セーブデータを書き込むファイルを作成します。 - - -【テストの流れ】 - 通常のAPIを使用するテストと、内部APIを使用するでロムセットが異なります。 - それぞれ、NORMAL, SPECIAL以下のロムセットです。 - - @ NORMAL又はSPECIALのロムセットを全てインポートする - A ロムAを起動して、Xボタンを押し、全ロムのセーブデータのクリア、ファイル作成を行う - B ロムAから順番に書き込みテストを実行して、ROMset.xlsのデータと比較する - B 再度ロムAから起動して、読み込みテストを行い、ROMset.xlsのデータと比較する - - ※SPECIALからNORMALを切り替える際に、TwlNmenu等で4KAA, 4KBAを消さないと、正しく検証できません。 -  (読み込みテストで、Aロム、Bロムに対してFile Not Foundが出なくなる) -   - -【ロムセットの内容とチェックリスト】 -  ROMset.xlsを参照してください。 - diff --git a/debugsoft/WiFiIcon/main.tad b/debugsoft/WiFiIcon/main.tad deleted file mode 100644 index 6dfe18df..00000000 Binary files a/debugsoft/WiFiIcon/main.tad and /dev/null differ diff --git a/debugsoft/sd2photo/sd2photo.srl b/debugsoft/sd2photo/sd2photo.srl deleted file mode 100644 index c67df62b..00000000 Binary files a/debugsoft/sd2photo/sd2photo.srl and /dev/null differ diff --git a/docs/AboutApplicationJump.doc b/docs/AboutApplicationJump.doc deleted file mode 100644 index 4ef9565c..00000000 Binary files a/docs/AboutApplicationJump.doc and /dev/null differ diff --git a/docs/DS繝上ャ繧キ繝・繝繝シ繝悶Ν.vsd b/docs/DS繝上ャ繧キ繝・繝繝シ繝悶Ν.vsd deleted file mode 100644 index 4a2b7b1a..00000000 Binary files a/docs/DS繝上ャ繧キ繝・繝繝シ繝悶Ν.vsd and /dev/null differ diff --git a/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd b/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd deleted file mode 100644 index 71e8aea1..00000000 Binary files a/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd and /dev/null differ diff --git a/docs/IS繝繝舌ャ繧ャ/TWL_staticModule.xls b/docs/IS繝繝舌ャ繧ャ/TWL_staticModule.xls deleted file mode 100644 index e91c4a20..00000000 Binary files a/docs/IS繝繝舌ャ繧ャ/TWL_staticModule.xls and /dev/null differ diff --git a/docs/IS繝繝舌ャ繧ャ/TWL繝繝舌ャ繧ャROM繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ隕∵アゆサ墓ァ.doc b/docs/IS繝繝舌ャ繧ャ/TWL繝繝舌ャ繧ャROM繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ隕∵アゆサ墓ァ.doc deleted file mode 100644 index 443c6a8e..00000000 Binary files a/docs/IS繝繝舌ャ繧ャ/TWL繝繝舌ャ繧ャROM繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ隕∵アゆサ墓ァ.doc and /dev/null differ diff --git a/docs/IS繝繝舌ャ繧ャ/twl-i2c-regs_nin_20080315.pdf b/docs/IS繝繝舌ャ繧ャ/twl-i2c-regs_nin_20080315.pdf deleted file mode 100644 index 3287ac75..00000000 Binary files a/docs/IS繝繝舌ャ繧ャ/twl-i2c-regs_nin_20080315.pdf and /dev/null differ diff --git a/docs/IS繝繝舌ャ繧ャ/繧「繝励Μ繧ク繝」繝ウ繝優EBUG.txt b/docs/IS繝繝舌ャ繧ャ/繧「繝励Μ繧ク繝」繝ウ繝優EBUG.txt deleted file mode 100644 index 49bb1b74..00000000 --- a/docs/IS繝繝舌ャ繧ャ/繧「繝励Μ繧ク繝」繝ウ繝優EBUG.txt +++ /dev/null @@ -1,8 +0,0 @@ -TODO: - -・アプリジャンプ先でデバッガを有効にするかどうかのフラグをROMヘッダに追加 - -・外部に提供する開発版のアプリをビルドする際、上記フラグなどセキュリティに関するフラグをすべてチェックするチェッカを通す - - 外部提供版はMaketadで鍵を変更するパスを必ず通るので、そこにセットするのが良い? - -# デバッグとは関係ないが……製品版はマスタリングツールで同様のチェックを行う? diff --git a/docs/NAND繧「繧ッ繧サ繧ケ讓ゥ.mmap b/docs/NAND繧「繧ッ繧サ繧ケ讓ゥ.mmap deleted file mode 100644 index 680cce6c..00000000 Binary files a/docs/NAND繧「繧ッ繧サ繧ケ讓ゥ.mmap and /dev/null differ diff --git a/docs/NAND繧キ繧ケ繝繝鬆伜沺.ppt b/docs/NAND繧キ繧ケ繝繝鬆伜沺.ppt deleted file mode 100644 index 75eaa917..00000000 Binary files a/docs/NAND繧キ繧ケ繝繝鬆伜沺.ppt and /dev/null differ diff --git a/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ蛹コ蛻縺ィ驕狗畑.vsd b/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ蛹コ蛻縺ィ驕狗畑.vsd deleted file mode 100644 index 4303a0fc..00000000 Binary files a/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ蛹コ蛻縺ィ驕狗畑.vsd and /dev/null differ diff --git a/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ險育ョ玲婿豕.ppt b/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ險育ョ玲婿豕.ppt deleted file mode 100644 index 0352aea4..00000000 Binary files a/docs/NAND繧キ繧ケ繝繝鬆伜沺縺ィ繝ヲ繝シ繧カ鬆伜沺縺ョ險育ョ玲婿豕.ppt and /dev/null differ diff --git a/docs/NAND鬆伜沺讎らョ.txt b/docs/NAND鬆伜沺讎らョ.txt deleted file mode 100644 index 8bc61148..00000000 --- a/docs/NAND鬆伜沺讎らョ.txt +++ /dev/null @@ -1,59 +0,0 @@ -システム領域概算 - -NANDファーム領域 4096KB (= 4MB) -ユーザー領域 131072KB (=128MB) -システム領域 76800KB (= 75MB) -写真データ 32768KB (= 32MB) -NAND HW 予約領域 17408KB (= 17MB) ---------------------------- -計 262144KB (= 256MB) - - -システム領域デフォルト使用サイズ ---------------------------- - FAT管理情報 1024KB - システム情報 - HWID署名  16KB - 証明書リスト   16KB - デバイス秘密鍵 16KB - デバイス証明書 16KB -  ショップアカウント 16KB - セキュアHW情報  16KB - ノーマルHW情報  16KB - 共有フォント  1312KB (265KB+394KB+653KB) - 本体設定データ  32KB (16KB * 2) - eTicketデータ - eTicket 96KB (16KB * 6) - TMD 96KB (16KB * 6) - Titleデータ - ランチャー  3584KB - save 16KB - 本体設定   5120KB - save 0KB - ピクトチャット  512KB - save 0KB - DS downloadPlay 512KB - save 0KB - 写真帳 8192KB - save 512KB - NintendoSpot 1024KB - save ?KB ---------------------------- -計 22144KB (21.7MB) - -import / tmp確保必要サイズ ---------------------------- - content 32768KB - private.sav 4096KB - public.sav 4096KB - banner.dat 16KB - eTicket 16KB - TMD 16KB - directory entry 80KB (16KB * 5) ---------------------------- -計 41088KB (=40.2MB) - - -システム領域空きサイズ - - 76800KB - 22144KB - 41088KB = 13568KB (=13.25MB) diff --git a/docs/NandInitializer縺ョ蛻鬘槭↓縺、縺縺ヲ.txt b/docs/NandInitializer縺ョ蛻鬘槭↓縺、縺縺ヲ.txt deleted file mode 100644 index 65ea89d7..00000000 --- a/docs/NandInitializer縺ョ蛻鬘槭↓縺、縺縺ヲ.txt +++ /dev/null @@ -1,77 +0,0 @@ -/*---------------------------------------------------*/ -/* NandInitializer の分類について */ -/* */ -/* 2008/04/14 kamikawa */ -/*---------------------------------------------------*/ - -下記の3つのプログラムについて説明します。 - -・NandInitializerRed.srl -・NandInitializerProduct.srl -・NandInitializer.srl - -これらは全て NAND を初期化するためのプログラムですが、 -目的に応じて機能制限が加えられています。 - - -[機能制限一覧表] - -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| メニュー名称 | NandInitializerRed | NandInitializerProduct | NandInitializer | 機能概要 | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| FORMAT NAND | ○ | ○※ | △ | NANDのフォーマットを行います | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| WRITE HARDWARE INFO | ○ | ○※ | ○ | リージョン変更などを行います | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| WRITE ETICKET SIGN | ○ | ○※ | × | eTicket の署名を書き込みます | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT TAD FROM SD | ○ | ○※ | × | SDカードからNANDアプリをインポートします | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT NANDFIRM FROM SD | ○ | ○※ | × | SDカードからNANDファームを書き込みます | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT NORFIRM FROM SD | ○ | × | × | SDカードからNORファームを書き込みます | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ - - ※ : 自動実行によりメニューの詳細な指定を行うことができません。 - △ : クリーンアップとチェックディスク以外は選択できません。 - - -〜〜〜 NandInitializerRed 〜〜〜 - -機能制限のないプログラムです。Redという名のついているとおり -開発技術部内でのみ使用してください。 - - -〜〜〜 NandInitializerProduct 〜〜〜 - -検査工程向けに処理を自動実行するようにしています。 -自動実行のためメニューの詳細は選択することができません。 -具体的な動作としては、下記の1〜5を実行して "OK" または "NG" を -表示したあと無限ループに入ります。 - -1. FORMAT NAND -> FORMAT -2. WRITE HARDWARE INFO -> REGION JAPAN -3. WRITE ETICKET SIGN -> WRITE E-TICKET -4. IMPORT TAD FROM SD -> OVERWRITE ALL -5. IMPORT NANDFIRM FROM SD -> 最初に見つけた*.nandファイル - -★ SDカードのルートにnandinitializer.iniというファイルを用意することで - 初期化する際の Region と ワイヤレス設定を指定することができます。 - nandinitializer.ini のフォーマットは以下のとおりです。 - ---- ここから ---- -REGION:0 //(0:JAPAN, 1:AMERICA, 2:EUROPE, 3:AUSTRALIA, 4:CHINA, 5:KOREA) -WIRELESS_FORCE_OFF:0 //(0:Wireless Enable, 1:Wireless Disable) ---- ここまで ---- - -〜〜〜 NandInitializer 〜〜〜 - -SDKで配布するために多くの機能を削除しています。 -実行可能なメニューは「FORMAT NAND」と「WRITE HARDWARE INFO」のみです。 -「FORMAT NAND」ではクリーンアップとチェックディスクのみ選択できます。 - -★ ARM9.TWL側のMakefileのコメント行を1行外すことにより - ワイヤレスの強制Disableフラグを設定可能な特別なNandInitializerを - 作成することができます。 - -以上 diff --git a/docs/TWL繧「繝励Μ髢灘ア譛峨ヵ繧。繧、繝ォ.ppt b/docs/TWL繧「繝励Μ髢灘ア譛峨ヵ繧。繧、繝ォ.ppt deleted file mode 100644 index e37eabf3..00000000 Binary files a/docs/TWL繧「繝励Μ髢灘ア譛峨ヵ繧。繧、繝ォ.ppt and /dev/null differ diff --git a/docs/TWL繧ス繝輔ヨ蜷遞ョ繧ウ繝シ繝芽ィュ螳夊ヲ丞援080327.pdf b/docs/TWL繧ス繝輔ヨ蜷遞ョ繧ウ繝シ繝芽ィュ螳夊ヲ丞援080327.pdf deleted file mode 100644 index a9e89247..00000000 Binary files a/docs/TWL繧ス繝輔ヨ蜷遞ョ繧ウ繝シ繝芽ィュ螳夊ヲ丞援080327.pdf and /dev/null differ diff --git a/docs/TWL繝槭せ繧ソ繝ェ繝ウ繧ー謇矩譖ク.doc b/docs/TWL繝槭せ繧ソ繝ェ繝ウ繧ー謇矩譖ク.doc deleted file mode 100644 index ada41959..00000000 Binary files a/docs/TWL繝槭せ繧ソ繝ェ繝ウ繧ー謇矩譖ク.doc and /dev/null differ diff --git a/docs/TWL繝ゥ繝ウ繝√Ε繝シ.mmap b/docs/TWL繝ゥ繝ウ繝√Ε繝シ.mmap deleted file mode 100644 index 1c90fbf7..00000000 Binary files a/docs/TWL繝ゥ繝ウ繝√Ε繝シ.mmap and /dev/null differ diff --git a/docs/TWL髢「騾」繝繝シ繧ソ驟榊ク蛻カ髯.xls b/docs/TWL髢「騾」繝繝シ繧ソ驟榊ク蛻カ髯.xls deleted file mode 100644 index be5ed2e1..00000000 Binary files a/docs/TWL髢「騾」繝繝シ繧ソ驟榊ク蛻カ髯.xls and /dev/null differ diff --git a/docs/TitleID繝ェ繧ケ繝.mmap b/docs/TitleID繝ェ繧ケ繝.mmap deleted file mode 100644 index 015c7684..00000000 Binary files a/docs/TitleID繝ェ繧ケ繝.mmap and /dev/null differ diff --git a/docs/_README.txt b/docs/_README.txt deleted file mode 100644 index c6769a97..00000000 --- a/docs/_README.txt +++ /dev/null @@ -1,4 +0,0 @@ -mmapファイルは、「MindManager」を使用して作成しています。 -閲覧するには、下記サイトで無料のMindManagerViewerをダウンロードしてください。 - -http://www.mindjet.com/jp/products/mindmanager_viewers/index.php?s=3 diff --git a/docs/format_ROM_Header.xls b/docs/format_ROM_Header.xls deleted file mode 100644 index 52ef552c..00000000 Binary files a/docs/format_ROM_Header.xls and /dev/null differ diff --git a/docs/format_ROM_Header_rev2109_fromIS.xls b/docs/format_ROM_Header_rev2109_fromIS.xls deleted file mode 100644 index 26c69f3d..00000000 Binary files a/docs/format_ROM_Header_rev2109_fromIS.xls and /dev/null differ diff --git a/docs/format_TWLBanner.xls b/docs/format_TWLBanner.xls deleted file mode 100644 index c0024923..00000000 Binary files a/docs/format_TWLBanner.xls and /dev/null differ diff --git a/docs/format_TitleID.xls b/docs/format_TitleID.xls deleted file mode 100644 index 668897ba..00000000 Binary files a/docs/format_TitleID.xls and /dev/null differ diff --git a/docs/縺昴ョ莉/Nintendo繝ュ繧エ縺ョ蜿悶j謇ア縺.pdf b/docs/縺昴ョ莉/Nintendo繝ュ繧エ縺ョ蜿悶j謇ア縺.pdf deleted file mode 100644 index c01b62de..00000000 Binary files a/docs/縺昴ョ莉/Nintendo繝ュ繧エ縺ョ蜿悶j謇ア縺.pdf and /dev/null differ diff --git a/docs/縺昴ョ莉/nintendo繝ュ繧エ陦ィ遉コ.pdf b/docs/縺昴ョ莉/nintendo繝ュ繧エ陦ィ遉コ.pdf deleted file mode 100644 index 37150613..00000000 Binary files a/docs/縺昴ョ莉/nintendo繝ュ繧エ陦ィ遉コ.pdf and /dev/null differ diff --git a/docs/縺昴ョ莉/shared_font_LC.pdf b/docs/縺昴ョ莉/shared_font_LC.pdf deleted file mode 100644 index d512b639..00000000 --- a/docs/縺昴ョ莉/shared_font_LC.pdf +++ /dev/null @@ -1,67 +0,0 @@ -%PDF-1.2 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<>> /Descent -241 /ItalicAngle 0 /XHeight 450 /StemV 69 /Type /FontDescriptor /CapHeight 709 /FontBBox [-170 -331 1024 903] /FontName /Ryumin-Light>> -endobj - -6 0 obj -<>] /Type /Font /Encoding /EUC-H /BaseFont /Ryumin-Light-EUC-H /Subtype /Type0 /Name /F2>> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<>> /Descent -271 /ItalicAngle 0 /XHeight 553 /StemV 99 /Type /FontDescriptor /CapHeight 737 /FontBBox [-174 -268 1001 944] /FontName /GothicBBB-Medium>> -endobj - -9 0 obj -<>] /Type /Font /Encoding /EUC-H /BaseFont /GothicBBB-Medium-EUC-H /Subtype /Type0 /Name /F4>> -endobj - -10 0 obj -<> stream - q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 745.3125 Td [ ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 709.3125 Td [ ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 678.3125 Td [ ] TJ ET Q q 1 0 0 1 72 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 107.125 660.3125 Td [ ] TJ ET Q q 1 0 0 1 194.75 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 224.625 660.3125 Td [ ] TJ ET Q q 1 0 0 1 317.5 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 352.625 660.3125 Td [ ] TJ ET Q q 1 0 0 1 440.25 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 485.875 660.3125 Td [ ] TJ ET Q q 1 0 0 1 72 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 639.8125 Td [(TWL_LC_Font_t.NFTR) ] TJ ET Q q 1 0 0 1 194.75 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 639.8125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 639.8125 Td [( 8pt\(7) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 287.5405 639.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 300.6655 639.8125 Td [-250 (8\)) ] TJ ET Q q 1 0 0 1 317.5 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 639.8125 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 639.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 639.8125 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 639.8125 Td [(99KB) ] TJ ET Q q 1 0 0 1 72 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 611.4375 Td [(TWL_LC_Font_s.NFTR) ] TJ ET Q q 1 0 0 1 194.75 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 619.3125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 619.3125 Td [( 10pt\(9) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 292.7905 619.3125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 603.5625 Td [(12\)) ] TJ ET Q q 1 0 0 1 317.5 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 611.4375 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 611.4375 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 611.4375 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 611.4375 Td [(149KB) ] TJ ET Q q 1 0 0 1 72 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 575.1875 Td [(TWL_LC_Font_m.NFTR) ] TJ ET Q q 1 0 0 1 194.75 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 583.0625 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 583.0625 Td [( 12pt\(11) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 298.0405 583.0625 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 567.3125 Td [(15\)) ] TJ ET Q q 1 0 0 1 317.5 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 575.1875 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 575.1875 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 575.1875 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 575.1875 Td [(200KB) ] TJ ET Q q 1 0 0 1 72 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 538.9375 Td [(TWL_LC_Font_l.NFTR) ] TJ ET Q q 1 0 0 1 194.75 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 546.8125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 546.8125 Td [( 16pt\(15) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 298.0405 546.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 531.0625 Td [(21\)) ] TJ ET Q q 1 0 0 1 317.5 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 538.9375 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 538.9375 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 538.9375 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 538.9375 Td [(336KB) ] TJ ET Q q BT /F3 9 Tf 0 Ts 0 Tr 294.998 36 Td [(1) ] TJ ET Q Q -endstream -endobj - -11 0 obj -<> /ProcSet [/PDF /Text]>> /Type /Page /MediaBox [0 0 595 842] /Parent 1 0 R>> -endobj - -xref -0 12 -0000000000 65535 f -0000000009 00000 n -0000000066 00000 n -0000000114 00000 n -0000000222 00000 n -0000000293 00000 n -0000000524 00000 n -0000000790 00000 n -0000000896 00000 n -0000001131 00000 n -0000001405 00000 n -0000006160 00000 n - -trailer -<> -startxref -6325 -%%EOF diff --git a/docs/繧「繝励Μ繧ク繝」繝ウ繝.mmap b/docs/繧「繝励Μ繧ク繝」繝ウ繝.mmap deleted file mode 100644 index 2234f55e..00000000 Binary files a/docs/繧「繝励Μ繧ク繝」繝ウ繝.mmap and /dev/null differ diff --git a/docs/繧「繝励Μ遞ョ蛻・.mmap b/docs/繧「繝励Μ遞ョ蛻・.mmap deleted file mode 100644 index 3cb2f522..00000000 Binary files a/docs/繧「繝励Μ遞ョ蛻・.mmap and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/KeyTable.vsd b/docs/繧イ繝シ繝繧ォ繝シ繝/KeyTable.vsd deleted file mode 100644 index 3e36a68f..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/KeyTable.vsd and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/TWL繧ォ繝シ繝峨Γ繝「繝ェ螳ケ驥上↓繧医k莉墓ァ倬&縺.xls b/docs/繧イ繝シ繝繧ォ繝シ繝/TWL繧ォ繝シ繝峨Γ繝「繝ェ螳ケ驥上↓繧医k莉墓ァ倬&縺.xls deleted file mode 100644 index 559fdca8..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/TWL繧ォ繝シ繝峨Γ繝「繝ェ螳ケ驥上↓繧医k莉墓ァ倬&縺.xls and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/_PrivateNitroRomHeader.pdf b/docs/繧イ繝シ繝繧ォ繝シ繝/_PrivateNitroRomHeader.pdf deleted file mode 100644 index 5f8edcf4..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/_PrivateNitroRomHeader.pdf and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/繧ォ繝シ繝芽ェュ縺ソ霎シ縺ソ繧キ繝シ繧ア繝ウ繧ケ陦ィ.xls b/docs/繧イ繝シ繝繧ォ繝シ繝/繧ォ繝シ繝芽ェュ縺ソ霎シ縺ソ繧キ繝シ繧ア繝ウ繧ケ陦ィ.xls deleted file mode 100644 index 2a328165..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/繧ォ繝シ繝芽ェュ縺ソ霎シ縺ソ繧キ繝シ繧ア繝ウ繧ケ陦ィ.xls and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/繧イ繝シ繝繧ォ繝シ繝画諺謚懈、懷コ.xls b/docs/繧イ繝シ繝繧ォ繝シ繝/繧イ繝シ繝繧ォ繝シ繝画諺謚懈、懷コ.xls deleted file mode 100644 index ef012fe4..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/繧イ繝シ繝繧ォ繝シ繝画諺謚懈、懷コ.xls and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚 譛ェ螳溯」驛ィ蛻.mmap b/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚 譛ェ螳溯」驛ィ蛻.mmap deleted file mode 100644 index f656fc20..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚 譛ェ螳溯」驛ィ蛻.mmap and /dev/null differ diff --git a/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚懊ヵ繝ュ繝シ.vsd b/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚懊ヵ繝ュ繝シ.vsd deleted file mode 100644 index 0eec9418..00000000 Binary files a/docs/繧イ繝シ繝繧ォ繝シ繝/豢サ邱壽諺謚懊ヵ繝ュ繝シ.vsd and /dev/null differ diff --git a/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu.mpp b/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu.mpp deleted file mode 100644 index 0d88b8bb..00000000 Binary files a/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu.mpp and /dev/null differ diff --git a/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu_080414.pdf b/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu_080414.pdf deleted file mode 100644 index ac190f25..00000000 Binary files a/docs/繧ケ繧ア繧ク繝・繝シ繝ォ_TWLSystemMenu_080414.pdf and /dev/null differ diff --git a/docs/繝繝舌ャ繧ー/TWL繝繝舌ャ繧ー逕ィ繧ス繝輔ヨ.mmap b/docs/繝繝舌ャ繧ー/TWL繝繝舌ャ繧ー逕ィ繧ス繝輔ヨ.mmap deleted file mode 100644 index 8e987380..00000000 Binary files a/docs/繝繝舌ャ繧ー/TWL繝繝舌ャ繧ー逕ィ繧ス繝輔ヨ.mmap and /dev/null differ diff --git a/docs/繝繝舌ャ繧ー/繧キ繧ケ繝繝諠蝣ア遒コ隱.xls b/docs/繝繝舌ャ繧ー/繧キ繧ケ繝繝諠蝣ア遒コ隱.xls deleted file mode 100644 index d818a87c..00000000 Binary files a/docs/繝繝舌ャ繧ー/繧キ繧ケ繝繝諠蝣ア遒コ隱.xls and /dev/null differ diff --git a/docs/繝繝舌ャ繧ー/繝代シ繝溘ャ繧キ繝ァ繝ウ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝繝舌ャ繧ー/繝代シ繝溘ャ繧キ繝ァ繝ウ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index 407f9c5f..00000000 Binary files a/docs/繝繝舌ャ繧ー/繝代シ繝溘ャ繧キ繝ァ繝ウ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ豢励>蜃コ縺.mmap b/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ豢励>蜃コ縺.mmap deleted file mode 100644 index c35610f8..00000000 Binary files a/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ豢励>蜃コ縺.mmap and /dev/null differ diff --git a/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ陦ィ.xls b/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ陦ィ.xls deleted file mode 100644 index d9ba20a0..00000000 Binary files a/docs/繝繝舌ャ繧ー/豢サ邱壽諺謚/豢サ邱壽諺謚懊ョ繝舌ャ繧ー 繝繧ケ繝医こ繝シ繧ケ陦ィ.xls and /dev/null differ diff --git a/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd b/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd deleted file mode 100644 index 35431771..00000000 Binary files a/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd and /dev/null differ diff --git a/docs/繝輔か繝ォ繝繝繝ェ繝シ_SD繧ォ繝シ繝.mmap b/docs/繝輔か繝ォ繝繝繝ェ繝シ_SD繧ォ繝シ繝.mmap deleted file mode 100644 index b60bd4f4..00000000 Binary files a/docs/繝輔か繝ォ繝繝繝ェ繝シ_SD繧ォ繝シ繝.mmap and /dev/null differ diff --git a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NAND.vsd b/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NAND.vsd deleted file mode 100644 index 215f21a8..00000000 Binary files a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NAND.vsd and /dev/null differ diff --git a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls b/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls deleted file mode 100644 index f8c21f75..00000000 Binary files a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls and /dev/null differ diff --git a/docs/繝輔Ο繝シ_NAND繝輔ぃ繝シ繝.vsd b/docs/繝輔Ο繝シ_NAND繝輔ぃ繝シ繝.vsd deleted file mode 100644 index 7da5a0e5..00000000 Binary files a/docs/繝輔Ο繝シ_NAND繝輔ぃ繝シ繝.vsd and /dev/null differ diff --git a/docs/繝輔Ο繝シ_繧「繝励Μ髢狗匱.vsd b/docs/繝輔Ο繝シ_繧「繝励Μ髢狗匱.vsd deleted file mode 100644 index 4fa38fef..00000000 Binary files a/docs/繝輔Ο繝シ_繧「繝励Μ髢狗匱.vsd and /dev/null differ diff --git a/docs/繝輔Ο繝シ_繝阪ャ繝医Ρ繝シ繧ッ繧「繝繝励ョ繝シ繝.vsd b/docs/繝輔Ο繝シ_繝阪ャ繝医Ρ繝シ繧ッ繧「繝繝励ョ繝シ繝.vsd deleted file mode 100644 index 53c6c733..00000000 Binary files a/docs/繝輔Ο繝シ_繝阪ャ繝医Ρ繝シ繧ッ繧「繝繝励ョ繝シ繝.vsd and /dev/null differ diff --git a/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd b/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd deleted file mode 100644 index 229d5540..00000000 Binary files a/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd and /dev/null differ diff --git a/docs/繝悶シ繝ROM/TWL_BootRomInfo.vsd b/docs/繝悶シ繝ROM/TWL_BootRomInfo.vsd deleted file mode 100644 index 8c88d5fe..00000000 Binary files a/docs/繝悶シ繝ROM/TWL_BootRomInfo.vsd and /dev/null differ diff --git a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_EULA_specification_20080508.pdf b/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_EULA_specification_20080508.pdf deleted file mode 100644 index c62e6e40..00000000 Binary files a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_EULA_specification_20080508.pdf and /dev/null differ diff --git a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_20080516.pdf b/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_20080516.pdf deleted file mode 100644 index 44e86034..00000000 Binary files a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_20080516.pdf and /dev/null differ diff --git a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_byUIG.pdf b/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_byUIG.pdf deleted file mode 100644 index 3d73f217..00000000 Binary files a/docs/繝壹い繝ャ繝ウ繧ソ繝ォ繧ウ繝ウ繝医Ο繝シ繝ォ_EULA/TWL_ParentalControl_specification_byUIG.pdf and /dev/null differ diff --git a/docs/繝懊ヤ/SystemMenu_RED繝ェ繝ェ繝シ繧ケ.txt b/docs/繝懊ヤ/SystemMenu_RED繝ェ繝ェ繝シ繧ケ.txt deleted file mode 100644 index b11ea33c..00000000 --- a/docs/繝懊ヤ/SystemMenu_RED繝ェ繝ェ繝シ繧ケ.txt +++ /dev/null @@ -1,92 +0,0 @@ -SystemMenu_RED - -・ランチャー - ・カードアプリ取得 △ (TWLバナーへの対応はまだ) - ・TWLカード起動 ○ - ・カード活線挿抜処理 × - ・NTRカード(NTRモード)起動 作業中 - ・NANDアプリリスト取得 ○ - ・NANDアプリ起動 ○ - ・アプリブート時の再配置処理 ○ - ・ISデバッガ対応 × (次タスク) - ・ファームウェアとして正規動作 △ (次タスク) - ・アプリ起動時のWRAM-MAP設定 ○ - ・アプリ起動時のSCFGレジスタロック △ -  ・アプリ起動時のSDカードアクセス可否 △ (とりあえず解放にしておき、セキュリティ面での検討を行う。) - ・署名・暗号処理 × - ・鍵管理 × - ・メモリマップFIX ○ -  ・起動時の無線ファーム流し込み × - ・NTRコンポーネントパッチ × -・本体設定 - ・設定データフォーマットFIX ○ - ・言語選択 ○ - ・TP補正 ○ - ・日付・時刻設定 ○ - ・ユーザー情報 ○ (欧州文字、絵文字など一部文字は入力できない仕様) - ・その他設定 × - ・NANDへの保存 ○ - ・NTR側(NVRAM)への保存 ○ - -・WiFi設定 × - ・設定データフォーマットFIX ○ - ・仕様FIX ○ - -・DSダウンロードプレイ - ・仕様FIX ○ (DSダウンロードプレイと同一仕様) - ・実装 × -・ネットワークアップデート - ・仕様FIX ○ - ・実装 × - -・アプリ管理 - ・SDにコピーする際のファイルフォーマット× - ・実装 × - -・TWLバナー対応 × - ・仕様FIX 作業中 - ・makebanner作成 × -・NANDfirm→ランチャー パラメータ引渡し × - ・仕様FIX ○ -・ランチャー→NANDアプリ パラメータ引渡し × - ・本体設定データなどの情報 × - ・DSダウンロードプレイの情報 × -・NANDアプリ→ランチャー パラメータ引渡し × - ・仕様FIX ○ -  ・動作バリエーションの検討 作業中 -  ・各種動作のデモ作成 作業中 -・NAND内オーバーレイ&FS ○ - ・仕様FIX ○ - ・NAND,SDマウント情報(アクセス制限) ○ -・共有リソースアクセス × - ・仕様FIX × -・タイトル外部リソースアクセス × - ・仕様FIX × - -・NANDアプリインストール ○ (TwlSDKのNMenuを使用) -・NANDフォーマット △ (TwlSDKのdemos.TWL/fatfs/formatterを使用) - ・仕様FIX ○ - ・NANDを固定値でベタ書き × - ※起動できないランチャーを書いて起動しなくなった時の復旧は、GCDファームのカード起動可能ファームを書き直して、 -  formatterに改変を加えたformatter+NANDファーム&システムメニューインストーラーで書き込み。 - -・makerom.TWL対応 - ・ファーム用ビルド(PKIを不使用、AES暗号範囲変更)に対応 × - ・TWLカードのノーマル領域をマニュアル設定できるように。 × - ・ROMヘッダ署名PKI仕様の削除 × - -・ISデバッガ対応 - ・NANDアプリデバッグ対応 × (現状カードアプリとしてデバッグ) - ・仕様FIX △ (TwlNmenuを使ったNTRのDSダウンロードプレイ子機プログラムデバッグと似た仕組み) - ・バナー確認機能 × - ・仕様FIX × - -・マスタリング処理 × - ・CLSサーバ構築?? × - ・ROMマスタリングツール × - -・生産工程を考慮した仕様 × - ・検査用カードの初期設定スキップ起動 × - ・ショートカットキーによる初期設定スキップ起動 × - ・生産工程で書き込まれるプリFIXデータ仕様 × - diff --git a/docs/繝懊ヤ/險隱槭さ繝シ繝牙ヲ逅.xls b/docs/繝懊ヤ/險隱槭さ繝シ繝牙ヲ逅.xls deleted file mode 100644 index fe015443..00000000 Binary files a/docs/繝懊ヤ/險隱槭さ繝シ繝牙ヲ逅.xls and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/TWL繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ隗」隱ャ譖ク.doc b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/TWL繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ隗」隱ャ譖ク.doc deleted file mode 100644 index d237d2b7..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/TWL繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ隗」隱ャ譖ク.doc and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls deleted file mode 100644 index ca33e4c4..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繧ウ繝ウ繝壹い繝繝シ繝ォ.txt b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繧ウ繝ウ繝壹い繝繝シ繝ォ.txt deleted file mode 100644 index ec362ec2..00000000 --- a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繧ウ繝ウ繝壹い繝繝シ繝ォ.txt +++ /dev/null @@ -1,14 +0,0 @@ -======================================================================= -TWL コンペアツール 変更履歴 -======================================================================= - -* ------------------------------------------------ -* 20081120版 [9297-2669-148] -* ------------------------------------------------ - -○既知の問題 - -・[BUG01] - マスタリングツールの[BUG03]と同様の問題です。 - 現在、原因調査中です。 - diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/螟夜Κ莉墓ァ.xls b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/螟夜Κ莉墓ァ.xls deleted file mode 100644 index 776a8ad1..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繧ウ繝ウ繝壹い繝繝シ繝ォ/螟夜Κ莉墓ァ.xls and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls deleted file mode 100644 index b0d95260..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝繝舌ャ繧ー鬆逶ョ.xls and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝薙Ν繝画婿豕.txt b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝薙Ν繝画婿豕.txt deleted file mode 100644 index ad5f86df..00000000 --- a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝薙Ν繝画婿豕.txt +++ /dev/null @@ -1,87 +0,0 @@ -* --------------------------------------------------- -* -* TWL マスタリングツール 作成方法 -* -* --------------------------------------------------- - -* --------------------------------------------------- -* 手順 -* --------------------------------------------------- - -マスタリングツールは、TWLにおける暗号の秘密鍵を内部に持つツールです。 -そのため、このツールが流出するとTWLの暗号が破られてしまいます。 -(自作のゲームソフトや違法なゲームソフトを量産機で起動できてしまいます。) - -その対策として、マスタリングツールの実行バイナリ(.exe)自体に暗号をかけ、 -特殊なUSBキーをPCに挿さないと、復号できない仕組みを導入しています。 -この対策によって、マスタリングツールの実行バイナリが流出しても、 -秘密鍵が漏れることはないうえ、USBキーを持たないユーザは実行できません。 - -上記の対策を実現するために、マスタリングツールの作成方法は、 -以下の2ステップに分かれます。 - - (Step1.) マスタリングツールのコンパイル - (Step2.) 実行バイナリの暗号化 - -[用語の定義] -・エンベロープ: Step2.の実行バイナリの暗号化処理 -・ドングル: ツール実行のために必要な特殊なUSBキー - -* --------------------------------------------------- -* (Step1.) マスタリングツールのコンパイル -* --------------------------------------------------- - -このステップでは、マスタリングツールのソースをコンパイルします。 - -(注意!) -この作業だけでは、マスタリングツールの実行バイナリは暗号化されないため、 -ツールが流出すると、誰でもマスタリングが可能になってしまいます。 - -(1) 準備 - 以下のパッケージが必要です。 - - ○ TWLIPL_private - マスタリングツールのソースを含むパッケージ。 - 秘密鍵の生データを含むため、流出させない管理が必要です。 - そのため、USBメモリ内にリポジトリとツリーが置かれ、 - そのUSBメモリは指紋認証キャビネットで管理されています。 - したがって、このパッケージを入手するには、 - 指紋認証キャビネットへの指紋の登録が必要です。 - - ○ TwlSDK - いくつかのライブラリを使用しています。 - - ○ TwlIPL - いくつかのインクルードファイルを使用しています。 - - ビルド前に、以下の環境変数に各ツリーのルートを指定しておく必要があります。 - -- TWLSDK_ROOT - -- TWL_IPL_RED_ROOT - -- TWL_IPL_RED_PRIVATE_ROOT - -(2) 方法 - make してください。 - -(3) ビルドスイッチ - mastering.h には、各種のビルドスイッチが宣言されていますので、 - 適宜、変更してください。 - - -* --------------------------------------------------- -* (Step2.) 実行バイナリの暗号化(エンベロープ) -* --------------------------------------------------- - -(1) 準備 - 以下の機材が必要です。 - - ○ エンベロープ用USBキー - 実行用のUSBキーとは異なります。ソフトGの村上豊さんが所有しています。 - - ○ エンベロープソフト - PCソフトです。ソフトGが所有しています。 - -(2) 方法 - 現在、エンベロープが可能なのは、ソフトGの村上豊さんのみです。 - 村上豊さんにお問い合わせください。 - -以上 diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ.txt b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ.txt deleted file mode 100644 index 89ab1d69..00000000 --- a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/繝ェ繝ェ繝シ繧ケ繝弱シ繝_繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ.txt +++ /dev/null @@ -1,80 +0,0 @@ -======================================================================= -TWL マスタリングツール 変更履歴 -======================================================================= - -* ------------------------------------------------ -* 20081120版 [9297-2669-148] -* ------------------------------------------------ - -○ 問題の修正 - -・[BUG01]の修正 - USBキードライバの終了処理を追加しました。 - -・[BUG02]の修正 - USBキードライバの終了処理を追加しました。 - 上書き確認で"n"を選択しても、問題ありません。 - -・[BUG04]の修正 - ゲームコードが"NTRJ"であるNANDアプリの場合でも、 - -tオプションを指定できるようにしました。 - (通常は、"NTRJ"となるアプリはマスタリング対象ではありません。) - -・[BUG05]の修正 - ゲームコードが"NTRJ"であるカードアプリの場合には、 - -gオプションを指定できないようにしました。(エラーとなります。) - -○ 既知の問題 - -・[BUG03]が修正されていません。 - - -* ------------------------------------------------ -* 20081010版 [8666-2532-144] -* ------------------------------------------------ - -○既知の問題 - -・[BUG01] - 入力ファイルと出力ファイルに同じ名前を設定したときにエラーとなりますが、 - このとき、USBキードライバの終了処理をしません。 - USBキーのドライバの動作に影響を与える可能性があるため、 - 入力ファイルと出力ファイルに同じ名前を設定しないでください。 - この問題は、次回のリリースで修正されます。 - -・[BUG02] - 出力ファイルがすでに存在するときに上書き確認をし、"n"が入力されたときには、 - 上書きをせずに終了しますが、このとき、USBキードライバの終了処理をしません。 - USBキーのドライバの動作に影響を与える可能性があるため、 - 上書き確認で、"n"を入力せず、すでに存在するファイルの名前を変更して、"y"を押してください。 - この問題は、次回のリリースで修正されます。 - -・[BUG03] - 多数のSRLをシェルスクリプトで連続してマスタリングしたときに、 - ごくまれにOSがフリーズする現象が生じることが報告されています。 - USBキーのドライバが原因である可能性も含めて、現在、原因調査中です。 - マスタリングツールの使用前に、PC上の重要なデータを保存しておいてください。 - -・[BUG04] - TWL対応アプリのゲームコードが"NTRJ"であるSRLのマスタリングはできませんが、 - -tオプションをつけることによって、強制的にマスタリング可能です。 - このとき、カードアプリである場合には問題ありませんが、 - NANDアプリである場合には、データに矛盾が生じ、正常に動作しない可能性があります。 - NANDアプリでゲームコードが"NTRJ"である場合には、 - (-tオプションによる)マスタリングをしないでください。 - 通常、ゲームコードが"NTRJ"であるSRLはマスタリング対象ではありませんが、 - 一部の検証用プログラムやSDKデモプログラムには存在しますので、ご注意ください。 - この問題は、次回のリリースで修正されます。 - -・[BUG05] - TWL対応アプリのゲームコードが"NTRJ"であるSRLのマスタリングはできませんが、 - -gオプションをつけることによって、強制的にゲームコードとTitleIDを他の文字列に変更して、 - マスタリングをかけることが可能です。 - このとき、NANDアプリである場合には問題ありませんが、 - カードアプリである場合には、データに矛盾が生じ、正常にカード起動させることができません。 - NANDアプリでゲームコードが"NTRJ"である場合には、 - (-gオプションによる)マスタリングをしないでください。 - 通常、マスタリングするSRLにはゲームコードが"NTRJ"であるものは存在しませんが、 - 一部の検証用プログラムやSDKデモプログラムには存在しますので、ご注意ください。 - この問題は、次回のリリースで修正されます。 - diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/莉墓ァ俶ヲりヲ.ppt b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/莉墓ァ俶ヲりヲ.ppt deleted file mode 100644 index 2c496058..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/莉墓ァ俶ヲりヲ.ppt and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/蜀驛ィ莉墓ァ.vsd b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/蜀驛ィ莉墓ァ.vsd deleted file mode 100644 index bab0a9df..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/蜀驛ィ莉墓ァ.vsd and /dev/null differ diff --git a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/螟夜Κ莉墓ァ.xls b/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/螟夜Κ莉墓ァ.xls deleted file mode 100644 index fc170044..00000000 Binary files a/docs/繝槭せ繧ソ繝ェ繝ウ繧ー繝繝シ繝ォ/螟夜Κ莉墓ァ.xls and /dev/null differ diff --git a/docs/繝。繝「繝ェ繝槭ャ繝誉NAND繝輔ぃ繝シ繝.vsd b/docs/繝。繝「繝ェ繝槭ャ繝誉NAND繝輔ぃ繝シ繝.vsd deleted file mode 100644 index 16f17ef2..00000000 Binary files a/docs/繝。繝「繝ェ繝槭ャ繝誉NAND繝輔ぃ繝シ繝.vsd and /dev/null differ diff --git a/docs/繝。繝「繝ェ繝槭ャ繝誉mb_child.vsd b/docs/繝。繝「繝ェ繝槭ャ繝誉mb_child.vsd deleted file mode 100644 index 22863361..00000000 Binary files a/docs/繝。繝「繝ェ繝槭ャ繝誉mb_child.vsd and /dev/null differ diff --git a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd b/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd deleted file mode 100644 index 9262cc4c..00000000 Binary files a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd and /dev/null differ diff --git a/docs/繝ゥ繝ウ繝√Ε繝シ縺ォ繧医k繝悶シ繝亥━蜈亥コヲ.xls b/docs/繝ゥ繝ウ繝√Ε繝シ縺ォ繧医k繝悶シ繝亥━蜈亥コヲ.xls deleted file mode 100644 index 9016a522..00000000 Binary files a/docs/繝ゥ繝ウ繝√Ε繝シ縺ォ繧医k繝悶シ繝亥━蜈亥コヲ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index 286ff2af..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝ェ繝ェ繝シ繧ケ繧ソ繧ケ繧ッ.mmap b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝ェ繝ェ繝シ繧ケ繧ソ繧ケ繧ッ.mmap deleted file mode 100644 index ec453cb4..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝ェ繝ェ繝シ繧ケ繧ソ繧ケ繧ッ.mmap and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index b8b07226..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 繧ソ繧ケ繧ッ.mmap b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 繧ソ繧ケ繧ッ.mmap deleted file mode 100644 index 3f9b0b05..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 繧ソ繧ケ繧ッ.mmap and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/SDK_5_0_rc_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/SDK_5_0_rc_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index 7ca9fab4..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/SDK_5_0_rc_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap deleted file mode 100644 index c5a4fc58..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/繧「繝励Μ繧ク繝」繝ウ繝怜ョ滄ィ捺焔鬆.txt b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/繧「繝励Μ繧ク繝」繝ウ繝怜ョ滄ィ捺焔鬆.txt deleted file mode 100644 index c3173233..00000000 --- a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/繧「繝励Μ繧ク繝」繝ウ繝怜ョ滄ィ捺焔鬆.txt +++ /dev/null @@ -1,40 +0,0 @@ - -やたら項目が多いように見えますが、慣れれば1分かからないのでご安心を。 - - -1.AppliCooperation A B C をそれぞれインポートする - -2.A を起動 - -3.Set Parameter で適当に文字をセット - -4.Launch CooperationB で B へジャンプ -  ※ この時、*マークの位置と Set Parameter にセットされている文字を覚えておく - -5.Received Parameter に先ほどセットした文字が入っているのを確認 - -6.Launch Former App で A へリターン - -7.A に戻ったとき、4.の時点での状態で復帰しているのを確認(*の位置と Set Parameter にセットされている文字) - -8.Return app test で B へリターン - -9.Received Parameter に何も無いことを確認 - -10.Launch Former App で A へリターン - -11.A に戻ったとき、4.の時点での状態で復帰しているのを確認(*の位置と Set Parameter にセットされている文字) - -12.launch C test で C へジャンプ - -13.Return app test で A へリターン - -14.A が初期状態で起動している事を確認して、 Return app test で C へリターン - -15.C から launch C test で C へジャンプ - -16.C から Return app test で C へリターン - -17.A を使って行った3.〜11.の手順を C で行う(ただし、 A の*マークは C では$マークになっている) - -以上 \ No newline at end of file diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/SDK_5_0_ss4_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/SDK_5_0_ss4_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index 7ca9fab4..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/SDK_5_0_ss4_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap deleted file mode 100644 index 94237a23..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_ss4/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4_TS繝懊シ繝画政霈峨Λ繝ウ繝√Ε繝シ貅門y.mmap b/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4_TS繝懊シ繝画政霈峨Λ繝ウ繝√Ε繝シ貅門y.mmap deleted file mode 100644 index e5708858..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4_TS繝懊シ繝画政霈峨Λ繝ウ繝√Ε繝シ貅門y.mmap and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4繝懊シ繝臥畑繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4繝懊シ繝臥畑繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls deleted file mode 100644 index 7d491c23..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/X4繝懊シ繝臥畑繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and /dev/null differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/讖滓攝蛻・RED繝ゥ繝ウ繝√Ε繝シ讖溯ス.xls b/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/讖滓攝蛻・RED繝ゥ繝ウ繝√Ε繝シ讖溯ス.xls deleted file mode 100644 index 7be4f952..00000000 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_X4繝懊シ繝牙ッセ蠢/讖滓攝蛻・RED繝ゥ繝ウ繝√Ε繝シ讖溯ス.xls and /dev/null differ diff --git a/docs/蜷繧「繝励Μテ玲悽菴灘虚菴懷庄蜷ヲ.vsd b/docs/蜷繧「繝励Μテ玲悽菴灘虚菴懷庄蜷ヲ.vsd deleted file mode 100644 index aca59001..00000000 Binary files a/docs/蜷繧「繝励Μテ玲悽菴灘虚菴懷庄蜷ヲ.vsd and /dev/null differ diff --git a/docs/譁ー驟堺ソ。繧キ繧ケ繝繝/TWL驟堺ソ。繧キ繧ケ繝繝髢狗匱繧ケ繧ア繧ク繝・繝シ繝ォ.pdf b/docs/譁ー驟堺ソ。繧キ繧ケ繝繝/TWL驟堺ソ。繧キ繧ケ繝繝髢狗匱繧ケ繧ア繧ク繝・繝シ繝ォ.pdf deleted file mode 100644 index c9a2f1d2..00000000 Binary files a/docs/譁ー驟堺ソ。繧キ繧ケ繝繝/TWL驟堺ソ。繧キ繧ケ繝繝髢狗匱繧ケ繧ア繧ク繝・繝シ繝ォ.pdf and /dev/null differ diff --git a/docs/讌ュ蜍吶ヵ繝ュ繝シ.vsd b/docs/讌ュ蜍吶ヵ繝ュ繝シ.vsd deleted file mode 100644 index 47e71dd4..00000000 Binary files a/docs/讌ュ蜍吶ヵ繝ュ繝シ.vsd and /dev/null differ diff --git a/docs/辟。邱/TWL譛ャ菴灘菫晏ュ俶ュ蝣ア譯.xls b/docs/辟。邱/TWL譛ャ菴灘菫晏ュ俶ュ蝣ア譯.xls deleted file mode 100644 index 45d9ba2c..00000000 Binary files a/docs/辟。邱/TWL譛ャ菴灘菫晏ュ俶ュ蝣ア譯.xls and /dev/null differ diff --git a/docs/辟。邱/WiFi繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ繧サ繧ュ繝・繝ェ繝繧」.mmap b/docs/辟。邱/WiFi繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ繧サ繧ュ繝・繝ェ繝繧」.mmap deleted file mode 100644 index e0f4eea6..00000000 Binary files a/docs/辟。邱/WiFi繧ィ繝溘Η繝ャ繝シ繧キ繝ァ繝ウ繧サ繧ュ繝・繝ェ繝繧」.mmap and /dev/null differ diff --git a/docs/辟。邱/firm_format.pdf b/docs/辟。邱/firm_format.pdf deleted file mode 100644 index 62ecc631..00000000 Binary files a/docs/辟。邱/firm_format.pdf and /dev/null differ diff --git a/docs/辟。邱/繝輔Ο繝シ_辟。邱壼晄悄蛹.vsd b/docs/辟。邱/繝輔Ο繝シ_辟。邱壼晄悄蛹.vsd deleted file mode 100644 index 6bbc8841..00000000 Binary files a/docs/辟。邱/繝輔Ο繝シ_辟。邱壼晄悄蛹.vsd and /dev/null differ diff --git a/docs/邨ア蜷医い繝励Μ隱崎ィシ繧キ繝シ繧ア繝ウ繧ケ.vsd b/docs/邨ア蜷医い繝励Μ隱崎ィシ繧キ繝シ繧ア繝ウ繧ケ.vsd deleted file mode 100644 index 403c3758..00000000 Binary files a/docs/邨ア蜷医い繝励Μ隱崎ィシ繧キ繝シ繧ア繝ウ繧ケ.vsd and /dev/null differ diff --git a/docs/骰オ邂。逅.xls b/docs/骰オ邂。逅.xls deleted file mode 100644 index e8f78f33..00000000 Binary files a/docs/骰オ邂。逅.xls and /dev/null differ diff --git a/docs/髢区橿繧ス繝輔ヨシァ縺顔寔莠亥ョ.xls b/docs/髢区橿繧ス繝輔ヨシァ縺顔寔莠亥ョ.xls deleted file mode 100644 index 201228f2..00000000 Binary files a/docs/髢区橿繧ス繝輔ヨシァ縺顔寔莠亥ョ.xls and /dev/null differ