diff --git a/build/debugsoft/treenand2sd/Makefile b/build/debugsoft/treenand2sd/Makefile new file mode 100644 index 00000000..93d53d6b --- /dev/null +++ b/build/debugsoft/treenand2sd/Makefile @@ -0,0 +1,71 @@ +#! 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 new file mode 100644 index 00000000..aa698cea --- /dev/null +++ b/build/debugsoft/treenand2sd/include/MyStrings.h @@ -0,0 +1,84 @@ +/************************************************************************* + +簡単な文字列表示する関数群 + + ************************************************************************/ +#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 new file mode 100644 index 00000000..6670ec12 --- /dev/null +++ b/build/debugsoft/treenand2sd/include/basicdef.h @@ -0,0 +1,123 @@ +/************************************************************************** + + 基本定義ヘッダファイル + + 多くのソースファイルで使用する基本的な情報を記述しています。 + + + *************************************************************************/ + + +/* 多重インクルードの回避 */ +#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 new file mode 100644 index 00000000..33fcb71b --- /dev/null +++ b/build/debugsoft/treenand2sd/include/fontdata.h @@ -0,0 +1,27 @@ +/******************************************************************** + + 標準データの定義 + + + ********************************************************************/ +#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 new file mode 100644 index 00000000..e8fa13b7 --- /dev/null +++ b/build/debugsoft/treenand2sd/include/text.h @@ -0,0 +1,70 @@ +/************************************************************************ + + テキスト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 new file mode 100644 index 00000000..52398988 --- /dev/null +++ b/build/debugsoft/treenand2sd/src/MyStrings.c @@ -0,0 +1,313 @@ +/************************************************************************ + +タイトル: + 文字、文字列表示ルーチン集 + + ************************************************************************/ +#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 new file mode 100644 index 00000000..ce0da841 --- /dev/null +++ b/build/debugsoft/treenand2sd/src/fontdata.c @@ -0,0 +1,594 @@ +/******************************************************************** + +タイトル: + 標準データの定義 + + + ********************************************************************/ +#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 new file mode 100644 index 00000000..6f4ad204 --- /dev/null +++ b/build/debugsoft/treenand2sd/src/main.cpp @@ -0,0 +1,365 @@ +/*---------------------------------------------------------------------------* + 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 new file mode 100644 index 00000000..0e8ba5b6 --- /dev/null +++ b/build/debugsoft/treenand2sd/src/text.c @@ -0,0 +1,113 @@ +/******************************************************************** + +タイトル: + テキスト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) ); + +} +