mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
KENJCleaner追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@521 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
e6545bfbd3
commit
bc6cd94f64
50
build/tools/KENJCleaner/Makefile
Normal file
50
build/tools/KENJCleaner/Makefile
Normal file
@ -0,0 +1,50 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: Hello World!
|
||||
# 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.
|
||||
#
|
||||
# $NoKeywords: $
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
TARGET_PLATFORM := TWL
|
||||
TWL_ARCHGEN := LIMITED
|
||||
|
||||
SUBDIRS = banner
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SRCS = main.c myFunc.c myChar.c
|
||||
ROM_SPEC = demo.rsf
|
||||
|
||||
TARGET_BIN = KENJCleaner.srl
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
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
|
||||
|
||||
GLIBRARIES += \
|
||||
liblcfg$(TWL_LIBSUFFIX).a \
|
||||
libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libsfs$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
#===== End of Makefile =====
|
||||
49
build/tools/KENJCleaner/banner/Makefile
Normal file
49
build/tools/KENJCleaner/banner/Makefile
Normal file
@ -0,0 +1,49 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - nandApp - demos - backup
|
||||
# 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
|
||||
MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe
|
||||
|
||||
ICON_DIR = ./
|
||||
|
||||
BANNER_ICON = $(ICON_DIR)/myGameIcon.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)
|
||||
|
||||
#
|
||||
BIN
build/tools/KENJCleaner/banner/banner_v3.bsf
Normal file
BIN
build/tools/KENJCleaner/banner/banner_v3.bsf
Normal file
Binary file not shown.
BIN
build/tools/KENJCleaner/banner/myGameIcon.bmp
Normal file
BIN
build/tools/KENJCleaner/banner/myGameIcon.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 630 B |
224
build/tools/KENJCleaner/demo.rsf
Normal file
224
build/tools/KENJCleaner/demo.rsf
Normal file
@ -0,0 +1,224 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - include
|
||||
# File: ROM-TS.rsf
|
||||
#
|
||||
# Copyright 2007-2009 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
|
||||
#
|
||||
#RemasterVersion 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 "banner/banner.bnr"
|
||||
|
||||
###
|
||||
### Setting for TWL
|
||||
###
|
||||
|
||||
#
|
||||
# ROM HEADER Ltd:
|
||||
# don't have to edit
|
||||
#
|
||||
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
|
||||
|
||||
#
|
||||
# Digest parameters:
|
||||
#
|
||||
DigestParam 1024 32
|
||||
|
||||
#
|
||||
# WRAM mapping: [MAP2_TS_HYB/MAP2_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
################################################################
|
||||
|
||||
WramMapping MAP_TS_SCR
|
||||
|
||||
################################################################
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia]
|
||||
#
|
||||
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
|
||||
|
||||
|
||||
NANDAccess TRUE
|
||||
# SDCardAccess Read
|
||||
|
||||
#
|
||||
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
|
||||
#
|
||||
HwAESSlotB TRUE
|
||||
|
||||
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/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
|
||||
#
|
||||
GameCode NTRJ
|
||||
|
||||
#
|
||||
# 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 FALSE
|
||||
}
|
||||
|
||||
|
||||
RomSpec
|
||||
{
|
||||
Offset 0x00000000
|
||||
Segment ALL
|
||||
HostRoot $(MAKEROM_ROMROOT)
|
||||
Root /
|
||||
File $(MAKEROM_ROMFILES)
|
||||
}
|
||||
71
build/tools/KENJCleaner/src/KENJCleaner検証項目.txt
Normal file
71
build/tools/KENJCleaner/src/KENJCleaner検証項目.txt
Normal file
@ -0,0 +1,71 @@
|
||||
KENJCleaner チェックリスト
|
||||
2009.10.28
|
||||
|
||||
<KENJCleanerソフト仕様>
|
||||
・DSiWare「ほぼ日健康手帳」(InitialCode:KENJ)のセーブデータを乱数フィルした後に、
|
||||
ソフト本体を消去する。
|
||||
・日本リージョンのみ対象でOK。
|
||||
・検査カードフラグ有効で、ランチャースキップ自動アプリ起動。
|
||||
・ユーザー操作は一切受け付けない。
|
||||
・起動したら、自動実行して、以下の結果を表示。
|
||||
KENJが見つかった場合:
|
||||
[動作]
|
||||
KENJのセーブデータクリア
|
||||
KENJのアプリ消去
|
||||
[結果表示]
|
||||
OK:上画面は緑一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application found.
|
||||
Private Save : cleanup succeedded
|
||||
Public Save : cleanup succeedded
|
||||
Application : cleanup succeedded
|
||||
NG:上画面は赤一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application found.
|
||||
Private Save : cleanup failed.(※いずれか失敗したもののみ)
|
||||
Public Save : cleanup failed.(同上)
|
||||
Application : cleanup failed.(同上)
|
||||
KENJが見つからなかった場合:
|
||||
[動作]
|
||||
何もしない
|
||||
[結果表示]
|
||||
上画面は黄色一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application not found.
|
||||
|
||||
|
||||
<チェック環境>
|
||||
開発実機+ショップサーバ(DEV4)で確認。
|
||||
|
||||
|
||||
<チェックリスト>
|
||||
1.前準備
|
||||
→開発実機を製品本体と同じ内蔵アプリ状態にする。
|
||||
→KENJ以外のいくつかのユーザーアプリをDL。
|
||||
→内蔵アプリ含めて、セーブデータがあるものは、セーブデータを作成しておく。
|
||||
|
||||
|
||||
2.KENJが入っていない状態の確認。
|
||||
→TwlNMenuFullで、アプリ状態の確認。(何がインポートされているか。)
|
||||
→KENJClearnerを起動して、アプリが見つからなかったことを確認。
|
||||
→TwlNMenuFullで、アプリ状態に変化がないか確認。(何がインポートされているか。)
|
||||
→各アプリのセーブデータに変化がないか確認。
|
||||
|
||||
|
||||
3.KENJが入った状態の確認。
|
||||
→ショップからKENJをDL。
|
||||
→KENJを起動して、セーブデータを作成。
|
||||
→TwlNMenuFullで、アプリ状態の確認。(何がインポートされているか。)
|
||||
→KENJCleanerを起動して、セーブデータ&アプリが消去されることを確認。
|
||||
→ランチャー上からKENJが消去されていることを確認。
|
||||
→TwlNMenuFullで、KENJに対してeTicketのみが残されていることを確認。
|
||||
→TwlNMenuFullで、アプリ状態に変化がないか確認。(何がインポートされているか。)
|
||||
→各アプリのセーブデータに変化がないか確認。
|
||||
|
||||
|
||||
4.KENJの再DLの確認。
|
||||
→ショップからKENJを再DLできることを確認。
|
||||
→KENJを起動して、セーブデータが初期化されていることを確認。
|
||||
→セーブが行えることを確認。
|
||||
|
||||
|
||||
34
build/tools/KENJCleaner/src/README.txt
Normal file
34
build/tools/KENJCleaner/src/README.txt
Normal file
@ -0,0 +1,34 @@
|
||||
KENJCleaner チェックリスト
|
||||
2009.10.28
|
||||
|
||||
<KENJCleanerソフト仕様>
|
||||
・DSiWare「ほぼ日健康手帳」(InitialCode:KENJ)のセーブデータを乱数フィルした後に、
|
||||
ソフト本体を消去する。
|
||||
・日本リージョンのみ対象でOK。
|
||||
・検査カードフラグ有効で、ランチャースキップ自動アプリ起動。
|
||||
・ユーザー操作は一切受け付けない。
|
||||
・起動したら、自動実行して、以下の結果を表示。
|
||||
KENJが見つかった場合:
|
||||
[動作]
|
||||
KENJのセーブデータクリア
|
||||
KENJのアプリ消去
|
||||
[結果表示]
|
||||
OK:上画面は緑一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application found.
|
||||
Private Save : cleanup succeedded
|
||||
Public Save : cleanup succeedded
|
||||
Application : cleanup succeedded
|
||||
NG:上画面は赤一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application found.
|
||||
Private Save : cleanup failed.(※いずれか失敗したもののみ)
|
||||
Public Save : cleanup failed.(同上)
|
||||
Application : cleanup failed.(同上)
|
||||
KENJが見つからなかった場合:
|
||||
[動作]
|
||||
何もしない
|
||||
[結果表示]
|
||||
上画面は黄色一色。
|
||||
下画面に下記メッセージ表示。
|
||||
application not found.
|
||||
606
build/tools/KENJCleaner/src/main.c
Normal file
606
build/tools/KENJCleaner/src/main.c
Normal file
@ -0,0 +1,606 @@
|
||||
/********************************************************************/
|
||||
/* main.c */
|
||||
/* SaveDataCleaner */
|
||||
/* */
|
||||
/* Copyright (C) 2003-2006 NINTENDO Co.,Ltd. */
|
||||
/********************************************************************/
|
||||
/*
|
||||
メイン
|
||||
*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/aes.h>
|
||||
#include <twl/na.h>
|
||||
#include <twl/na/ARM9/init.h>
|
||||
#include <twl/sea.h>
|
||||
#include <twl/nam.h>
|
||||
#include "myChar.h"
|
||||
#include "myFunc.h"
|
||||
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
#define MY_DEBUG 0
|
||||
|
||||
#define ROUND_UP(value, alignment) \
|
||||
(((u32)(value) + (alignment-1)) & ~(alignment-1))
|
||||
|
||||
#define STREAMING_BUFFER_SIZE (128 * 1024)
|
||||
#define TITLEID_HI_USER_NAND 0x0003000400000000LL
|
||||
#define TARGET_INITIALCODE_SPEC_FILE "SaveDataCleaner.spec"
|
||||
|
||||
// extern data-----------------------------------------------------------------
|
||||
|
||||
// function's prototype--------------------------------------------------------
|
||||
static void INTR_VBlank( void );
|
||||
static void InitHeap( void );
|
||||
BOOL SearchTitle( OSTitleId titleID, BOOL *pIsPrivSave, BOOL *pIsPubSave );
|
||||
BOOL CleanupSaveDataDrive( const char *pDriveName , OSTitleId titleID );
|
||||
BOOL CreateFileWithLength( char *path, u32 length );
|
||||
BOOL DeleteDirectoryRecursively( const char *path );
|
||||
BOOL FillFileRandom( const char* path );
|
||||
BOOL DumpFile( const char* pPath );
|
||||
BOOL ReadTargetFileFromSD( const char *pFilename, char **ppDst, u32 *pFileSize );
|
||||
|
||||
// global variables------------------------------------------------------------
|
||||
u8 targetGameCode[ 5 ] = { 'K', 'E', 'N', 'J', 0x00 };
|
||||
|
||||
// static variables------------------------------------------------------------
|
||||
static u8 sStreamBuffer[ STREAMING_BUFFER_SIZE ] ATTRIBUTE_ALIGN(32);
|
||||
static FSFATFSArchiveWork sOtherTitleWork ATTRIBUTE_ALIGN(32);
|
||||
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// function's description
|
||||
// ============================================================================
|
||||
void TwlMain(void)
|
||||
{
|
||||
BOOL isFound = FALSE;
|
||||
BOOL isPrivSave = FALSE;
|
||||
BOOL isPubSave = FALSE;
|
||||
BOOL isFailed = FALSE;
|
||||
BOOL isAutoExe = TRUE;
|
||||
u16 pad_old = 0;
|
||||
u16 pad = 0;
|
||||
u16 trg = 0;
|
||||
OSTitleId titleID;
|
||||
|
||||
(void)OS_EnableIrq();
|
||||
(void)OS_EnableInterrupts();
|
||||
|
||||
OS_Init();
|
||||
SEA_Init();
|
||||
FS_Init( 3 );
|
||||
// AES_Init();
|
||||
|
||||
InitHeap();
|
||||
InitDispMain();
|
||||
InitDispSub ();
|
||||
|
||||
NAM_Init( OS_AllocFromMain, OS_FreeToMain );
|
||||
|
||||
// Vブランク割り込み許可----------------------------
|
||||
(void)OS_SetIrqFunction( OS_IE_V_BLANK, INTR_VBlank );
|
||||
(void)OS_EnableIrqMask ( OS_IE_V_BLANK );
|
||||
(void)GX_VBlankIntr( TRUE );
|
||||
|
||||
//---- 表示開始
|
||||
GX_DispOn();
|
||||
GXS_DispOn();
|
||||
|
||||
PrintStringS( 1, 0, YELLOW, "SaveData Clearner" );
|
||||
|
||||
// SDカード上のSPECファイルから、ターゲットのGameCodeを読み込み
|
||||
#if USE_SDCARD
|
||||
{
|
||||
u32 size;
|
||||
char *pSrc = TARGET_INITIALCODE_SPEC_FILE;
|
||||
char *pSDFileBuffer;
|
||||
if( !ReadTargetFileFromSD( pSrc, &pSDFileBuffer, &size ) ) {
|
||||
PrintStringS( 1, 6, RED, "SD card specfile read failed." );
|
||||
PrintStringS( 1, 8, WHITE, "Please set" );
|
||||
PrintStringS( 1, 10, WHITE, " \"%s\"", TARGET_INITIALCODE_SPEC_FILE );
|
||||
SVC_WaitVBlankIntr();
|
||||
OS_Terminate();
|
||||
}
|
||||
if( !STD_TSScanf( pSDFileBuffer, "%4s", targetGameCode ) ||
|
||||
STD_StrLen( (const char *)targetGameCode ) != 4 ) {
|
||||
PrintStringS( 1, 6, RED, "SD card specfile format failed." );
|
||||
PrintStringS( 1, 8, WHITE, "Please set InitialCode." );
|
||||
SVC_WaitVBlankIntr();
|
||||
OS_Terminate();
|
||||
}
|
||||
OS_TPrintf( "%s\n", targetGameCode );
|
||||
OS_Free( pSDFileBuffer );
|
||||
}
|
||||
#endif
|
||||
|
||||
// targetGameCode から titleID を作成
|
||||
{
|
||||
int i;
|
||||
u8 *pDst = (u8 *)&titleID;
|
||||
titleID = TITLEID_HI_USER_NAND;
|
||||
for( i = 0; i < 4; i++ ) {
|
||||
*pDst++ = targetGameCode[ 3 -i ];
|
||||
}
|
||||
}
|
||||
|
||||
// セーブデータサーチ
|
||||
isFound = SearchTitle( titleID, &isPrivSave, &isPubSave );
|
||||
PrintStringS( 1, 6, WHITE, "InitialCode : %s", targetGameCode );
|
||||
if( isFound ) {
|
||||
PrintStringS( 1, 8, GREEN, "application found.", targetGameCode );
|
||||
PrintStringS( 1, 10, WHITE, "Press [A] to Cleanup START." );
|
||||
PrintStringS( 1, 11, WHITE, "Press [B] to STOP." );
|
||||
}else {
|
||||
PrintStringS( 1, 8, YELLOW, "application not found.", targetGameCode );
|
||||
*(u16 *)0x05000006 = myPalette[ YELLOW ][ 1 ];
|
||||
}
|
||||
SVC_WaitVBlankIntr();
|
||||
|
||||
// メインループ----------------------------
|
||||
trg = PAD_Read(); // パッドデータ読み取り
|
||||
while( isFound ){
|
||||
// パッドデータ読み取り
|
||||
pad_old = pad;
|
||||
pad = PAD_Read();
|
||||
trg = (u16)( pad ^ pad_old );
|
||||
|
||||
if( ( trg & ( PAD_BUTTON_A | PAD_BUTTON_B ) ) || isAutoExe ) {
|
||||
ClearRectangleS( 1, 10, 31, 1 );
|
||||
ClearRectangleS( 1, 11, 31, 1 );
|
||||
}
|
||||
if( ( trg & PAD_BUTTON_A ) || isAutoExe ) {
|
||||
// セーブデータクリア実行
|
||||
// Privateセーブデータ
|
||||
PrintStringS( 1, 10, WHITE, "Private Save:" );
|
||||
if( isPrivSave ) {
|
||||
PrintStringS( 14, 10, YELLOW, "cleanup executing..." );
|
||||
if( CleanupSaveDataDrive( "otherPrv", titleID ) ) {
|
||||
PrintStringS( 14, 10, GREEN, "cleanup succeedded. " );
|
||||
}else {
|
||||
PrintStringS( 14, 10, RED, "cleanup failed. " );
|
||||
isFailed = TRUE;
|
||||
}
|
||||
}else {
|
||||
PrintStringS( 14, 10, YELLOW, "not existed." );
|
||||
}
|
||||
|
||||
// Publicセーブデータ
|
||||
PrintStringS( 1, 11, WHITE, "Public Save:" );
|
||||
if( isPubSave ) {
|
||||
PrintStringS( 14, 11, YELLOW, "cleanup executing." );
|
||||
if( CleanupSaveDataDrive( "otherPub", titleID ) ) {
|
||||
PrintStringS( 14, 11, GREEN, "cleanup succeedded. " );
|
||||
}else {
|
||||
PrintStringS( 14, 11, RED, "cleanup failed. " );
|
||||
isFailed = TRUE;
|
||||
}
|
||||
}else {
|
||||
PrintStringS( 14, 11, YELLOW, "not existed." );
|
||||
}
|
||||
|
||||
PrintStringS( 1, 12, WHITE, "Application :" );
|
||||
PrintStringS( 14, 12, YELLOW, "cleanup executing." );
|
||||
if( NAM_DeleteTitle( titleID ) == NAM_OK ) {
|
||||
PrintStringS( 14, 12, GREEN, "cleanup succeedded. " );
|
||||
}else {
|
||||
PrintStringS( 14, 12, RED, "cleanup failed. " );
|
||||
isFailed = TRUE;
|
||||
}
|
||||
if( isFailed ) {
|
||||
*(u16 *)0x05000006 = myPalette[ RED ][ 1 ];
|
||||
}else {
|
||||
*(u16 *)0x05000006 = myPalette[ LIGHTGREEN ][ 1 ];
|
||||
}
|
||||
break;
|
||||
}else if( trg & PAD_BUTTON_B ) {
|
||||
// セーブデータクリアキャンセル。
|
||||
PrintStringS( 1, 10, YELLOW, "Cancel SaveData cleanup." );
|
||||
break;
|
||||
}
|
||||
SVC_WaitVBlankIntr(); // Vブランク割込終了待ち
|
||||
}
|
||||
|
||||
SVC_WaitVBlankIntr();
|
||||
OS_Terminate();
|
||||
}
|
||||
|
||||
// Vブランク割り込み
|
||||
static void INTR_VBlank(void)
|
||||
{
|
||||
//---- BG-VRAMの更新
|
||||
DC_FlushRange( bg0BakM, sizeof(bg0BakM) );
|
||||
MI_CpuCopyFast ( bg0BakM, (void*)( HW_BG_VRAM + BG0_SCREEN_BASE ), sizeof(bg0BakM) );
|
||||
DC_FlushRange( bg0BakS, sizeof(bg0BakS) );
|
||||
MI_CpuCopyFast ( bg0BakS, (void*)( HW_DB_BG_VRAM + BG0_SCREEN_BASE ), sizeof(bg0BakS) );
|
||||
//---- 割り込みチェックフラグ
|
||||
OS_SetIrqCheckFlag( OS_IE_V_BLANK );
|
||||
}
|
||||
|
||||
|
||||
// ヒープ初期化
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
// 指定タイトルが存在するか確認し、存在するなら、sameMakerFlag を強制セットし、Privateセーブデータ、Publicセーブデータの存在有無を返す。
|
||||
BOOL SearchTitle( OSTitleId titleID, BOOL *pIsPrivSave, BOOL *pIsPubSave )
|
||||
{
|
||||
int i;
|
||||
int index, shift;
|
||||
|
||||
OSTitleIDList *pList = (OSTitleIDList *)HW_OS_TITLE_ID_LIST;
|
||||
for ( i = 0; i < pList->num; i++ ) {
|
||||
if( pList->TitleID[ i ] == titleID ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( i == pList->num ) {
|
||||
*pIsPrivSave = FALSE;
|
||||
*pIsPubSave = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
index = i >> 3;
|
||||
shift = i % 8;
|
||||
pList->sameMakerFlag[ index ] |= 0x01 << shift;
|
||||
// pList->privateFlag[ index ] |= 0x01 << shift; // ユーザーアプリなら、privateFlagも問題ないはず。
|
||||
*pIsPrivSave = ( pList->privateFlag[ index ] & ( 0x01 << shift ) ) ? TRUE : FALSE;
|
||||
*pIsPubSave = ( pList->publicFlag [ index ] & ( 0x01 << shift ) ) ? TRUE : FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// 指定されたセーブデータドライブのセーブデータ消去
|
||||
BOOL CleanupSaveDataDrive( const char *pDriveName , OSTitleId titleID ) // otherPrv, otherPub
|
||||
{
|
||||
#define TEMP_FILE "temp.bin"
|
||||
BOOL result = TRUE;
|
||||
FSArchiveResource rsc, rsc2;
|
||||
char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||
|
||||
if( pDriveName == NULL ) {
|
||||
OS_TPrintf( "drive name invalid.\n" );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Privateセーブデータをマウント
|
||||
if( FSi_MountSpecialArchive( titleID, pDriveName, &sOtherTitleWork) != FS_RESULT_SUCCESS ) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Privateセーブデータドライブ上の全データ削除
|
||||
STD_TSPrintf( path, "%s:/", pDriveName );
|
||||
if( !DeleteDirectoryRecursively( path ) ) {
|
||||
OS_TPrintf( "%s delete recursively failed.\n", path );
|
||||
result = FALSE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
// ドライブの空き領域を取得
|
||||
if( !FS_GetArchiveResource( path, &rsc ) ) {
|
||||
OS_TPrintf( "FS_GetArchiveResource(%s) failed : code = %08x\n", path, FS_GetArchiveResultCode( &rsc ) );
|
||||
result = FALSE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
// 空き領域が32bitを超えていた場合はエラー
|
||||
if( rsc.availableSize > 0x0000000100000000LL ) {
|
||||
OS_TPrintf( "%s : availableSize over 32bit.\n", pDriveName );
|
||||
result = FALSE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
STD_TSPrintf( path, "%s:/%s", pDriveName, TEMP_FILE );
|
||||
|
||||
#if MY_DEBUG
|
||||
(void)CreateFileWithLength( path, (u32)rsc.availableSize );
|
||||
(void)DumpFile( path );
|
||||
(void)FS_DeleteFile( path );
|
||||
#endif
|
||||
|
||||
// ドライブの空きサイズMAXで、TEMPファイル生成
|
||||
if( !CreateFileWithLength( path, (u32)rsc.availableSize ) ) {
|
||||
OS_TPrintf( "CreateFileWithLength(%s, %08x) failed.\n", path, (u32)rsc.availableSize );
|
||||
result = FALSE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
// ファイルランダムフィル
|
||||
if( !FillFileRandom( path ) ) {
|
||||
OS_TPrintf( "FillFileRandom(%s) failed.\n", path );
|
||||
result = FALSE;
|
||||
}
|
||||
|
||||
// ファイル削除
|
||||
if( !FS_DeleteFile( path ) ) {
|
||||
OS_TPrintf( "FS_DeleteFile(%s) failed.\n", path );
|
||||
result = FALSE;
|
||||
}
|
||||
|
||||
// 再度ドライブの空き領域を取得
|
||||
if( !FS_GetArchiveResource( path, &rsc2 ) ) {
|
||||
OS_TPrintf( "FS_GetArchiveResource(%s) failed : code = %08x\n", path, FS_GetArchiveResultCode( &rsc2 ) );
|
||||
result = FALSE;
|
||||
}
|
||||
|
||||
#if MY_DEBUG
|
||||
(void)CreateFileWithLength( path, (u32)rsc.availableSize );
|
||||
(void)DumpFile( path );
|
||||
(void)FS_DeleteFile( path );
|
||||
#endif
|
||||
|
||||
// 空きサイズが同じかチェック
|
||||
OS_TPrintf( "Before available size : %016llx\n", rsc.availableSize );
|
||||
OS_TPrintf( "After available size : %016llx\n", rsc2.availableSize );
|
||||
if( rsc.availableSize != rsc2.availableSize ) {
|
||||
OS_TPrintf( "available size error.\n" );
|
||||
result = FALSE;
|
||||
}
|
||||
|
||||
END:
|
||||
// セーブデータのマウント解除
|
||||
(void)FSi_MountSpecialArchive(0, NULL, &sOtherTitleWork);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// 指定パス以下のディレクトリを消去
|
||||
BOOL DeleteDirectoryRecursively( const char *pPath )
|
||||
{
|
||||
FSFile dir;
|
||||
FSDirectoryEntryInfo entryInfo;
|
||||
BOOL ret = TRUE;
|
||||
char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||
|
||||
FS_InitFile( &dir );
|
||||
|
||||
// 引数で指定されたディレクトリを開く
|
||||
if ( !FS_OpenDirectory( &dir, pPath, FS_FILEMODE_R ) ) {
|
||||
OS_TWarning( "Fail! FS_OpenDirectory(%s) in %s\n", pPath, __func__ );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// ディレクトリの中身を読む
|
||||
while ( FS_ReadDirectory( &dir, &entryInfo ) )
|
||||
{
|
||||
if ( STD_CompareString( entryInfo.longname, "." ) == 0 ||
|
||||
STD_CompareString( entryInfo.longname, ".." ) == 0 ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
STD_CopyLString( path, pPath, FS_ENTRY_LONGNAME_MAX );
|
||||
STD_ConcatenateLString( path, "/", FS_ENTRY_LONGNAME_MAX );
|
||||
STD_ConcatenateLString( path, entryInfo.longname, FS_ENTRY_LONGNAME_MAX );
|
||||
|
||||
// ディレクトリ
|
||||
if (entryInfo.attributes & FS_ATTRIBUTE_IS_DIRECTORY) {
|
||||
if (!FS_DeleteDirectoryAuto(path)) {
|
||||
ret = FALSE;
|
||||
OS_TWarning( "Fail! FS_DeleteDirectoryAuto(%s) in %s\n", path, __func__ );
|
||||
}
|
||||
}else {
|
||||
// ファイル
|
||||
if ( !FS_DeleteFileAuto( path ) ) {
|
||||
ret = FALSE;
|
||||
OS_TWarning( "Fail! FS_DeleteFileAuto(%s) in %s\n", path, __func__ );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ディレクトリを閉じる
|
||||
FS_CloseDirectory( &dir );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// 指定ファイルを指定サイズで作成
|
||||
BOOL CreateFileWithLength( char *path, u32 length )
|
||||
{
|
||||
FSFile file;
|
||||
BOOL result = TRUE;
|
||||
|
||||
// Privateセーブデータドライブ上にTEMPファイル作成
|
||||
if ( !FS_CreateFile( path, FS_PERMIT_R | FS_PERMIT_RW ) )
|
||||
{
|
||||
OS_TPrintf( "FS_CreateFile(%s) failed.\n", path );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// TEMPファイルオープン
|
||||
FS_InitFile(&file);
|
||||
if ( !FS_OpenFileEx( &file, path, FS_FILEMODE_W ) )
|
||||
{
|
||||
OS_TPrintf( "FS_OpenFile(%s) failed.\n", path );
|
||||
result = FALSE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
// ファイルサイズをセット
|
||||
if ( FS_SetFileLength( &file, length ) != FS_RESULT_SUCCESS )
|
||||
{
|
||||
OS_TPrintf( "FS_SetFileLength(%s) failed.\n", path );
|
||||
result = FALSE;
|
||||
}
|
||||
|
||||
END:
|
||||
// ファイルクローズ
|
||||
(void)FS_CloseFile( &file );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// 指定ファイルをランダムデータでフィル
|
||||
BOOL FillFileRandom( const char* pPath )
|
||||
{
|
||||
u64 seed;
|
||||
MATHRandContext32 rndctx;
|
||||
u32 *pBuffer = (u32 *)sStreamBuffer;
|
||||
s32 result = TRUE;
|
||||
FSFile f;
|
||||
|
||||
// 乱数のSEED設定
|
||||
if( AES_Rand( &seed, sizeof(seed) ) != AES_RESULT_SUCCESS ) {
|
||||
return FALSE;
|
||||
}
|
||||
MATH_InitRand32( &rndctx, seed );
|
||||
|
||||
// ファイルフィル
|
||||
FS_InitFile( &f );
|
||||
if( !FS_OpenFileEx( &f, pPath, FS_FILEMODE_RWL ) ) {
|
||||
return FALSE;
|
||||
}else {
|
||||
u32 fileSize;
|
||||
u32 current;
|
||||
|
||||
fileSize = FS_GetFileLength(&f);
|
||||
|
||||
for( current = 0; current < fileSize; current += STREAMING_BUFFER_SIZE ) {
|
||||
const u32 nextSize = MATH_MIN( STREAMING_BUFFER_SIZE, fileSize - current);
|
||||
const u32 nextU32 = MATH_DIVUP( nextSize, sizeof(u32) );
|
||||
u32 i;
|
||||
s32 writtenSize;
|
||||
u32* p = pBuffer;
|
||||
|
||||
for( i = 0; i < nextU32; ++i ) {
|
||||
*p++ = MATH_Rand32( &rndctx, 0 );
|
||||
}
|
||||
|
||||
writtenSize = FS_WriteFile( &f, pBuffer, (s32)nextSize );
|
||||
|
||||
if( writtenSize != (s32)nextSize ) {
|
||||
result = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(void)FS_CloseFile( &f );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// 指定ファイルをストリームバッファに読み捨て
|
||||
BOOL DumpFile( const char* pPath )
|
||||
{
|
||||
u32 *pBuffer = (u32 *)sStreamBuffer;
|
||||
s32 result = TRUE;
|
||||
FSFile f;
|
||||
|
||||
// ファイルフィル
|
||||
FS_InitFile( &f );
|
||||
if( !FS_OpenFileEx( &f, pPath, FS_FILEMODE_R ) ) {
|
||||
return FALSE;
|
||||
}else {
|
||||
u32 fileSize;
|
||||
u32 current;
|
||||
|
||||
fileSize = FS_GetFileLength(&f);
|
||||
|
||||
for( current = 0; current < fileSize; current += STREAMING_BUFFER_SIZE ) {
|
||||
const u32 nextSize = MATH_MIN( STREAMING_BUFFER_SIZE, fileSize - current);
|
||||
const u32 nextU32 = MATH_DIVUP( nextSize, sizeof(u32) );
|
||||
s32 readSize;
|
||||
|
||||
readSize = FS_ReadFile( &f, pBuffer, (s32)nextSize );
|
||||
|
||||
if( readSize != (s32)nextSize ) {
|
||||
result = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(void)FS_CloseFile( &f );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// SDカードのルートディレクトリ上の指定ファイルをバッファに読み込み
|
||||
BOOL ReadTargetFileFromSD( const char *pFilename, char **ppDst, u32 *pFileSize )
|
||||
{
|
||||
FSFile dir, file;
|
||||
BOOL open_is_ok;
|
||||
BOOL read_is_ok;
|
||||
u32 allocSize;
|
||||
BOOL result = TRUE;
|
||||
char fullPath[FS_ENTRY_LONGNAME_MAX+6];
|
||||
|
||||
// バッファのクリア
|
||||
MI_CpuClear8( fullPath, sizeof(fullPath) );
|
||||
|
||||
// SDカードのルートディレクトリを検索
|
||||
FS_InitFile(&dir);
|
||||
if ( !FS_OpenDirectory(&dir, "sdmc:/", FS_FILEMODE_R) )
|
||||
{
|
||||
OS_TPrintf("Error FS_OpenDirectory(sdmc:/)");
|
||||
}
|
||||
else
|
||||
{
|
||||
FSDirectoryEntryInfo info[1];
|
||||
// ルートディレクトリ上でターゲットファイルを探す
|
||||
while (FS_ReadDirectory(&dir, info))
|
||||
{
|
||||
if ((info->attributes & (FS_ATTRIBUTE_DOS_DIRECTORY | FS_ATTRIBUTE_IS_DIRECTORY)) == 0 )
|
||||
{
|
||||
if (!STD_CompareNString(info->longname, pFilename, STD_GetStringLength( pFilename ) ) )
|
||||
{
|
||||
STD_CopyString( fullPath, "sdmc:/" );
|
||||
STD_ConcatenateString( fullPath, pFilename );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
(void)FS_CloseDirectory(&dir);
|
||||
}
|
||||
|
||||
// ファイルオープン
|
||||
FS_InitFile(&file);
|
||||
open_is_ok = FS_OpenFile(&file, fullPath);
|
||||
if (!open_is_ok)
|
||||
{
|
||||
OS_TPrintf( "FS_OpenFile(\"%s\") ... ERROR!\n", fullPath);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// ファイルリード
|
||||
*pFileSize = FS_GetFileLength(&file) ;
|
||||
allocSize = ROUND_UP(*pFileSize, 32) ;
|
||||
*ppDst = OS_Alloc( allocSize );
|
||||
SDK_NULL_ASSERT(*ppDst);
|
||||
DC_InvalidateRange(*ppDst, allocSize);
|
||||
read_is_ok = FS_ReadFile( &file, *ppDst, (s32)*pFileSize );
|
||||
FS_CloseFile(&file);
|
||||
if (!read_is_ok)
|
||||
{
|
||||
OS_TPrintf( "FS_ReadFile(\"%s\") ... ERROR!\n", fullPath);
|
||||
OS_Free(*ppDst);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
678
build/tools/KENJCleaner/src/myChar.c
Normal file
678
build/tools/KENJCleaner/src/myChar.c
Normal file
@ -0,0 +1,678 @@
|
||||
/********************************************************************/
|
||||
/* myChar.c */
|
||||
/* HelloWorld */
|
||||
/* */
|
||||
/* Copyright (C) 2003-2006 NINTENDO Co.,Ltd. */
|
||||
/********************************************************************/
|
||||
/*
|
||||
自作キャラデータ
|
||||
*/
|
||||
|
||||
#include "myFunc.h"
|
||||
|
||||
// パレットデータ----------------------------------------------------
|
||||
#define RGB555( r, g, b ) ( b << 10 | g << 5 | r )
|
||||
|
||||
// 背景黒ベース
|
||||
const u16 myPalette[ 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
|
||||
};
|
||||
|
||||
|
||||
|
||||
// キャラクタデータ--------------------------------------------------
|
||||
// ※ASCIIコード順に並んでいます。
|
||||
const u16 myChar[ 0x20 * 0x140 / sizeof(u16) ]={
|
||||
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,
|
||||
};
|
||||
48
build/tools/KENJCleaner/src/myChar.h
Normal file
48
build/tools/KENJCleaner/src/myChar.h
Normal file
@ -0,0 +1,48 @@
|
||||
/********************************************************************/
|
||||
/* myChar.h */
|
||||
/* HelloWolrd */
|
||||
/* */
|
||||
/* Copyright (C) 2003-2006 NINTENDO Co.,Ltd. */
|
||||
/********************************************************************/
|
||||
/*
|
||||
自作キャラデータ ヘッダ
|
||||
*/
|
||||
|
||||
#ifndef __MY_CHAR_H__
|
||||
#define __MY_CHAR_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
// define data ------------------------------------------------------
|
||||
|
||||
// パレットカラー
|
||||
#define WHITE 0
|
||||
#define RED 1
|
||||
#define GREEN 2
|
||||
#define BLUE 3
|
||||
#define YELLOW 4
|
||||
#define CYAN 5
|
||||
#define PURPLE 6
|
||||
#define LIGHTGREEN 7
|
||||
#define HIGHLIGHT_Y 8
|
||||
#define HIGHLIGHT_C 9
|
||||
|
||||
// global variable---------------------------------------------------
|
||||
|
||||
// const data--------------------------------------------------------
|
||||
extern const u16 myPalette[ 13 ][ 16 ]; // パレットデータ
|
||||
extern const u16 myChar[ 0x20 * 0x140 / sizeof(u16) ]; // キャラクターデータ
|
||||
|
||||
// function----------------------------------------------------------
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __MY_CHAR_H__
|
||||
|
||||
163
build/tools/KENJCleaner/src/myFunc.c
Normal file
163
build/tools/KENJCleaner/src/myFunc.c
Normal file
@ -0,0 +1,163 @@
|
||||
/********************************************************************/
|
||||
/* myFunc.c */
|
||||
/* HelloWorld */
|
||||
/* */
|
||||
/* Copyright (C) 2003-2006 NINTENDO Co.,Ltd. */
|
||||
/********************************************************************/
|
||||
/*
|
||||
自作ルーチン
|
||||
*/
|
||||
|
||||
#include <nitro.h>
|
||||
#include "myFunc.h"
|
||||
#include "myChar.h"
|
||||
|
||||
// define data-------------------------------------------------------
|
||||
|
||||
// function's prototype----------------------------------------------
|
||||
static void ClearVRAM( void );
|
||||
static void PrintStringCore( BOOL sel_lcd, s32 x, s32 y, u16 color, const char *strp );
|
||||
|
||||
// extern data-------------------------------------------------------
|
||||
|
||||
// global variable---------------------------------------------------
|
||||
u16 bg0BakM[ SCREEN_X_CHAR * SCREEN_Y_CHAR ] ATTRIBUTE_ALIGN(32); // メインBG0 バックアップ
|
||||
u16 bg0BakS[ SCREEN_X_CHAR * SCREEN_Y_CHAR ] ATTRIBUTE_ALIGN(32); // サブ BG0 バックアップ
|
||||
|
||||
// static variable---------------------------------------------------
|
||||
|
||||
// const data--------------------------------------------------------
|
||||
|
||||
|
||||
// ==================================================================
|
||||
// function's description
|
||||
// ==================================================================
|
||||
|
||||
// VRAMクリア
|
||||
static void ClearVRAM( void )
|
||||
{
|
||||
static BOOL cleared = FALSE;
|
||||
if( !cleared ) {
|
||||
GX_SetBankForLCDC( GX_VRAM_LCDC_ALL ); // VRAMクリアのために一時的にLCDCにVRAMを全て割り当てる。
|
||||
MI_CpuClearFast( (void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE );
|
||||
(void)GX_DisableBankForLCDC();
|
||||
cleared = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 画面初期化
|
||||
void InitDispMain( void )
|
||||
{
|
||||
// 画面設定-----------------------------------
|
||||
GX_DispOff(); // LCDC OFF
|
||||
|
||||
// VRAMクリア
|
||||
ClearVRAM();
|
||||
|
||||
//---- パレットクリア
|
||||
MI_CpuClearFast( (void*)HW_PLTT, HW_PLTT_SIZE );
|
||||
|
||||
//---- VRAMの割り当て
|
||||
GX_SetBankForBG ( GX_VRAM_BG_128_A );
|
||||
|
||||
//---- グラフィックス表示モードにする
|
||||
GX_SetGraphicsMode( GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D );
|
||||
|
||||
//---- BG0の設定
|
||||
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 ); // BGコントロール セット
|
||||
|
||||
//---- BG0の表示のみON
|
||||
GX_SetVisiblePlane( GX_PLANEMASK_BG0 );
|
||||
|
||||
//---- データロード
|
||||
MI_CpuCopy16( myChar, (void *)( HW_BG_VRAM + BG0_CHAR_BASE ), sizeof(myChar) ); // BGキャラクタ セット
|
||||
MI_CpuCopy16( myPalette, (void *)HW_BG_PLTT, sizeof(myPalette) ); // BGパレット セット
|
||||
|
||||
// スクリーンバッファクリア
|
||||
MI_CpuClear32( bg0BakM, sizeof(bg0BakM) );
|
||||
}
|
||||
|
||||
|
||||
// サブ画面初期化
|
||||
void InitDispSub( void )
|
||||
{
|
||||
// 画面設定-----------------------------------
|
||||
GXS_DispOff(); // LCDC OFF
|
||||
|
||||
// VRAMクリア
|
||||
ClearVRAM();
|
||||
|
||||
//---- パレットクリア
|
||||
MI_CpuClearFast( (void*)HW_DB_PLTT, HW_DB_PLTT_SIZE );
|
||||
|
||||
//---- VRAMの割り当て
|
||||
GX_SetBankForSubBG ( GX_VRAM_SUB_BG_128_C );
|
||||
|
||||
//---- グラフィックス表示モードにする
|
||||
GXS_SetGraphicsMode( GX_BGMODE_0 );
|
||||
|
||||
//---- BG0の設定
|
||||
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 ); // BGコントロール セット
|
||||
|
||||
//---- BG0の表示のみON
|
||||
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
|
||||
|
||||
//---- データロード
|
||||
MI_CpuCopy16( myChar, (void *)( HW_DB_BG_VRAM + BG0_CHAR_BASE ), sizeof(myChar) ); // BGキャラクタ セット
|
||||
MI_CpuCopy16( myPalette, (void *)HW_DB_BG_PLTT, sizeof(myPalette) ); // BGパレット セット
|
||||
|
||||
// スクリーンバッファクリア
|
||||
MI_CpuClear32( bg0BakS, sizeof(bg0BakS) );
|
||||
}
|
||||
|
||||
|
||||
// DSスクリーンへの文字列出力
|
||||
void PrintString( BOOL sel_lcd, s32 x, s32 y, u16 color, const char *fmt, ... )
|
||||
{
|
||||
char buf[ 64 + 2 ];
|
||||
|
||||
va_list vlist;
|
||||
va_start( vlist, fmt );
|
||||
(void)OS_VSNPrintf( buf, sizeof(buf) - 2, fmt, vlist );
|
||||
va_end( vlist );
|
||||
|
||||
PrintStringCore( sel_lcd, x, y, color, (const char *)buf );
|
||||
}
|
||||
|
||||
|
||||
// DSスクリーンバッファへの文字列書き出し
|
||||
static void PrintStringCore( BOOL sel_lcd, s32 x, s32 y, u16 color, const char *strp )
|
||||
{
|
||||
u16 *buffp = ( sel_lcd ) ? (u16 *)bg0BakM : (u16 *)bg0BakS;
|
||||
u16 *dstp = buffp + x + ( y * SCREEN_X_CHAR );
|
||||
|
||||
while( *strp ) {
|
||||
*dstp++ = (u16)( ( color << GX_SCRFMT_TEXT_COLORPLTT_SHIFT ) | *strp++ );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 矩形スクリーンクリア
|
||||
void ClearRectangle( u16 *pScreen, u16 pos_x, u16 pos_y, u8 width, u8 height )
|
||||
{
|
||||
u16 i,j;
|
||||
|
||||
pScreen += pos_x + ( pos_y << 5 );
|
||||
for(i=0;i<height;i++) {
|
||||
for( j = 0; j < width; j++ ) {
|
||||
*pScreen++ = 0x0020;
|
||||
}
|
||||
pScreen += 0x20 - width;
|
||||
}
|
||||
}
|
||||
50
build/tools/KENJCleaner/src/myFunc.h
Normal file
50
build/tools/KENJCleaner/src/myFunc.h
Normal file
@ -0,0 +1,50 @@
|
||||
/********************************************************************/
|
||||
/* myChar.h */
|
||||
/* HelloWorld */
|
||||
/* */
|
||||
/* Copyright (C) 2003-2006 NINTENDO Co.,Ltd. */
|
||||
/********************************************************************/
|
||||
/*
|
||||
自作関数 ヘッダ
|
||||
*/
|
||||
|
||||
#ifndef __MY_FUNC_H__
|
||||
#define __MY_FUNC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
// define data ------------------------------------------------------
|
||||
#define SCREEN_X_CHAR 32 // スクリーン横キャラクタ数
|
||||
#define SCREEN_Y_CHAR 24 // スクリーン縦キャラクタ数
|
||||
|
||||
#define BG0_CHAR_BASE 0x4000
|
||||
#define BG0_SCREEN_BASE 0x0000
|
||||
|
||||
#define PrintStringM(...) PrintString( 1, __VA_ARGS__ )
|
||||
#define PrintStringS(...) PrintString( 0, __VA_ARGS__ )
|
||||
#define ClearRectangleM(...) ClearRectangle( bg0BakM, __VA_ARGS__ )
|
||||
#define ClearRectangleS(...) ClearRectangle( bg0BakS, __VA_ARGS__ )
|
||||
|
||||
// global variable---------------------------------------------------
|
||||
extern u16 bg0BakM[ SCREEN_X_CHAR * SCREEN_Y_CHAR ]; // メインBG0 バックアップ
|
||||
extern u16 bg0BakS[ SCREEN_X_CHAR * SCREEN_Y_CHAR ]; // サブ BG0 バックアップ
|
||||
|
||||
// const data--------------------------------------------------------
|
||||
|
||||
// function----------------------------------------------------------
|
||||
void InitDispMain( void );
|
||||
void InitDispSub ( void );
|
||||
void PrintString( BOOL sel_lcd, s32 x, s32 y, u16 color, const char *fmt, ... ); // 64文字までの書式付き文字列を画面に出力
|
||||
void ClearRectangle( u16 *pScreen, u16 pos_x, u16 pos_y, u8 width, u8 height ); // 矩形スクリーンクリア
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __MY_FUNC_H__
|
||||
|
||||
Loading…
Reference in New Issue
Block a user