changeset 65:4416cfac86ae

Convert EUC-JP files to UTF8
author Thibaut Girka <thib@sitedethib.com>
date Fri, 26 Nov 2010 10:53:15 +0100
parents 045ca45f9610
children d112357a0ec1
files font/font_face.cc font/font_layout.cc font/font_peer_ft2.cc font/font_peer_x11.cc font/text_stream.cc music2/koedec.cc music2/koedec_ogg.cc music2/movie.cc music2/music.cc music2/nwatowav.cc music2/wavfile.cc music2/wavfile.h scn2k/scn2k.h scn2k/scn2k_cmd.cc scn2k/scn2k_cmd.h scn2k/scn2k_flags.h scn2k/scn2k_grp.cc scn2k/scn2k_impl.cc scn2k/scn2k_impl.h scn2k/scn2k_text.cc scn2k/scn2kdump.cc scn2k/test.cc system/file.cc system/file.h system/file_impl.h system/system_config.cc system/system_config.h system/visarc.cc window/button.cc window/event.cc window/event.h window/menuitem.cc window/menuitem.h window/picture.cc window/picture.h window/render.cc window/render.h window/system.cc window/widget.cc window/widget.h xlovesys.cc
diffstat 41 files changed, 1308 insertions(+), 1308 deletions(-) [+]
line wrap: on
line diff
--- a/font/font_face.cc
+++ b/font/font_face.cc
@@ -49,7 +49,7 @@ namespace XKFont {
 	{
 		cache = new Cache;
 
-		/* name: ';' 区切りで複数指定可能 */
+		/* name: ';' 阪ц井絎 */
 		char* name = new char[strlen(name_orig)+1];
 		while(*name_orig != 0) {
 			const char* next_name = strchr(name_orig, ';');
@@ -137,7 +137,7 @@ namespace XKFont {
 			return face;
 		} catch(...) {
 			std::cerr << "Cannot create font face; font "<<pimpl->fontname<<", size "<<size<<std::endl;
-			/* 別の大きさを探す */
+			/* ャ紊с「 */
 			int i;
 			for (i=0; i<size; i++) {
 				if (cache.find(size-i) != cache.end()) return cache[size-i];
@@ -153,7 +153,7 @@ namespace XKFont {
 					return face;
 				} catch(...) {};
 			}
-			/* 見つからない */
+			/* 荀ゃ */
 			throw;
 		}
 	}
--- a/font/font_layout.cc
+++ b/font/font_layout.cc
@@ -1,5 +1,5 @@
 /*  layout2.cc
- *     テキストの禁則処理、レイアウトなどを行う
+ *     鴻胼ゃ≪茵
  */
 /*
  * Copyright (c) 2004-2006  Kazunori "jagarl" Ueno
@@ -37,37 +37,37 @@ using namespace std;
 #include "font.h"
 #include "text.h"
 
-const int line_skip = 1; // 行と行の間の間隔
-const int ruby_textskip = 0; // 文字とルビの間の間隔
-const int ruby_lineskip = 1; // ルビがあるときに行間に加える値
-const double ruby_scale = 0.4; // ルビのスケール
+const int line_skip = 1; // 茵茵
+const int ruby_textskip = 0; // 絖
+const int ruby_lineskip = 1; // 茵
+const double ruby_scale = 0.4; // 鴻宴若
 
 class TextGlyphStreamHelper;
 
 enum KinsokuType { KinsokuHead = 1, KinsokuTail = 2};
 static int kinsoku_table1[] = {
 /* 0 1 2 3 4 5 6 7     0 1 2 3 4 5 6 7 */
-   0,0,2,2,2,2,0,0, /* X 、。,.・: */
-   0,2,2,0,0,0,0,0, /* ;?!゛゜´`¨ */
-   0,0,0,0,0,0,0,0, /* ^ ̄_ヽヾゝゞ〃 */
-   0,0,0,0,2,0,0,0, /* 仝々〆〇ー―‐/ */
-   0,2,0,0,2,2,1,2, /* \〜‖|…‥‘’ */
-   1,2,1,2,1,2,1,2, /* “”()〔〕[] */
-   1,2,1,2,1,2,1,2, /* {}〈〉《》「」 */
-   1,2,1,2,0,0,0,0, /* 『』【】+−±× */
-   0,0,0,0,0,0,0,0, /* ÷=≠<>≦≧∞ */
-   0,0,0,0,0,0,0,0, /* ∴♂♀°′″℃¥ */
-   0,0,0,0,0,0,0,0, /* $¢£%#&*@ */
-   0,0,0,0,0,0,0,0, /* §☆★○●◎◇X */
+   0,0,2,2,2,2,0,0, /* 鐚吾鐚鐚誌 */
+   0,2,2,0,0,0,0,0, /* 鐚鐚鐚卒鐔即 */
+   0,0,0,0,0,0,0,0, /* 鐚常殖鐚帥純障 */
+   0,0,0,0,2,0,0,0, /* 篁錫鐚 */
+   0,2,0,0,2,2,1,2, /* 鐚若鐔モ */
+   1,2,1,2,1,2,1,2, /* 鐚鐚鐚誌悉 */
+   1,2,1,2,1,2,1,2, /* 鐔鐔 */
+   1,2,1,2,0,0,0,0, /* 鐚賊 */
+   0,0,0,0,0,0,0,0, /* 歎鐚鐚鐚р */
+   0,0,0,0,0,0,0,0, /* 癌属霞鰍鐃 */
+   0,0,0,0,0,0,0,0, /* 鐚蔵贈鐚鐚鐚鐚鐚 */
+   0,0,0,0,0,0,0,0, /* 則鐚 */
    0
 };
 static int kinsoku_table2[] = {
-  0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0, /*  ぁあぃいぅうぇえぉおかがきぎく */
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ぐけげこごさざしじすずせぜそぞた */
-  0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, /* だちぢっつづてでとどなにぬねのは */
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ばぱひびぴふぶぷへべぺほぼぽまみ */
-  0,0,0,2,0,2,0,2,0,0,0,0,0,0,2,0, /* むめもゃやゅゆょよらりるれろゎわ */
-  0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0, /* ゐゑをんヴヵヶ */
+  0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0, /*  */
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*  */
+  0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, /* <≪cゃャс */
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 違宴蚊潟眼泣吟激吾鴻冴祉若純障 */
+  0,0,0,2,0,2,0,2,0,0,0,0,0,0,2,0, /*  */
+  0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0, /* 眼泣 */
   0
 };
 
@@ -121,7 +121,7 @@ void TextGlyphStreamHelper::Init(TextGly
 
 TextGlyphStreamHelper::Iterator
 TextGlyphStreamHelper::Add(int& x, TextGlyphStreamHelper::Iterator begin, TextGlyphStreamHelper::Iterator end, int max_x) {
-	/* text を glyph に変換する */
+	/* text  glyph 紊 */
 	TextGlyph gl;
 	Iterator it;
 	gl.x = x; gl.y = 0; gl.r = r; gl.g = g; gl.b = b; gl.flag = TextGlyph::Flag(0); gl.is_rev = false;
@@ -164,12 +164,12 @@ TextGlyphStreamHelper::Iterator TextGlyp
 	if (it == send) return it;
 	if (it->type != TextElem::escape || it->impl.Escape.type != TextElem::ruby_start) return sbegin;
 	it++;
-	/* まず、本文描画 */
+	/* 障 */
 	int str_firstpos = data->size();
 	int str_width = 0;
 	it = Add(str_width, it, send);
 	if (it == send || it->type != TextElem::escape || it->impl.Escape.type != TextElem::ruby_startruby) {
-		// ありえないはずだが、取り合えずなにもしないで終了
+		// х篋
 		cerr << "TextGlyphStream::AddRuby : invalid operation; fallback to the upeer level"<<endl;
 		data->erase(data->begin()+str_firstpos, data->end());
 		return sbegin+1;
@@ -178,7 +178,7 @@ TextGlyphStreamHelper::Iterator TextGlyp
 	int str_lastpos = data->size()-1;
 	TextGlyph& str_first = data->begin()[str_firstpos];
 	TextGlyph& str_last = data->back();
-	// 次に、フォントを取りかえてルビ描画
+	// 罨<潟
 	int ruby_firstpos = data->size();
 	XKFont::Face* save_font = face;
 	if (ruby_face == 0) ruby_face = font->FaceLoad(ruby_scale);
@@ -186,7 +186,7 @@ TextGlyphStreamHelper::Iterator TextGlyp
 	int ruby_width = 0;
 	it = Add(ruby_width, it, send);
 	if (it->type != TextElem::escape || it->impl.Escape.type != TextElem::ruby_end) {
-		/* ありえないはずだが、取り合えずなにもしないで終了 */
+		/* х篋 */
 		cerr << "TextGlyphStream::AddRuby : invalid operation; fallback to the upeer level"<<endl;
 		data->erase(data->begin()+str_firstpos, data->end());
 		return sbegin+1;
@@ -196,27 +196,27 @@ TextGlyphStreamHelper::Iterator TextGlyp
 	TextGlyph& ruby_first = (*data)[ruby_firstpos];
 	TextGlyph& ruby_last = data->back();
 
-	/* ルビを移動すべき高さを求める */
+	/* 腱糸鴻蕭羆 */
 	int dummy, str_ascent, ruby_descent;
 	CalcHeight(str_ascent, dummy, data->begin()+str_firstpos, data->begin()+ruby_firstpos);
 	CalcHeight(dummy, ruby_descent, data->begin()+ruby_firstpos, data->end());
 	int ruby_height = str_ascent + ruby_descent + ruby_textskip;
 
-	/* センタリングした場合の、ルビの左側、右側のマージン */
+	/* 祉潟帥潟違翫綏眼勀眼若吾 */
 	int leftmergin, rightmergin;
 	leftmergin = str_first.glyph->advance.x/2 - (ruby_first.glyph->advance.x+1)/2;
 	rightmergin = str_last.glyph->advance.x/2 - (ruby_last.glyph->advance.x+1)/2;
 
-	/* ルビ、本文の横方向の移動 */
+	/* 罔劫腱糸 */
 	int ruby_xstart_add = 0, ruby_xend_add = 0, str_xstart_add=0, str_xend_add = 0;
-	if (ruby_width+leftmergin+rightmergin <= str_width) { // ルビの方が小さい
+	if (ruby_width+leftmergin+rightmergin <= str_width) { // 鴻絨
 		ruby_xstart_add = leftmergin;
 		ruby_xend_add = str_width-rightmergin-ruby_width;
-	} else if (ruby_width <= str_width) { // マージンを減らす必要あり
+	} else if (ruby_width <= str_width) { // 若吾潟羝綽荀
 		leftmergin = (str_width-ruby_width)/2;
 		ruby_xstart_add = leftmergin;
 		ruby_xend_add = str_width-leftmergin-ruby_width;
-	} else { // ルビの方が大きい
+	} else { // 鴻紊с
 		int str_count = ruby_firstpos - str_firstpos;
 		str_xstart_add = ruby_width/str_count/2 - str_first.glyph->advance.x/2;
 		str_xend_add = (ruby_width-str_width) - (ruby_width/str_count/2-str_last.glyph->advance.x/2);
@@ -225,7 +225,7 @@ TextGlyphStreamHelper::Iterator TextGlyp
 	AdjustPosition(str_xstart_add+x, str_xend_add+x, 0, data->begin()+str_firstpos, data->begin()+ruby_firstpos);
 	AdjustPosition(ruby_xstart_add+x, ruby_xend_add+x, -ruby_height, data->begin()+ruby_firstpos, data->end());
 
-	/* 本文が一文字ずつ表示されるように glyph の順番を入れかえ、グループ化 */
+	/* 筝絖よ;腓冴 glyph ャ違若 */
 	vector<TextGlyph> save;
 	save.assign(data->begin()+str_firstpos, data->end());
 	iterator it_str = save.begin();
@@ -258,13 +258,13 @@ void TextGlyphStreamHelper::SetGroup(Tex
 
 void TextGlyphStreamHelper::AdjustPosition(int xstart_add, int xend_add, int y_add, TextGlyphStreamHelper::iterator begin, TextGlyphStreamHelper::iterator end) {
 	iterator it;
-	/* 文字数を数える */
+	/* 絖違違 */
 	int total_count = 0;
 	for (it = begin; it != end; it++) {
 		if (it->flag & TextGlyph::Group) continue;
 		total_count++;
 	}
-	/* 文字間のギャップを変更 */
+	/* 絖c紊 */
 	int incr = 0;
 	if (total_count != 1) incr = (xend_add - xstart_add) * 256 / (total_count-1);
 	int cur = xstart_add * 256;
@@ -278,7 +278,7 @@ void TextGlyphStreamHelper::AdjustPositi
 }
 void TextGlyphStreamHelper::CalcHeight(int& ascent_r, int& descent_r, TextGlyphStreamHelper::iterator begin, TextGlyphStreamHelper::iterator end) {
 	iterator it;
-	/* 最大の descent, ascent を計算 */
+	/* 紊с descent, ascent 荐膊 */
 	int ascent = 0;
 	int descent = 0;
 	for (it = begin; it != end; it++) {
@@ -357,7 +357,7 @@ void TextHorizLayout::SetName(void) {
 	Iterator it;
 
 	tab_width = 0;
-	/* 行頭が名前なら、処理開始 */
+	/* 茵紮 */
 	for (; pos != end; pos++) {
 		if (pos->type == TextElem::escape || pos->type == TextElem::glyph) break;
 		int x = 0;
@@ -366,7 +366,7 @@ void TextHorizLayout::SetName(void) {
 
 	if (pos->type != TextElem::escape || pos->impl.Escape.type != TextElem::name_start) return;
 
-	/* 名前をセットし、行頭の「の分を含めてタブ幅を設定する */
+	/* 祉茵帥綛荐絎 */
 	pos++;
 	for (it = pos; it != end; it++) {
 		if (it->type == TextElem::escape && it->impl.Escape.type == TextElem::name_end) break;
@@ -377,9 +377,9 @@ void TextHorizLayout::SetName(void) {
 	pos++;
 	helper.SetGroup(data->begin() + line_firstpos, data->end());
 
-	// 行頭の「分を開ける
+	// 茵
 	try {
-		tab_width += helper.CharWidth(0xa1d6); /* 「 */
+		tab_width += helper.CharWidth(0xa1d6); /*  */
 	} catch(...) {}
 	
 	return;
@@ -387,7 +387,7 @@ void TextHorizLayout::SetName(void) {
 
 void TextHorizLayout::SetLineHead(void) {
 
-	/* 行頭は 「などか? */
+	/* 茵 鐚 */
 
 	for (; pos != end; pos++) {
 		if (pos->type == TextElem::escape || pos->type == TextElem::glyph) break;
@@ -396,7 +396,7 @@ void TextHorizLayout::SetLineHead(void) 
 	}
 	if (pos->type != TextElem::glyph || Kinsoku(pos->impl.Glyph.code) != KinsokuHead) return;
 
-	/* 「なので、処理する */
+	/* с */
 	if (tab_width != 0) tab_width -= helper.CharWidth(pos->impl.Glyph.code);
 	int line_firstpos = data->size();
 	pos = helper.Add(tab_width, pos, pos+1);
@@ -406,7 +406,7 @@ void TextHorizLayout::SetLineHead(void) 
 void TextHorizLayout::MakeLine(int line_start, int width, vector<int>& lineheights) {
 	
 	int x = tab_width;
-	/* まず、全文字描画する */
+	/* 障絖祉 */
 	while(pos != end) {
 		pos = helper.Add(x, pos, end);
 		if (pos->type == TextElem::escape && pos->impl.Escape.type == TextElem::ruby_start) { 
@@ -417,7 +417,7 @@ void TextHorizLayout::MakeLine(int line_
 			if (pos->impl.Escape.type != TextElem::ruby_start) pos++;
 		}
 	}
-	/* 行に分割していく */
+	/* 茵蚊 */
 	TextGlyphStream::iterator it_start = data->begin() + line_start;
 	TextGlyphStream::iterator it_end = data->end();
 	TextGlyphStream::iterator it = it_start;
@@ -426,7 +426,7 @@ void TextHorizLayout::MakeLine(int line_
 	int xstart = tab_width;
 	int xend = width;
 	while(it != it_end) {
-		// この行の終わりを決める
+		// 茵腟羆冴
 		bool is_ruby = false;
 		TextGlyphStream::iterator it_line_start = it;
 		for (; it != it_end; it++) {
@@ -434,21 +434,21 @@ void TextHorizLayout::MakeLine(int line_
 			if (it->flag & TextGlyph::Group) is_ruby = true;
 			if (!(it->flag & TextGlyph::Group)) group_head = it;
 		}
-		// 水平移動の大きさを決める。デフォルトでタブ位置まで戻す
+		// 羂翫抗腱糸紊с羆冴с帥篏臀障ф祉
 		int xadd_start = -xstart + tab_width;
 		int xadd_end = xadd_start;
-		// it == 次行の先頭なので、今行の末尾へ戻す
-		// ただし、 最低一文字の表示は保証
+		// it == 罨∴с篁茵絨障御祉
+		//  篏筝絖茵腓冴篆荐
 		if (it != it_line_start && it != it_line_start+1 && it != it_end) it--;
 		if (it != it_end) {
-			// グループ化されている文字で終了したら、前の文字に戻す
+			// 違若絖х篋絖祉
 			if (it->flag & TextGlyph::Group) it = group_head;
-			// 次が行頭禁則文字ならこの行に入れる
+			// 罨<茵胼絖茵ャ
 			if ( (it+1) != it_end && (it+1)->flag & TextGlyph::Kinsoku) it++;
-			// 移動する大きさを決める
-			// 行端ぞろえ、行末文字なら半文字分だけ突き出る
+			// 腱糸紊с羆冴
+			// 茵腴茵絖絖腦冴
 			int glyph_xend = it->x + it->glyph->advance.x;
-			if (it != it_line_start && (it-1)->flag & TextGlyph::Group) { // グループ化文字の場合、1文字前も見る
+			if (it != it_line_start && (it-1)->flag & TextGlyph::Group) { // 違若絖翫鐚絖荀
 				if (glyph_xend < (it-1)->x + (it-1)->glyph->advance.x)
 					glyph_xend = (it-1)->x + (it-1)->glyph->advance.x;
 			}
@@ -458,7 +458,7 @@ void TextHorizLayout::MakeLine(int line_
 		}
 		if (it != it_end) {
 			it->flag = TextGlyph::Flag(it->flag | TextGlyph::LineEnd);
-			it++; // it == 次行の先頭へ
+			it++; // it == 罨∴
 		}
 		int ascent, descent;
 		helper.CalcHeight(ascent, descent, it_start, it);
@@ -472,11 +472,11 @@ void TextHorizLayout::MakeLine(int line_
 		cur_y += ascent + descent + line_skip;
 		lineheights.push_back(ascent+descent+line_skip);
 
-		/* 次の行へ */
+		/* 罨<茵 */
 		if (it != it_end) {
 			it_start = it;
 			group_head = it_start;
-			/* 1文字目がグループ化されていれば、グループの先頭文字にする */
+			/* 鐚絖違若違違若絖 */
 			xstart = it->x;
 			if (it->flag & TextGlyph::Group) {
 				TextGlyphStream::iterator jit;
@@ -545,7 +545,7 @@ int TextGlyphStream::height(void) {
 		if (ymax < y) ymax = y;
 		if (it == begin()) break;
 		if (it->flag & TextGlyph::LineEnd) {
-			if (!(it->flag & TextGlyph::PhraseEnd)) break; // PhraseEnd は最後の文字
+			if (!(it->flag & TextGlyph::PhraseEnd)) break; // PhraseEnd 緇絖
 		}
 	}
 	return ymax + 1;
--- a/font/font_peer_ft2.cc
+++ b/font/font_peer_ft2.cc
@@ -228,8 +228,8 @@ bool PeerFt2::GlyphCreate(unsigned int c
 	slot = face->glyph;
 	if (slot) {
 		// if (! FT_Load_Glyph(face, index, FT_LOAD_DEFAULT)) {
-		// BITMAP だと なぜか render してくれない……
-		// LOAD_DEFAULT でも、下に対応コードを付けたので一応は大丈夫
+		// BITMAP   render 
+		// LOAD_DEFAULT с筝絲上潟若篁т綽紊т紊
 		if (! FT_Load_Glyph(face, index, FT_LOAD_NO_BITMAP))
 			FT_Render_Glyph(slot, ft_render_mode_normal);
 	}
@@ -252,7 +252,7 @@ bool PeerFt2::GlyphCreate(unsigned int c
 		glyph->bitmap.buffer = new unsigned char[bmsize];
 		memcpy(glyph->bitmap.buffer, slot->bitmap.buffer, bmsize);
 	}
-// なぜか Render したのに MONO なことがある……
+//  Render  MONO 
 /* for freetype < 2.1.3, use ``ft_pixel_mode_mono'' */
 	if (slot->bitmap.pixel_mode == ft_pixel_mode_mono) {
 		int i, j;
--- a/font/font_peer_x11.cc
+++ b/font/font_peer_x11.cc
@@ -61,8 +61,8 @@ inline int read_little_endian_int(const 
 **
 ** Fontinfo / FontSetInfo
 **
-**   fontset から特定 pixel size を持つ
-**   別のfontsetを作成するためのクラス
+**   fontset 劫 pixel size 
+**   ャfontset篏
 */
 struct FontInfo {
 	std::map<int, string> fontlist;
@@ -83,7 +83,7 @@ struct FontSetInfo {
 **
 */
 FontInfo::FontInfo(Display* display, const char* fontname_orig) {
-	/* フォントの大きさ関係の情報を消去 */
+	/* 潟紊с≫宴羔サ */
 	int i;
 	char* fontname = new char[strlen(fontname_orig)+50];
 	int minus_count = 0;
@@ -102,13 +102,13 @@ FontInfo::FontInfo(Display* display, con
 		}
 		if (! is_skip) fontname[fc++] = fontname_orig[i];
 	}
-	/* フォント情報を得る */
+	/* 潟宴緇 */
 	fontname[fc] = 0;
 	int count;
 	char** fontnamelist = XListFonts(display, fontname, 100, &count);
 	for (i=0; i<count; i++) {
 		char* curfont = fontnamelist[i];
-		/* fontname から pixel size 情報を得る */
+		/* fontname  pixel size 宴緇 */
 		int j;
 		int minus_count = 0;
 		for (j=0; curfont[j] != 0; j++) {
@@ -122,7 +122,7 @@ FontInfo::FontInfo(Display* display, con
 			}
 		}
 	}
-	/* 検索に失敗した場合、とりあえず fontname を入れておく */
+	/* 罎膣≪紊掩翫 fontname ャ */
 	if (fontlist.find(0) == fontlist.end()) {
 		fontlist[0] = string(fontname);
 	}
@@ -132,15 +132,15 @@ FontInfo::FontInfo(Display* display, con
 }
 string FontInfo::Search(int pixsize) {
 	int i;
-	/* pixsize に近いフォントが(あれば)帰す */
+	/* pixsize 菴潟()絽違 */
 	if (fontlist.find(pixsize) != fontlist.end()) return fontlist[pixsize];
 	for (i=1; i<4; i++) {
 		if (fontlist.find(pixsize-i) != fontlist.end()) return fontlist[pixsize-i];
 		if (fontlist.find(pixsize+i) != fontlist.end()) return fontlist[pixsize+i];
 	}
-	/* 見つからない:fontlist[0] を加工して帰す */
-	/* pt/xres/yres などのフィールドに '-0-' というのがあれば '-*-'に変換
-	** pixsize は与えられた pixsize にする
+	/* 荀ゃ鐚fontlist[0] 綏ャ絽違 */
+	/* pt/xres/yres c若 '-0-'  '-*-'紊
+	** pixsize 筝 pixsize 
 	*/
 	string basefont_s = fontlist[0];
 	const char* basefont = basefont_s.c_str();
@@ -246,7 +246,7 @@ PeerX11::PeerX11(const char* fontname, i
 		string err = "XKFont::PeerX11:PeerX11() : No supported Color mode of X : neither TrueColor nor DirectColor";
 		throw std::runtime_error(err);
 	}
-	/* 色の初期化 */
+	/* 蚊 */
 	white = visual->red_mask | visual->green_mask | visual->blue_mask;
 	black = 0;
 	if (visual->green_mask == 0) {
@@ -266,7 +266,7 @@ PeerX11::PeerX11(const char* fontname, i
 
 	XSupportsLocale(); //FIXME: er... yes?
 
-	/* font 読み込み */
+	/* font 茯粋昭 */
 	FontSetInfo fsinfo(display,fontname);
 	string fontset_name = fsinfo.Search(fontsize);
 	char** missing_cl;
@@ -306,7 +306,7 @@ printf("locale %s\n",XLocaleOfOM(XOMOfOC
 		ascent = MAX(ascent, font_structs[i]->ascent);
 	}
 	
-	/* 描画用の pixmap を作成 */
+	/* 紫 pixmap 篏 */
 	XGCValues gc_values;
 	unsigned int gc_values_mask;
 	gc_values.function = GXcopy;
@@ -321,7 +321,7 @@ printf("locale %s\n",XLocaleOfOM(XOMOfOC
 
 	canvas = XCreatePixmap(display, w, width, height, DefaultDepth(display, scr));
 
-	/* イメージ転送用の image の作成 */
+	/* ゃ<若梧拶 image 篏 */
 	int ignore;
 	use_shm = false;
 	if (XShmQueryExtension(display) == True) {
--- a/font/text_stream.cc
+++ b/font/text_stream.cc
@@ -223,15 +223,15 @@ void TextStream::RemoveName(char* name, 
 	Iterator it;
 	for (it = container.begin(); it != container.end(); it++) {
 		if (it->type == TextElem::escape && it->impl.Escape.type == TextElem::name_start) {
-			// 行頭の名前?
+			// 茵鐚
 			int pt = it - container.begin();
 			Iterator name_start = it;
 			for (; it != container.end(); it++) {
 				if (it->type == TextElem::escape && it->impl.Escape.type == TextElem::name_end) break;
 			}
 			if (it != container.end()) {
-				// 名前が見つかったので削除
-				if (name) { // 保存先があるなら保存する
+				// 荀ゃcу
+				if (name) { // 篆絖篆絖
 					Iterator name_end = it;
 					int pos = 0;
 					namelen--;
@@ -247,7 +247,7 @@ void TextStream::RemoveName(char* name, 
 						}
 					}
 					name[pos] = 0;
-					name = 0; // 最初に出た名前のみ保存する
+					name = 0; // 冴推絖
 				}
 				it++;
 				container.erase(name_start, it);
@@ -341,7 +341,7 @@ std::string TextStream::Save(void) {
 				*buf++ = (code/0x10) + 'A';
 				*buf++ = (code%0x10) + 'A';
 			} else {
-				code = codeconv_euc_to_sjis(code); // save file の漢字コードはSJIS
+				code = codeconv_euc_to_sjis(code); // save file 羲√潟若SJIS
 				*buf++ = code/256;
 				*buf++ = code%256;
 			}
--- a/music2/koedec.cc
+++ b/music2/koedec.cc
@@ -39,11 +39,11 @@ using namespace std;
 
 /*********************************************
 **
-**	FindKoe -- RealLiveの音声アーカイブ処理
+**	FindKoe -- RealLive喝0≪若ゃ
 **
 */
 
-/* 声ファイルのアーカイブ用のキャッシュ */
+/* 紕違<ゃ≪若ゃc激 */
 #define koe_cache_size 7
 struct AvgKoeTable {
 	int koe_num;
@@ -101,7 +101,7 @@ AvgKoeInfo AvgKoeCache::Find(int file_nu
 	list<AvgKoeHead>::iterator it;
 	it = find(cache.begin(), cache.end(), file_number);
 	if (it == cache.end()) {
-		/* 新たに head を作る */
+		/* 違 head 篏 */
 		char fname[100];
 		KoeType type = koe_unknown;
 		sprintf(fname, "z%03d.koe", file_number);
@@ -145,11 +145,11 @@ AvgKoeInfo AvgKoeCache::Find(int file_nu
 		if (cache.size() >= koe_cache_size) cache.pop_back();
 		it = cache.begin();
 	}
-	if (it->file_number != file_number) return info; // 番号がおかしい
+	if (it->file_number != file_number) return info; // 垩
 	AvgKoeTable* table = it->Find(index);
 	//FIXME: table == NULL ?
-	if (table == 0) return info; // index が見付からない
-	// info を作成する
+	if (table == 0) return info; // index 荀篁
+	// info 篏
 	info.length = table->length;
 	info.offset = table->offset;
 	info.rate = it->rate;
@@ -179,8 +179,8 @@ AvgKoeHead::AvgKoeHead(FILE* _s, int _fi
 	rate = 22050;
 	type = _type;
 	if (stream == NULL) return;
-	/* header 読み込み */
-	if (type == koe_nwk) { // 新しい形式 : .nwk file
+	/* header 茯粋昭 */
+	if (type == koe_nwk) { // 違綵√ : .nwk file
 		rate = 44100;
 		fread(head, 4, 1, stream);
 		int table_len = read_little_endian_int(head);
@@ -215,7 +215,7 @@ AvgKoeHead::AvgKoeHead(FILE* _s, int _fi
 		int table_len = read_little_endian_int(head+0x10);
 		rate = read_little_endian_int(head+0x18);
 		if (rate == 0) rate = 22050;
-		/* table 読み込み */
+		/* table 茯粋昭 */
 		table.reserve(table_len);
 		char* buf = new char[table_len*8];
 		fread(buf, table_len, 8, stream);
@@ -244,7 +244,7 @@ AvgKoeTable* AvgKoeHead::Find(int koe_nu
 
 /*********************************************
 **
-**	MakeWavHeader : koe ファイルに wave header を付ける
+**	MakeWavHeader : koe <ゃ wave header 篁
 **
 */
 
@@ -278,14 +278,14 @@ const char* MakeWavHeader(int rate, int 
 
 /*********************************************
 **
-**	decode_koe -- 音声データ展開
+**	decode_koe -- 喝0若水
 **
 */
 
 extern char* decode_koe(AvgKoeInfo info, int* len);
 
-/* 8bit -> 16bit への変換テーブル。本来は signed short だが
-** とりあえず unsigned で扱っている
+/* 8bit -> 16bit 吾紊若ャ signed short 
+**  unsigned ф宴c
 */
 
 unsigned short koe_8bit_trans_tbl[256] = {
@@ -323,9 +323,9 @@ unsigned short koe_8bit_trans_tbl[256] =
   0x707f,0x7261,0x7447,0x7631,0x781f,0x7a11,0x7c07,0x7fff
 };
 
-/* ADPCM・・・じゃないらしい。ただのDPCMのナめたテーブル。
-** 自動生成すりゃいいんだけど256byteだったら
-** テーブルでも問題ないでしょ
+/* ADPCM祉祉祉DPCM若
+** 256bytec
+** 若с馹с
 */
 
 char koe_ad_trans_tbl[256] = {
@@ -368,7 +368,7 @@ char* decode_koe(AvgKoeInfo info, int* d
 		fseek(info.stream, -20, SEEK_CUR);
 		return decode_koe_ogg(info, dest_len);
 	}
-	/* avg32 の声データ展開 */
+	/* avg32 紕違若水 */
 	table = (char*)malloc(info.length*2);
 	fseek(info.stream, info.offset, SEEK_SET);
 	fread(table, 2, info.length, info.stream);
@@ -376,7 +376,7 @@ char* decode_koe(AvgKoeInfo info, int* d
 	all_len = 0;
 	for (i=0; i < info.length; i++)
 		all_len += read_little_endian_short(table + i*2);
-	/* データ読み込み */
+	/* 若粋粋昭 */
 	src_orig  = (unsigned char*) malloc(all_len);
 	dest_orig = (unsigned short*)malloc(info.length * 0x1000 + 0x2c);
 	if (src_orig == NULL || dest_orig == NULL) return NULL;
@@ -388,13 +388,13 @@ char* decode_koe(AvgKoeInfo info, int* d
 	dest = dest_orig + 0x2c;
 	/* memset(dest_data, 0, table_len * 0x1000); */
 	
-	/* 展開 */
+	/* 絮 */
 	for (i=0; i<info.length; i++) {
 		int slen = read_little_endian_short(table+i*2);
 		if (slen == 0) { // do nothing
 			memset(dest, 0, 0x1000);
 			dest += 0x800; src += 0;
-		} else if (slen == 0x400) { // table 変換
+		} else if (slen == 0x400) { // table 紊
 			for (j=0; j<0x400; j++) {
 				write_little_endian_short((char*)(dest+0), koe_8bit_trans_tbl[*src]);
 				write_little_endian_short((char*)(dest+1), koe_8bit_trans_tbl[*src]);
--- a/music2/koedec_ogg.cc
+++ b/music2/koedec_ogg.cc
@@ -72,7 +72,7 @@ struct OggInfo {
 	int offset;
 };
 
-/* ogg stream 読み込み用の dummy callback */
+/* ogg stream 茯粋昭睡 dummy callback */
 static size_t ogg_readfunc(void* ptr, size_t size, size_t nmemb, void* datasource) {
 	OggInfo* info = (OggInfo*)datasource;
 	int pt = ftell(info->stream) - info->offset;
@@ -110,8 +110,8 @@ static int fseek_wrap(FILE *f,ogg_int64_
 
 extern char* decode_koe_ogg(AvgKoeInfo info, int* dest_len) {
 	if (info.stream == NULL) return NULL;
-	// Voice ファイルを直接指定すると全ストリームを再生してしまうので
-	// 必要な部分だけ切り出して callback 経由で帰す
+	// Voice <ゃ贋・絎鴻若障
+	// 綽荀冴 callback 腟宴у鍵
 	fseek(info.stream, info.offset, SEEK_SET);
 
 	ov_callbacks callback;
@@ -151,7 +151,7 @@ extern char* decode_koe_ogg(AvgKoeInfo i
 	} while(1);
 	ov_clear(&vf);
 
-	*dest_len = cur; // うまくコンバートできてるのかなあ……
+	*dest_len = cur; // 障潟潟若с
 	const char* header = MakeWavHeader(info.rate, channels, 2, cur);
 	memcpy(out, header, 0x2c);
 	
--- a/music2/movie.cc
+++ b/music2/movie.cc
@@ -26,7 +26,7 @@
  */
 
 /*
- * movie.cc  smpeg による動画再生
+ * movie.cc  smpeg 糸
  *
 */
 
--- a/music2/music.cc
+++ b/music2/music.cc
@@ -25,7 +25,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*  music.cc	SDL_mixer を用いた音楽再生ルーチン */
+/*  music.cc	SDL_mixer 恰ソ若 */
 
 
 #include <string.h>
@@ -94,11 +94,11 @@ void MuSys::PlayCDROM(char* name, int pl
 	if (track == -1) track = atoi(name);
 	if (config->track_name.WaveTrack(name) != NULL)
 		strncpy(wave, config->track_name.WaveTrack(name), 127);
-	if (wave[0] == 0 && track != 0) { /* DSTRACK が見つからない場合、CDTRACKを使用する */
+	if (wave[0] == 0 && track != 0) { /* DSTRACK 荀ゃ翫CDTRACK篏睡 */
 		sprintf(wave, "audio_%02d", track);
 	}
 	if (wave == 0) return;
-	// BGM 再生
+	// BGM 
 	if (!pcm_enable) return;
 	if (play_count == 0)
 		bgm_start(wave, -1);
@@ -187,7 +187,7 @@ void MuSys::FinalizeMusic(void)
 
 /*************************************************************************
 **
-** ファイル読み込み / 外部コマンド呼び出し
+** <ゃ茯粋昭 / 紊潟潟若喝冴
 */
 
 struct WavChunk {
@@ -205,7 +205,7 @@ void WavChunk::callback(void *userdata, 
 {
 	WavChunk* chunk = (WavChunk*)userdata;
 	int count;
-	if (chunk->loop_pt == -2) { // 再生終了後
+	if (chunk->loop_pt == -2) { // 腟篋緇
 		memset(stream, 0, len);
 		return;
 	}
@@ -214,8 +214,8 @@ void WavChunk::callback(void *userdata, 
 	count = chunk->wav->Read( (char*)stream_dup, 4, len/4);
 
 	if (count != len/4) {
-		// 最後まで再生した
-		if (chunk->loop_pt == -1) { // 終了
+		// 緇障у
+		if (chunk->loop_pt == -1) { // 腟篋
 			chunk->loop_pt = -2;
 			memset(stream_dup+count*4, 0, len-count*4);
 		} else {
@@ -227,9 +227,9 @@ void WavChunk::callback(void *userdata, 
 	int cur_vol = (*chunk->volmod)*SDL_MIX_MAXVOLUME/255;
 	
 	if (fadetime_total) {
-		// 音楽を停止中 (fade out)
+		// 恰ソ罩≫賢 (fade out)
 		int count_total = fadetime_total*(WAVFILE::freq/1000);
-		if (fadecount > count_total || fadetime_total == 1) { // 音楽停止
+		if (fadecount > count_total || fadetime_total == 1) { // 恰ソ罩
 			chunk->loop_pt = -2;
 			memset(stream, 0, len);
 			delete[] stream_dup;
@@ -262,7 +262,7 @@ fprintf(stderr,"bgm start %s\n",path);
 	Mix_PauseMusic();
 	Mix_HaltMusic();
 	Mix_HookMusic(0,0);
-	/* 前に再生していたのを終了 */
+	/* 腟篋 */
 	if (wav_playing.wav != NULL) {
 		delete wav_playing.wav;
 		wav_playing.wav = NULL;
@@ -281,7 +281,7 @@ void effec_start(int chn, const char* pa
 	if (!mu->pcm_enable) return;
 
 	SDL_RWops* op = OpenSDLRW(path);
-	if (op == NULL) { // ファイルが見付からない
+	if (op == NULL) { // <ゃ荀篁
 		return;
 	}
 	Mix_Pause(chn);
@@ -310,7 +310,7 @@ void MuSys::PlayKoe(const char* path) {
 	int chn = MIX_PCM_KOE;
 
 	Mix_Pause(chn);
-	Mix_HaltChannel(chn); // これで RWop が解放されるはず…
+	Mix_HaltChannel(chn); //  RWop 茹f障
 	if (mu->play_chunk[chn] != NULL) {
 		Mix_FreeChunk(mu->play_chunk[chn]);
 		mu->play_chunk[chn] = NULL;
@@ -341,13 +341,13 @@ AvgKoeInfo OpenKoeFile(const char* path)
 	info.stream = NULL;
 	info.length = 0;
 	info.offset = 0;
-	if (isdigit(path[0]) && strchr(path,'.') == NULL) { // 数値 (拡張子等なし)
-		/* avg32 形式の音声アーカイブのキャッシュを検索 */
+	if (isdigit(path[0]) && strchr(path,'.') == NULL) { // 医 (≦宍絖膈)
+		/* avg32 綵√喝0≪若ゃc激ャ罎膣 */
 		int pointer = atoi(path);
 		int file_no = pointer / radix;
 		int index = pointer % radix;
 		info = FindKoe(file_no, index);
-	} else { // ファイル
+	} else { // <ゃ
 		int length;
 		ARCINFO* arcinfo = FileSearcher::GetInstance()->Find(FileSearcher::KOE, path, ".WPD");
 		if (arcinfo == NULL) return info;
@@ -362,7 +362,7 @@ AvgKoeInfo OpenKoeFile(const char* path)
 }
 
 static SDL_RWops* OpenSDLRW(const char* path) {
-	/* まず wav ファイルを探す */
+	/* 障 wav <ゃ「 */
 	FileSearcher* file_searcher = FileSearcher::GetInstance();
 	ARCINFO* info = file_searcher->Find(FileSearcher::WAV, path, ".wav");
 	if (info == NULL) {
@@ -392,7 +392,7 @@ static SDL_RWops* OpenSDLRW(const char* 
 }
 
 static WAVFILE* OpenWaveFile(const char* path) {
-	/* まず wav ファイルを探す */
+	/* 障 wav <ゃ「 */
 	FileSearcher* file_searcher = FileSearcher::GetInstance();
 	ARCINFO* info = file_searcher->Find(FileSearcher::WAV, path, ".wav");
 	if (info == NULL) info = file_searcher->Find(FileSearcher::BGM, path, "wav");
@@ -404,7 +404,7 @@ static WAVFILE* OpenWaveFile(const char*
 		WAVFILE* w = WAVFILE::MakeConverter(new WAVFILE_Stream(f, size));
 		return w;
 	}
-	/* 次に nwa ファイル */
+	/* 罨< nwa <ゃ */
 	info = file_searcher->Find(FileSearcher::WAV, path, ".nwa");
 	if (info == NULL) info = file_searcher->Find(FileSearcher::BGM, path, "nwa");
 	if (info != NULL) {
@@ -416,7 +416,7 @@ static WAVFILE* OpenWaveFile(const char*
 		return w;
 	}
 
-	/* 次に mp3 ファイル */
+	/* 罨< mp3 <ゃ */
 	info = file_searcher->Find(FileSearcher::WAV, path, ".mp3");
 	if (info == NULL) info = file_searcher->Find(FileSearcher::BGM, path, "mp3");
 	if (info != NULL) {
@@ -431,7 +431,7 @@ static WAVFILE* OpenWaveFile(const char*
 		delete w;
 	}
 
-	/* 次に ogg ファイル */
+	/* 罨< ogg <ゃ */
 	info = file_searcher->Find(FileSearcher::WAV, path, ".ogg");
 	if (info == NULL) info = file_searcher->Find(FileSearcher::BGM, path, "ogg");
 	if (info != NULL) {
--- a/music2/nwatowav.cc
+++ b/music2/nwatowav.cc
@@ -1,24 +1,24 @@
-/* nwatowav : Visual Arts 系のゲームのデモで使われる nwa 形式の
-**            ファイルを wav 形式に変換する
+/* nwatowav : Visual Arts 膤祉蚊若≪т戎 nwa 綵√
+**            <ゃ wav 綵√紊
 **
 **     compile : gcc -O2 -o nwatowav nwatowav.cc
 **     usage : nwatowav [nwa-file [outfile]]
 **	       nwatowav [nwk-file [outfile]]
-**     example : nwatowav HM06.nwa HM06.wav	# BGMファイル。HM06.wav に展開される
-**		 nwatowav z2813.nwk z2813	# 音声ファイル。 z2813-100.wav などのファイル名で展開される
-**		 nwatowav z0513.ovk z0513	# 音声ファイル。 z0513-100.ogg などのファイル名で展開される
+**     example : nwatowav HM06.nwa HM06.wav	# BGM<ゃHM06.wav 絮
+**		 nwatowav z2813.nwk z2813	# 喝0<ゃ z2813-100.wav <ゃу
+**		 nwatowav z0513.ovk z0513	# 喝0<ゃ z0513-100.ogg <ゃу
 **
 **
-** 2004.5.19 小松さん<s1100089@u-aizu.ac.jp> から CLANNAD の無圧縮nwa形式に対応する
-**           パッチをいただいたので、適用しました。ありがとうございます。
-** 2006.9.10 「智代アフター」の音声ファイル形式 (complevel = 5) をサポート
-**	     .nwk という拡張子を持つファイルを受け取ると音声ファイルとして
-**	     解釈、分割して展開するようにする
-** 2007.7.28 「リトルバスターズ!」の音声ファイル形式 (*.ovk; ogg 連結型)
-**		をサポート。.ovk という拡張子をもつファイルを受け取ると
-**		音声ファイルとして解釈、分割して展開するようにする
-**	     「リトルバスターズ!」のBGMファイルに多量のノイズが乗る問題も
-**	      解決(ランレングス圧縮の処理が不必要だった)
+** 2004.5.19 絨障<s1100089@u-aizu.ac.jp>  CLANNAD ≦х軒nwa綵√絲上
+**           с障障
+** 2006.9.10 坂撮≪帥若喝0<ゃ綵√ (complevel = 5) 泣若
+**	     .nwk ≦宍絖ゃ<ゃ喝0<ゃ
+**	     茹i蚊絮
+** 2007.7.28 鴻帥若削喝0<ゃ綵√ (*.ovk; ogg g)
+**		泣若.ovk ≦宍絖ゃ<ゃ
+**		喝0<ゃ茹i蚊絮
+**	     鴻帥若削BGM<ゃ紊ゃ冴箙馹
+**	     茹f浦鐚潟潟違劫х軒筝綽荀c鐚
 */
 
 /*
@@ -28,14 +28,14 @@
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted.
  *
- * このプログラムの作者は jagarl です。
+ * 違篏 jagarl с
  *
- * このプログラム、及びコンパイルによって生成したバイナリは
- * プログラムを変更する、しないにかかわらず再配布可能です。
- * その際、上記 Copyright 表示を保持するなどの条件は課しま
- * せん。対応が面倒なのでバグ報告を除き、メールで連絡をする
- * などの必要もありません。ソースの一部を流用することを含め、
- * ご自由にお使いください。
+ * 違潟潟潟ゃcゃ
+ * 違紊眼絽純с
+ * 筝荐 Copyright 茵腓冴篆>散茯蚊
+ * 絲上√с医怨ゃ<若чg機
+ * 綽荀障純若鴻筝羌
+ * 宴篏帥
  *
  * THIS SOFTWARE IS PROVIDED BY KAZUNORI 'jagarl' UENO ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -54,9 +54,9 @@
 
 /********************************************
 **
-**	nwa フォーマットについて
+**	nwa 若ゃ
 **
-**		全体としては以下の構造を持つ
+**		篏篁ヤ罕
 **		NWA Header
 **		data offset index
 **		data block<0>
@@ -64,104 +64,104 @@
 **		...
 **		data block<N>
 **
-**	NWA Header: ファイル先頭から 44 bytes
-**		magic number などはないのでnwa ファイルかは
-**		データの整合性から判断する必要がある
-**		データは全て little endian で、
-**		short(signed 2byte)または int(signed 4byte) である。
+**	NWA Header: <ゃ 44 bytes
+**		magic number nwa <ゃ
+**		若帥翫сゆ綽荀
+**		若帥 little endian с
+**		short(signed 2byte)障 int(signed 4byte) с
 **
-**		+00 short   channel 数(1/2)
-**		+02 short   sample 一つあたりの bit 数(16)
-**		+04 int     周波数(一秒あたりのデータ数)
-**		+08 int     圧縮レベル:-1~5.2で最小のデータ、0で最大の復元度(-1は無圧縮rawデータとみなされる)
+**		+00 short   channel (1/2)
+**		+02 short   sample 筝ゃ bit (16)
+**		+04 int     羈∽(筝腱若炊)
+**		+08 int     х軒鐚-1~5.2ф絨若帥0ф紊с緇綺(-1≦х軒raw若帥帥)
 **		+12 int     ?
-**		+16 int     ブロック数
-**		+20 int     展開後のデータの大きさ(バイト単位)
-**		+24 int     圧縮時のデータの大きさ(nwa ファイルの大きさ。バイト単位)
-**		+28 int     サンプル数:展開後のデータ数(16bit dataなら short 単位==サンプル単位のデータの大きさ)
-**		+32 int     データ1ブロックを展開した時のサンプル単位のデータ数
-**		+36 int     最終ブロックを展開した時のサンプル単位のデータ数
+**		+16 int     
+**		+20 int     絮緇若帥紊с(ゃ篏)
+**		+24 int     х軒若帥紊с(nwa <ゃ紊сゃ篏)
+**		+28 int     泣潟逸絮緇若炊(16bit data short 篏==泣潟篏若帥紊с)
+**		+32 int     若随絮泣潟篏若炊
+**		+36 int     腟絮泣潟篏若炊
 **		+40 int     ?
 **		
 **	data offset index
-**		全ブロック数 x 4 byte のデータ
-**		それぞれ int のデータが全ブロック数続いている
+**		 x 4 byte 若
+**		 int 若帥亥
 **
-**		データブロックの先頭を指すファイル先頭からの位置(オフセット)
-**		が格納されている
+**		若帥<ゃ篏臀(祉)
+**		主
 **
 **	data block
-**		長さは可変。展開することで一定の大きさをもつデータに展開される。
-**		データはDPCM形式。元 PCM データが a,b,c ならば (a),b-a, c-b と
-**		いった差分データが、仮数3-5bit,指数3bitの形式で保存されている。
-**		結果的に、16bit のデータが多くの場合 6-8bit で格納される。
-**		仮数のビット数は圧縮レベル0で5bit、圧縮レベル2で3bitとなる。
-**		以下、圧縮レベル2の場合について話を進める。
-**		モノラルの場合:
-**			+00 short  ブロック内の最初のデータ
+**		激紊絮т絎紊сゃ若帥絮
+**		若帥DPCM綵√ PCM 若帥 a,b,c  (a),b-a, c-b 
+**		c綏若帥篁3-5bit,3bit綵√т絖
+**		腟16bit 若帥紊翫 6-8bit ф主
+**		篁違違х軒05bitх軒23bit
+**		篁ヤх軒2翫ゃ荅宴蚊
+**		≪翫鐚
+**			+00 short  若
 **			+02- bit stream
-**		ステレオの場合:
-**			+00 short  左(?)チャンネルの最初のデータ
-**			+02 short  右(?)チャンネルの最初のデータ
+**		鴻翫鐚
+**			+00 short  綏(?)c潟若
+**			+02 short  (?)c潟若
 **			+04- bit stream
 **
-**		差分データの精度が高くないので各ブロックの先頭で
-**		正確なデータにより補正される(?)
+**		綏若帥膕上墾蕭у
+**		罩g∈若帥茖罩c(鐚)
 **
 **	bit stream
 **		little endian
-**		+0 - +2 : 指数
-**		+3 - +5 : 仮数
-**		の形式。例えば a,b,c という8bitデータがあれば、
-**		a&0x07 : データ1の指数
-**		(a>>3)&0x07 : データ1の仮数(signed ; 
-**		((b<<2)|(a>>6))&0x07 : データ2の指数
-**		(b>>1)&0x07 : データ2の仮数
-**		となる。
-**		ただし、指数の値により仮数のbit数が変化することがある。
-**		指数 = 1 - 6 の場合:
-**			a=指数、b=仮数、p=前のデータとして、今回のデータd は
-**			bの2bit目が立っている場合:
+**		+0 - +2 : 
+**		+3 - +5 : 篁
+**		綵√箴 a,b,c 8bit若帥違
+**		a&0x07 : 若随
+**		(a>>3)&0x07 : 若随篁(signed ; 
+**		((b<<2)|(a>>6))&0x07 : 若随
+**		(b>>1)&0x07 : 若随篁
+**		
+**		違ゃ篁違bit違紊
+**		 = 1 - 6 翫鐚
+**			a=違b=篁違p=若帥篁若d 
+**			b2bit腴c翫鐚
 **				d = p - (b&3)<<(4+a)
-**			立ってない場合:
+**			腴c翫鐚
 **				d = p + (b&3)<<(4+a)
-**		指数 = 0 の場合:仮数は存在しない(データは3bitとなる)
+**		 = 0 翫鐚篁違絖(若帥3bit)
 **			d = p
-**			「智代アフター」の音声ファイル (complevel == 5) ではランレングス圧縮用に使われている。
-**		指数 = 7
-**			次の bit が立っている場合:
-**				d = 0 (現在未使用)
-**				(データは4bitとなる)
-**			次の bit が立ってない場合:
+**			坂撮≪帥若喝0<ゃ (complevel == 5) с潟潟違劫х軒篏帥
+**		 = 7
+**			罨< bit 腴c翫鐚
+**				d = 0 (憜篏睡)
+**				(若帥4bit)
+**			罨< bit 腴c翫鐚
 **				complevel = 0,1,2:
-**				   仮数 b = 6bit
-**				   b の 5bit 目が立っている場合:
+**				   篁 b = 6bit
+**				   b  5bit 腴c翫鐚
 **					d = p - (b&0x1f)<<(4+7)
-**				   立ってない場合:
+**				   腴c翫鐚
 **					d = p + (b&0x1f)<<(4+7)
-**				   (データは10bitとなる)
+**				   (若帥10bit)
 **				complevel = 3,4,5:
-**				   仮数 b = 8bit
-**				   b の 7bit 目が立っている場合:
+**				   篁 b = 8bit
+**				   b  7bit 腴c翫鐚
 **					d = p - (b&0x7f)<<9
-**				   立ってない場合:
+**				   腴c翫鐚
 **					d = p + (b&0x1f)<<9
-**				   (データは10bitとなる)
+**				   (若帥10bit)
 **
-**		圧縮レベルが異なる場合、たとえば圧縮レベル==0で
-**			指数==1~6でdの最上位bitが立っている場合
+**		х軒違翫医х軒==0
+**			==1~6d筝篏bit腴c翫
 **				d = p - (b&0x0f)<<(2+a)
-**			指数==7でdの最上位bitが立っている場合
+**			==7d筝篏bit腴c翫
 **				d = p - (b&0x7f)<<(2+7)
-**				(b : 8bitなのでデータは12bitとなる)
-**		のように、精度だけが変化するようになっている。
+**				(b : 8bitс若帥12bit)
+**		膕上墾紊c
 **
-**	ヘッダ読み込みについてはNWAData::ReadHeader()参照
-**	bit stream からのデータ展開については NWADecode()参照
+**	茯粋昭帥ゃNWAData::ReadHeader()
+**	bit stream 若水ゃ NWADecode()
 **************************************************************
 */
 
-// #define NDEBUG /* なぜか assertが入った方が速い、、、 */
+// #define NDEBUG /*  assertャc鴻 */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -172,9 +172,9 @@
 
 #ifdef WORDS_BIGENDIAN
 #error Sorry, This program does not support BIG-ENDIAN system yet.
-/* もし big endian のシステムに対応させる場合
-** 以下の *_little_endian_* 及び
-** getbits() 関数を変更する必要がある
+/*  big endian 激鴻絲上翫
+** 篁ヤ *_little_endian_* 
+** getbits() ∽違紊眼綽荀
 */
 #endif
 
@@ -200,7 +200,7 @@ inline int getbits(const char*& data, in
 	return ret & ((1<<bits)-1); /* mask */
 }
 
-/* 指定された形式のヘッダをつくる */
+/* 絎綵√ゃ */
 const char* make_wavheader(int size, int channels, int bps, int freq) {
 	static char wavheader[0x2c] = {
 		'R','I','F','F',
@@ -227,7 +227,7 @@ const char* make_wavheader(int size, int
 	return wavheader;
 }
 
-/* NWA の bitstream展開に必要となる情報 */
+/* NWA  bitstream絮綽荀 */
 class NWAInfo {
 	private:
 		int channels;
@@ -256,7 +256,7 @@ template<class NWAI> void NWADecode(cons
 	int i;
 	int shift = 0;
 	const char* dataend = data+datasize;
-	/* 最初のデータを読み込む */
+	/* 若帥茯粋昭 */
 	if (info.Bps() == 8) {d[0] = *data++; datasize--;}
 	else /* info.Bps() == 16 */ {d[0] = read_little_endian_short(data); data+=2; datasize-=2;}
 	if (info.Channels() == 2) {
@@ -264,18 +264,18 @@ template<class NWAI> void NWADecode(cons
 		else /* info.Bps() == 16 */ {d[1] = read_little_endian_short(data); data+=2; datasize-=2;}
 	}
 	int dsize = outdatasize / (info.Bps()/8);
-	int flip_flag = 0; /* stereo 用 */
+	int flip_flag = 0; /* stereo  */
 	int runlength = 0;
 	for (i=0; i<dsize; i++) {
 		if (data >= dataend) break;
-		if (runlength == 0) { // コピーループ中でないならデータ読み込み
+		if (runlength == 0) { // 潟若若筝с若粋粋昭
 			int type = getbits(data, shift, 3);
-			/* type により分岐:0, 1-6, 7 */
+			/* type 絏鐚0, 1-6, 7 */
 			if (type == 7) {
-				/* 7 : 大きな差分 */
-				/* RunLength() 有効時(CompLevel==5, 音声ファイル) では無効 */
+				/* 7 : 紊с綏 */
+				/* RunLength() 号鐚CompLevel==5, 喝0<ゃ) с≦ */
 				if (getbits(data, shift, 1) == 1) {
-					d[flip_flag] = 0; /* 未使用 */
+					d[flip_flag] = 0; /* 篏睡 */
 				} else {
 					int BITS, SHIFT;
 					if (info.CompLevel() >= 3) {
@@ -294,7 +294,7 @@ template<class NWAI> void NWADecode(cons
 						d[flip_flag] += (b&MASK2)<<SHIFT;
 				}
 			} else if (type != 0) {
-				/* 1-6 : 通常の差分 */
+				/* 1-6 : 絽吾綏 */
 				int BITS, SHIFT;
 				if (info.CompLevel() >= 3) {
 					BITS = info.CompLevel()+3;
@@ -311,9 +311,9 @@ template<class NWAI> void NWADecode(cons
 				else
 					d[flip_flag] += (b&MASK2)<<SHIFT;
 			} else { /* type == 0 */
-				/* ランレングス圧縮なしの場合はなにもしない */
+				/* 潟潟違劫х軒翫 */
 				if (info.UseRunLength() == true) {
-					/* ランレングス圧縮ありの場合 */
+					/* 潟潟違劫х軒翫 */
 					runlength = getbits(data,shift,1);
 					if (runlength==1) {
 						runlength = getbits(data,shift,2);
@@ -332,7 +332,7 @@ template<class NWAI> void NWADecode(cons
 			write_little_endian_short(outdata, d[flip_flag]);
 			outdata += 2;
 		}
-		if (info.Channels() == 2) flip_flag ^= 1; /* channel 切り替え */
+		if (info.Channels() == 2) flip_flag ^= 1; /* channel 帥 */
 	}
 	return;
 }
@@ -377,9 +377,9 @@ class NWAData {
 			}
 			return blocksize * (bps/8);
 		}
-		/* data は BlockLength 以上の長さを持つこと
-		** 返り値は作成したデータの長さ。終了時は 0。
-		** エラー時は -1
+		/* data  BlockLength 篁ヤ激ゃ
+		** 菴ゃ篏若帥激腟篋 0
+		** 惹 -1
 		*/
 		int Decode(FILE* in, char* data, int& skip_count);
 		void Rewind(FILE* in);
@@ -398,7 +398,7 @@ void NWAData::ReadHeader(FILE* in, int _
 	if (offset_start == -1) offset_start = 0;
 	if (_file_size != -1) filesize = _file_size;
 	curblock = -1;
-	/* header 読み込み */
+	/* header 茯粋昭 */
 	if (in == NULL || feof(in) || ferror(in)) {
 		fprintf(stderr,"invalid stream\n");
 		return;
@@ -420,18 +420,18 @@ void NWAData::ReadHeader(FILE* in, int _
 	blocksize = read_little_endian_int(header+0x20);
 	restsize = read_little_endian_int(header+0x24);
 	dummy2 = read_little_endian_int(header+0x28);
-	if (complevel == -1) {	/* 無圧縮rawデータ */
-		/* 適当に決め打ちする */
+	if (complevel == -1) {	/* ≦х軒raw若 */
+		/* 綵羆冴< */
 		blocksize = 65536;
 		restsize = (datasize % (blocksize * (bps/8))) / (bps/8);
 		blocks = datasize / (blocksize * (bps/8)) + (restsize > 0 ? 1 : 0);
 	}
 	if (blocks <= 0 || blocks > 1000000) {
-		/* 1時間を超える曲ってのはないでしょ*/
+		/* 鐚莇蚊cс*/
 		fprintf(stderr,"too large blocks : %d\n",blocks);
 		return;
 	}
-	/* regular file なら filesize 読み込み */
+	/* regular file  filesize 茯粋昭 */
 	if (filesize == 0 && fstat(fileno(in), &sb)==0 && (sb.st_mode&S_IFMT) == S_IFREG) {
 		int pos = ftell(in);
 		fseek(in, 0, SEEK_END);
@@ -443,7 +443,7 @@ void NWAData::ReadHeader(FILE* in, int _
 		}
 	}
 	if (complevel == -1) return;
-	/* offset index 読み込み */
+	/* offset index 茯粋昭 */
 	offsets = new int[blocks];
 	fread(offsets, blocks, 4, in);
 	for (i=0; i<blocks; i++) {
@@ -465,7 +465,7 @@ void NWAData::Rewind(FILE* in) {
 
 int NWAData::CheckHeader(void) {
 	if (complevel != -1 && offsets == NULL) return false;
-	/* データそのもののチェック */
+	/* 若帥с */
 	if (channels != 1 && channels != 2) {
 		fprintf(stderr,"This program only supports mono / stereo data : data have %d channels.\n",channels);
 		return false;
@@ -492,7 +492,7 @@ int NWAData::CheckHeader(void) {
 		fprintf(stderr,"This program only supports -1,0,1,2 compression level : the level of data is %d\n",complevel);
 		return false;
 	}
-	/* 整合性チェック */
+	/* 翫сс */
 	if (filesize != 0 && filesize != compdatasize) {
 		fprintf(stderr,"file size is invalid : %d != %d\n",filesize,compdatasize);
 		return false;
@@ -510,7 +510,7 @@ int NWAData::CheckHeader(void) {
 		fprintf(stderr,"total sample count is invalid : samplecount %d != %d*%d+%d(block*blocksize+lastblocksize).\n",samplecount,blocks-1,blocksize,restsize);
 		return false;
 	}
-	tmpdata = new char[blocksize*byps*2]; /* これ以上の大きさはないだろう、、、 */
+	tmpdata = new char[blocksize*byps*2]; /* 篁ヤ紊с */
 	return true;
 }
 
@@ -523,10 +523,10 @@ class NWAInfo_sw2 {
 };
 
 int NWAData::Decode(FILE* in, char* data, int& skip_count) {
-	if (complevel == -1) {		/* 無圧縮時の処理 */
+	if (complevel == -1) {		/* ≦х軒 */
 		if (feof(in) || ferror(in)) return -1;
 		if (curblock == -1) {
-			/* 最初のブロックなら、wave header 出力 */
+			/* wave header 阪 */
 			memcpy(data, make_wavheader(datasize, channels, bps, freq), 0x2c);
 			curblock++;
 			fseek(in, offset_start + 0x2c, SEEK_SET);
@@ -555,12 +555,12 @@ int NWAData::Decode(FILE* in, char* data
 	if (blocks == curblock) return 0;
 	if (feof(in) || ferror(in)) return -1;
 	if (curblock == -1) {
-		/* 最初のブロックなら、wave header 出力 */
+		/* wave header 阪 */
 		memcpy(data, make_wavheader(datasize, channels, bps, freq), 0x2c);
 		curblock++;
 		return 0x2c;
 	}
-	/* 今回読み込む/デコードするデータの大きさを得る */
+	/* 篁茯粋昭鐚潟若若帥紊с緇 */
 	int curblocksize, curcompsize;
 	if (curblock != blocks-1) {
 		curblocksize = blocksize * (bps/8);
@@ -576,9 +576,9 @@ int NWAData::Decode(FILE* in, char* data
 		curblock++;
 		return -2;
 	}
-	/* データ読み込み */
+	/* 若粋粋昭 */
 	fread(tmpdata, 1, curcompsize, in);
-	/* 展開 */
+	/* 絮 */
 	if (channels == 2 && bps == 16 && complevel == 2) {
 		NWAInfo_sw2 info;
 		NWADecode(info, tmpdata, data, curcompsize, curblocksize);
--- a/music2/wavfile.cc
+++ b/music2/wavfile.cc
@@ -247,9 +247,9 @@ WAVFILE::WAVFILE(void) {
 }
 
 int WAVFILE_Stream::Read(char* in_buf, int blksize, int length) {
-	/* ファイルの読み込み */
+	/* <ゃ茯粋昭 */
 	if (data_length == 0 && stream_length == 0) return -1;
-	/* wf->data にデータの残りがあればそれも読み込む */
+	/* wf->data 若帥罧違茯粋昭 */
 	if (data_length > blksize*length) {
 		memcpy(in_buf, data, blksize*length);
 		data += blksize * length;
@@ -275,7 +275,7 @@ int WAVFILE_Stream::Read(char* in_buf, i
 
 void WAVFILE_Stream::Seek(int count) {
         int blksize = 1;
-        /* block size の設定 */
+        /* block size 荐絎 */
 	blksize *= wavinfo.Channels * (wavinfo.DataBits/8);
 	data_length = 0;
 	stream_length = stream_length_orig - stream_top - count*blksize;
@@ -326,7 +326,7 @@ WAVFILE* WAVFILE::MakeConverter(WAVFILE*
 		need = true;
 	}
 	if (!need) return new_reader;
-	/* 変換もとのフォーマットを得る */
+	/* 紊若緇 */
 	int from_format;
 	if (new_reader->wavinfo.DataBits == 8) from_format = AUDIO_S8;
 	else from_format = AUDIO_S16;
@@ -379,9 +379,9 @@ int WAVFILE_Converter::Read(char* buf, i
 			}
 			cvt->len = cnt;
 			SDL_ConvertAudio(cvt);
-			if (freq < original->wavinfo.SamplingRate) { // rate conversion は SDL_ConvertAudio ではうまく行かない
-				// 48000Hz -> 44100Hz or 22050Hz などを想定
-				// 長さは短くなるはずなので、特に処理はなし
+			if (freq < original->wavinfo.SamplingRate) { // rate conversion  SDL_ConvertAudio с障頫
+				// 48000Hz -> 44100Hz or 22050Hz 喝
+				// 激с鴻
 				cvt->len = conv_wave_rate( (short*)(cvt->buf), cvt->len_cvt/4, original->wavinfo.SamplingRate, freq, tmpbuf);
 				cvt->len *= 4;
 			} else {
@@ -402,8 +402,8 @@ int WAVFILE_Converter::Read(char* buf, i
 	}
 	return copied_length / blksize;
 }
-/* format は signed, 16bit, little endian, stereo と決めうち
-** 場合によっていは big endian になることもあるかも。
+/* format  signed, 16bit, little endian, stereo 羆冴
+** 翫c big endian 
 */
 static int conv_wave_rate(short* in_buf, int length, int in_rate, int out_rate, char* tmpbuf) {
 	int input_rate = in_rate;
@@ -415,13 +415,13 @@ static int conv_wave_rate(short* in_buf,
 
 	if (input_rate == output_rate) return length;
 	if (length <= 0) return 0;
-	/* 一般の周波数変換:線型補完 */
+	/* 筝羈∽医鐚膩茖絎 */
 	int& first_flag = *(int*)(tmpbuf);
 	int& prev_time = *(int*)(tmpbuf+4);
 	int& prev_sample1 = *(int*)(tmpbuf+8);
 	int& prev_sample2 = *(int*)(tmpbuf+12);
 	out = (short*)(tmpbuf+16);
-	/* 初めてならデータを初期化 */
+	/* 若帥 */
 	if (first_flag == 0) {
 		first_flag = 1;
 		prev_time = 0;
@@ -429,7 +429,7 @@ static int conv_wave_rate(short* in_buf,
 		prev_sample2 = short(read_little_endian_short((char*)(in_buf++)));
 		length--;
 	}
-	/* 今回作成するデータ量を得る */
+	/* 篁篏若翠緇 */
 	dtime = prev_time + length * output_rate_d;
 	outlen = (int)(dtime / input_rate_d);
 	out_orig = out;
@@ -439,14 +439,14 @@ static int conv_wave_rate(short* in_buf,
 		write_little_endian_short((char*)out, prev_sample2);
 		out++;
 	}
-	dtime -= input_rate_d*outlen; /* 次の prev_time */
+	dtime -= input_rate_d*outlen; /* 罨< prev_time */
 
 	time = 0;
 	next_sample1 = short(read_little_endian_short((char*)(in_buf++)));
 	next_sample2 = short(read_little_endian_short((char*)(in_buf++)));
 	for (i=0; i < outlen; i++) {
-		/* double で計算してみたけどそう簡単には高速化は無理らしい */
-		/* なお、変換は 1分のデータに1秒程度かかる(Celeron 700MHz) */
+		/* double ц膊帥膂≦蕭∞ */
+		/* 紊 1若帥1腱腮綺(Celeron 700MHz) */
 		time += input_rate;
 		while(time-prev_time>output_rate) {
 			prev_sample1 = next_sample1;
@@ -676,7 +676,7 @@ enum mad_flow MP3FILE_impl::callback_wri
 	if (write_pointer + nsamples * nchannels * 2 > write_data_len) {
 		nsamples = (write_data_len - write_pointer) / nchannels / 2;
 	}
-	write_data_len &= ~(nchannels*2-1);	/* write_data_len はあらかじめ丸めておく */
+	write_data_len &= ~(nchannels*2-1);	/* write_data_len 筝吾 */
 	src_pointer += nsamples;
 	if (write_data == NULL) { // skip data write
 		write_pointer += nsamples*2*2;
--- a/music2/wavfile.h
+++ b/music2/wavfile.h
@@ -1,5 +1,5 @@
 /*
- * wavfile.h  WAV file関連
+ * wavfile.h  WAV file∫
  *
  *  Copyright: wavfile.c (c) Erik de Castro Lopo  erikd@zip.com.au
  *
--- a/scn2k/scn2k.h
+++ b/scn2k/scn2k.h
@@ -63,6 +63,6 @@ class PicContainer;
 class AyuSysConfig;
 class Surface;
 
-void dprintf(const char* fmt, ...); // debug 用
-void eprintf(const char* fmt, ...); // コマンド実行(XXXexec)追跡用
+void dprintf(const char* fmt, ...); // debug 
+void eprintf(const char* fmt, ...); // 潟潟絎茵(XXXexec)菴処掘
 #endif
--- a/scn2k/scn2k_cmd.cc
+++ b/scn2k/scn2k_cmd.cc
@@ -39,7 +39,7 @@ using namespace std;
 
 
 // #define SCN_DUMP
-/* 注意点: @@@ で表記 */
+/* 羈刻 @@@ ц;荐 */
 
 
 
@@ -115,11 +115,11 @@ int Flags::Get(int type, int number) con
 	if (index == 11) index = 9;
 	if (index > TYPE_VARMAX || uint(type) > 4) return 0;
 	if (type == 0) {
-		// A[]..G[], Z[] を直に読む
+		// A[]..G[], Z[] 眼茯
 		if (uint(number) >= 2000) return 0;
 		return var[index][number];
 	} else {
-		// Ab[]..G4b[], Z8b[] などを読む
+		// Ab[]..G4b[], Z8b[] 茯
 		int factor = 1 << (type - 1);
 		int eltsize = 32 / factor;
 		if (uint(number) >= (64000 / factor)) return 0;
@@ -144,11 +144,11 @@ void Flags::Set(VarInfo info, int value)
 		fprintf(stderr,"Error: invalid access to Var<%d>[%d]\n",info.type,info.number);
 	}
 	if (type == 0) {
-		// A[]..G[], Z[] を直に書く
+		// A[]..G[], Z[] 眼吾
 		if (uint(info.number) >= 2000) return;
 		var[index][info.number] = value;
 	} else {
-		// Ab[]..G4b[], Z8b[] などを書く
+		// Ab[]..G4b[], Z8b[] 吾
 		int factor = 1 << (type - 1);
 		int eltsize = 32 / factor;
 		int eltmask = (1 << factor) - 1;
@@ -340,13 +340,13 @@ void Flags::SaveSys(string& save) { //FI
 }
 
 bool Flags::Exec(Cmd& cmd) {
-	if (cmd.cmd_type == CMD_FLAGS) { // 代入演算
+	if (cmd.cmd_type == CMD_FLAGS) { // 篁eユ膊
 		if (cmd.args.size() != 2) return false;
 		Set(cmd.args[0], cmd.args[1].value);
 		cmd.clear();
 		return true;
 	}
-	if (cmd.cmd1 == 1 && cmd.cmd2 == 0x0a) { // 文字列演算
+	if (cmd.cmd1 == 1 && cmd.cmd2 == 0x0a) { // 絖羲膊
 		VarInfo arg1 = cmd.args[0];
 		switch(cmd.cmd3) {
 			case 0:
@@ -360,7 +360,7 @@ bool Flags::Exec(Cmd& cmd) {
 					for (i=0; i < sc[i] && len != 0; i++, len--) {
 						if (sc[i]<0 && sc[i+1]!=0) i++;
 					}
-					s.erase(i); // 全角で len 文字まで切り詰める
+					s.erase(i); // 茹 len 絖障у荅違
 					SetStr(arg1, s);
 	// fprintf(stderr,"Set[%d,%d]<-%s\n",arg1.type,arg1.number,s.c_str());
 				} else break;
@@ -371,7 +371,7 @@ bool Flags::Exec(Cmd& cmd) {
 					SetStr(arg1, "");
 					cmd.clear();
 				} else if (cmd.cmd4 == 1) {
-					// 領域指定で文字列クリア
+					// 絎ф絖
 					VarInfo v1 = cmd.args[0];
 					VarInfo v2 = cmd.args[1];
 					eprintf("memclear(str). Var[%d]<%d> - Var[%d]<%d>\n",v1.type, v1.number, v2.type, v2.number);
@@ -407,7 +407,7 @@ bool Flags::Exec(Cmd& cmd) {
 				break; }
 			case 5: // substring, index from left
 			case 6: // substring, index from right
-				// 全角対応らしい
+				// 茹絲上
 				//FIXME: Make sure it works properly
 				{ int offset = cmd.args[2].value;
 				int len = strlen(cmd.Str(cmd.args[1]));
@@ -415,7 +415,7 @@ bool Flags::Exec(Cmd& cmd) {
 				const char* s = str.c_str();
 				if (cmd.cmd3 == 6) offset = len - offset;
 				if (offset < 0) offset = 0;			
-				// 先頭 N 文字を読み飛ばす
+				//  N 絖茯翠違
 				int i;
 				int offset_top = 0;
 				for (i=0; i<offset && s[offset_top] != 0; i++) {
@@ -424,7 +424,7 @@ bool Flags::Exec(Cmd& cmd) {
 				}
 				if (s[offset_top] == 0) {
 					SetStr(arg1, "");
-				} else if (cmd.cmd4 == 0) { // 長さ制限なし
+				} else if (cmd.cmd4 == 0) { // 激狗
 				    SetStr(arg1, string(s, offset_top, len-offset_top));
 				} else { // cmd.cmd4 == 1
 					int slen = cmd.args[3].value;
@@ -447,7 +447,7 @@ bool Flags::Exec(Cmd& cmd) {
 				SetSys(i);
 				cmd.clear();
 				break; }
-			case 8: // 文字列を切って短くする
+			case 8: // 絖c
 				if (cmd.args[1].value <= 0) {
 					SetStr(arg1, "");
 				} else if (cmd.args[1].value < strlen(cmd.Str(cmd.args[1]))) {
@@ -455,7 +455,7 @@ bool Flags::Exec(Cmd& cmd) {
 				}
 				cmd.clear();
 				break;
-			case 0x0e: // 漢字モードでitoa
+			case 0x0e: // 羲√≪若itoa
 				{
 				int arg1 = cmd.args[0].value;
 				string result;
@@ -488,19 +488,19 @@ bool Flags::Exec(Cmd& cmd) {
 				cmd.clear();
 				}
 				break;
-			case 0x0f: case 0x11: // itoa (0x11 の方は zero padding するっぽい)
+			case 0x0f: case 0x11: // itoa (0x11 鴻 zero padding c純)
 				if (cmd.cmd4 == 0) {
 					int arg1 = cmd.args[0].value;
 					char buf[1024]; sprintf(buf, "%d", arg1);
 					SetStr(cmd.args[1], buf);
 					cmd.clear();
 				} else if (cmd.cmd4 == 1) {
-					// 漢字(SJIS) : 82 [4f+N]
-					// やはり漢字じゃない?
+					// 羲√(SJIS) : 82 [4f+N]
+					// 羲√鐚
 					int arg1 = cmd.args[0].value;
 					char buf[1024]; char fmt[1024];
 					if (cmd.cmd3 == 0x0f) {
-						sprintf(fmt, "%%%dd",cmd.args[2].value); /* 空白でパディング */
+						sprintf(fmt, "%%%dd",cmd.args[2].value); /* 腥榊純сc潟 */
 					} else {
 						sprintf(fmt, "%%0%dd",cmd.args[2].value);
 					}
@@ -509,7 +509,7 @@ bool Flags::Exec(Cmd& cmd) {
 					cmd.clear();
 				}
 				break;
-			case 0x64: // 文字列の表示 : 引数をテキストウィンドウに表示
+			case 0x64: // 絖茵腓 : 綣違鴻c潟茵腓
 				if (cmd.cmd4 == 1) {
 					char buf[256];
 					snprintf(buf, 255, "%d", Get(cmd.args[0].type, cmd.args[0].number));
@@ -521,9 +521,9 @@ bool Flags::Exec(Cmd& cmd) {
 				break;
 		}
 	}
-	if (cmd.cmd1 == 1 && cmd.cmd2 == 0x0b) { // 数値変数演算
+	if (cmd.cmd1 == 1 && cmd.cmd2 == 0x0b) { // 医ゅ井膊
 		if (cmd.cmd3 == 0 && cmd.cmd4 == 0) {
-			/* 複数の変数をセット */
+			/* 茲違紊違祉 */
 			VarInfo v1 = cmd.args[0];
 			eprintf("set multiple-var Var[%d]<%d> <- ",v1.type, v1.number);
 			int i;
@@ -539,7 +539,7 @@ bool Flags::Exec(Cmd& cmd) {
 			eprintf("\n");
 			cmd.clear();
 		} else if (cmd.cmd3 == 1 && cmd.cmd4 == 0) {
-			/* 領域指定で変数をクリア */
+			/* 絎у違 */
 			VarInfo v1 = cmd.args[0];
 			VarInfo v2 = cmd.args[1];
 			eprintf("memclear. Var[%d]<%d> - Var[%d]<%d>\n",v1.type, v1.number, v2.type, v2.number);
@@ -552,7 +552,7 @@ bool Flags::Exec(Cmd& cmd) {
 			}
 			cmd.clear();
 		} else if (cmd.cmd3 == 1 && cmd.cmd4 == 1) {
-			/* 領域指定で変数をセット */
+			/* 絎у違祉 */
 			VarInfo v1 = cmd.args[0];
 			VarInfo v2 = cmd.args[1];
 			int value = cmd.args[2].value;
@@ -565,7 +565,7 @@ bool Flags::Exec(Cmd& cmd) {
 					Set(v1, value);
 			}
 			cmd.clear();
-		} else if (cmd.cmd3 == 4 && cmd.cmd4 == 1) { // 領域クリア(sysfunc.txt)
+		} else if (cmd.cmd3 == 4 && cmd.cmd4 == 1) { // (sysfunc.txt)
 			VarInfo v1 = cmd.args[0];
 			int step = cmd.args[1].value;
 			int deal = cmd.args[2].value;
@@ -576,7 +576,7 @@ bool Flags::Exec(Cmd& cmd) {
 				v1.number += step;
 			}
 			cmd.clear();
-		} else if (cmd.cmd3 == 0x64 && cmd.cmd4 == 0) { //領域で数値を合計する
+		} else if (cmd.cmd3 == 0x64 && cmd.cmd4 == 0) { //ф医ゃ荐
 			VarInfo v1 = cmd.args[0];
 			VarInfo v2 = cmd.args[1];
 			eprintf("sum var. Var[%d]<%d> - Var[%d]<%d>\n",v1.type, v1.number, v2.type, v2.number);
@@ -633,9 +633,9 @@ bool SimpleCmd::operator==(const SimpleC
 **   Cmd
 */
 
-/* 数値 num := 0x24 0xff <int num> */
-/* 変数 var := 0x24 <uchar type> 0x5b <exp> 0x5d */
-/* 項 token := num | var | 0x28 <exp> 0x29 | <plus|minus> token */
+/* 医 num := 0x24 0xff <int num> */
+/* 紊 var := 0x24 <uchar type> 0x5b <exp> 0x5d */
+/*  token := num | var | 0x28 <exp> 0x29 | <plus|minus> token */
 
 int Cmd::GetLeftToken(const char*& d, VarInfo& info) {
 	bool var_flag = true;
@@ -648,7 +648,7 @@ int Cmd::GetLeftToken(const char*& d, Va
 		var_flag = false;
 	}
 	if (d[0] == 0x24 && ((unsigned const char*)d)[1] == 0xff) {
-	// if ( (d[0] == 0x30 || d[0] == 0x31) && d[1] == 0x24 && ((unsigned const char*)d)[2] == 0xff) 	/* @@@ not supported; selection 内で、0x30|0x31 が付随することがある */
+	// if ( (d[0] == 0x30 || d[0] == 0x31) && d[1] == 0x24 && ((unsigned const char*)d)[2] == 0xff) 	/* @@@ not supported; selection с0x30|0x31 篁 */
 		// numerical atom
 		d += 6;
 		value = read_little_endian_int(d-4);
@@ -746,8 +746,8 @@ Cmd::Cmd(const Flags& f, int _sys_ver) :
 	pos = -1;
 }
 
-/* 演算子 op := 0x5c <uchar op> */
-/* 数式 exp: [op] <token> [op <token> [...]] */
+/* 羲膊絖 op := 0x5c <uchar op> */
+/* 医 exp: [op] <token> [op <token> [...]] */
 int Cmd::GetExpression(const char*& d, VarInfo* info_ptr) {
 #define STACK_DEPTH 1024
 #define OP_LB 11
@@ -755,7 +755,7 @@ int Cmd::GetExpression(const char*& d, V
 	int val_stack[STACK_DEPTH];
 	int stack_count = 0;
 	
-	// 第一項の読み込み
+	// 膃筝茯粋昭
 	while(*d == 0x28) {
 		d++;
 		dprintf("(");
@@ -772,7 +772,7 @@ int Cmd::GetExpression(const char*& d, V
 	
 	if (*d != 0x5c && stack_count == 0) {
 		if (info_ptr) *info_ptr = info;
-		return value; // 単純なleft-termはここで終了。有効なinfo_ptrを帰す(可能性がある)
+		return value; // 膣left-termх篋鴻info_ptr絽違鐚醇с鐚
 	}
 	
 	while(*d == 0x5c) {
@@ -783,7 +783,7 @@ int Cmd::GetExpression(const char*& d, V
 		if (op_type >= 10) SetError();
 		int cur_pri = op_pri(op_type);
 		while(stack_count != 0 && op_pri(op_stack[stack_count-1]) <= cur_pri) {
-			// 優先順位の高い、先行する演算を行う
+			// 篏蕭茵羲膊茵
 			value = eval(val_stack[stack_count-1], op_stack[stack_count-1], value);
 			stack_count--;
 		}
@@ -798,12 +798,12 @@ int Cmd::GetExpression(const char*& d, V
 		value = GetLeftToken(d, info);
 
 		while (*d != 0x5c && stack_count > 0) {
-			// 未実行の演算を終わらせる
+			// 絎茵羲膊腟
 			if (op_stack[stack_count-1] != OP_LB) {
 				value = eval(val_stack[stack_count-1], op_stack[stack_count-1], value);
 				stack_count--;
 			} else if (*d == 0x29) { /* op_stack == OP_LB */
-			// bracket 終端があれば、閉じておく
+			// bracket 腟腴違
 				d++;
 				dprintf(")");
 				stack_count--;
@@ -819,7 +819,7 @@ int Cmd::GetExpression(const char*& d, V
 	return value;
 }
 
-// 条件分岐専用に、条件演算と算術演算の混合を検知できる専用ルーチン(本来はGetExpressionで差し支えない)
+// >散絏絨>散羲膊膊茵羲膊羞桁罎ャс絨若鰹ャGetExpressionу勲)
 int Cmd::GetExpressionCond(const char*& d) {
 	char op_stack[STACK_DEPTH];
 	int val_stack[STACK_DEPTH];
@@ -828,7 +828,7 @@ int Cmd::GetExpressionCond(const char*& 
 #define ATTR_FLAG 1
 	int stack_count = 0;
 	
-	// 第一項の読み込み
+	// 膃筝茯粋昭
 	while(*d == 0x28) {
 		d++;
 		dprintf("(");
@@ -850,7 +850,7 @@ int Cmd::GetExpressionCond(const char*& 
 		else dprintf("err.");
 		int cur_pri = op_pri_cond(op_type);
 		while(stack_count != 0 && op_pri_cond(op_stack[stack_count-1]) <= cur_pri) {
-			// 優先順位の高い、先行する演算を行う
+			// 篏蕭茵羲膊茵
 			if (op_stack[stack_count-1] >= 60) {
 				if (valattr_stack[stack_count-1] != ATTR_FLAG || valattr != ATTR_FLAG) SetError();
 			} else {
@@ -873,7 +873,7 @@ int Cmd::GetExpressionCond(const char*& 
 		valattr = ATTR_VAL;
 
 		while (*d != 0x5c && stack_count > 0) {
-			// 未実行の演算を終わらせる
+			// 絎茵羲膊腟
 			if (op_stack[stack_count-1] != OP_LB) {
 				if (op_stack[stack_count-1] >= 60) {
 					if (valattr_stack[stack_count-1] != ATTR_FLAG || valattr != ATTR_FLAG) SetError();
@@ -883,7 +883,7 @@ int Cmd::GetExpressionCond(const char*& 
 				value = eval(val_stack[stack_count-1], op_stack[stack_count-1], value);
 				if (op_stack[stack_count-1] >= 40) valattr = ATTR_FLAG;
 				stack_count--;
-			// bracket 終端があれば、閉じておく
+			// bracket 腟腴違
 			} else if (*d == 0x29) { /* op_stack == OP_LB */
 				d++;
 				dprintf(")");
@@ -905,23 +905,23 @@ args = 0x28 <exp> [[0x2c] <exp> [[0x2c] 
 */
 
 int Cmd::GetArgs(const char*& d) {
-	if (*d != 0x28) return 0; /* 引数なし */
+	if (*d != 0x28) return 0; /* 綣違 */
 	d++;
 	dprintf("args:");
 	VarInfo var;
 	int i; for (i=0; i<100 ; i++) {
-		/* number, variable, string の種別なく値を得る */
-		if (*d == 0x61) { // よくわからない(智代アフター)
+		/* number, variable, string 腮ャゃ緇 */
+		if (*d == 0x61) { // (坂撮≪帥)
 			dprintf("@%d",d[1]);
 			d += 2;
 			if (*d == 0x28) {
 				dprintf("{");
-				GetArgs(d); // (A,B,C)節が含まれることがある
+				GetArgs(d); // (A,B,C)膀障
 				dprintf("}");
 			} else {
 				dprintf("{}");
 			}
-		} else if (d[0] == 0x0a || d[0] == 0x40) { // よくわからない (Little Busters!)
+		} else if (d[0] == 0x0a || d[0] == 0x40) { //  (Little Busters!)
 			int var;
 			if (system_version == 0) { var = read_little_endian_int(d+1); d += 5;}
 			else { var = read_little_endian_short(d+1); d += 3;}
@@ -935,7 +935,7 @@ int Cmd::GetArgs(const char*& d) {
 			args.push_back(var);
 		} else SetError();
 		if (*d == 0x29) break;
-		if (*d == 0x2c) {d++;} // 次の arg が演算子で始まる、などがなければ存在しない
+		if (*d == 0x2c) {d++;} // 罨< arg 羲膊絖у障医
 		dprintf(",");
 	}
 	if (*d == 0x29) d++;
@@ -944,48 +944,48 @@ int Cmd::GetArgs(const char*& d) {
 }
 
 int Cmd::GetArgsSpecial(int normal_args,const char*& d) {
-	if (*d != 0x28) return 0; /* 引数なし */
+	if (*d != 0x28) return 0; /* 綣違 */
 	d++;
 	dprintf("args:");
 	int i; for (i=0; i<normal_args; i++) {
-		/* number, variable, string の種別なく値を得る */
+		/* number, variable, string 腮ャゃ緇 */
 		if (*d == 0x24 || (*d == 0x5c && (d[1] == 1 || d[1] == 0)) || *d == 0x28) {
 			GetExpression(d);
 		} else if (StrType(d)) {
 			GetString(d);
 		} else SetError();
 		if (*d == 0x29) break;
-		if (*d == 0x2c) {d++;} // 次の arg が演算子で始まる、などがなければ存在しない
+		if (*d == 0x2c) {d++;} // 罨< arg 羲膊絖у障医
 		dprintf(",");
 	}
 	for (i=0; i<argc ; i++) {
 		if (*d == 0x28) {
 /*
 ** cmd 01-22:0c1c, 01-22:0835
-** Princess Bride のカードが落ちるアニメの場面
-** なお、_PBCARDANM* の画像はこのコマンドでのみ使われているので、特殊処理として無視することも可能
+** Princess Bride 若純<≪<顔
+** _PBCARDANM* 糸潟潟с推戎с号∴
 **
 ** cmd 01-04:0276, 026c, 0270
-** 複数の enum が args の数だけ続く処理。特殊処理として分離する
+** 茲違 enum  args 違膓号≪
 */
 dprintf("enum.<");
-			/* (...) は列挙型 or 構造体の可能性がある */
+			/* (...)  or 罕篏醇с */
 			const char* d_orig = d;
 			int pt = args.size(); args.push_back(VarInfo(0));
 			int count = GetArgs(d);
 			args[pt] = VarInfo(count);
 dprintf(">");
 		} else if (*d == 0x61 && (d[1] >= 0x00 && d[1] <= 0x04) && d[2] == 0x28 ) {
-			/* 使われるコマンドは 01-21:004b, 01-28:0064 のいずれか(R,C,PB,LO)
-			** それらのコマンドは
-			** arg1: 画像ファイル名
-			** arg2 : Sel 番号
-			** らしく、arg3 以降が 0x61 <00-04> (a,b,c,...) となる(ダンプ上は enum と表記される)
-			** () 内の引数はさまざまで、a のみ(画像ファイル名)、
+			/* 篏帥潟潟 01-21:004b, 01-28:0064 鐚R,C,PB,LO)
+			** 潟潟
+			** arg1: 糸<ゃ
+			** arg2 : Sel 
+			** arg3 篁ラ 0x61 <00-04> (a,b,c,...) 鐚潟筝 enum 茵荐)
+			** () 綣違障障сa 随糸<ゃ鐚
 			** a,b b=SEL?
-			** a,b,c (b,c)=座標?
+			** a,b,c (b,c)=綺ф鐚
 			** a,(b,c,d,e,f,g) b-g = src / dest?
-			** らしい
+			** 
 			*/
 			dprintf("kasane. #%d <",d[1]);
 			d += 2;
@@ -994,21 +994,21 @@ dprintf(">");
 			args[pt] = VarInfo(count);
 			dprintf(">");
 		} else if (*d == 0x24 || (*d == 0x5c && (d[1] == 1 || d[1] == 0))) {
-			/* cmd 01-15:0028 ; 始めに 0x24 節があり、続いて 0x28 節になる */
+			/* cmd 01-15:0028 ; 紮 0x24 膀膓 0x28 膀 */
 			VarInfo var;
 			GetExpression(d, &var);
 			args.push_back(var);
-			i--; // この引数はargc の数には入らない
+			i--; // 綣違argc 違ャ
 		} else SetError();
 		if (d[0] == 0x0a || d[0] == 0x40) {
-			/* cmd 01-15:0028 ; 0x28 節の後に毎回 0x0a 節が来る */
+			/* cmd 01-15:0028 ; 0x28 膀緇罸 0x0a 膀ャ */
 			int var;
 			if (system_version == 0) { var = read_little_endian_int(d+1); d += 5;}
 			else { var = read_little_endian_short(d+1); d += 3;}
 			dprintf("line %d; ",var);
 		}
 		if (*d == 0x29) break;
-		if (*d == 0x2c) {d++;} // 次の arg が演算子で始まる、などがなければ存在しない
+		if (*d == 0x2c) {d++;} // 罨< arg 羲膊絖у障医
 		dprintf(",");
 	}
 	if (*d == 0x29) d++;
@@ -1124,7 +1124,7 @@ void Cmd::GetSelection(const char*& d) {
 			else { var = read_little_endian_short(d+1); d += 3;}
 			dprintf("Line %d; ",var);
 			if (text.length() != 0) {
-				if (cond_result) ; // 条件節が true なら表示しない
+				if (cond_result) ; // >散膀 true 茵腓冴
 				else {
 					const char* str = text.c_str();
 					VarInfo var;
@@ -1145,12 +1145,12 @@ void Cmd::GetSelection(const char*& d) {
 			dprintf(":cond:");
 			d++;
 			while(d[0] != 0x29) {
-				int result = GetExpressionCond(d); // PRINT- 節でないばあい、条件表示。次は文字節、またはPRINT節のはず
-				if (*d == 0x32) { // 0x32 なら、現在の条件節を表示しない
+				int result = GetExpressionCond(d); // PRINT- 膀с違>散茵腓冴罨<絖膀障PRINT膀
+				if (*d == 0x32) { // 0x32 憜>散膀茵腓冴
 					d++; dprintf("##");
 					cond_result = result;
-				} else if (*d == 0x31) { // 0x31 なら、現在の条件節を表示する
-						// Little Busters! : この条件で正しいかは未検証
+				} else if (*d == 0x31) { // 0x31 憜>散膀茵腓冴
+						// Little Busters! : >散фc罎荐
 					d++; dprintf("***");
 					cond_result = !result;
 				}
@@ -1165,7 +1165,7 @@ void Cmd::GetSelection(const char*& d) {
 		} else if (*d == 0x23 && strncmp(d,"###PRINT",8) == 0) {
 			d += 8;
 			if (d[0] != 0x28) SetError();
-			else { // 文字変数の内容の表示
+			else { // 絖紊違絎鴻茵腓
 				d++;
 				dprintf("Print.");
 				VarInfo info;
@@ -1173,7 +1173,7 @@ void Cmd::GetSelection(const char*& d) {
 				if (d[0] != 0x29 || info.type == -1) SetError();
 				d++;
 				dprintf(";");/*
-				// 数値を全角文字に変換して登録
+				// 医ゃ茹絖紊脂
 				char str[10], str2[20]; // itoa
 				sprintf(str, "%d", info.value);
 				int i; for (i=0; str[i] != 0; i++) {
@@ -1187,7 +1187,7 @@ void Cmd::GetSelection(const char*& d) {
 	}
 	d++;
 	/* @@@ */
-	/* 一致しない場合があるのでコメントアウト */
+	/* 筝眼翫с潟<潟≪ */
 	// if (arg_count != argc) SetError();
 	dprintf("\n}\n");
 }
@@ -1198,7 +1198,7 @@ void Cmd::GetCmd(Flags& flags_orig, cons
 
 	cmdstr[0] = 0;
 	rawdata = d;
-	if (*d == 0x23) { /* コマンド */
+	if (*d == 0x23) { /* 潟潟 */
 		cmd_type = CMD_OTHER;
 		cmd1 = *(unsigned const char*)(d+1);
 		cmd2 = *(unsigned const char*)(d+2);
@@ -1209,8 +1209,8 @@ void Cmd::GetCmd(Flags& flags_orig, cons
 		/* verbose */
 			// dprintf(" 0x23 - cmd %02x-%02x:%04x:%02x[%2d] \n",cmd1,cmd2,cmd3,cmd4,argc);
 			sprintf(cmdstr, "%02x-%02x:%04x:%02x  : %s",cmd1,cmd2,cmd3,cmd4, CmdDescr(cmd1,cmd2,cmd3,cmd4));
-		/* 引数を得る */
-		/* 特殊引数のもの */
+		/* 綣違緇 */
+		/* 号綣違 */
 		int is_special = 0;
 		if (cmd1 == 0) {
 			if (cmd2 == 1) {
@@ -1229,12 +1229,12 @@ void Cmd::GetCmd(Flags& flags_orig, cons
 					if (*d++ != 0x28) { SetError(); return;}
 					dprintf("\t");
 					int cond = GetExpressionCond(d);
-					if (cmd3 == 1) cond = !cond; // 逆になる
+					if (cmd3 == 1) cond = !cond; // 
 					if (*d++ != 0x29) { SetError(); return; }
 					int jumpto = read_little_endian_int(d);
 					d += 4;
 					dprintf("-> %d\n", jumpto);
-					if (! cond) jump_arg = jumpto; /* condition が満たされない場合、ジャンプ */
+					if (! cond) jump_arg = jumpto; /* condition 羣翫吾c潟 */
 					is_special = 1;
 				} else if (cmd3 == 4) {
 					/* switch to */
@@ -1264,7 +1264,7 @@ void Cmd::GetCmd(Flags& flags_orig, cons
 			}
 		}
 retry:
-		/* 一般引数のもの */
+		/* 筝綣違 */
 		if (!is_special) {
 			dprintf(" 0x23 - cmd %02x-%02x:%04x:%02x[%2d]  : %s\n",cmd1,cmd2,cmd3,cmd4,argc,CmdDescr(cmd1,cmd2,cmd3,cmd4));
 			dprintf("\t");
@@ -1278,7 +1278,7 @@ retry:
 			dprintf("\n");
 
 		}
-	} else if (*d == 0x24) { /* 代入演算 */
+	} else if (*d == 0x24) { /* 篁eユ膊 */
 		if (d[1] == 0x12 || d[2] != 0x5b) SetError();
 		dprintf("expr: ");
 		sprintf(cmdstr, "expr");
@@ -1291,20 +1291,20 @@ retry:
 		else dprintf("%s",op_str[type]);
 		d += 2;
 		int value2 = GetExpression(d);
-		// 代入情報を埋め込む
+		// 篁eユ宴莨若
 		if (type != 30) value2 = eval(value, type-20, value2);
 		cmd_type = CMD_FLAGS;
 		args.push_back(info);
 		args.push_back(value2);
 		dprintf("\n");
-	} else if (StrType(d)) { /* 文字出力 */
+	} else if (StrType(d)) { /* 絖阪 */
 		VarInfo info;
 		info.type = TYPE_STR;
 		info.value = GetString(d);
 		args.push_back(info);
 		cmd_type = CMD_TEXT;
 		dprintf("\n");
-	} else if (*d == 0x0a || *d == 0x40 || *d == 0x21) { /* デバッグ用データと既読フラグ */
+	} else if (*d == 0x0a || *d == 0x40 || *d == 0x21) { /* 亥若帥∵ */
 		cmd_type = CMD_NOP;
 		if (*d == 0x0a) {
 			dprintf("line ");
@@ -1319,9 +1319,9 @@ retry:
 			}
 			dprintf("%d\n", l);
 		} else { /* 0x40, 0x21 */
-			// 既読マーカーらしい。エントリーポイントとセーブポイントも使われる。
-			// RealLive 1.2.5から、0x40はセーブポイント、0x21はエントリーポイント。
-			// 1.2.5以前、どちらも0x40が使われる。
+			// ∵若若潟若ゃ潟祉若ゃ潟篏帥
+			// RealLive 1.2.50x40祉若ゃ潟0x21潟若ゃ潟
+			// 1.2.5篁ュ<0x40篏帥
 			int kidoku_index;
 			d++;
 			if (system_version == 0) {
@@ -1332,10 +1332,10 @@ retry:
 				d += 2;
 			}
 			dprintf("kidoku marker %d\n", kidoku_index);
-			// text_readflagは、このkidoku_indexを使ったら良いかな。
+			// text_readflagkidoku_index篏帥c
 		}
 	} else if (*d == 0x2c) { /* ??? */
-		dprintf("commd;0x2c\n"); // conditional jump の行き先によくあるらしい(常に、かはわからない)
+		dprintf("commd;0x2c\n"); // conditional jump 茵鐚絽吾鐚
 		d++;
 	} else { 
 		SetError();
@@ -1456,7 +1456,7 @@ const char* Cmd::Str(const VarInfo& info
 }
 
 int Cmd::AddStr(char* s) {
-	// 1-0a-0064 はこういうものが必要らしい
+	// 1-0a-0064 綽荀
 	int start = strend;
 	while (*s) strheap[strend++] = *s++;
 	strheap[strend++] = 0;
@@ -1474,7 +1474,7 @@ void Cmd::read(const CmdSimplified& from
 	cmd3 = from.cmd3;
 	cmd4 = from.cmd4;
 	argc = from.argc;
-	/* args の読み込み */
+	/* args 茯粋昭 */
 	args.clear();
 	char* d = from.args;
 	if (d == NULL) return;
@@ -1517,7 +1517,7 @@ void Cmd::write(CmdSimplified& to, char*
 	to.cmd3 = cmd3;
 	to.cmd4 = cmd4;
 	to.argc = argc;
-	/* args の書き込み */
+	/* args 吾莨若 */
 	if (args.empty()) {
 		to.args = NULL;
 	} else {
@@ -1549,7 +1549,7 @@ void CmdSimplified::copy(const CmdSimpli
 	*this = from;
 	if (args == NULL) return;
 	char* args_old = from.args;
-	/* args のコピー */
+	/* args 潟 */
 	while(*args_old != TYPE_END) {
 		if (*args_old == TYPE_VAL) {
 			args_old += 5;
@@ -1569,16 +1569,16 @@ void CmdSimplified::Save(string& saveret
 	sprintf(buf, "%02x-%02x:%04x:%02x(%02d),", cmd1, cmd2, cmd3, cmd4, argc);
 	saveret += buf;
 	
-	/* args のコピー */
+	/* args 潟 */
 	char* d = args;
 	while(d && *d != TYPE_END) {
 		if (*d == TYPE_VAL) {
 			d++;
 			sprintf(buf, "%d,", read_little_endian_int(d));
 			d += 4;
-		} else { /* TYPE_STR と仮定 */
+		} else { /* TYPE_STR 篁絎 */
 			d++;
-			if (strlen(d) > 1000) d[1000] = 0; // ありえない・・・
+			if (strlen(d) > 1000) d[1000] = 0; // 祉祉
 			int i; int cnt = 0;
 			buf[cnt++] = '"';
 			for (i=0; d[i] != 0; i++) {
@@ -1681,7 +1681,7 @@ int main(int argc, char** argv) {
 		char* data = info->CopyRead();
 		char* d = data;
 		char* dend = d + info->Size();
-		/* version 確認 */
+		/* version 腆肴 */
 		if (read_little_endian_int(d) == 0x1cc) {
 			system_version = 0;
 		} else if (read_little_endian_int(d) == 0x1d0) {
@@ -1703,7 +1703,7 @@ int main(int argc, char** argv) {
 		const char* dstart = d;
 		fprintf(stderr,"Dumping %s\n",fname);
 		Flags flags;
-		/* 最初から最後までコマンド取得 -> 出力を繰り返す */
+		/* 緇障с潟潟緇 -> 阪膵違菴 */
 		while(dcur<dend) {
 			const char* dprev = dcur;
 			Cmd cmd(flags, system_version); cmd.ClearError();
--- a/scn2k/scn2k_cmd.h
+++ b/scn2k/scn2k_cmd.h
@@ -23,7 +23,7 @@ enum SkipMode {
 	SKIP_GRP_NODRAW=64, SKIPEND_TEXT=256, SKIPEND_KEY=512, SKIP_IN_MENU=1024
 };
 
-struct CmdSimplified { // Cmd 転
+struct CmdSimplified { // Cmd 篆絖
 	int type, cmd1, cmd2, cmd3, cmd4, argc;
 	char* args;
 	void Save(std::string& save);
--- a/scn2k/scn2k_flags.h
+++ b/scn2k/scn2k_flags.h
@@ -27,12 +27,12 @@ struct VarInfo {
 
 class Flags {
 /* flag:
-**  type 0-5 : 促鱈臓促束促谷属多担臓蔵続2000転
-**  type 6, 25 : 促属促鱈臓促促谷属多担臓蔵2000転
-**      type 10,11: 促鱈臓促束促谷属多担??臓蔵続2000転
-**	type 12 : 促属促鱈臓促促谷転損炭テ蛎‖2000転 (尊贈袖損谷揃但テ測)
-**	type 18 : 促鱈臓促束促谷転損炭テ蛎‖2000転
-**	type 25: 促揃促孫促促多担臓促促促孫尊転臓息臓 1000 転臓息
+**  type 0-5 : 若贋違2000
+**  type 6, 25 : 違若贋違2000
+**      type 10,11: 若贋??2000
+**	type 12 : 違若絖2000 (篁∴)
+**	type 18 : 若絖2000
+**	type 25: 激鴻紊逸劫婚罔鐚鐚 1000 鐚
 **  type 26-32, 51 : 1-bit access to 0-6, 25
 **  type 52-58, 77 : 2-bit access to 0-6, 25
 **  type 78-84, 103 : 4-bit access to 0-6, 25
--- a/scn2k/scn2k_grp.cc
+++ b/scn2k/scn2k_grp.cc
@@ -126,17 +126,17 @@ void GrpObj::GetSrcGeom(int& width, int&
 		if (name.length() == 0) {
 			return;
 		}
-		/* ボタンの位置情報を求める */
-		/* g00 ファイルのヘッダ部分に位置情報は入っている */
+		/* 帥潟篏臀宴羆 */
+		/* g00 <ゃ篏臀宴ャc */
 		string path(name);
 		path += ".g00";
 		ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, path.c_str(), "g00");
-		if (info == NULL) { // ファイルが見つからない
+		if (info == NULL) { // <ゃ荀ゃ
 			fprintf(stderr, "GrpObj::GetSrcGeom : Cannot find file %s\n", path.c_str());
 			return;
 		}
 		const char* data = info->Read();
-		if (data != NULL && *data == 2) { // 画像ファイル内にボタン情報が存在する
+		if (data != NULL && *data == 2) { // 糸<ゃ帥恰宴絖
 			int srclen = read_little_endian_int(data+5);
 			int i;
 			for (i=0; i<srclen; i++) {
@@ -148,7 +148,7 @@ void GrpObj::GetSrcGeom(int& width, int&
 				if (width < src_pos.back().width()) width = src_pos.back().width();
 				if (height < src_pos.back().height()) height = src_pos.back().height();
 			}
-		} else { // 画像ファイルから大きさ取得
+		} else { // 糸<ゃ紊с緇
 			width = read_little_endian_short(data+1);
 			height = read_little_endian_short(data+3);
 			src_pos.push_back(Rect(0,0,width,height));
@@ -213,7 +213,7 @@ void GrpObj::CreateSurface(PicContainer*
 		delete p;
 	}
 	src_pos.clear();
-	// picture を作成
+	// picture 篏
 	pic_parent = parent;
 	picture = parent->create_leaf(Rect(_posx,_posy,_posx+1,_posy+1), 0);
 	picture->hide();
@@ -225,14 +225,14 @@ void GrpObj::UpdateSurface(void) {
 	int width = 0, height = 0;
 	if (gtype == FILE || gtype == GAN) {
 		if (name.length() == 0) return;
-		// ファイル名が存在する場合、ファイルを読み込み
+		// <ゃ絖翫<ゃ茯粋昭
 		GetSrcGeom(width, height);
 		if (width <= 0 || height <= 0) return;
-		// surface の設定
+		// surface 荐絎
 		if (surface_num == 0 && ( (zoom > 0 && zoom != 256) || rotate > 0)) {
 			ZoomRotate();
 		} else {
-			// 普通に surface を設定
+			//  surface 荐絎
 			string path(name);
 			path += ".g00";
 			picture->SetSurface(path.c_str(), 0, 0);
@@ -240,10 +240,10 @@ void GrpObj::UpdateSurface(void) {
 		}
 		if (attr & BLIT_ADD)
 			picture->SetSurfaceAttribute(PicBase::BLIT_ADD);
-	} else if (gtype == MOJI) { // テキスト描画
+	} else if (gtype == MOJI) { // 鴻
 		if (print_moji.length() == 0) return;
 		UpdateMoji();
-	} else if (gtype == DIGIT) { // 数値を画像表示
+	} else if (gtype == DIGIT) { // 医ゃ糸頫腓
 		UpdateDigit();
 	}
 }
@@ -251,7 +251,7 @@ void GrpObj::UpdateSurface(void) {
 void GrpObj::ZoomRotate(void) {
 	picture->SetSurface( (Surface*)0, 0, 0);
 
-	// 回転、縮小拡大は座標原点が画像の中心になる
+	// 荵≪膰絨≦ぇ綺ф鴻糸筝綽
 	string path(name);
 	path += ".g00";
 	Surface* surface_orig = pic_parent->Root().NewSurface(path.c_str());
@@ -262,20 +262,20 @@ void GrpObj::ZoomRotate(void) {
 	picture->SetSurface(zoom_surface, 0, 0);
 	picture->SetSurfaceFreeFlag();
 	//picture->Move(PosX() + - zoom_r.width()/2, PosY() + - zoom_r.height()/2);
-// 中心座標がわからん・・・
+// 筝綽綺ф祉祉
 	picture->Move(320 - zoom_r.width()/2, 240 - zoom_r.height()/2);
 	picture->SetSurfaceRect(Rect(0, 0, zoom_r.width(), zoom_r.height()));
 
 	pic_parent->Root().DeleteSurface(surface_orig);
 }
 
-void GrpObj::UpdateMoji(void) { // 文字の大きさ、色などを変更
+void GrpObj::UpdateMoji(void) { // 絖紊с蚊紊
 	if (print_moji.length() == 0 || print_size <= 2) return;
 	if (pic_parent == 0) return;
-	/* テキストの大きさを得る */
+	/* 鴻紊с緇 */
 	int r, g, b;
-	if (print_r == -1 || print_g == -1 || print_b == -1) {// 色設定なし
-		r = g = b = 0;  // とりあえず黒(clannad のSave/Loadメニュー用)
+	if (print_r == -1 || print_g == -1 || print_b == -1) {// 画┃絎
+		r = g = b = 0;  // 藥(clannad Save/Load<ャ主)
 	} else {
 		r = print_r;
 		g = print_g;
@@ -284,8 +284,8 @@ void GrpObj::UpdateMoji(void) { // 文字の大きさ、色などを変更
 	TextStream ts = TextStream::ParseMoji(print_moji.c_str(), r, g, b, print_size);
 	TextGlyphStream gs;
 	vector<int> lh;
-	// とりあえず drawable width は充分に大きく(2048)取る
-	DefaultLayout(print_size-2)->Layout(ts, gs, lh, 2048); // print_size そのままだと弱干大きすぎるので -2
+	//  drawable width 紊с(2048)
+	DefaultLayout(print_size-2)->Layout(ts, gs, lh, 2048); // print_size 障障綣怨慌紊с -2
 	int width = gs.width();
 	int height = gs.height();
 	Surface* surface = pic_parent->Root().NewSurface(width, height, ALPHA_MASK);
@@ -297,9 +297,9 @@ void GrpObj::UpdateMoji(void) { // 文字の大きさ、色などを変更
 }
 
 void GrpObj::UpdateDigit(void) {
-	// 画像表示の数値文字列を表示する
+	// 糸頫腓冴医ゆ絖茵腓冴
 	if (name.length() == 0) return;
-	// ファイル名が存在する場合、ファイルを読み込み
+	// <ゃ絖翫<ゃ茯粋昭
 	string path(name);
 	path += ".g00";
 	Surface* surface_orig = pic_parent->Root().NewSurface(path.c_str());
@@ -310,14 +310,14 @@ void GrpObj::UpdateDigit(void) {
 	GetSrcGeom(width, height);
 	if (width <= 0 || height <= 0) return;
 	if (src_pos.size() < 14) {
-		// 必要な数の object がない
-		// 表示できない分の空の rect を追加しておく
+		// 綽荀違 object 
+		// 茵腓冴с腥冴 rect 菴遵
 		for (i=src_pos.size(); i<14; i++)
 			src_pos.push_back(Rect(0,0,0,0));
 		pic_parent->Root().DeleteSurface(surface_orig);
 		return;
 	}
-	// 桁数の計算
+	// 罅違荐膊
 	char num_str[20];
 	if (dig_number < 0) sprintf(num_str, "%d", -dig_number);
 	else sprintf(num_str, "%d", dig_number);
@@ -333,9 +333,9 @@ void GrpObj::UpdateDigit(void) {
 	Surface* surface = pic_parent->Root().NewSurface(width*total_count, height, ALPHA_MASK);
 	DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0);
 
-	/* surface にコピーする */
+	/* surface 潟若 */
 	int cur_x = 0;
-	if ( (attr & DIG_PACK) && !(attr & DIG_ZERO)) { // 始めに空白を挿入
+	if ( (attr & DIG_PACK) && !(attr & DIG_ZERO)) { // 紮腥榊純水
 		cur_x += space_count * width;
 	}
 	int plus = 10, minus = 11, plusminus = 12;
@@ -349,12 +349,12 @@ void GrpObj::UpdateDigit(void) {
 			DSurfaceMove(surface, src_pos[plus], surface, Rect(cur_x,0));
 		cur_x += width;
 	}
-	if (attr & DIG_ZERO) { // ゼロ・パディング
+	if (attr & DIG_ZERO) { // 若祉c潟
 		for (i=0; i<space_count; i++) {
 			DSurfaceMove(surface, src_pos[0], surface, Rect(cur_x, 0));
 			cur_x += width;;
 		}
-	} else if (!(attr & DIG_PACK)) { // PACK オプションなし
+	} else if (!(attr & DIG_PACK)) { // PACK 激с潟
 		cur_x += space_count * width;
 	}
 	for (i=0; num_str[i] != 0; i++) {
@@ -362,7 +362,7 @@ void GrpObj::UpdateDigit(void) {
 		cur_x += width;
 	}
 	
-	/* picture に設定 */
+	/* picture 荐絎 */
 	picture->SetSurface(surface, 0, 0);
 	picture->SetSurfaceRect(Rect(0,0,width*total_count,height));
 	picture->SetSurfaceFreeFlag();
@@ -381,7 +381,7 @@ void GrpObj::CreateGan(Event::Container&
 		anm = NULL;
 	}
 	if (gan_name.empty()) return;
-	/* アニーメション情報 (.GAN ファイル)を求める */
+	/* ≪若<激с恰 (.GAN <ゃ)羆 */
 	string path(gan_name);
 	path += ".gan";
 	ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::GAN, path.c_str(), "gan");
@@ -399,21 +399,21 @@ void GrpObj::CreateGan(Event::Container&
 	attr = Attribute(attr | UPDATE_POS);
 
 	const char* buf = data + 16;
-	buf += strlen(buf) + 1; // 画像ファイル名が入っている
-	buf += 4; // 定数 20000
-	int pics = read_little_endian_int(buf); buf += 4; // 複数のアニメーション情報が入っている場合、情報数 
-	// 以下、pics 回繰り返し
-	// アニメーションを行う実体を作成
+	buf += strlen(buf) + 1; // 糸<ゃャc
+	buf += 4; // 絎 20000
+	int pics = read_little_endian_int(buf); buf += 4; // 茲違≪<若激с恰宴ャc翫掩 
+	// 篁ヤpics 膵違菴
+	// ≪<若激с潟茵絎篏篏
 	AnmAlphaMove* wid = new AnmAlphaMove(event, picture);
 
-	if (event_number && event_number < pics) { // 複数のアニメーション情報がある場合、先の情報を読み飛ばす */
+	if (event_number && event_number < pics) { // 茲違≪<若激с恰宴翫宴茯翠違 */
 		int i; for (i=0; i<event_number; i++) {
-			buf += 4; // 定数 30000
+			buf += 4; // 絎 30000
 			int ptns = read_little_endian_int(buf); buf += 4;
 			buf += ptns*52;
 		}
 	}
-	buf += 4; // 定数 30000
+	buf += 4; // 絎 30000
 	int ptns = read_little_endian_int(buf); buf += 4;
 	int total_time = 0;
 	int i;
@@ -425,7 +425,7 @@ void GrpObj::CreateGan(Event::Container&
 		int a = read_little_endian_int(buf+i*52+4*8+4);
 		x += PosX();
 		y += PosY();
-		if (p == -1) { a = 0; p = 0; } // p == -1 ならなにも表示しない
+		if (p == -1) { a = 0; p = 0; } // p == -1 茵腓冴
 		if (p >= src_pos.size()) {
 			fprintf(stderr,"Reading GAN file %s (G00 %s) : not enough pictures in .G00 file\n", path.c_str(), name.c_str());
 			a = 0; p = 0;
@@ -433,7 +433,7 @@ void GrpObj::CreateGan(Event::Container&
 		total_time += t;
 		wid->ptns.push_back(AnmAlphaMove::Ptn(Rect(x,y), src_pos[p], a, total_time));
 	}
-	wid->SetPtn(); // パターン登録終了
+	wid->SetPtn(); // 帥若括脂牙篋
 	attr = Attribute(attr | ANM_PLAYSTART);
 	anm = wid;
 }
@@ -449,16 +449,16 @@ void GrpObj::CreateGanSpecial(Event::Con
 		anm = NULL;
 	}
 
-	// アニメーションを行う実体を作成
+	// ≪<若激с潟茵絎篏篏
 	AnmAlphaMove* wid = new AnmAlphaMove(event, picture);
 
 	int i;
 	switch(event_number) {
-		case 0: // pattern を 0 から最後まで変化させる
+		case 0: // pattern  0 緇障у
 			for (i=0; i<src_pos.size(); i++) {
 				wid->ptns.push_back(AnmAlphaMove::Ptn(Rect(PosX(), PosY()), src_pos[i], 255, time*i));
 			}
-			wid->SetPtn(); // パターン登録終了
+			wid->SetPtn(); // 帥若括脂牙篋
 			anm = wid;
 			attr = Attribute(attr | ANM_PLAYSTART);
 			break;
@@ -470,7 +470,7 @@ void GrpObj::CreateGanSpecial(Event::Con
 void GrpObj::SetZoomRotate(int new_zoom, int new_rotate) {
 	if (zoom == new_zoom && rotate == new_rotate) return;
 	if ( zoom == -1 || new_zoom == -1) {
-		attr = Attribute(attr | UPDATE_POS); // centering する
+		attr = Attribute(attr | UPDATE_POS); // centering 
 	}
 	zoom = new_zoom;
 	if (new_rotate != -1) rotate = new_rotate;
@@ -535,7 +535,7 @@ void GrpObj::_debug_Dump(int id, int ind
 **
 **	class ScnGrp*
 */
-/* Princess Bride: 背景画の一部のみ移動、の実装 */
+/* Princess Bride: 祉筝睡Щ絎茖 */
 
 ScnGrpMove::ScnGrpMove(Event::Container& container, PicBase* _pic, PicRoot& _root, Surface* _dest, const Rect& _dest_r, Surface* _src, const Rect& _from, const Rect& _to, int total_time) :
 	WidAnmTime(container, _pic, total_time),
@@ -563,7 +563,7 @@ void ScnGrpMove::Exec(int count) {
 }
 
 void ScnGrpAnm::CalcTotal(void) {
-	/* total time を計算 */
+	/* total time 荐膊 */
 	if (empty()) return;
 	int tm = 0;
 	vector<ScnGrpAnmAtom>::iterator it;
@@ -883,13 +883,13 @@ Grp::~Grp() {
 
 Surface* Grp::Dsurface(int pdt) {
 	if (pdt == 0) return surface;
-	if (dsurface[pdt] == 0) { // とりあえず画面の大きさということにする
+	if (dsurface[pdt] == 0) { // 脂≪紊с
 		if (pdt == WORKPDT)
 			dsurface[pdt] = parent.Root().NewSurface(parent.Width(), parent.Height(), ALPHA_MASK);
 		else
 			dsurface[pdt] = parent.Root().NewSurface(parent.Width(), parent.Height(), NO_MASK);
 	}
-	if (ssurface[pdt]) { // ssurface が存在すれば、dsurface にコピーして返す
+	if (ssurface[pdt]) { // ssurface 絖違dsurface 潟若菴
 		DSurfaceMove(ssurface[pdt], Rect(*ssurface[pdt]), dsurface[pdt], Rect(0,0));
 		parent.Root().DeleteSurface(ssurface[pdt]);
 		ssurface[pdt] = 0;
@@ -943,7 +943,7 @@ void Grp::LoadSurface(const char* str, i
 		if (ssurface[pdt]) parent.Root().DeleteSurface(ssurface[pdt]);
 		ssurface[pdt] = bg;
 		if (pdt == 0) {
-			/* とりあえず Princess Bride のアニメーション効果専用 */
+			/*  Princess Bride ≪<若激с喝号絨 */
 			Rect r(*ssurface[0]);
 			Rect dr(*surface);
 			int x = (dr.width()-r.width())/2;
@@ -1046,14 +1046,14 @@ void Grp::StartAnm(int type) {
 		anm1 = NULL;
 	}
 	map<int,GrpObj>::iterator it;
-	// 現在表示中のobjectを消去
+	// 憜茵腓坂賢object羔サ
 	deleted_pic.push_back(screen);
 	for (it=grpobj.begin(); it!=grpobj.end(); it++) {
-		if (! (it->second.attr & GrpObj::WIPEON)) { // 画像切り替え時に object 削除
+		if (! (it->second.attr & GrpObj::WIPEON)) { // 糸帥 object 
 			deleted_pic.push_back(it->second.DeletePic());
 		} else {
 			GrpObj& new_obj = bs_obj[it->first];
-			if (new_obj.name.empty()) { // 新しい object が存在しなければ内容を引き継ぐ
+			if (new_obj.name.empty()) { // 違 object 絖医絎鴻綣膓
 				new_obj = it->second;
 				it->second.DeletePic();
 			} else {
@@ -1062,10 +1062,10 @@ void Grp::StartAnm(int type) {
 			}
 		}
 	}
-	grpobj.clear(); // 全オブジェクト削除
+	grpobj.clear(); // 吾с
 
-	// 全画像オブジェクトの前にscreen 移動
-	// 新しい screen_front を作成しておく
+	// 糸吾сscreen 腱糸
+	// 違 screen_front 篏
 	screen = screen_front;
 	screen->hide();
 	screen->SetSurface(surface_update, 0, 0);
@@ -1075,8 +1075,8 @@ void Grp::StartAnm(int type) {
 	screen_front->hide();
 	screen_front->ZMove(screen);
 	
-	// 新しい object へ更新、surface_update へ新しい object を表示
-	// (object 作成時は picture は hide されている)
+	// 違 object 御贋違surface_update 御違 object 茵腓
+	// (object 篏 picture  hide )
 	for (it=bs_obj.begin(); it!=bs_obj.end(); it++) {
 		grpobj[it->first] = it->second;
 		it->second.DeletePic();
@@ -1090,10 +1090,10 @@ void Grp::StartAnm(int type) {
 		}
 	}
 	bs_obj.clear();
-	// 画像効果開始
+	// 糸号紮
 	switch(sel.sel_no) {
 		default:
-		case 0: case 50: // 0 と 50 の違いが良くわからない
+		case 0: case 50: // 0  50 
 			if (skip_mode & SKIP_GRP_NOEFFEC)
 				anm1 = new WidAnmAlpha(event, screen, ALPHA_MAX, ALPHA_MAX, 0);
 			else if (skip_mode & SKIP_GRP_FAST)
@@ -1114,7 +1114,7 @@ void Grp::StartShake(int total, const in
 		anm2 = NULL;
 	}
 	if (skip_mode & SKIP_GRP_NOEFFEC) return;
-	AnmAlphaMove* new_anm = new AnmAlphaMove(event, &parent); // shake screen では元画面の座標を揺らす
+	AnmAlphaMove* new_anm = new AnmAlphaMove(event, &parent); // shake screen с脂≪綺ф寚
 	int i;
 	int tm = 0;
 	for (i=0; i<total; i+=3) {
@@ -1124,7 +1124,7 @@ void Grp::StartShake(int total, const in
 		tm += pattern[i+2];
 	}
 	new_anm->ptns.push_back(AnmAlphaMove::Ptn(Rect(0,0), Rect(0,0), 255, tm));
-	new_anm->SetPtn(); // パターン登録終了
+	new_anm->SetPtn(); // 帥若括脂牙篋
 	new_anm->Play();
 	anm2 = new_anm;
 }
@@ -1134,35 +1134,35 @@ void Grp::AbortAnm(void) {
 	anm1->Abort();
 	delete anm1;
 	anm1 = NULL;
-	/* 画像効果終了 */
-	/* 古い画面への画像効果があれば消去 */
+	/* 糸号腟篋 */
+	/* ゃ脂≪吾糸号井サ */
 	if (anm2 && anm2->pic[0] != screen) {
 		anm2->Abort();
 		delete anm2;
 		anm2 = NULL;
 	}
-	/* pdt1 -> pdt0 へコピー */
+	/* pdt1 -> pdt0 吾潟 */
 	DSurfaceMove(dsurface[1], Rect(*dsurface[1]), surface, Rect(0,0));
 	screen->SetSurface(surface, 0, 0);
-	// 画像効果開始時に存在したobjectを消去
-	// 新しい object 表示
+	// 糸号紮絖object羔サ
+	// 違 object 茵腓
 	RefreshObj();
 	return;
 }
 
 void Grp::LoadSurface(const char* str) {
-	if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了
+	if (anm1 != NULL) AbortAnm(); // 祉腟c医七句篋
 	LoadSurface(str, 1);
 	bg_name = str;
 }
 
 void Grp::LoadSurface(void) {
-	if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了
+	if (anm1 != NULL) AbortAnm(); // 祉腟c医七句篋
 	LoadSurface(bg_name.c_str(), 1);
 }
 
 void Grp::AddSurface(const char* str) {
-	if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了
+	if (anm1 != NULL) AbortAnm(); // 祉腟c医七句篋
 	LoadSurface(bg_name.c_str());
 
 	string s = str;
@@ -1185,7 +1185,7 @@ void Grp::CreateObj(int index) {
 	GrpObj& g = grpobj[index];
 	g.CreateSurface(&parent);
 	g.order = index;
-	if (g.picture == NULL) return; // エラー:surface が存在しない
+	if (g.picture == NULL) return; // 種surface 絖
 	g.picture->hide();
 	SetObjChanged(index);
 	ZMoveObj(index);
@@ -1200,7 +1200,7 @@ void Grp::CreateSubObj(int grp_index, in
 	g = &g->children_obj[index];
 	g->CreateSurface(&parent);
 	g->order = index;
-	if (g->picture == NULL) return; // エラー:surface が存在しない
+	if (g->picture == NULL) return; // 種surface 絖
 	g->picture->hide();
 	//TODO
 	SetObjChanged(grp_index);
@@ -1212,8 +1212,8 @@ void Grp::ZMoveObj(int index) {
 	if (cur == grpobj.end()) return;
 	GrpObj& g = grpobj[index];
 	if (g.picture == NULL) return;
-	// 自分より前に object があれば、その前に表示
-	// そうでなければ screen の前に表示
+	//  object 違茵腓
+	// с screen 茵腓
 	GrpObjMap::iterator cur_backobj = grpobj.end();
 	GrpObjMap::iterator it;
 	for (it = grpobj.begin(); it != grpobj.end(); it++) {
@@ -1235,10 +1235,10 @@ void Grp::ZMoveObj(int index) {
 }
 
 void Grp::SwapObj(int index1, int index2) {
-	// デフォルト値から order が変更されていた場合のみ、order は保存される
-	// まずは両方のobjectをswap
+	// ゃ order 紊眼翫帥order 篆絖
+	// 障筝≧鴻objectswap
 	if (grpobj.find(index1) == grpobj.end()) {
-		if (grpobj.find(index2) == grpobj.end()) return; // どちらの object も存在しない
+		if (grpobj.find(index2) == grpobj.end()) return; // < object 絖
 		grpobj[index1] = grpobj[index2];
 		if (grpobj[index1].order == index2)
 			grpobj[index1].order = index1;
@@ -1246,7 +1246,7 @@ void Grp::SwapObj(int index1, int index2
 		grpobj.erase(index2);
 		ZMoveObj(index1);
 		return;
-	} else if (grpobj.find(index2) == grpobj.end()) { // index2 が存在しない場合
+	} else if (grpobj.find(index2) == grpobj.end()) { // index2 絖翫
 		grpobj[index2] = grpobj[index1];
 		if (grpobj[index2].order == index1)
 			grpobj[index2].order = index2;
@@ -1269,7 +1269,7 @@ void Grp::SwapObj(int index1, int index2
 	}
 }
 
-bool Grp::Pressed(int x, int y, void* pointer) { // マウスクリックでキャンセル
+bool Grp::Pressed(int x, int y, void* pointer) { // 鴻сc潟祉
 	Grp* g = (Grp*)pointer;
 	if (g->status == WAIT_MOVIE)
 		g->music->StopMovie();
@@ -1283,7 +1283,7 @@ bool Grp::Pressed(int x, int y, void* pointer) { // マウスクリックでキャンセル
 	return false; // event deleted
 }
 
-/* mode.cgm の decode 用 */
+/* mode.cgm  decode  */
 static unsigned char decode_char[256] = {
 	0x8b, 0xe5, 0x5d, 0xc3, 0xa1, 0xe0, 0x30, 0x44, 
 	0x00, 0x85, 0xc0, 0x74, 0x09, 0x5f, 0x5e, 0x33, 
@@ -1320,7 +1320,7 @@ static unsigned char decode_char[256] = 
 };
 
 void Grp::LoadCgm() {
-	/* cgm ファイル読み込み */
+	/* cgm <ゃ茯粋昭 */
 	const char* fname = config->GetParaStr("#CGTABLE_FILE");
 	if (fname == NULL) return;
 	ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::ALL, fname, "");
@@ -1337,11 +1337,11 @@ void Grp::LoadCgm() {
 	cgm_size = read_little_endian_int(data+0x10);
 
 	int i, j;
-	// xor 解除
+	// xor 茹i
 	for (i=0; i < sz-0x20; i++) {
 		data[i+0x20]^=decode_char[i&0xff];
 	}
-	// 展開
+	// 絮
 	int dest_size = cgm_size * 36;
 	char* dest = new char[dest_size+1024];
 	char* src = data + 0x28;
@@ -1359,7 +1359,7 @@ void Grp::LoadCgm() {
 
 /*****************************************************
 *
-*   Grp :: Save, Load : セーブファイル処理
+*   Grp :: Save, Load : 祉若<ゃ
 *
 */
 void Grp::Save(std::string& str) {
@@ -1426,7 +1426,7 @@ void Grp::LoadSys(const char* save) {
 
 /*****************************************************
 *
-*   Grp :: Wait , Exec : コマンド実行部
+*   Grp :: Wait , Exec : 潟潟絎茵
 *
 */
 static vector<int> drawn_images;
@@ -1509,7 +1509,7 @@ bool Grp::Wait(unsigned int current_time
 	return false;
 }
 
-void Grp::DeleteObjPic(int num) { // object の surface のみ削除
+void Grp::DeleteObjPic(int num) { // object  surface 水
 	if (grpobj.find(num) == grpobj.end()) return;
 	deleted_pic.push_back(grpobj[num].DeletePic());
 }
@@ -1539,12 +1539,12 @@ void Grp::DeleteSubObj(int num_grp, int 
 
 void Grp::Exec(Cmd& cmd) {
 	if (cmd.cmd_type == CMD_TEXTEND) {
-		music->StopKoe(500); // テキスト終了で声を止める
+		music->StopKoe(500); // 鴻腟篋у0罩≪
 		cmd.clear();
 		return;
 	}
 	if (cmd.cmd_type == CMD_WAITFRAMEUPDATE) {
-		// wait する場合は RefreshObj() しておく
+		// wait 翫 RefreshObj() 
 		RefreshObj();
 	}
 	if (cmd.cmd_type != CMD_OTHER) return;
@@ -1552,8 +1552,8 @@ void Grp::Exec(Cmd& cmd) {
 	CommandHandler::Exec(cmd);
 
 	//TODO: ???
-	if (cmd.cmd1 == 1 && cmd.cmd2 == 60 && cmd.cmd3 == 0) { // ??? : KANOGI : 画像オブジェクトの削除?
-		DeleteObjPic(cmd.args[0].value); // 旧ファイル名のsurfaceを削除
+	if (cmd.cmd1 == 1 && cmd.cmd2 == 60 && cmd.cmd3 == 0) { // ??? : KANOGI : 糸吾сわ
+		DeleteObjPic(cmd.args[0].value); // с<ゃsurface
 		GrpObj& g = grpobj[cmd.args[0].value];
 		g.attr = GrpObj::Attribute(g.attr | GrpObj::HIDDEN);
 		cmd.clear();
--- a/scn2k/scn2k_impl.cc
+++ b/scn2k/scn2k_impl.cc
@@ -76,7 +76,7 @@ Scn2k::Scn2k(Event::Container& _event, P
 	menu = NULL;
 	menu_mouseshown = false;
 
-	/* マウスカーソルを作成 */
+	/* 鴻若純篏 */
 	mouse_type = 0;
 	mouse_surface = NULL;
 	mouse_pressed = 0;
@@ -107,7 +107,7 @@ char* Scn2k::OpenScript(int new_scn_numb
 	if (info == NULL) goto err;
 	data = info->Read();
 
-	/* version 確認 */
+	/* version 腆肴 */
 	scenario_magic = read_little_endian_int(data + 4);
 	if (scenario_magic != 0x2712 && scenario_magic != 0x1adb2) {
 		fprintf(stderr,"Invalid scenario header : scenario number %d\n",new_scn_number);
@@ -123,7 +123,7 @@ char* Scn2k::OpenScript(int new_scn_numb
 		fprintf(stderr,"Invalid scenario header : scenario number %d\n",new_scn_number);
 		goto err;
 	}
-	/* header から subroutine number とりだし */
+	/* header  subroutine number  */
 	if (call_vec) {
 		int i;
 		for (i=0; i<100; i++) {
@@ -170,7 +170,7 @@ bool Scn2k::ChangeScript(int new_scn_num
 			scn_pt = 0;
 		}
 	} else if (call_no < 0) {
-		scn_pt = -call_no; // デバッグ用
+		scn_pt = -call_no; // 亥
 	}
 
 	scn_number = new_scn_number;
@@ -205,21 +205,21 @@ bool Scn2k::ReadCmdAt(Cmd& cmd, int scn,
 	return true;
 }
 
-extern bool save_req, load_req; // キーボードからセーブ・ロードできるように
+extern bool save_req, load_req; // 若若祉若祉若с
 extern bool pressAreq;
 
 void Scn2k::Elapsed(unsigned int current_time) {
-	SetWakeup(current_time + 10); // 10msに一回シナリオスクリプト解釈
+	SetWakeup(current_time + 10); // 10ms筝激鴻茹i
 	if (script == NULL) return;
-//VarInfo info; info.type = 6; info.number = 0; // PB の「一回ゲームを開始したことがある」フラグ
+//VarInfo info; info.type = 6; info.number = 0; // PB 筝蚊若紮
 //flag.Set(info,1);
-//info.type = 0; info.number = 604; // Princess Bride: クリア対象設定フラグ (聖)
+//info.type = 0; info.number = 604; // Princess Bride: √乗院荐絎 ()
 //flag.Set(info, 1); 
 
 
 	Cmd cmd(flag, system_version);
 	int cnt1;
-	int cnt2 = 1000; // flag / jump / flag 系コマンドの最大実行回数
+	int cnt2 = 1000; // flag / jump / flag 膤祉潟潟紊у茵
 
 	/* XXX */
 	if (save_req) {
@@ -237,12 +237,12 @@ void Scn2k::Elapsed(unsigned int current
 		return;
 	}
 
-	/* キー入力などに対応 */
-	// メニュー内以外で shift キーが押されたらスキップ開始
+	/* 弱ュ絲上 */
+	// <ャ弱篁ュ shift 若若鴻紮
 	if ( (skip_mode&SKIP_IN_MENU) == 0) {
 		if (event.pressed(KEY_SHIFT)) {
 			if (skip_mode & SKIP_TEXT) {
-				; // スキップ中ならなにもしない
+				; // 鴻筝
 			} else {
 				SetSkipMode(SkipMode(SKIP_TEXT | SKIP_GRP_NOEFFEC | SKIPEND_KEY));
 			}
@@ -261,8 +261,8 @@ void Scn2k::Elapsed(unsigned int current
 		}
 	}
 
-	for (cnt1=0; cnt1<20; cnt1++) { // 一回につき 20 個のコマンド実行
-		// 他のコマンド実行中なら終了
+	for (cnt1=0; cnt1<20; cnt1++) { // 筝ゃ 20 潟潟絎茵
+		// 篁潟潟絎茵筝腟篋
 		if ( (cmd.cmd_type == CMD_NOP && SysWait(cmd)) ||
 		     // (cmd.cmd_type == CMD_NOP && text_exec.Wait(current_time, cmd)) ||
 		     // (cmd.cmd_type == CMD_NOP && grp_exec.Wait(current_time, cmd))) {
@@ -270,7 +270,7 @@ void Scn2k::Elapsed(unsigned int current
 		     (cmd.cmd_type == CMD_NOP && text_exec.Wait(current_time, cmd))) {
 			break;
 		}
-		// コマンド読み込み
+		// 潟潟茯粋昭
 		for (; cnt2 > 0; cnt2--) {
 			scn_point = script - script_start;
 			eprintf("%d / %d :", script - script_start, script_end-script_start);
@@ -355,7 +355,7 @@ fprintf(stderr," -> fall back to %d\n",s
 
 		if (cmd.cmd_type == CMD_TEXT && cmd.pos != -1) {
 			set<int>& readflag = text_readflag[scn_number];
-			if (readflag.find(cmd.pos) == readflag.end()) { // 未読テキスト発見
+			if (readflag.find(cmd.pos) == readflag.end()) { // 茯鴻肴
 				readflag.insert(cmd.pos);
 				if (skip_mode & SKIPEND_TEXT) {
 					if (!(skip_mode & SKIPEND_KEY)) SetSkipMode(SKIP_NO);
@@ -474,10 +474,10 @@ void Scn2k::SysExec(Cmd& cmd) {
 			return;
 		}
 		if (cmd.cmd_type == CMD_BACKLOGREQ_FWD) {
-			cmd.clear(); // backlog mode 以外で fwd を押されてもなにもしない
+			cmd.clear(); // backlog mode 篁ュ fwd 若
 			return;
 		}
-		SetSkipMode(SKIP_IN_MENU); // テキストスキップ等はここで中断
+		SetSkipMode(SKIP_IN_MENU); // 鴻鴻膈т賢
 		menu = new Scn2kMenu(Scn2kMenu::MENU_BACKLOG, *this, flag, text_exec, system_version);
 		menu->InitPanel(event, parent);
 		menu->InitTitle(Scn2kSaveTitle(*this));
@@ -490,7 +490,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 		int scn=0, pt=0;
 		config->GetParam("#CANCELCALL", 2, &scn, &pt);
 		if (scn) {
-			// 右クリックされたら global call を行う
+			// 劻 global call 茵
 			cmd.cmd_type = CMD_OTHER;
 			cmd.cmd1 = 0;
 			cmd.cmd2 = 1;
@@ -499,16 +499,16 @@ void Scn2k::SysExec(Cmd& cmd) {
 			cmd.args.clear();
 			cmd.args.push_back(VarInfo(SCN_INFO_MENU));
 			cmd.args.push_back(0);
-			SetSkipMode(SKIP_IN_MENU); // テキストスキップ等はここで中断
+			SetSkipMode(SKIP_IN_MENU); // 鴻鴻膈т賢
 		}
 	}
 	if (cmd.cmd_type == CMD_SAVECMDGRP || cmd.cmd_type == CMD_SAVECMDGRP_START || cmd.cmd_type == CMD_SAVECMDGRP_ONCE || cmd.cmd_type == CMD_SAVECMD_ONCE) {
-		// 画像コマンド等はスタックに保存し、セーブ時に保存できるようにする
+		// 糸潟潟膈鴻帥篆絖祉若篆絖с
 		if (cmd.cmd_type == CMD_SAVECMDGRP_START) {
 			vector<CmdSimplified>::iterator it, cur;
 			cur = cmd_stack.begin();
 			cmd_stack_str = cmd_stack_str_orig;
-			/* 画像関連コマンド以外を別にする */
+			/* 糸∫c潟潟篁ュャ */
 			for (it=cmd_stack.begin(); it != cmd_stack.end(); it++) {
 				if (it->type != CMD_SAVECMDGRP && it->type != CMD_SAVECMDGRP_START && it->type != CMD_SAVECMDGRP_ONCE) {
 					cur->copy(*it, cmd_stack_str);
@@ -517,7 +517,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 			}
 			cmd_stack.erase(cur, cmd_stack.end());
 		}
-		if (cmd.cmd_type == CMD_SAVECMD_ONCE || cmd.cmd_type == CMD_SAVECMDGRP_ONCE) { // 同じコマンドがあれば削除する
+		if (cmd.cmd_type == CMD_SAVECMD_ONCE || cmd.cmd_type == CMD_SAVECMDGRP_ONCE) { // 潟潟医ゃ
 			vector<CmdSimplified>::iterator it;
 			for (it = cmd_stack.end(); it != cmd_stack.begin(); ) {
 				--it;
@@ -543,22 +543,22 @@ void Scn2k::SysExec(Cmd& cmd) {
 		    int call_no = 0;
 		    if (cmd.args.size() >= 2) call_no = cmd.args[1].value;
 			eprintf("global jump to %d\n",cmd.args[0].value);
-			if (! ChangeScript(cmd.args[0].value, call_no)) return; // 読み込めない; abort.
+			if (! ChangeScript(cmd.args[0].value, call_no)) return; // 茯粋昭; abort.
 			cmd.clear();
-		} else if (cmd.cmd3 == 0x0c || cmd.cmd3 == 0x12) { // call (0x12 の方は微妙)
+		} else if (cmd.cmd3 == 0x0c || cmd.cmd3 == 0x12) { // call (0x12 鴻緇絋)
 			int new_scn = cmd.args[0].value;
 			int new_pt = 0;
-			if (cmd.args.size() >= 2) { // subroutine number が付く
-					// 引数が付くのもあるらしい
+			if (cmd.args.size() >= 2) { // subroutine number 篁
+					// 綣違篁
 				new_pt = cmd.args[1].value;
 			}
 			if (new_scn == SCN_INFO_MENU) { // menu call
 				config->GetParam("#CANCELCALL", 2, &new_scn, &new_pt);
-				stack.push_back(StackItem(SCN_INFO, SCN_INFO_MENU)); // menu call を示す特殊な記号
+				stack.push_back(StackItem(SCN_INFO, SCN_INFO_MENU)); // menu call 腓冴号荐
 			} else {
 				int i;
 				VarInfo var;
-				// ローカル変数を伴う subroutine call
+				// 若紊違篌眼 subroutine call
 				var.type = 11;
 				var.number = 0;
 				int saved_vars = 0;
@@ -583,7 +583,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 					
 				var.type = 11;
 				var.number = 0;
-				// 特殊な subroutine call なので、余計な情報を引数に渡す
+				// 号 subroutine call с篏荐宴綣違羝<
 				for (i=2; i<cmd.args.size(); i++) {
 					flag.Set(var, cmd.args[i].value);
 // fprintf(stderr,"<%d:%d>=%d;",var.type,var.number,cmd.args[i].value);
@@ -595,20 +595,20 @@ void Scn2k::SysExec(Cmd& cmd) {
 			stack.push_back(StackItem(scn_number, scn_pt));
 // fprintf(stderr,"\nglobal call %d:%d from %d:%d\n",new_scn,new_pt,scn_number,scn_pt);
 			eprintf("global call to %d, %d\n",new_scn, new_pt);
-			if (! ChangeScript(new_scn, new_pt)) return; // 読み込めない; abort.
+			if (! ChangeScript(new_scn, new_pt)) return; // 茯粋昭; abort.
 			cmd.clear();
-		} else if (cmd.cmd3 == 0x65) { // 文字列の返り値をセットする
+		} else if (cmd.cmd3 == 0x65) { // 絖菴ゃ祉
 			int arg1 = cmd.args[0].value;
 			string s = cmd.Str(cmd.args[1]);
 			int sp = stack_strbuffer.size();
 			stack.push_back(StackItem(SCN_INFO_RETSTR+arg1, sp));
 			stack_strbuffer.push_back(s);
 			cmd.clear();
-		} else if (cmd.cmd3 == 0x0d || cmd.cmd3 == 0x0a || cmd.cmd3 == 0x11 || cmd.cmd3 == 0x13) { // return (0a: local return) (0x13はよくわからない)
+		} else if (cmd.cmd3 == 0x0d || cmd.cmd3 == 0x0a || cmd.cmd3 == 0x11 || cmd.cmd3 == 0x13) { // return (0a: local return) (0x13)
 // fprintf(stderr,"global return : stack size %d\n",stack.size());
 			if (stack.empty()) {
 				cmd.clear();
-				return; // スタックがおかしい:abort
+				return; // 鴻帥鐚abort
 			}
 			map<int, string> retstr;
 			while( (!stack.empty()) && stack.back().scn_number >= SCN_INFO_RETSTR) {
@@ -621,7 +621,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 			}
 			if (stack.empty()) {
 				cmd.clear();
-				return; // スタックがおかしい:abort
+				return; // 鴻帥鐚abort
 			}
 			StackItem s = stack.back();
 			stack.pop_back();
@@ -631,12 +631,12 @@ void Scn2k::SysExec(Cmd& cmd) {
 				stack.pop_back();
 				if (mode == SCN_INFO_MENU) {
 // fprintf(stderr,"\nInfo Menu;");
-					// menu モード終了
+					// menu ≪若腟篋
 					SetSkipMode(SkipMode(skip_mode & (~SKIP_IN_MENU) ));
 				} else if (mode >= SCN_INFO_LOCALS && mode <= SCN_INFO_LOCALS+50) {
 // fprintf(stderr,"\nInfo Local;");
 					int i;
-					// ローカル変数を元に戻す
+					// 若紊違祉
 					VarInfo var;
 					var.type = 11;
 					var.number = 0;
@@ -675,7 +675,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 			}
 			if (cmd.cmd3 == 0x11 || cmd.cmd3 == 0x13) {
 // fprintf(stderr,"\nSet RetLocal;");
-				// 返り値をセットする
+				// 菴ゃ祉
 				map<int,string>::iterator it;
 				VarInfo var;
 				var.type = TYPE_VARLOCSTR;
@@ -698,7 +698,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 // fprintf(stderr,"global return : return to %d:%d\n",s.scn_number,s.scn_pt);
 // fprintf(stderr,"\nglobal return %d:%d from %d:%d\n",s.scn_number,s.scn_pt,scn_number, script - script_start);
 			if (s.scn_number != -1) {
-				if (! ChangeScript(s.scn_number, 0)) return; // 読み込めない; abort.
+				if (! ChangeScript(s.scn_number, 0)) return; // 茯粋昭; abort.
 			}
 			script = script_start + s.scn_pt;
 			cmd.clear();
@@ -710,15 +710,15 @@ void Scn2k::SysExec(Cmd& cmd) {
 			DllCall_LB(cmd, flag);
 			cmd.clear();
 		}
-	} else if (cmd.cmd1 == 0 && cmd.cmd2 == 0x04) { // メニューモード
+	} else if (cmd.cmd1 == 0 && cmd.cmd2 == 0x04) { // <ャ若≪若
 		if (cmd.cmd3 == 300 || cmd.cmd3 == 301 || cmd.cmd3 == 302) {
-			// メニューからのreturn
+			// <ャ若return
 			cmd.cmd2 = 1;
 			cmd.cmd3 = 0x0d;
 			SysExec(cmd);
 		}
 	} else if (cmd.cmd1 == 1 && cmd.cmd2 == 0x04) {
-		if (cmd.cmd3 == 0 && cmd.cmd4 == 0) { // タイトル名設定
+		if (cmd.cmd3 == 0 && cmd.cmd4 == 0) { // 帥ゃ荐絎
 			const char* name = cmd.Str(cmd.args[0]);
 			if (name == NULL) name = "";
 			window_title = name;
@@ -728,7 +728,7 @@ void Scn2k::SysExec(Cmd& cmd) {
 			parent.Root().SetWindowCaption(setname.c_str());
 			cmd.clear();
 		} else if (cmd.cmd3 == 0x82 && cmd.cmd4 == 0) {
-			/* cmd.cmd3 == 0x82 : マウスの press 状態クリアかも */
+			/* cmd.cmd3 == 0x82 : 鴻 press 倶≪ */
 			event.presscount(MOUSE_LEFT);
 			event.presscount(MOUSE_RIGHT);
 			cmd.clear();
@@ -750,25 +750,25 @@ void Scn2k::SysExec(Cmd& cmd) {
 			flag.Set(cmd.args[3], right);
 			cmd.clear();
 		} else if (cmd.cmd3 == 0x15e || cmd.cmd3 == 0x161 || cmd.cmd3 == 0x162 || cmd.cmd3 == 0x14c || cmd.cmd3 == 0x7d1) {
-/* 15e, 161, 162, 14c, 7d1 : なんらかのシステム情報を返す(skip modeなど?) */
-/* 7d1: == 1 || 14c: == 1 || (15e==1&&161==1&&162==0) || (press_val == 2) : スキップ中? タイトル画面のアニメーション終了 */
+/* 15e, 161, 162, 14c, 7d1 : 激鴻宴菴鐚skip mode鐚鐚 */
+/* 7d1: == 1 || 14c: == 1 || (15e==1&&161==1&&162==0) || (press_val == 2) : 鴻筝鐚 帥ゃ脂≪≪<若激с括篋 */
 			flag.SetSys(0);
 			cmd.clear();
-		} else if (cmd.cmd3 == 0x4b0) { // 終了
+		} else if (cmd.cmd3 == 0x4b0) { // 腟篋
 			System::Main::Quit();
 			//script = NULL; script_start = NULL; script_end = NULL;
 			cmd.clear();
 			cmd.cmd_type = CMD_WAITFRAMEUPDATE;
-		} else if (cmd.cmd3 == 0x4b4 || cmd.cmd3 == 0x4b5) { // 選択肢巻き戻し
+		} else if (cmd.cmd3 == 0x4b4 || cmd.cmd3 == 0x4b5) { // 御√兄祉
 			LoadRollback(cmd);
 		} else if (cmd.cmd3 == 0x58d) {
-        		// 前にロード|セーブされた番号を返す。
+        		// 若|祉若垩菴
         	int lastsave;
         	config->GetParam("#LASTSAVE", 1, &lastsave);
         	flag.SetSys(lastsave-1);
 		} else if (cmd.cmd3 == 0x585) {
-        		// 第一引数の記録された日付、タイトルなどが返される
-        		// データがないなら sys に 0が、あるなら 1 が返る
+        		// 膃筝綣違荐蚊ヤ帥ゃ菴
+        		// 若帥 sys  0 1 菴
 			int y,m,d,wd,h,min,s,ms;
 			string title;
 fprintf(stderr,"StatSave %d:",cmd.args[0].value+1);
@@ -793,7 +793,7 @@ fprintf(stderr,"StatSave %d:",cmd.args[0
 			Save(cmd);
 		} else if (cmd.cmd3 == 0xc25) { // load
 			Load(cmd);
-		} else if (cmd.cmd3 == 0x4b1 || cmd.cmd3 == 0x4b3) { // menu へ戻る (4b3: バッドエンド)
+		} else if (cmd.cmd3 == 0x4b1 || cmd.cmd3 == 0x4b3) { // menu 御祉 (4b3: 潟)
 			int scn_start;
 			if (config->GetParam("#SEEN_MENU", 1, &scn_start) == 0) {
 				ChangeScript(scn_start, 0);
@@ -834,7 +834,7 @@ fprintf(stderr,"StatSave %d:",cmd.args[0
 #include <errno.h>
 #include <unistd.h>
 
-// セーブファイルの名前をつくる
+// 祉若<ゃゃ
 string Scn2k::MakeSaveFile(void) const {
 	struct stat sstatus;
 	string dir = "~/.xkanon";
@@ -846,7 +846,7 @@ string Scn2k::MakeSaveFile(void) const {
 			dir = new_dir;
 		}
 	}
-	// savepathにファイル名が入っていれば、それをセーブファイルとして使う
+	// savepath<ゃャc違祉若<ゃ篏帥
 	if (stat(dir.c_str(), &sstatus) == -1) {
 		if (errno != ENOENT) {
 			fprintf(stderr,"Cannot open save file; dir %s is not directory\n",dir.c_str());
@@ -860,11 +860,11 @@ string Scn2k::MakeSaveFile(void) const {
 			return dir;
 		}
 	}
-	// ファイル名を作る
+	// <ゃ篏
 	const char* regname = config->GetParaStr("#REGNAME");
 
 	char* fname = new char[strlen(regname)+1];
-	/* レジストリ名をファイル名として有効なものにする */
+	/* 吾鴻<ゃ鴻 */
 	int i; for (i=0; regname[i]!=0; i++) {
 		char c = regname[i];
 		if (c == '\\' || c == '/' || c == ':' || c <= 0x20) c = '_';
@@ -877,7 +877,7 @@ string Scn2k::MakeSaveFile(void) const {
 	return dir;
 }
 
-// セーブファイルの名前をつくる
+// 祉若<ゃゃ
 string Scn2kSaveTitle::operator() (int number) const {
 	int y,m,d,wd,h,min,sec,msec;
 	string title;
@@ -999,7 +999,7 @@ void Scn2k::LoadSys(void) {
 		delete[] savedata;
 	}
 
-	/* 初期化 */
+	/*  */
 	int scn_start; config->GetParam("#SEEN_START", 1, &scn_start);
 	ChangeScript(scn_start, 0);
 	save_scn = 0;
@@ -1032,7 +1032,7 @@ bool Scn2k::StatSaveFile(int num, int& y
 	min = t->tm_min;
 	sec = t->tm_sec;
 	msec = 0;
-	/* タイトルの取得 */
+	/* 帥ゃ緇 */
 	FILE* savefile = fopen(path.c_str(), "rb");
 	if (savefile == NULL) return false;
 	char regname[1024];
@@ -1080,7 +1080,7 @@ void Scn2k::LoadRollback(Cmd& cmd) {
 	text_exec.Load(savedata.c_str());
 	grp_exec.Load(savedata.c_str());
 
-	/* 画面の回復など */
+	/* 脂≪緇 */
 	SetSkipMode(SKIP_NO);
 	vector<CmdSimplified>::iterator it;
 	cmd.clear();
@@ -1098,7 +1098,7 @@ void Scn2k::LoadRollback(Cmd& cmd) {
 void Scn2k::Save(Cmd& cmd) {
 	if (cmd.cmd_type == CMD_SAVEREQ) {
 		if (menu == NULL) {
-			SetSkipMode(SKIP_IN_MENU); // テキストスキップ等はここで中断
+			SetSkipMode(SKIP_IN_MENU); // 鴻鴻膈т賢
 			menu = new Scn2kMenu(Scn2kMenu::MENU_SAVE, *this, flag, text_exec, system_version);
 			menu->InitPanel(event, parent);
 			menu->InitTitle(Scn2kSaveTitle(*this));
@@ -1113,7 +1113,7 @@ void Scn2k::Save(Cmd& cmd) {
 	FILE* f = NULL;
 	if (save_scn == 0) {
 		fprintf(stderr,"Cannot decide save point\n");
-		return; // セーブ位置が保存されてない
+		return; // 祉若篏臀篆絖
 	}
 	string path = MakeSaveFile();
 	int file_number = 1;
@@ -1126,7 +1126,7 @@ void Scn2k::Save(Cmd& cmd) {
 	sprintf(buf, ".%d",file_number);
 	path += buf;
 
-	/* セーブファイル確認 */
+	/* 祉若<ゃ腆肴 */
 	
 	sprintf(buf, "KEY=%s\n", config->GetParaStr("#REGNAME")); save += buf;
 	string save_sys; SaveImpl(save_sys);
@@ -1161,7 +1161,7 @@ void Scn2k::Load(Cmd& cmd) {
 			menu = new Scn2kMenu(Scn2kMenu::MENU_LOAD, *this, flag, text_exec, system_version);
 			menu->InitPanel(event, parent);
 			menu->InitTitle(Scn2kSaveTitle(*this));
-			SetSkipMode(SKIP_IN_MENU); // テキストスキップ等はここで中断
+			SetSkipMode(SKIP_IN_MENU); // 鴻鴻膈т賢
 			if (mouse_surface) menu_mouseshown = true;
 			else menu_mouseshown = false;
 			ShowCursor();
@@ -1212,7 +1212,7 @@ void Scn2k::Load(Cmd& cmd) {
 		rollback_data = rollback_end;
 	}
 
-	/* 画面の回復など */
+	/* 脂≪緇 */
 	SetSkipMode(SKIP_NO);
 	vector<CmdSimplified>::iterator it;
 	for (it = cmd_stack.begin(); it != cmd_stack.end(); it++) {
@@ -1235,7 +1235,7 @@ void Scn2k::SaveImpl(string& save) {
 	sprintf(buf, "Title=%s\nMouseType=%d\nMouseShown=1\n",window_title.c_str(), mouse_type); save += buf;
 	vector<StackItem>::iterator sit;
 	for (sit=stack.begin(); sit!=stack.end(); sit++) {
-		if (sit->scn_number == SCN_INFO && sit->scn_pt == SCN_INFO_MENU) break; // メニューに入る直前までのスタックを保存
+		if (sit->scn_number == SCN_INFO && sit->scn_pt == SCN_INFO_MENU) break; // <ャ若ャ翫障с鴻帥篆絖
 		sprintf(buf, "Stack=%d,%d\n",sit->scn_number,sit->scn_pt);
 		save += buf;
 	}
@@ -1329,7 +1329,7 @@ void Scn2k::SetSkipMode(SkipMode mode) {
 **
 **/
 static double* lb_ef_param = 0;
-void DLLCall_LB_EF00_0(Cmd& cmd, Flags& flags) { // エフェクトの設定
+void DLLCall_LB_EF00_0(Cmd& cmd, Flags& flags) { // с荐絎
 	if (lb_ef_param == 0) {
 		lb_ef_param = new double[sizeof(double) * 0x60 * 8];
 	}
@@ -1402,7 +1402,7 @@ void DLLCall_LB_EF00_0(Cmd& cmd, Flags& flags) { // エフェクトの設定
 	return;
 }
 
-void DLLCall_LB_EF00_1(Cmd& cmd, Flags& flags) { // 計算を行う
+void DLLCall_LB_EF00_1(Cmd& cmd, Flags& flags) { // 荐膊茵
 	if (lb_ef_param == 0) {
 		fprintf(stderr,"Warning : DLLCall_LB_EF00_1 : Script error : effect calculation was called before setting\n");
 		return;
@@ -1419,7 +1419,7 @@ void DLLCall_LB_EF00_1(Cmd& cmd, Flags& flags) { // 計算を行う
 	m *= 3;
 
 	// 0 < x < 1
-	// va - vd は 0-1 の範囲で対称性を持つ3次関数
+	// va - vd  0-1 膀蚊у丞Осわ罨♂∽
 	double x = double(flags.Get(5, 1162 + index)) * 0.001;
 	double va = (x * x * x)/6;
 	double vb = (-x*x*x + 3*x*x - 3*x + 1) / 6;
@@ -1445,12 +1445,12 @@ void DLLCall_LB_EF00_1(Cmd& cmd, Flags& flags) { // 計算を行う
 }
 
 
-void DllCall_LB(Cmd& cmd, Flags& flags) {	// リトルバスターズ!の EF00.dll をエミュレート
+void DllCall_LB(Cmd& cmd, Flags& flags) {	// 鴻帥若削 EF00.dll ャ若
 	if (cmd.args[0].value == 1) {
 		// "EF00.dll"
-		if (cmd.args[1].value == 0) { // エフェクトの設定
+		if (cmd.args[1].value == 0) { // с荐絎
 			DLLCall_LB_EF00_0(cmd, flags);
-		} else if (cmd.args[1].value == 1) { // 計算を行う
+		} else if (cmd.args[1].value == 1) { // 荐膊茵
 			DLLCall_LB_EF00_1(cmd, flags);
 		}
 	} else {
@@ -1669,7 +1669,7 @@ void LoadMenu::SetPage(int new_page) {
 				else button->SetText("----");
 			}
 		}
-		// ボタンの内容を変更する
+		// 帥潟絎鴻紊眼
 		if (select_value < cur_page || select_value > cur_page+12)
 			btn_local->SetValue(-1);
 		else
@@ -1697,18 +1697,18 @@ void LoadMenu::SetValue(int new_value) {
 	in_setpage = true;
 
 	if (new_value < 0 || new_value > title.size() ||
-	    (interface.type == Scn2kMenu::MENU_LOAD && title_valid[new_value] == 0) ) { // 無効な選択肢
+	    (interface.type == Scn2kMenu::MENU_LOAD && title_valid[new_value] == 0) ) { // ≦鴻御
 		if (select_value < select_page/10 || select_value > select_page/10+12)
 			btn_local->SetValue(-1);
 		else
 			btn_local->SetValue(select_value-select_page/10);
-	} else { // 選択肢を変更する
+	} else { // 御≪紊眼
 		if (select_value == new_value) {
-			PressOk(); // ダブルクリック
+			PressOk(); // 
 		} else {
 			select_value = new_value;
 			if (interface.type == Scn2kMenu::MENU_SAVE && title_valid[select_value] == 0) {
-				PressOk(); // 新しいセーブデータなら無条件に選択
+				PressOk(); // 違祉若若帥≧>散御
 			}
 		}
 	}
@@ -1718,23 +1718,23 @@ void LoadMenu::SetValue(int new_value) {
 
 void LoadMenu::PressOk(void) {
 	if (select_value == -1) {
-		btn_set->SetValue(-1); // なにもしない
+		btn_set->SetValue(-1); // 
 		return;
 	}
 	menu->deactivate();
 	if (interface.type == Scn2kMenu::MENU_LOAD) {
 		interface.cmd.cmd_type = CMD_LOAD;
 		interface.cmd.args.push_back(VarInfo(select_value));
-		awk_dialog = new Dialog(*pevent, pparent, "ファイルをロードしますか?", true);
+		awk_dialog = new Dialog(*pevent, pparent, "<ゃ若障鐚", true);
 		awk_dialog->set_pointer = this;
 		awk_dialog->set_func = ChangeDialog;
 	} else {// MENU_SAVE
 		interface.cmd.cmd_type = CMD_SAVE;
 		interface.cmd.args.push_back(VarInfo(select_value));
-		if (title_valid[select_value] == 0) { // 新しいセーブデータ
+		if (title_valid[select_value] == 0) { // 違祉若若
 			interface.status = Scn2kMenu::MenuStatus(Scn2kMenu::MENU_CMD | Scn2kMenu::MENU_DELETE);
-		} else { // セーブデータを上書き:確認
-			awk_dialog = new Dialog(*pevent, pparent, "データを上書きしますか?", true);
+		} else { // 祉若若帥筝吾鐚腆肴
+			awk_dialog = new Dialog(*pevent, pparent, "若帥筝吾障鐚", true);
 			awk_dialog->set_pointer = this;
 			awk_dialog->set_func = ChangeDialog;
 		}
@@ -1742,10 +1742,10 @@ void LoadMenu::PressOk(void) {
 }
 
 void LoadMenu::Cancel(void) {
-	if (awk_dialog != NULL) { // ダイアログのキャンセル
+	if (awk_dialog != NULL) { // ゃ≪違c潟祉
 		awk_dialog->status = Dialog::CANCEL;
 		ChangeDialog(this, awk_dialog);
-	} else { // 一般キャンセル
+	} else { // 筝c潟祉
 		btn_set->SetValue(1);
 	}
 }
@@ -1778,7 +1778,7 @@ void LoadMenu::ChangeBtnSet(void* pointe
 void LoadMenu::ChangeDialog(void* pointer, Dialog* widget) {
 	LoadMenu* instance = (LoadMenu*)pointer;
 	if (widget->status == Dialog::CANCEL) {
-		// ダイアログ消去、OK ボタン復帰
+		// ゃ≪井サOK 帥喝奨絽
 		delete instance->awk_dialog;
 		instance->awk_dialog = NULL;
 		instance->menu->activate();
@@ -1850,7 +1850,7 @@ void BacklogMenu::Exec(Cmd& cmd) {
 	}
 	if (cmd.cmd_type != CMD_NOP) return;
 	if (backlog_update) return;
-	// backlog を最新の状態に更新
+	// backlog 違倶贋
 	cmd.clear();
 	BacklogItem item;
 
--- a/scn2k/scn2k_impl.h
+++ b/scn2k/scn2k_impl.h
@@ -86,7 +86,7 @@ class Scn2k : Event::Time {
 			SCN_INFO = 999999, SCN_INFO_MENU = 10000001,
 			SCN_INFO_LOCALS = 10000100, SCN_INFO_LOCALSTR = 10000200,
 			SCN_INFO_RETSTR = 10000300
-		}; // stack に積まれる特殊な番号
+		}; // stack 腥障号
 
 		int save_scn, save_point;
 
@@ -123,7 +123,7 @@ class Scn2k : Event::Time {
 
 		virtual void Elapsed(unsigned int current_time);
 
-		// セーブ関連
+		// 祉若∫
 		std::string MakeSaveFile(void) const;
 		bool StatSaveFile(int num, int& year, int& month, int& day, int& wday, int& hour,int& min, int& sec, int& msec, std::string& title) const;
 		void SaveImpl(std::string& s);
--- a/scn2k/scn2k_text.cc
+++ b/scn2k/scn2k_text.cc
@@ -1,31 +1,31 @@
 /*
 TODO:
-	日付のラベルが画面切り替え時に欠けるのを修正
-	画像効果 : 人間の入れ換わりなど
-	kcursor の操作を WidText クラスに任せる
-	WidText クラスには新たに以下の操作を加える
-		・ウェイト終了後、クリアなしに新たなテキストを追加、新たにstart-waitする
-		・文字の描画 (Start) と Wait(カーソル表示待ち)の分離。
-			Start すると文字を描画開始する。クリックで全描画。
-			Flush するとバッファ内の文字をすべて描画する
-			Wait すると全描画後、クリックされるまでカーソルを表示するまで待つ
-		Text 側の状態としては Wait のみを持つ (PREPAREに戻るのを待つ)
-		ただし、Skip の権利はどっちがもつ?(現状は?)
+	ヤ脂√帥罨篆罩
+	糸号 : 篋咲ャ
+	kcursor 篏 WidText 鴻篁祉
+	WidText 鴻違篁ヤ篏
+		祉сゃ腟篋緇≪違鴻菴遵違start-wait
+		紙絖 (Start)  Wait(若純茵腓阪)≪
+			Start 絖脂紮у祉
+			Flush ≦絖鴻祉
+			Wait 糸障с若純茵腓冴障у
+		Text 眼倶 Wait 帥 (PREPARE祉緇)
+		Skip 罔c<わ鐚憟吟鐚鐚
 
-	GrpObj: NextObj と GrpObj を分離。CreateObj は現状通り、Visible=1 時に行う。
-		それぞれ num=0 (screen) の枝leaf として実装。delete時は親のdeleteのみを
-		行い、子はGrpObjの実体だけを削除する
-		Visible 後のhide は実際に hide とする
-		ExecReservedCmd() はなくせるはず。Delete() もなくなる。
-	カノギ:ReBlit() がうまくいかないせいで名前ウィンドウが消えた時の背景がなくなる
+	GrpObj: NextObj  GrpObj ≪CreateObj 憟狗Visible=1 茵
+		 num=0 (screen) leaf 絎茖delete荀delete帥
+		茵絖GrpObj絎篏ゃ
+		Visible 緇hide 絎 hide 
+		ExecReservedCmd() Delete() 
+	鐚ReBlit() 障уc潟羔
 
-	くら:回想表示
-	SEL画像効果
+	鐚活;腓
+	SEL糸号
 DONE:
-	ともよのテキストウィンドウ実装、ボタン実装
-	shake の画像効果
-	オブジェクト内のテキスト色の実装
-	画像効果の改善
+	鴻c潟絎茖帥喝茖
+	shake 糸号
+	吾с鴻蚊絎茖
+	糸号劫
 */
 
 /*
@@ -230,7 +230,7 @@ void Text::PressFuncButton(void* pointer
 
 void Text::SetSkipMode(SkipMode _mode) {
 	if ( (skip_mode & SKIP_IN_MENU) && (_mode & SKIP_IN_MENU) == 0) {
-		if (status_mask & BACKLOG_WAIT_MASK) { // backlog mode から復帰
+		if (status_mask & BACKLOG_WAIT_MASK) { // backlog mode 緇絽
 			status_mask = Status(status_mask & (~(BACKLOG_MASK|BACKLOG_MASK_FWD|BACKLOG_MASK_KOE|BACKLOG_WAIT_MASK)));
 			text->wid->Clear();
 			if (status == WAIT_TEXT && text != NULL) {
@@ -278,15 +278,15 @@ void Text::InitWindow(void) {
 		const char* s = config->GetParaStr(buf);
 		if (s != NULL) replace_name[i] = s;
 	}
-	// replace_name2 : 初期設定
-	// 渚、秋生、渚 (CLANNAD)
+	// replace_name2 : 荐絎
+	// 羝腱羝 (CLANNAD)
 	char name_nagisa[3] = {'\x8f', '\x8d', '\0'};
 	char name_akio[5] = {'\x8f', '\x48', '\x90', '\xb6', '\0'};
 	replace_name2[0] = name_nagisa;
 	replace_name2[1] = name_akio;
 	replace_name2[2] = name_nagisa;
 	text = NULL;
-	/* テキスト速度の設定 */
+	/* 鴻綺荐絎 */
 	int speed, mod, wait, auto_mod;
 	config->GetParam("#INIT_MESSAGE_SPEED", 1, &speed);
 	config->GetParam("#INIT_MESSAGE_SPEED_MOD", 1, &mod);
@@ -364,7 +364,7 @@ void Text::Save(string& str, bool rollba
 						buflen += snprintf(buf+buflen, 1000-buflen, ",\"%s\"", it->face.c_str());
 				}
 				buf[buflen++] = '\0';
-				if (buflen >= 1000) { // 万が一、バックログ1アイテムの大きさが 1000byte を越えるとき
+				if (buflen >= 1000) { // 筝筝逸≪ゃ紊с 1000byte 莇
 					fprintf(stderr,"Fatal : Cannot save backlog crrectly; Please send bug report to the author.\n");
 				} else str += buf;
 			}
@@ -484,12 +484,12 @@ void Text::Load(const char* str) {
 			}
 		} while (*strend != 0);
 	}
-	if (new_backlog.empty() && (!backlog.empty())) { // empty なら save_selectcount まで backlog を巻き戻す
+	if (new_backlog.empty() && (!backlog.empty())) { // empty  save_selectcount 障 backlog 綏祉祉
 		vector<BacklogItem>::iterator it = backlog.end();
 		do {
 			it--;
 			if (it->scn == BacklogItem::SaveSelect && it->pos == save_selectcount) {
-				// Save 位置を見つけたらそれ以降を erase
+				// Save 篏臀荀ゃ篁ラ erase
 				backlog.erase(it, backlog.end());
 				break;
 			}
@@ -520,10 +520,10 @@ void Text::show(int num) {
 		char key[1024];
 		sprintf(key, "#WINDOW.%03d.KEYCUR_MOD", text_window_number);
 		config->GetParam(key, 3, &d, &kx, &ky);
-		// 正しくない気がする
+		// 罩c羂
 		kx += text->wid->Pic()->PosX();
 		ky += text->wid->Pic()->PosY();
-		// 微妙に下にする
+		// 緇絋筝
 		ky += 8;
 		kcursor->Pic()->Move(kx, ky);
 	}
@@ -535,7 +535,7 @@ void Text::DrawBacklog(BacklogItem& item
 	status_mask = Status(status_mask | BACKLOG_WAIT_MASK);
 	drawn_backlog_item = item;
 	if (item.text.container.empty()) {
-		// cmd から text 内容を再構成
+		// cmd  text 絎鴻罕
 		TextStream saved_text = text_stream;
 		text_stream.Clear();
 		AddText(cmd.Str(cmd.args[0]));
@@ -582,9 +582,9 @@ void Text::CreateSelect(Cmd& cmd) {
 
 	int sel_size = cmd.args.size() / 2;
 	int i;
-	// cur_backlog_item に次にbacklogに入るべき内容を作成
-	// CreateSelect() 後、SAVEPOINT なので現在のbacklogの内容(前のメッセージ)が
-	// backlog に代入される。その後、backlog_item に cur_backlog_item の内容がセットされる(Wait()内)
+	// cur_backlog_item 罨<backlogャ鴻絎鴻篏
+	// CreateSelect() 緇SAVEPOINT х憜backlog絎(<祉若)
+	// backlog 篁eャ緇backlog_item  cur_backlog_item 絎鴻祉(Wait())
 	char backlog_sel_text[11] = {0x81,0x69,0x91,0x49,0x91,0xf0,0x8e,0x88,0x81,0x6a,0x00};
 	cur_backlog_item.Clear();
 	cur_backlog_item.AddTextPos(cmd);
@@ -598,10 +598,10 @@ void Text::CreateSelect(Cmd& cmd) {
 	}
 	sel_backlog_pos.push_back(cur_backlog_item.text.container.size());
 
-	if (sel_type == 0) { // Princess Bride: 選択ウィンドウを別表示
+	if (sel_type == 0) { // Princess Bride: 御c潟ヨ;腓
 External_select:
 		CreateSelBG();
-		hide(); // なので、テキストウィンドウは消去
+		hide(); // с鴻c潟羔サ
 		int baseposx, baseposy, repposx, repposy, centerx, centery;
 		int mojisize, col1, col2;
 		config->GetParam("#SELBTN.000.CENTERING", 2, &centerx, &centery);
@@ -610,7 +610,7 @@ External_select:
 		config->GetParam("#SELBTN.000.MOJISIZE", 1, &mojisize);
 		config->GetParam("#SELBTN.000.MOJIDEFAULTCOL", 1, &col1);
 		config->GetParam("#SELBTN.000.MOJISELECTCOL", 1, &col2);
-		if (col1 == col2) col2 = 1; // CLANNAD でとりあえず。
+		if (col1 == col2) col2 = 1; // CLANNAD с
 		int r, g, b;
 		sprintf(key, "#COLOR_TABLE.%03d", col1);
 		config->GetParam(key, 3, &r, &g, &b);
@@ -619,10 +619,10 @@ External_select:
 		config->GetParam(key, 3, &r, &g, &b);
 		Color seled(r,g,b);
 
-		/* ウィジット作成 */
-		/* ウィンドウ背景の大きさを求める */
+		/* c吾篏 */
+		/* c潟紊с羆 */
 		if (baseposx == 0 && sel_bg_rect.width() != 0)
-			baseposx = (parent.Width()-sel_bg_rect.width()) / 2; // ボタン位置をセンタリング
+			baseposx = (parent.Width()-sel_bg_rect.width()) / 2; // 帥割臀祉潟帥潟
 		if (centerx)
 			baseposx = (parent.Width()-sel_bg_rect.width()-sel_size*repposx) / 2;
 		if (centery)
@@ -632,7 +632,7 @@ External_select:
 
 		for (i=0; i<sel_size; i++) {
 			PicBase* p;
-			// 背景作成
+			// 篏
 			if (sel_bg2) {
 				p = sel_widget->create_node(Rect(baseposx, baseposy, baseposx+sel_bg_rect.width(), baseposy+sel_bg_rect.height()),0);
 				p->SetSurface(sel_bg2, 0, 0);
@@ -641,10 +641,10 @@ External_select:
 				p = sel_widget->create_node(Rect(baseposx, baseposy, baseposx+sel_bg_rect.width(), baseposy+sel_bg_rect.height()),0);
 				p->SetSurface(sel_bg1, 0, 0);
 			}
-			/* ボタン作成 */
+			/* 帥割 */
 			const char* str = cmd.Str(cmd.args[i*2]);
 			int value = cmd.args[i*2+1].value;
-			while(selects.size() <= value) selects.push_back(0); // vector の大きさを広げる
+			while(selects.size() <= value) selects.push_back(0); // vector 紊с綺
 
 			kconv( (const unsigned char*)str, (unsigned char*)key);
 			selects[value] = new WidTextButton(event, sel_widget, key, mojisize, WidTextButton::CENTER,
@@ -657,17 +657,17 @@ External_select:
 		}
 		sel_widget->show_all();
 		status = WAIT_SELECT_OUTBOX;
-	} else { // CLANNAD: テキストウィンドウ内に選択肢表示
+	} else { // CLANNAD: 鴻c潟御∵;腓
 		int mojisize;
 		config->GetParam("#SELBTN.000.MOJISIZE", 1, &mojisize);
 		Color fore(0xff,0xff,0xff);
 		Color seled(0xff,0xff,0xff);
 
 		show();
-		if (text == NULL) goto External_select; // テキスト・ウィンドウを表示できなければ外部選択肢にする
+		if (text == NULL) goto External_select; // 鴻祉c潟茵腓冴с医御≪
 		text->wid->Clear();
 		if (kcursor) kcursor->hide();
-		/* ウィジット作成  : テキスト表示範囲と同じ*/
+		/* c吾篏  : 鴻茵腓榊蚊*/
 		int posx = text->wid->pictext->PosX();
 		int posy = text->wid->pictext->PosY();
 		int sel_w = text->wid->pictext->Width();
@@ -676,10 +676,10 @@ External_select:
 
 		int sel_y = 0;
 		for (i=0; i<sel_size; i++) {
-			/* ボタン作成 */
+			/* 帥割 */
 			const char* str = cmd.Str(cmd.args[i*2]);
 			int value = cmd.args[i*2+1].value;
-			while(selects.size() <= value) selects.push_back(0); // vector の大きさを広げる
+			while(selects.size() <= value) selects.push_back(0); // vector 紊с綺
 
 			kconv( (const unsigned char*)str, (unsigned char*)key);
 			selects[value] = new WidTextButton(event, sel_widget, key, mojisize, WidTextButton::Attribute(WidTextButton::REVERSE | WidTextButton::NOPADDING),
@@ -697,16 +697,16 @@ External_select:
 void Text::AddText(const char* str_o) {
 	char str[10001];
 	if (text == NULL) return;
-	/* まず、replace string を変換 */
+	/* 障replace string 紊 */
 	int i;
 	int cnt = 0;
-	/* * = 81 96 A-Z = 0x82 [0x60-0x79] */
-	/* % = 81 93 A-Z = 0x82 [0x60-0x79] */
+	/* 鐚 = 81 96 A-Z = 0x82 [0x60-0x79] */
+	/* 鐚 = 81 93 A-Z = 0x82 [0x60-0x79] */
 	for (i=0; cnt<10000 && str_o[i] != 0; i++) {
 		if (str_o[i] < 0) {
 			if ( (unsigned char)str_o[i] == 0x81 && (unsigned char)str_o[i+1] == 0x96 && (unsigned char)str_o[i+2] == 0x82) {
 				int c = str_o[i+3];
-				if (c >= 0x60 && c <= 0x79 && replace_name[c-0x60].length() != 0) { // 名前変換
+				if (c >= 0x60 && c <= 0x79 && replace_name[c-0x60].length() != 0) { // 紊
 					i += 3;
 					strcpy(str+cnt, replace_name[c-0x60].c_str());
 					cnt += replace_name[c-0x60].length();
@@ -714,7 +714,7 @@ void Text::AddText(const char* str_o) {
 				}
 			} else if ( (unsigned char)str_o[i] == 0x81 && (unsigned char)str_o[i+1] == 0x93 && (unsigned char)str_o[i+2] == 0x82) {
 				int c = str_o[i+3];
-				if (c >= 0x60 && c <= 0x79 && replace_name2[c-0x60].length() != 0) { // 名前変換2
+				if (c >= 0x60 && c <= 0x79 && replace_name2[c-0x60].length() != 0) { // 紊鐚
 					i += 3;
 					strcpy(str+cnt, replace_name2[c-0x60].c_str());
 					cnt += replace_name2[c-0x60].length();
@@ -732,7 +732,7 @@ void Text::AddText(const char* str_o) {
 	for (char* s = str_top; *s != 0; s++) {
 		// if (*(unsigned char*)s == 0xa1 && *(unsigned char*)(s+1) == 0xda) { /* euc */
 		if (*(unsigned char*)s == 0x81 && *(unsigned char*)(s+1) == 0x79) { /* sjis */
-			// 名前
+			// 
 			*s = 0;
 			if (s != str_top) text_stream.Add(str_top);
 			s += 2;
@@ -745,7 +745,7 @@ void Text::AddText(const char* str_o) {
 					text_stream.AddName(name_top);
 					break;
 				}
-				if (*s < 0 && s[1] != 0) s++; // 全角文字なら2字飛ばす
+				if (*s < 0 && s[1] != 0) s++; // 茹絖鐚絖蕋違
 			}
 			str_top = s;
 		}
@@ -780,7 +780,7 @@ void Text::Exec(Cmd& cmd) {
 			cmd.clear();
 		else
 			cmd.cmd_type = CMD_SAVEPOINT;
-		text_parsing = true; /* テキスト待ち直後のテキスト位置=セーブ位置 */
+		text_parsing = true; /* 鴻緇∞翫鴻篏臀鐚祉若篏臀 */
 		return;
 	}
 
@@ -809,7 +809,7 @@ print_blit^=1;
 		else {
 			if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) {
 				if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) {
-					text->wid->Flush(); // 表示を最後の状態にする
+					text->wid->Flush(); // 茵腓冴緇倶
 				}
 				if (status == WAIT_TEXT && text != NULL && kcursor != NULL) kcursor->show();
 			}
@@ -849,7 +849,7 @@ print_blit^=1;
 	}
 	if (status_mask & SKIPEND_MASK) {
 		if ( (skip_mode & SKIP_TEXT) && (skip_mode & SKIPEND_TEXT)) {
-			if (skip_mode & SKIPEND_KEY) { // shift skip 中
+			if (skip_mode & SKIPEND_KEY) { // shift skip 筝
 				SkipMode new_mode = SkipMode(skip_mode & (~SKIPEND_TEXT));
 				if (new_mode & (SKIP_GRP_NOEFFEC || SKIP_GRP_NODRAW))
 					new_mode = SkipMode(new_mode & (~SKIP_GRP_FAST));
@@ -872,7 +872,7 @@ print_blit^=1;
 	if (event.presscount(MOUSE_RIGHT)) {
 		if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) {
 			if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) {
-				text->wid->Flush(); // 表示を最後の状態にする
+				text->wid->Flush(); // 茵腓冴緇倶
 			}
 			cmd.cmd_type = CMD_MENUREQ;
 			if (!(status_mask & STATSAVE_MASK)) {
@@ -887,7 +887,7 @@ print_blit^=1;
 	if (event.presscount(MOUSE_UP)) {
 		if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) {
 			if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) {
-				text->wid->Flush(); // 表示を最後の状態にする
+				text->wid->Flush(); // 茵腓冴緇倶
 			}
 			cmd.cmd_type = CMD_BACKLOGREQ;
 			if (!(status_mask & STATSAVE_MASK)) {
@@ -901,7 +901,7 @@ print_blit^=1;
 		if ( (status == WAIT_TEXT && text != NULL ) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) {
 			if (skip_mode) skip_mode = SKIP_NO;
 			if (text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) {
-				text->wid->Flush(); // 表示を最後の状態にする
+				text->wid->Flush(); // 茵腓冴緇倶
 				return true;
 			}
 			status_mask = Status(status_mask & (~CLEARSCR_MASK) | CLEARSCR_WAIT_MASK);
@@ -966,7 +966,7 @@ print_blit^=1;
 		delete sel_widget;
 		sel_widget = NULL;
 		status = NORMAL;
-		// CreateSelect() で作成された cur_backlog_item を backlog_item へ反映させる
+		// CreateSelect() т cur_backlog_item  backlog_item 後
 		cur_backlog_item.text.InsertColor(sel_backlog_pos[sel_val], sel_backlog_pos[sel_val+1], 0xff, 0, 0);
 		backlog_item = cur_backlog_item;
 		cur_backlog_item.Clear();
@@ -1029,7 +1029,7 @@ static const char* btnname[BTNCNT] = {
 	"EXBTN_002"
 };
 
-static int btnpos[BTNCNT] = { // g00 ファイル内のボタン情報の位置
+static int btnpos[BTNCNT] = { // g00 <ゃ帥恰宴篏臀
 //	0, 1, 13, 12, 2, 3, 4, 5, 6, 7 // princess bride?
 	0, 1, 13, 14, 2, 3, 4, 5, 6, 7 // tomoyo after?
 };
@@ -1088,7 +1088,7 @@ void Text::SetCursor(int cursor_no) {
 	char key[1024];
 	sprintf(key, "#CURSOR.%03d.NAME", cursor_no);
 	string path = config->GetParaStr(key);
-	if (path.length() == 0) return; // 名前なし
+	if (path.length() == 0) return; // 
 	path += ".pdt";
 	int w,h,cont,speed;
 	sprintf(key, "#CURSOR.%03d.SIZE", cursor_no);
@@ -1098,7 +1098,7 @@ void Text::SetCursor(int cursor_no) {
 	sprintf(key, "#CURSOR.%03d.SPEED", cursor_no);
 	config->GetParam(key, 1, &speed);
 
-	// speed で1周、cont 回変化
+	// speed эcont 紊
 	if (kcursor != NULL) delete kcursor;
 
 	kcursor = new WidTimeCursor(event, speed/cont, &parent, path.c_str(), 0, 0, w, 0, cont, Rect(0,0,w,h));
@@ -1258,7 +1258,7 @@ void TextWindow::MakeWaku(PicContainer& 
 	AyuSysConfig *config = AyuSysConfig::GetInstance();
 	char key[1024];
 	std::string str;
-	/* 枠を作成 */
+	/* 篏 */
 	sprintf(key, "#WAKU.%03d.000.NAME", waku_no);
 	const char* name = config->GetParaStr(key);
 	if (name != NULL && name[0] == 0) name = NULL;
@@ -1271,7 +1271,7 @@ void TextWindow::MakeWaku(PicContainer& 
 
 	if (name == NULL && back == NULL && btn == NULL) return;
 
-	/* まず、テキスト背景を設定 */
+	/* 障鴻荐絎 */
 	if (back != NULL) {
 		str = back; str += ".g00";
 		int rc, gc, bc, ac, flag;
@@ -1285,14 +1285,14 @@ void TextWindow::MakeWaku(PicContainer& 
 			Rect rect(*back_s);
 			Surface* s = pic.Root().NewSurface(rect.width(), rect.height(), ALPHA_MASK);
 			DSurfaceMove(back_s, rect, s, rect);
-			DSurfaceFillA(s, rect, rc, gc, bc, ac); // 透明度設定
+			DSurfaceFillA(s, rect, rc, gc, bc, ac); // 綺荐絎
 			pic.SetSurface(s, 0, 0);
 			pic.SetSurfaceFreeFlag(1);
 			if (flag == 0) wid->Pic()->SetSurfaceAttribute(PicBase::BLIT_MULTIPLY);
 			pic.Root().DeleteSurface(back_s);
 		}
 	}
-	/* その前に枠飾りを設定 */
+	/* 蕋障荐絎 */
 	if (name != NULL) {
 		str = name; str += ".g00";
 		Surface* s = pic.Root().NewSurface(str.c_str());
@@ -1307,26 +1307,26 @@ void TextWindow::MakeWaku(PicContainer& 
 	}
 	if (btn == NULL) return;
 	if (use_btn == NULL) return;
-	// ボタンの作成
-	// 使用するボタンについては、必要に応じて show() すること
+	// 帥潟篏
+	// 篏睡帥潟ゃ綽荀綽 show() 
 
-	/* ボタンの位置情報を求める */
+	/* 帥潟篏臀宴羆 */
 	str = btn; str += ".g00";
 	ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, str.c_str(), "g00");
 	if (info == NULL) return; // cannot find file
 	const char* data = info->Read();
-	/* g00 ファイルのヘッダ部分に位置情報は入っている */
-	/* 存在しなければボタン画像ではない */
+	/* g00 <ゃ篏臀宴ャc */
+	/* 絖違帥括糸с */
 	if (data == NULL || *data != 2) {
 		delete info;
 		return;
 	}
-	int index_count = read_little_endian_int(data+5); // 0x70 == 112 ( 8 個ずつグループなので、14個のボタン ) が標準
+	int index_count = read_little_endian_int(data+5); // 0x70 == 112 ( 8 ゃ違若с14帥 ) 罔羣
 	int i;
 	for (i=0; i<BTNCNT; i++) {
 		if (!use_btn[i]) continue;
 		if (btnpos[i]*8 >= index_count) {
-			continue; // ボタンが存在しない
+			continue; // 帥潟絖
 		}
 		int x, y, w, h;
 		sprintf(key, "#WAKU.%03d.000.%s_BOX", waku_no, btnname[i]);
@@ -1365,8 +1365,8 @@ TextWindow::TextWindow(PicContainer& par
 	sprintf(key, "#WINDOW.%03d.WAKU_SETNO", win_no);if (config->GetParam(key, 1, &waku_no) == -1) return;
 	sprintf(key, "#WINDOW.%03d.LUBY_SIZE", win_no); if (config->GetParam(key, 1, &ruby) == -1) return;
 
-	/* テキストウィジット:画面の右下一杯まで使用 */
-	/* posd == 2 なら画面下にひっつくように配置 */
+	/* 鴻c吾鐚脂≪劽筝障т戎 */
+	/* posd == 2 脂≫蚊cゃ臀 */
 	Rect r(0,0);
 	if (posd == 2) {
 		r = WakuSize(parent, waku_no);
@@ -1376,16 +1376,16 @@ TextWindow::TextWindow(PicContainer& par
 	} else /* posd == 0 ? */
 		r = Rect(posx, posy, parent.Width(), parent.Height());
 
-	/* テキストウィンドウの作成 */
+	/* 鴻c潟篏 */
 	int w = size*cntw; int h = (size+ruby+2)*cnth;
 	wid = new WidText(event, &parent, r, Rect(mposx, mposy, mposx+w, mposy+h), size);
 	wid->stream.kanji_type = TextStream::sjis;
-	/* 顔ウィンドウの作成 */
+	/* 蕁c潟篏 */
 	for (i=0; i<8; i++) {
 		int x,y;
 		sprintf(key, "#WINDOW.%03d.FACE.%03d", win_no, i);
 		if (config->GetParam(key, 2, &x, &y) == -1) continue;
-		/* 顔ウィンドウを作成する */
+		/* 蕁c潟篏 */
 		if (x >= 0 && y >= 0) {
 			face_pics[i] = wid->PicNode()->create_leaf(Rect(x,y), PicBase::FIT_SURFACE);
 		} else {
@@ -1394,7 +1394,7 @@ TextWindow::TextWindow(PicContainer& par
 		face_pics[i]->show();
 	}
 	face = face_pics[0];
-	// ボタンの設定
+	// 帥潟荐絎
 	for (i=0; i<BTNCNT; i++) {
 		int num;
 		sprintf(key, "#WINDOW.%03d.%s_USE", win_no, btnname[i]);
@@ -1420,15 +1420,15 @@ TextWindow::TextWindow(PicContainer& par
 			sprintf(key, "#WINDOW.%03d.NAME_WAKU_SETNO", win_no);
 			if (config->GetParam(key, 1, &name_waku) != -1 && name_waku != -1) {
 				Rect waku_r = WakuSize(parent, name_waku);
-				waku_r.rmove(r.lx, r.ty); // テキストウィンドウ位置に動かす
-				waku_r.rmove(name_posx, name_posy-waku_r.height()); // NAME_POS へ位置補正
+				waku_r.rmove(r.lx, r.ty); // 鴻c潟篏臀
+				waku_r.rmove(name_posx, name_posy-waku_r.height()); // NAME_POS 娯臀茖罩
 				name_container = parent.create_node(waku_r, 0);
 				MakeWaku(*name_container, event, name_waku, win_no, 0, callback);
 				Rect name_r(0,0,w,h);
 				name_r.rmove(name_mposx, name_mposy);
 				name = new WidLabel(name_container, name_r, true, 0, name_size);
 				name->show();
-			} else { // 名前専用枠なし
+			} else { // 絨
 				Rect name_r(0, 0, w, h);
 				name_r.rmove(r.lx, r.ty);
 				name_r.rmove(name_posx, name_posy-name_size);
--- a/scn2k/scn2kdump.cc
+++ b/scn2k/scn2kdump.cc
@@ -123,7 +123,7 @@ int main(int argc, char** argv) {
 		char* data = info->CopyRead();
 		char* d = data;
 		char* dend = d + info->Size();
-		/* version 確認 */
+		/* version 腆肴 */
 		if (read_little_endian_int(d) == 0x1cc) {
 			system_version = 0;
 		} else if (read_little_endian_int(d) == 0x1d0) {
@@ -150,7 +150,7 @@ int main(int argc, char** argv) {
 		if (n != 6) fprintf(stdout,"subroutine table %2d: %6d\n",i,n);
 }}
 		Flags flags;
-		/* 最初から最後までコマンド取得 -> 出力を繰り返す */
+		/* 緇障с潟潟緇 -> 阪膵違菴 */
 		while(dcur<dend) {
 			const char* dprev = dcur;
 			CmdD cmd(flags, system_version); cmd.ClearError();
@@ -210,26 +210,26 @@ DeleteFaceGraphics
 KoePlay
 	0x23 - cmd 01-17:0000:01[ 2] 
 	args:100000026,5
-DrawGraphics(前景画あり)
+DrawGraphics(祉鐚
 	0x23 - cmd 01-21:004b:00[ 1] 
 	args:V<18>[1],10,kasane. #1 <args:V<18>[17],11>
 
-DrawGraphics(背景のみ)
+DrawGraphics()
 	0x23 - cmd 01-21:0049:00[ 2] 
 	args:V<18>[1],10
 	
 Ruby
 	0x23 - cmd 00-03:0078:01[ 0] 
-	"理由"
+	""
 	0x23 - cmd 00-03:0078:00[ 1] 
-	"わけ"
+	""
 SetTitle
 	0x23 - cmd 01-04:0000:00[ 1] 
 	args:"Long Long Time Ago..."
 WaitTime
 	0x23 - cmd 01-14:0069:00[ 1] 
 	args:3000
-ChangeBGM	数値引数はフェードアウト、インの時間と推測
+ChangeBGM	医ゅ違с若≪ゃ潟ィ羝
 0x23 - cmd 01-14:0000:02[ 3] 
 	args:"BGM18",700,700
 */
--- a/scn2k/test.cc
+++ b/scn2k/test.cc
@@ -66,22 +66,22 @@ int main(void) {
 	main_panel->show();
 	Scn2k scn(main.event, *main_panel, mu, config);
 	// MouseCursor* cursor = new MouseCursor
-	// scn.OpenScript(1002, -19482); // ラブ生〜
-	//scn.OpenScript(1002, -18240); // ラブ生シーン開始
-	// scn.OpenScript(1002, -59528); // ラブ生シーン開始
+	// scn.OpenScript(1002, -19482); // 
+	//scn.OpenScript(1002, -18240); // 激若渇紮
+	// scn.OpenScript(1002, -59528); // 激若渇紮
 	// scn.OpenScript(2, 0);
 	// scn.OpenScript(320, 0);
-	//scn.OpenScript(320, -4269); // オープニング(Chap.2)
+	//scn.OpenScript(320, -4269); // 若潟(Chap.2)
 	//scn.OpenScript(320, -2523);
 	//scn.OpenScript(320, -7549);
-	// scn.OpenScript(310, 0); // エンディング(Wed.day)
-	//scn.OpenScript(311, 0); // エンディング
-	// scn.OpenScript(100, -2244); // 選択肢
-	// scn.OpenScript(100, -9008); // 選択肢
-	//scn.OpenScript(1001, -118520 ); // 選択肢:葛城クン
-	// scn.OpenScript(1, 0); // 開始
-	// scn.OpenScript(414,380); // 開始
-	// scn.OpenScript(9142,0); // 開始
+	// scn.OpenScript(310, 0); // 潟c潟(Wed.day)
+	//scn.OpenScript(311, 0); // 潟c潟
+	// scn.OpenScript(100, -2244); // 御
+	// scn.OpenScript(100, -9008); // 御
+	//scn.OpenScript(1001, -118520 ); // 御鐚
+	// scn.OpenScript(1, 0); // 紮
+	// scn.OpenScript(414,380); // 紮
+	// scn.OpenScript(9142,0); // 紮
 	// config.SetParam("#SEEN_START", 1, 9140);
 	//scn.show_textwindow(0);
 	
--- a/system/file.cc
+++ b/system/file.cc
@@ -1,9 +1,9 @@
 bool init_end=false;
-/*  file.cc  : KANON の圧縮ファイル・PDT ファイル(画像ファイル)の展開の
- *            ためのメソッド
- *     class ARCFILE : 書庫ファイル全体を扱うクラス
- *     class ARCINFO : 書庫ファイルの中の1つのファイルを扱うクラス
- *     class PDTCONV : PDT ファイルの展開を行う。
+/*  file.cc  : KANON х軒<ゃPDT <ゃ鐚糸<ゃ鐚絮
+ *            <純
+ *     class ARCFILE : 後昆<ゃ篏宴
+ *     class ARCINFO : 後昆<ゃ筝鐚ゃ<ゃ宴
+ *     class PDTCONV : PDT <ゃ絮茵
  *
  */
 
@@ -85,7 +85,7 @@ using namespace std;
 
 // #define delete fprintf(stderr,"file.cc: %d.",__LINE__), delete
 
-/* FileSearcher class の default の振る舞い */
+/* FileSearcher class  default  */
 FileSearcher *FileSearcher::_singleton = NULL;
 FileSearcher::ARCTYPE FileSearcher::default_is_archived[TYPEMAX] = {
 	ATYPE_DIR, ATYPE_DIR, ATYPE_DIR, ATYPE_DIR,
@@ -100,16 +100,16 @@ const char* FileSearcher::default_dirnam
 
 /*********************************************
 **  ARCFILE / DIRFILE:
-**	書庫ファイル、あるいはディレクトリの
-**	全体を管理するクラス
+**	後昆<ゃc
+**	篏膊∞
 **
-**	書庫ファイルからファイルの抜き出しはFind()
-**	Find したものをReadすると内容が得られる。
+**	後昆<ゃ<ゃ冴Find()
+**	Find Read絎鴻緇
 */
 
 ARCFILE::ARCFILE(const char* aname) {
 	struct stat sb;
-	/* 変数初期化 */
+	/* 紊医 */
 	arcname = NULL;
 	list_point = 0;
 	filenames_orig = NULL;
@@ -119,7 +119,7 @@ ARCFILE::ARCFILE(const char* aname) {
 		arcname[0]='\0';
 		return;
 	} // NULFILE
-	/* ディレクトリか否かのチェック */
+	/* cс */
 	if (stat(aname,&sb) == -1) { /* error */
 		perror("stat");
 	}
@@ -141,9 +141,9 @@ ARCFILE::ARCFILE(const char* aname) {
 void ARCFILE::Init(void) {
 	if (! arc_atom.empty()) return;
 	if (arcname == NULL) return;
-	/* ファイル数を得る */
+	/* <ゃ違緇 */
 	int slen = CheckFileDeal();
-	/* ファイル名のセット */
+	/* <ゃ祉 */
 	ListupFiles(slen);
 	if ( (!arc_atom.empty()) && arc_atom[0].filename) filenames_orig = arc_atom[0].filename;
 	sort(arc_atom.begin(), arc_atom.end());
@@ -160,16 +160,16 @@ ARCFILE::iterator ARCFILE::SearchName(co
 	Init();
 	if (f == NULL) return arc_atom.end();
 	if (arc_atom.empty()) return arc_atom.end();
-	/* エラーチェック */
+	/* 若с */
 	if (strlen(f)>500) return arc_atom.end();
 	if (ext && strlen(ext)>500) return arc_atom.end();
 
-	/* 検索 */
+	/* 罎膣 */
 	strncpy(buf, f, 1000);
 	buf[1000]=0;
 	it = lower_bound(arc_atom.begin(), arc_atom.end(), (char*)buf);
 	if (it != arc_atom.end() && strcmp(it->filename_lower, buf) == 0) return it;
-	// 拡張子をつけて検索
+	// ≦宍絖ゃ罎膣
 	if (ext) {
 		strcpy(buf_ext, buf);
 		char* ext_pt = strrchr(buf_ext, '.');
@@ -181,7 +181,7 @@ ARCFILE::iterator ARCFILE::SearchName(co
 		if (it != arc_atom.end() && strcmp(it->filename_lower, buf_ext) == 0) return it;
 	}
 
-	/* 小文字にして 検索 */
+	/* 絨絖 罎膣 */
 	int i; int l = strlen(f);
 	if (l > 500) l = 500;
 	for (i=0; i<l; i++)
@@ -190,13 +190,13 @@ ARCFILE::iterator ARCFILE::SearchName(co
 	it = lower_bound(arc_atom.begin(), arc_atom.end(), (char*)buf);
 	if (it != arc_atom.end() && strcmp(it->filename_lower, buf) == 0) return it;
 
-	// 拡張子をつけて検索
+	// ≦宍絖ゃ罎膣
 	if (ext == NULL) return arc_atom.end();
 	strcpy(buf_ext, buf);
 	char* ext_pt = strrchr(buf_ext, '.');
 	if (ext_pt == NULL || ext_pt == buf_ext) ext_pt = buf_ext + strlen(buf_ext);
 	*ext_pt++ = '.';
-	/* 拡張子の長さを得る */
+	/* ≦宍絖激緇 */
 	l = strlen(ext);
 	for (i=0; i<l; i++)
 		ext_pt[i] = tolower(*ext++);
@@ -218,7 +218,7 @@ ARCINFO* ARCFILE::Find(const char* fname
 ARCINFO* ARCFILE::MakeARCINFO(ARCFILE_ATOM& atom) {
 	if (atom.arcsize == atom.filesize)
 		return new ARCINFO(arcname, atom);
-	else // 圧縮付
+	else // х軒篁
 		return new ARCINFO_AVG32(arcname, atom);
 }
 ARCINFO* NULFILE::MakeARCINFO(ARCFILE_ATOM& atom) {
@@ -297,7 +297,7 @@ char* ARCFILE::ListItem(void) {
 
 int ARCFILE::CheckFileDeal(void) {
 	char buf[0x20];
-	/* ヘッダのチェック */
+	/* с */
 	FILE* stream = fopen(arcname, "rb");
 	if (stream == NULL) {
 		fprintf(stderr, "Cannot open archive file : %s\n",arcname);
@@ -386,7 +386,7 @@ void DIRFILE::ListupFiles(int fname_len)
 		fprintf(stderr, "Cannot open dir file : %s\n",arcname);
 		return;
 	}
-	/* 一時的に arcname のディレクトリに移動する */
+	/* 筝 arcname c腱糸 */
 	int old_dir_fd = open(".",O_RDONLY);
 	if (old_dir_fd < 0) {
 		closedir(dir);
@@ -427,7 +427,7 @@ void DIRFILE::ListupFiles(int fname_len)
 		arc_atom.push_back(atom);
 		buf += l*2+2; fname_len -= l*2+2;
 	}
-	/* chdir() したのを元に戻る */
+	/* chdir() 祉 */
 	closedir(dir);
 	fchdir(old_dir_fd); close(old_dir_fd);
 }
@@ -447,7 +447,7 @@ void NULFILE::ListupFiles(int fname_len)
 }
 
 int SCN2kFILE::CheckFileDeal(void) {
-	/* ヘッダのチェック */
+	/* с */
 	FILE* stream = fopen(arcname, "rb");
 	if (stream == NULL) {
 		fprintf(stderr, "Cannot open archive file : %s\n",arcname);
@@ -462,7 +462,7 @@ int SCN2kFILE::CheckFileDeal(void) {
 	}
 	char* buf = new char[10000*8];
 	fread(buf, 10000, 8, stream);
-	/* size == 0 のデータは存在しない */
+	/* size == 0 若帥絖 */
 	int count = 0;
 	int i; for (i=0; i<10000; i++) {
 		int tmp_offset = read_little_endian_int(buf+i*8);
@@ -472,7 +472,7 @@ int SCN2kFILE::CheckFileDeal(void) {
 	}
 	fclose(stream);
 	delete[] buf;
-	return count*13; /* ファイル名は seenXXXX.txt だから、一つ12文字+null */
+	return count*13; /* <ゃ seenXXXX.txt 筝12絖+null */
 }
 
 void SCN2kFILE::ListupFiles(int fname_len) {
@@ -492,23 +492,23 @@ void SCN2kFILE::ListupFiles(int fname_le
 		int tmp_offset = read_little_endian_int(buf+i*8);
 		int tmp_size = read_little_endian_int(buf+i*8+4);
 		if (tmp_size <= 0 || tmp_offset < 0 || tmp_offset+tmp_size > int(arc_size) ) continue;
-		/* header を得て圧縮形式などを調べる */
+		/* header 緇х軒綵√茯帥鴻 */
 		fseek(stream, tmp_offset, SEEK_SET);
 		fread(header, 0x200, 1, stream);
 		int header_top = read_little_endian_int(header+0);
 		int file_version = read_little_endian_int(header+4);
 
 		if (file_version == 0x1adb2) ; // Little Busters!
-		else if (file_version != 0x2712) continue; /* system version が違う */
+		else if (file_version != 0x2712) continue; /* system version  */
 
-		if (header_top == 0x1cc) { /* 古い形式 : avg2000 */
+		if (header_top == 0x1cc) { /* ゃ綵√ : avg2000 */
 			int header_size = read_little_endian_int(header+0)+read_little_endian_int(header+0x20)*4;
 			int data_size = read_little_endian_int(header+0x24);
 			atom.arcsize = data_size + header_size;
 			atom.filesize = data_size + header_size;
 			atom.private_data = header_size;
 
-		} else if (header_top == 0x1b8) { /* 初夜献上 */
+		} else if (header_top == 0x1b8) { /* 紊筝 */
 			int header_size = read_little_endian_int(header+0)+read_little_endian_int(header+0x08)*4;
 			int data_size = read_little_endian_int(header+0x0c);
 			int compdata_size = read_little_endian_int(header+0x10);
@@ -516,7 +516,7 @@ void SCN2kFILE::ListupFiles(int fname_le
 			atom.filesize = data_size + header_size;
 			atom.private_data = header_size;
 			
-		} else if (header_top == 0x1d0) { /* 新しい形式: reallive */
+		} else if (header_top == 0x1d0) { /* 違綵√鐚 reallive */
 			int header_size = read_little_endian_int(header+0x20);
 			int data_size = read_little_endian_int(header+0x24);
 			int compdata_size = read_little_endian_int(header+0x28);
@@ -525,7 +525,7 @@ void SCN2kFILE::ListupFiles(int fname_le
 			atom.private_data = header_size;
 		} else {
 			fprintf(stderr,"invalid header top; %x : not supported\n",header_top);
-			continue; /* サポートしない形式 */
+			continue; /* 泣若綵√ */
 		}
 
 		atom.offset = tmp_offset;
@@ -608,7 +608,7 @@ const char * KeyHolder::GetKey(void)
 }
 
 /********************************************************
-** FileSearcher クラスの実装
+** FileSearcher 鴻絎茖
 */
 
 FileSearcher* FileSearcher::GetInstance(void) {
@@ -647,7 +647,7 @@ FileSearcher::~FileSearcher(void) {
 }
 
 int FileSearcher::InitRoot(char* root) {
-	/* 必要に応じて ~/ を展開 */
+	/* 綽荀綽 ~/ 絮 */
 	if (root[0] == '~' && root[1] == '/') {
 		char* home = getenv("HOME");
 		if (home != NULL) {
@@ -657,7 +657,7 @@ int FileSearcher::InitRoot(char* root) {
 			root = new_root;
 		}
 	}
-	/* 古いデータを消す */
+	/* ゃ若帥羔 */
 	int i;
 	for (i=0; i<TYPEMAX; i++) {
 		if (searcher[i] != NULL &&
@@ -671,13 +671,13 @@ int FileSearcher::InitRoot(char* root) {
 	if (root_dir) delete root_dir;
 	dat_dir = NULL;
 
-	/* 新しいディレクトリのもとで初期化 */
+	/* 違cу */
 	root_dir = new DIRFILE(root);
 	root_dir->Init();
-	/* dat/ を検索 */
+	/* dat/ 罎膣 */
 	char* dat_path = root_dir->SearchFile("dat");
 	if (dat_path == NULL) {
-		/* 見つからなかったら root を dat の代わりにつかう */
+		/* 荀ゃc root  dat 篁cゃ */
 		dat_dir = root_dir;
 	} else {
 		dat_dir = new DIRFILE(dat_path);
@@ -693,7 +693,7 @@ void FileSearcher::SetFileInformation(FI
 	int type = tp;
 	if (type < 0 || type >= TYPEMAX) return;
 	ARCFILE* next_arc = NULL;
-	/* すでに searcher が存在すれば解放 */
+	/* с searcher 絖域В */
 	if (searcher[type] != NULL &&
 	  searcher[type] != root_dir &&
 	  searcher[type] != dat_dir) {
@@ -701,7 +701,7 @@ void FileSearcher::SetFileInformation(FI
 		delete searcher[type];
 	}
 	searcher[type] = NULL;
-	/* 適当に初期化 */
+	/* 綵 */
 	if (filenames[type] != NULL &&
 		filenames[type] != default_dirnames[type]) delete[] filenames[type];
 	filenames[type] = filename;
@@ -714,18 +714,18 @@ void FileSearcher::SetFileInformation(FI
 void FileSearcher::AppendFileInformation(FILETYPE tp, ARCTYPE is_arc, char* filename) {
 	int type = tp;
 	if (type < 0 || type >= TYPEMAX) return;
-	/* searcher がまだ割り当てられてない場合 */
+	/* searcher 障蚊綵翫 */
 	if (searcher[type] == NULL ||
 	  searcher[type] == root_dir ||
 	  searcher[type] == dat_dir) {
 		searcher[type] = MakeARCFILE(is_archived[type], filenames[type]);
-		if (searcher[type] == NULL) { /* 作成できなかった場合 */
-			/* この型情報を FileInformation とする */
+		if (searcher[type] == NULL) { /* 篏сc翫 */
+			/* 宴 FileInformation  */
 			SetFileInformation(tp, is_arc, filename);
 			return;
 		}
 	}
-	/* 初期化 */
+	/*  */
 	ARCFILE* arc = MakeARCFILE(is_arc, filename);
 	/* append */
 	ARCFILE* cur;
@@ -773,7 +773,7 @@ err:
 
 ARCINFO* FileSearcher::Find(FILETYPE type, const char* fname, const char* ext) {
 	if (searcher[type] == NULL) {
-		/* searcher 作成 */
+		/* searcher 篏 */
 		if (filenames[type] == NULL) {
 			searcher[type] = dat_dir;
 		} else {
@@ -788,10 +788,10 @@ ARCINFO* FileSearcher::Find(FILETYPE typ
 }
 
 char** FileSearcher::ListAll(FILETYPE type) {
-	/* とりあえず searcher を初期化 */
+	/*  searcher  */
 	Find(type, "THIS FILENAME MAY NOT EXIST IN THE FILE SYSTEM !!!");
 	if (searcher[type] == NULL) return NULL;
-	/* 全ファイルのリストアップ */
+	/* <ゃ鴻≪ */
 	int deal = 0;
 	ARCFILE* file;
 	for (file = searcher[type]; file != NULL; file = file->Next())
@@ -834,7 +834,7 @@ int ARCINFO::Size(void) const {
 	return info.filesize;
 }
 
-/* コピーを返す */
+/* 潟若菴 */
 char* ARCINFO::CopyRead(void) {
 	const char* d = Read();
 	if (d == NULL) return NULL;
@@ -845,13 +845,13 @@ char* ARCINFO::CopyRead(void) {
 }
 
 const char* ARCINFO::Path(void) const {
-	if (info.offset != 0) return NULL; /* archive file なのでパスを帰せない */
+	if (info.offset != 0) return NULL; /* archive file с鴻絽違 */
 	char* ret = new char[strlen(arcfile)+1];
 	strcpy(ret, arcfile);
 	return ret;
 }
 
-/* 互換性専用 */
+/* 篋у */
 FILE* ARCINFO::OpenFile(int* length) const {
 	FILE* f = fopen(arcfile, "rb");
 	if (info.offset) lseek(fileno(f), info.offset, SEEK_SET);
@@ -859,20 +859,20 @@ FILE* ARCINFO::OpenFile(int* length) con
 	return f;
 }
 
-// 展開処理はなし
+// 絮
 bool ARCINFO::ExecExtract(void) {
 	return true;
 }
 
-/* 読み込みを開始する */
+/* 茯粋昭帥紮 */
 const char* ARCINFO::Read(void) {
-	// すでにデータを読み込み済みなら何もしない
+	// с若帥茯粋昭炊帥篏
 	if (data != NULL) return data;
 
 	if (info.offset < 0 || info.arcsize <= 0) {
 		return NULL;
 	}
-	/* ファイルを開く */
+	/* <ゃ */
 	fd = open(arcfile, O_RDONLY);
 	if (fd < 0) {
 		return NULL;
@@ -882,7 +882,7 @@ const char* ARCINFO::Read(void) {
 		fd = -1;
 		return NULL;
 	}
-	/* mmap を試みる */
+	/* mmap 荅帥 */
 #ifdef HAVE_MMAP
 	mmapped_memory = (char*)mmap(NULL, info.arcsize, PROT_READ, MAP_SHARED, fd, info.offset);
 	if (mmapped_memory != MAP_FAILED) {
@@ -891,7 +891,7 @@ const char* ARCINFO::Read(void) {
 	} else
 #endif /* HAVE_MMAP */
 	{
-		/* 失敗:普通にファイルを読み込み */
+		/* 紊掩鐚<ゃ茯粋昭 */
 		char* d = new char[info.arcsize];
 		read(fd, d, info.arcsize);
 		close(fd);
@@ -899,9 +899,9 @@ const char* ARCINFO::Read(void) {
 		use_mmap = false;
 		data = d;
 	}
-	/* 展開する */
+	/* 絮 */
 	if (! ExecExtract()) {
-		// 失敗
+		// 紊掩
 #ifdef HAVE_MMAP
 		if (use_mmap) {
 			munmap(mmapped_memory, info.arcsize);
@@ -915,7 +915,7 @@ const char* ARCINFO::Read(void) {
 	}
 #ifdef HAVE_MMAP
 	if (use_mmap && data != (const char*)mmapped_memory) {
-		// すでに mmap は必要ない
+		// с mmap 綽荀
 		munmap(mmapped_memory, info.arcsize);
 		close(fd);
 		fd = -1;
@@ -927,7 +927,7 @@ const char* ARCINFO::Read(void) {
 
 /**********************************************
 **
-**	画像展開系クラスの定義、実装
+**	糸鎡膤祉鴻絎臂絎茖
 **
 ***********************************************
 */
@@ -1036,7 +1036,7 @@ class JPEGCONV : public GRPCONV {
 #endif
 
 GRPCONV* GRPCONV::AssignConverter(const char* inbuf, int inlen, const char* fname) {
-	/* ファイルの内容に応じたコンバーターを割り当てる */
+	/* <ゃ絎鴻綽潟潟若帥若蚊綵 */
 	GRPCONV* conv = NULL;
 	if (inlen < 10) return NULL; /* invalid file */
 	if (strncmp(inbuf, "PDT10", 5) == 0 || strncmp(inbuf, "PDT11", 5) == 0) { /* PDT10 or PDT11 */
@@ -1084,16 +1084,16 @@ GRPCONV* GRPCONV::AssignConverter(const 
 }
 
 PDTCONV::PDTCONV(const char* _inbuf, int _inlen,const char* filename) {
-//	PDT FILE のヘッダ
-//	+00 'PDT10'	(PDT11 は未対応)
-//	+08 ファイルサイズ (無視)
-//	+0C width (ほぼすべて、640)
-//	+10 height(ほぼすべて、480)
-//	+14 (mask の) x 座標 (実際は無視・・・全ファイルで 0 )
-//	+1c (mask の) y座標 (実際は無視 ・・・全ファイルで 0 )
-//	+20 mask が存在すれば、mask へのポインタ
+//	PDT FILE 
+//	+00 'PDT10'	(PDT11 絲上)
+//	+08 <ゃ泣ゃ (∴)
+//	+0C width (祉若鴻640)
+//	+10 height(祉若鴻480)
+//	+14 (mask ) x 綺ф (絎∴祉祉糸<ゃ 0 )
+//	+1c (mask ) y綺ф (絎∴ 祉祉糸<ゃ 0 )
+//	+20 mask 絖違mask 吾ゃ潟
 
-	/* ヘッダチェック */
+	/* с */
 	if (_inlen < 0x20) {
 		fprintf(stderr, "Invalid PDT file %s : size is too small\n",filename);
 		return;
@@ -1116,14 +1116,14 @@ PDTCONV::PDTCONV(const char* _inbuf, int
 
 
 G00CONV::G00CONV(const char* _inbuf, int _inlen, const char* filename) {
-//	G00 FILE のヘッダ
+//	G00 FILE 
 //	+00 type (1, 2)
 //	+01: width(word)
 //	+03: height(word)
-//	type 1: (color table 付き LZ 圧縮 ; PDT11 に対応)
-//		+05: 圧縮サイズ(dword) ; +5 するとデータ全体のサイズ
-//		+09: 展開後サイズ(dword)
-//	type 2: (マスク可、画像を矩形領域に分割してそれぞれ圧縮)
+//	type 1: (color table 篁 LZ х軒 ; PDT11 絲上)
+//		+05: х軒泣ゃ(dword) ; +5 若水篏泣ゃ
+//		+09: 絮緇泣ゃ(dword)
+//	type 2: (鴻糸綵∫蚊х軒)
 //		+05: index size
 //		+09: index table(each size is 0x18)
 //			+00
@@ -1133,14 +1133,14 @@ G00CONV::G00CONV(const char* _inbuf, int
 //		+09+0x18*size+08: (data top)
 //
 
-	/* データから情報読み込み */
+	/* 若帥沿粋昭 */
 	int type = *_inbuf;
 
 	int w = read_little_endian_short(_inbuf+1);
 	int h = read_little_endian_short(_inbuf+3);
 	if (w < 0 || h < 0) return;
 
-	if (type == 0 || type == 1) { // color table 付き圧縮
+	if (type == 0 || type == 1) { // color table 篁х軒
 		if (_inlen < 13) {
 			fprintf(stderr, "Invalid G00 file %s : size is too small\n",filename);
 			return;
@@ -1153,7 +1153,7 @@ G00CONV::G00CONV(const char* _inbuf, int
 			return;
 		}
 		Init(filename, _inbuf, _inlen, w, h, false);
-	} else if (type == 2) { // color table なし、マスク付き可の圧縮
+	} else if (type == 2) { // color table 鴻篁х軒
 
 		int head_size = read_little_endian_short(_inbuf+5);
 		if (head_size < 0 || head_size*24 > _inlen) return;
@@ -1172,17 +1172,17 @@ G00CONV::G00CONV(const char* _inbuf, int
 
 bool G00CONV::Read(char* image) {
 	if (data == NULL) return false;
-	/* header 識別 */
+	/* header 茘 */
 	int type = *data;
 	if (type == 0) return Read_Type0(image);
 	else if (type == 1) return Read_Type1(image);
 	else if (type == 2) return Read_Type2(image);
 }
 
-/* 一般的な LZ 圧縮の展開ルーチン */
-/* datasize はデータの大きさ、char / short / int を想定 */
-/* datatype は Copy1Pixel (1データのコピー)及び ExtractData(LZ 圧縮の情報を得る
-** というメソッドを実装したクラス */
+/* 筝 LZ х軒絮若 */
+/* datasize 若帥紊сchar / short / int 喝 */
+/* datatype  Copy1Pixel (1若帥潟) ExtractData(LZ х軒宴緇
+** <純絎茖 */
 static int bitrev_table[256] = {
 	0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
 	0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
@@ -1207,7 +1207,7 @@ template<class DataType, class DataSize>
 	const char* lsrc = src; char* ldest = dest;
 
 	if (lsrc+50 < lsrcend && ldest+1024 < ldestend) {
-		/* まず、範囲チェックを緩くして高速なルーチンを使う */
+		/* 障膀蚊с膩蕭若潟篏帥 */
 		lsrcend -= 50;
 		ldestend += 1024;
 		while (ldest < ldestend && lsrc < lsrcend) {
@@ -1233,7 +1233,7 @@ template<class DataType, class DataSize>
 		lsrcend += 50;
 		ldestend += 1024;
 	}
-	/* 残りを変換 */
+	/* 罧紊 */
 	while (ldest < ldestend && lsrc < lsrcend) {
 		count += 8;
 		int flag = int(*(unsigned char*)lsrc++);
@@ -1258,12 +1258,12 @@ template<class DataType, class DataSize>
 	return 0;
 }
 
-/* 引数を減らすためのwrapper */
+/* 綣違羝wrapper */
 template<class DataType, class DataSize> inline int lzExtract(DataType datatype, DataSize datasize ,const char*& src, char*& dest, const char* srcend, char* destend) {
 	return lzExtract<DataType, DataSize>(datatype,src,dest,srcend,destend);
 }
 
-/* 普通の PDT */
+/*  PDT */
 class Extract_DataType {
 	public:
 		static void ExtractData(const char*& lsrc, int& data, int& size) {
@@ -1286,7 +1286,7 @@ class Extract_DataType {
 		static int IsRev(void) { return 0; }
 };
 
-/* PDT11 の第一段階変換 */
+/* PDT11 膃筝罧級紊 */
 class Extract_DataType_PDT11 {
 	private:
 		int* index_table;
@@ -1305,7 +1305,7 @@ class Extract_DataType_PDT11 {
 		static int IsRev(void) { return 0; }
 };
 
-/* マスク用 */
+/* 鴻 */
 class Extract_DataType_Mask {
 	public:
 		void ExtractData(const char*& lsrc, int& data, int& size) {
@@ -1321,7 +1321,7 @@ class Extract_DataType_Mask {
 		static int IsRev(void) { return 0; }
 };
 
-/* 書庫用 */
+/* 後昆 */
 class Extract_DataType_ARC {
 	public:
 		void ExtractData(const char*& lsrc, int& data, int& size) {
@@ -1337,7 +1337,7 @@ class Extract_DataType_ARC {
 		static int IsRev(void) { return 0; }
 };
 
-/* avg2000 のシナリオ用 */
+/* avg2000 激 */
 class Extract_DataType_SCN2k {
 	public:
 		void ExtractData(const char*& lsrc, int& data, int& size) {
@@ -1353,7 +1353,7 @@ class Extract_DataType_SCN2k {
 		static int IsRev(void) { return 1; }
 };
 
-/* ReadLive の type0 */
+/* ReadLive  type0 */
 class Extract_DataType_G00Type0 {
 	public:
 		static void ExtractData(const char*& lsrc, int& data, int& size) {
@@ -1385,7 +1385,7 @@ bool PDTCONV::Read(char* image) {
 		if (! Read_PDT11(image)) return false;
 	}
 	if (! is_mask) return true;
-	// マスク読み込み
+	// 鴻茯粋昭
 	int mask_pt = read_little_endian_int(data + 0x1c);
 	char* buf = new char[width*height+1024];
 	const char* src = data + mask_pt;
@@ -1452,8 +1452,8 @@ bool PDTCONV::Read_PDT11(char* image) {
 	return true;
 }
 
-/* dest は dest_end よりも 256 byte 以上先まで
-** 書き込み可能であること。
+/* dest  dest_end  256 byte 篁ヤ障
+** 吾莨若水純с
 */
 void ARCINFO::Extract(char*& dest_start, char*& src_start, char* dest_end, char* src_end) {
 	const char* src = src_start;
@@ -1468,12 +1468,12 @@ void ARCINFO::Extract2k(char*& dest_star
 }
 
 bool ARCINFO_AVG32::ExecExtract(void) {
-	// ヘッダのチェック
+	// с
 	if (strncmp(data, "PACK", 4) != 0) return false;
 	if (read_little_endian_int(data+8) != info.filesize) return false;
 	if (read_little_endian_int(data+12) != info.arcsize) return false;
 
-	// ファイルを展開する
+	// <ゃ絮
 	char* ret_data = new char[info.filesize+1024];
 
 	const char* s = data + 0x10;
@@ -1510,10 +1510,10 @@ bool ARCINFO2k::ExecExtract(void) {
 	char* ret_data = new char[info.filesize + 1024];
 	char* decoded_data = new char[info.arcsize + 1024];
 	
-	/* header のコピー */
+	/* header 潟 */
 	memcpy(ret_data, data, info.private_data);
 
-	/* まず、xor の暗号化を解く */
+	/* 障xor 垸茹c */
 	const char* s; const char* send;
 	char* d; char* dend;
 
@@ -1528,7 +1528,7 @@ bool ARCINFO2k::ExecExtract(void) {
 	if (info.filesize == info.arcsize) {
 		memcpy(ret_data+info.private_data, decoded_data + info.private_data + 8, info.arcsize - info.private_data - 8);
 	} else {
-		/* 圧縮されているなら、それを展開 */
+		/* х軒絮 */
 		s = (const char*)(decoded_data + info.private_data + 8);
 		send = (const char*)(decoded_data + info.arcsize);
 		d = ret_data + info.private_data;
@@ -1552,13 +1552,13 @@ bool G00CONV::Read_Type0(char* image) {
 	int uncompress_size = read_little_endian_int(data+9);
 	char* uncompress_data = new char[uncompress_size+1024];
 
-	// まず展開
+	// 障絮
 	const char* src = data + 13;
 	const char* srcend = data + datalen;
 	char* dest = uncompress_data;
 	char* dstend = uncompress_data + uncompress_size;
 	while(lzExtract(Extract_DataType_G00Type0(), char(), src, dest, srcend, dstend)){};
-	// image にコピー
+	// image 潟
 	CopyRGB(image, uncompress_data);
 	delete[] uncompress_data;
 	return true;
@@ -1569,7 +1569,7 @@ bool G00CONV::Read_Type1(char* image) {
 	int uncompress_size = read_little_endian_int(data+9) + 1;
 	char* uncompress_data = new char[uncompress_size + 1024];
 
-	// まず、展開
+	// 障絮
 	const char* src = data + 13;
 	const char* srcend = data + datalen;
 	char* dest = uncompress_data;
@@ -1598,7 +1598,7 @@ bool G00CONV::Read_Type1(char* image) {
 
 bool G00CONV::Read_Type2(char* image) {
 	memset(image, 0, width*height*4);
-	/* 分割領域を得る */
+	/* 臥緇 */
 	int region_deal = read_little_endian_int(data+5);
 	REGION* region_table = new REGION[region_deal];
 
@@ -1612,7 +1612,7 @@ bool G00CONV::Read_Type2(char* image) {
 		head += 24;
 	}
 
-	// 展開
+	// 絮
 	int uncompress_size = read_little_endian_int(head+4);
 	char* uncompress_data = new char[uncompress_size + 1024];
 
@@ -1622,7 +1622,7 @@ bool G00CONV::Read_Type2(char* image) {
 	char* destend = uncompress_data + uncompress_size;
 	while(lzExtract(Extract_DataType_SCN2k(), char(), src, dest, srcend, destend)){};
 
-	/* region_deal2 == region_deal のはず……*/
+	/* region_deal2 == region_deal */
 	int region_deal2 = read_little_endian_int(uncompress_data);
 	if (region_deal > region_deal2) region_deal = region_deal2;
 
@@ -1633,7 +1633,7 @@ bool G00CONV::Read_Type2(char* image) {
 		srcend = (const char*)(uncompress_data + offset + length);
 		while(src < srcend) {
 			int x, y, w, h;
-			/* コピーする領域を得る */
+			/* 潟若緇 */
 			x = read_little_endian_short(src);
 			y = read_little_endian_short(src+2);
 			w = read_little_endian_short(src+6);
@@ -1670,7 +1670,7 @@ void G00CONV::Copy_32bpp(char* image, in
 
 void GRPCONV::CopyRGBA_rev(char* image, const char* buf) {
 	int mask = is_mask ? 0 : 0xff000000;
-	/* 色変換を行う */
+	/* 峨茵 */
 	int len = width * height;
 	int i;
 	unsigned char* s = (unsigned char*)buf;
@@ -1686,7 +1686,7 @@ void GRPCONV::CopyRGBA(char* image, cons
 		CopyRGB(image, buf);
 		return;
 	}
-	/* 色変換を行う */
+	/* 峨茵 */
 	int len = width * height;
 	int i;
 	int* outbuf = (int*)image;
@@ -1697,7 +1697,7 @@ void GRPCONV::CopyRGBA(char* image, cons
 }
 
 void GRPCONV::CopyRGB(char* image, const char* buf) {
-	/* 色変換を行う */
+	/* 峨茵 */
 	int len = width * height;
 	int i;
 	unsigned char* s = (unsigned char*)buf;
@@ -1914,7 +1914,7 @@ void JPEGCONV::SetupSrc(struct jpeg_deco
 
 #endif /* HAVE_LIBJPEG */
 BMPCONV::BMPCONV(const char* _inbuf, int _inlen, const char* _filename) {
-	/* データから情報読み込み */
+	/* 若帥沿粋昭 */
 	int w = read_little_endian_int(_inbuf + 0x12);
 	int h = read_little_endian_int(_inbuf + 0x16);
 	if (h < 0) h = -h;
@@ -1926,7 +1926,7 @@ BMPCONV::BMPCONV(const char* _inbuf, int
 bool BMPCONV::Read(char* image) {
 	if (data == NULL) return false;
 
-	/* マスクのチェック */
+	/* 鴻с */
 	int bpp = read_little_endian_short(data+0x1c);
 	int h = read_little_endian_int(data + 0x16);
 	int dsz = read_little_endian_int(data + 0x22);
--- a/system/file.h
+++ b/system/file.h
@@ -1,8 +1,8 @@
-/*  file.h  : KANON の圧縮ファイル・PDT ファイル(画像ファイル)の展開の
- *            ためのクラス
- *     class FileSearcher : ファイルの管理を行う
- *     class ARCINFO : 書庫ファイルの中の1つのファイルを扱うクラス
- *     class PDTCONV : PDT ファイルの展開を行う。
+/*  file.h  : KANON х軒<ゃPDT <ゃ鐚糸<ゃ鐚絮
+ *            
+ *     class FileSearcher : <ゃ膊∞茵
+ *     class ARCINFO : 後昆<ゃ筝鐚ゃ<ゃ宴
+ *     class PDTCONV : PDT <ゃ絮茵
  */
 
 /*
@@ -88,21 +88,21 @@ static int write_little_endian_short(cha
 
 /*********************************************
 **  FileSearcher:
-**	書庫ファイル/ディレクトリを含め、
-**	全ファイルの管理を行う。
+**	後昆<ゃ鐚c
+**	<ゃ膊∞茵
 **
-**	最初に、設定ファイルからファイルの種類ごとに
-**	実際に入っているディレクトリ、書庫を設定する
+**	荐絎<ゃ<ゃ腮蕁
+**	絎ャcc後昆荐絎
 **
-**	以降はFind() メソッドで実際のファイルの内容を得る
+**	篁ラFind() <純у<ゃ絎鴻緇
 **
 */
 
-/* ARCFILE と DIRFILE はファイル種類ごとの情報 */
+/* ARCFILE  DIRFILE <ゃ腮蕁 */
 class ARCFILE;
 class DIRFILE;
 class SCN2kFILE;
-/* ARCINFO はファイルを読み込むために必要 */
+/* ARCINFO <ゃ茯粋昭綽荀 */
 class ARCINFO;
 class ARCFILE_ATOM;
 
@@ -131,9 +131,9 @@ class FileSearcher {
 	public:
 #define TYPEMAX 14
 		enum FILETYPE {
-			/* 一応、0 - 15 まで reserved */
-			ALL = 1, /* dat/ 以下のファイル(デフォルトの検索先) */
-			ROOT= 2, /* ゲームのインストールディレクトリ */
+			/* 筝綽0 - 15 障 reserved */
+			ALL = 1, /* dat/ 篁ヤ<ゃ(罎膣√) */
+			ROOT= 2, /* 蚊若ゃ潟鴻若c */
 			PDT = 3, /* default: PDT/ */
 			SCN = 4, /* default: DAT/SEEN.TXT */
 			ANM = 5, /* default: DAT/ALLANM.ANL */
@@ -152,19 +152,19 @@ class FileSearcher {
 		static FileSearcher* GetInstance(void);
 		static void Quit(void);
 
-		/* 初めにゲームのデータがあるディレクトリを設定する必要がある */
+		/* 蚊若若帥c荐絎綽荀 */
 		int InitRoot(char* root);
-		/* ファイルの型ごとの情報をセットする */
+		/* <ゃ宴祉 */
 		void SetFileInformation(FILETYPE type, ARCTYPE is_arc,
 			char* filename);
-		/* 複数のファイルを一つの型に関連づける */
+		/* 茲違<ゃ筝ゃ∫cャ */
 		void AppendFileInformation(FILETYPE type, ARCTYPE is_arc,
 			char* filename);
 		ARCFILE* MakeARCFILE(ARCTYPE tp, const char* filename);
-		/* fname で指定された名前のファイルを検索 */
+		/* fname ф絎<ゃ罎膣 */
 		class ARCINFO* Find(FILETYPE type, const char* fname, const char* ext=0);
-		/* ある種類のファイルをすべてリストアップ
-		** 末尾は NULL pointer
+		/* 腮蕁<ゃ鴻鴻≪
+		** 絨障 NULL pointer
 		*/
 		char** ListAll(FILETYPE type);
 
@@ -173,14 +173,14 @@ class FileSearcher {
 		~FileSearcher();
 
 	private:
-		/* InitRoot() の時点で初期化される変数 */
+		/* InitRoot() 鴻у紊 */
 		DIRFILE* root_dir;
 		DIRFILE* dat_dir;
 		ARCFILE* searcher[TYPEMAX];
-		/* ファイルの存在位置の information */
+		/* <ゃ絖篏臀 information */
 		ARCTYPE is_archived[TYPEMAX];
 		const char* filenames[TYPEMAX];
-		/* デフォルトの information */
+		/*  information */
 		static ARCTYPE default_is_archived[TYPEMAX];
 		static const char* default_dirnames[TYPEMAX];
 		static FileSearcher *_singleton;
@@ -188,14 +188,14 @@ class FileSearcher {
 
 class ARCINFO {
 	protected:
-		/* ファイルそのものの情報 */
+		/* <ゃ */
 		ARCFILE_ATOM& info;
 		char* arcfile;
-		/* mmap している場合、その情報 */
+		/* mmap 翫 */
 		bool use_mmap;
 		char* mmapped_memory;
 		int fd;
-		/* ファイル内容の入っているバッファ */
+		/* <ゃ絎鴻ャc */
 		const char* data;
 
 	protected:
@@ -205,18 +205,18 @@ class ARCINFO {
 
 		virtual bool ExecExtract(void);
 	public:
-		/* dest は256byte 程度の余裕があること */
+		/* dest 256byte 腮綺篏茖 */
 		static void Extract(char*& dest, char*& src, char* destend, char* srcend);
 		static void Extract2k(char*& dest, char*& src, char* destend, char* srcend);
 		virtual ~ARCINFO();
-		/* 必要なら Read 前に呼ぶことで処理を分割できる */
+		/* 綽荀 Read 若吟у蚊с */
 		int Size(void) const;
-		char* CopyRead(void); /* Read() して内容のコピーを返す */
+		char* CopyRead(void); /* Read() 絎鴻潟若菴 */
 		const char* Read(void);
-		/* ファイルが regular file の場合、ファイル名を帰す */
-		/* そうでないなら 0 を帰す */
+		/* <ゃ regular file 翫<ゃ絽違 */
+		/* с 0 絽違 */
 		const char* Path(void) const;
-		FILE* OpenFile(int* length=0) const; /* 互換性のため:raw file の場合、ファイルを開く */
+		FILE* OpenFile(int* length=0) const; /* 篋с鐚raw file 翫<ゃ */
 };
 
 class GRPCONV {
--- a/system/file_impl.h
+++ b/system/file_impl.h
@@ -54,8 +54,8 @@ class ARCFILE {
 		int list_point;
 		std::vector<ARCFILE_ATOM> arc_atom;
 		typedef std::vector<ARCFILE_ATOM>::iterator iterator;
-		ARCFILE* next; /* FILESEARCH の一つの型が複数の ARCFILE を持つとき、リストをつくる */
-		/* arcname に指定されたファイル/ディレクトリの内容チェック */
+		ARCFILE* next; /* FILESEARCH 筝ゃ茲違 ARCFILE ゃ鴻ゃ */
+		/* arcname 絎<ゃ鐚c絎鴻с */
 		virtual int CheckFileDeal(void);
 		virtual void ListupFiles(int fname_len);
 		virtual ARCINFO* MakeARCINFO(ARCFILE_ATOM&);
@@ -66,9 +66,9 @@ class ARCFILE {
 		ARCFILE* Next(void) { return next; }
 		void Init(void);
 		virtual ~ARCFILE();
-		/* ファイル検索 */
+		/* <ゃ罎膣 */
 		class ARCINFO* Find(const char* fname, const char* ext);
-		/* ファイルリストの出力 */
+		/* <ゃ鴻阪 */
 		int Deal(void) { Init(); return arc_atom.size(); }
 		void ListFiles(FILE* out);
 		void InitList(void);
@@ -88,7 +88,7 @@ class SCN2kFILE : public ARCFILE {
 class CattleyaFILE : public ARCFILE {
 	private:
 		bool is_compress;
-		/* header の Huffman 木構築用 */
+		/* header  Huffman 罕膀 */
 		char* bitbuf;
 		char* bitbuf_end;
 		int ltree[0x400];
@@ -129,8 +129,8 @@ class DIRFILE : public ARCFILE {
 	public:
 		DIRFILE(char* fname) : ARCFILE(fname) {}
 		virtual ~DIRFILE() {}
-		FILE* Open(const char* fname); /* FILE* を開く */
-		char* SearchFile(const char* dirname); /* ファイル検索 */
+		FILE* Open(const char* fname); /* FILE*  */
+		char* SearchFile(const char* dirname); /* <ゃ罎膣 */
 };
 
 class ARCINFO_AVG32 : public ARCINFO {
--- a/system/system_config.cc
+++ b/system/system_config.cc
@@ -1,5 +1,5 @@
 /*  system_config.cc
- *      gameexe.ini ファイルの読み込み
+ *      gameexe.ini <ゃ茯粋昭
  */
 
 /*
@@ -41,16 +41,16 @@ using namespace std;
 # define dprintf(X)
 #endif /* DEBUG_CONFIG */
 
-#define MAXTOKEN 10 /* = で区切られた領域の最大数 */
-#define MAXVARS 32 /* , で区切られた数値の最大数 */
+#define MAXTOKEN 10 /* = у阪紊ф */
+#define MAXVARS 32 /* , у阪医ゃ紊ф */
 
-// 初期化ファイルの読み込み
-/* config は 文字列、数列、その複合など、いろいろな形式がありうる */
-/* 文字列と数列は一般に AyuSys_Config クラスに含める */
+// <ゃ茯粋昭
+/* config  絖医茲綵√ */
+/* 絖医筝 AyuSys_Config 鴻 */
 
 
 /**********************************************************/
-/* とりあえずハッシュ比較付き文字列 */
+/* 激ユ莠篁絖 */
 class HashStr {
 	const char* str;
 	unsigned int hash;
@@ -80,7 +80,7 @@ HashStr::HashStr(const char* s ) {
 	char* new_str = new char[strlen(s)+1];
 	strcpy(new_str, s);
 	str = new_str;
-	/* calc hash... 適当 */
+	/* calc hash... 綵 */
 	int h = strlen(s);
 	while(*s != 0) {
 		h = *s + ((h * (0x9449+*s))>>7);
@@ -101,32 +101,32 @@ HashStr::HashStr(const HashStr& orig) {
 
 /**********************************************************
 **AyuSys_Config_[String | Intlist] :
-** 設定の本体
-**	original : 元設定
-**	old_data : 前回 ClearDiff() したときの設定
-**	new_data : ClearDiff() 以降に設定した内容を保存
-**	データ設定:
-**	Init() : 元設定を作成
-**	Set() : 設定を変更
-**	Get() : 最も新しい設定を得る
+** 荐絎篏
+**	original : 荐絎
+**	old_data :  ClearDiff() 荐絎
+**	new_data : ClearDiff() 篁ラ荐絎絎鴻篆絖
+**	若粋┃絎鐚
+**	Init() : 荐絎篏
+**	Set() : 荐絎紊
+**	Get() : 違荐絎緇
 **
-**	変更の記録:
-**	Diff() : 前回のClearDiff() から変更した内容を得る
-**	DiffLen() : Diff() で必要な文字列長を得る
-**	ClearDiff() : 変更記録を消す
-**	PatchOld() : Diff() で得た記録に基づき、変更前の状態に戻す
-**	PatchNew() : Diff() で得た記録に基づき、変更後の状態に戻す
+**	紊眼荐駕
+**	Diff() : ClearDiff() 紊眼絎鴻緇
+**	DiffLen() : Diff() у荀絖激緇
+**	ClearDiff() : 紊頑蚊羔
+**	PatchOld() : Diff() у荐蚊冴ャ紊翫倶祉
+**	PatchNew() : Diff() у荐蚊冴ャ紊翫倶祉
 **
-**	元設定からの変更の記録:
-**	SetOriginal() : 元設定に戻す
-**	DiffOriginal() : 元設定から現在の設定の変更を得る
-**	DiffOriginalLen() : DiffOriginal() で必要な文字列長を得る
-**	PatchOriginal() : DiffOriginal() で得た記録に基づき、設定を復旧する
+**	荐絎紊眼荐駕
+**	SetOriginal() : 荐絎祉
+**	DiffOriginal() : 荐絎憜荐絎紊眼緇
+**	DiffOriginalLen() : DiffOriginal() у荀絖激緇
+**	PatchOriginal() : DiffOriginal() у荐蚊冴ャ荐絎緇с
 */
 
 /************************************************
 ** AyuSysConfigStringItem
-** 文字列をデータとしてもつ設定項目
+** 絖若帥よ┃絎
 */
 class AyuSysConfigStringItem {
 	char* original_data;
@@ -160,22 +160,22 @@ public:
 			strcpy(new_data, o.new_data);
 		}
 	}
-	/* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */
-	void Init(int deal, const char* str) { /* deal は無視 */
+	/* 荐絎鐚Init уSet у眼Get у眼冴 */
+	void Init(int deal, const char* str) { /* deal ∴ */
 		if (original_data) delete[] original_data;
 		int len = strlen(str);
 		original_data = new char[len+1];
 		strcpy(original_data, str);
 		original_data[len] = '\0';
 	}
-	void Set(int deal, const char* str) { /* deal は無視 */
+	void Set(int deal, const char* str) { /* deal ∴ */
 		if (new_data) delete[] new_data;
 		int len = strlen(str);
 		new_data = new char[len+1];
 		strcpy(new_data, str);
 		new_data[len] = '\0';
 	}
-	const char* Get(int deal) const {/* deal は無視 */
+	const char* Get(int deal) const {/* deal ∴ */
 		if (new_data) return new_data;
 		else if (old_data) return old_data;
 		return original_data;
@@ -186,16 +186,16 @@ public:
 	int Deal(void) const {
 		return 1;
 	}
-	/* オリジナルからの変化の調査 :
-	** DiffOriginal で変化を文字列で取り出し、PatchOriginal で
-	** 変化を反映
+	/* 吾紊茯炊 :
+	** DiffOriginal у絖у冴PatchOriginal 
+	** 紊
 	*/
 	int DiffOriginalLen(void) {
 		if (new_data == NULL) return 0;
 		return strlen(new_data)+1;
 	}
 	void DiffOriginal(string& data) {
-		if (new_data == NULL) { /* あり得ない */
+		if (new_data == NULL) { /* 緇 */
 			fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n");
 			return;
 		}
@@ -263,7 +263,7 @@ public:
 
 /************************************************
 ** AyuSysConfigIntlistItem
-** 数値列をデータとしてもつ設定項目
+** 医ゅ若帥よ┃絎
 */
 class AyuSysConfigIntlistItem {
 	int item_deal;
@@ -300,8 +300,8 @@ public:
 			memcpy(new_data, o.new_data, sizeof(int)*item_deal);
 		}
 	}
-	/* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */
-	void Init(int deal, const int* list) { /* deal は無視 */
+	/* 荐絎鐚Init уSet у眼Get у眼冴 */
+	void Init(int deal, const int* list) { /* deal ∴ */
 		if (original_data) delete[] original_data;
 		original_data = NULL;
 		if (deal <= 0) {
@@ -311,13 +311,13 @@ public:
 		original_data = new int[item_deal];
 		memcpy(original_data, list, sizeof(int)*deal);
 	}
-	void Set(int deal, const int* list) { /* deal は無視 */
+	void Set(int deal, const int* list) { /* deal ∴ */
 		item_deal = deal;
 		if (new_data) delete[] new_data;
 		new_data = new int[item_deal];
 		memcpy(new_data, list, sizeof(int)*item_deal);
 	}
-	const int* Get(int deal) const {/* deal は無視 */
+	const int* Get(int deal) const {/* deal ∴ */
 		if (item_deal == 0) return NULL;
 		if (deal > item_deal) {
 			fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal);
@@ -327,7 +327,7 @@ public:
 		else if (old_data) return old_data;
 		return original_data;
 	}
-	const int* GetOriginal(int deal) const {/* deal は無視 */
+	const int* GetOriginal(int deal) const {/* deal ∴ */
 		if (item_deal == 0) return NULL;
 		if (deal > item_deal) {
 			fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal);
@@ -338,16 +338,16 @@ public:
 	int Deal(void) const {
 		return item_deal;
 	}
-	/* オリジナルからの変化の調査 :
-	** DiffOriginal で変化を文字列で取り出し、PatchOriginal で
-	** 変化を反映
+	/* 吾紊茯炊 :
+	** DiffOriginal у絖у冴PatchOriginal 
+	** 紊
 	*/
 	int DiffOriginalLen(void) {
 		if (new_data == NULL) return 0;
 		return  12 * item_deal + 1;
 	}
 	void DiffOriginal(string& data) {
-		if (new_data == NULL) { /* あり得ない */
+		if (new_data == NULL) { /* 緇 */
 			fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n");
 			return;
 		}
@@ -409,8 +409,8 @@ public:
 
 /************************************************
 ** AyuSysConfigItem
-** データ名 -> データ本体の map と、map 全体に
-** 様々な操作を行うためのメソッド
+** 若水 -> 若炊篏 map map 篏
+** 罕篏茵<純
 */
 
 template<class ItemType, class DataType> class AyuSysConfigItem {
@@ -420,22 +420,22 @@ template<class ItemType, class DataType>
 	maptype data;
 public:
 	void SetOrig(HashStr& name, int deal, const DataType* str) {
-		if (str == NULL) return; /* 無効 */
+		if (str == NULL) return; /* ≦ */
 		data[name].Init(deal, str);
 	}
 	void Set(HashStr& name, int deal, const DataType* new_data) {
-		if (new_data == NULL) return; /* 無効 */
-		/* 設定を検索 */
+		if (new_data == NULL) return; /* ≦ */
+		/* 荐絎罎膣 */
 		mapiterator it = data.find(name);
-		/* 設定が元設定に見つからないなら失敗 */
+		/* 荐絎荐絎荀ゃ紊掩 */
 		if (it == data.end()) {
 			fprintf(stderr,"AyuSysConfigItem::Set : there is no '%s' parameter\n",name.c_str());
 			return;
 		}
-		/* 設定を変更 */
+		/* 荐絎紊 */
 		it->second.Set(deal, new_data);
 	}
-	/* 新しい設定を優先して返す */
+	/* 違荐絎菴 */
 	const DataType* Get(int deal, HashStr& name) const {
 		const_mapiterator it = data.find(name);
 		if (it == data.end()) return NULL;
@@ -451,9 +451,9 @@ public:
 		if (it == data.end()) return NULL;
 		return it->second.Deal();
 	}
-	/* オリジナルからの変化の調査 :
-	** DiffOriginal で変化を文字列で取り出し、PatchOriginal で
-	** 変化を反映
+	/* 吾紊茯炊 :
+	** DiffOriginal у絖у冴PatchOriginal 
+	** 紊
 	*/
 	void DiffOriginal(string& ret_str) {
 		mapiterator it = data.begin();
@@ -510,7 +510,7 @@ public:
 // template AyuSysConfigItem<AyuSysConfigIntlistItem, int>;
 
 /************************************************/
-/* ラッパ */
+/*  */
 struct AyuSysConfigString {
 	AyuSysConfigItem<AyuSysConfigStringItem,char> orig;
 	void Dump(FILE* f) const {
@@ -527,12 +527,12 @@ struct AyuSysConfigIntlist {
 };
 
 /************************************************/
-/* AyuSysConfig クラス */
+/* AyuSysConfig  */
 int AyuSysConfig::SearchParam(const char* name) const{
 	HashStr str(name);
-	if (str_config->orig.Get(1, str)) return 1; /* char* のパラメータ */
-	else if (int_config->orig.Get(1, str)) return 2; /* int のパラメータ */
-	/* XXX.015.XXX の類のキー名を XXX.000.XXX の形に規格化して再検索 */
+	if (str_config->orig.Get(1, str)) return 1; /* char* <若 */
+	else if (int_config->orig.Get(1, str)) return 2; /* int <若 */
+	/* XXX.015.XXX 蕁弱 XXX.000.XXX 綵≪荀弱罎膣 */
 	char name_copy[1024];
 	strncpy(name_copy, name, 1000);
 	name_copy[1000] = 0;
@@ -544,8 +544,8 @@ int AyuSysConfig::SearchParam(const char
 		s++;
 	}
 	HashStr str2(name_copy);
-	if (str_config->orig.Get(1, str2)) return 1; /* char* のパラメータ */
-	else if (int_config->orig.Get(1, str2)) return 2; /* int のパラメータ */
+	if (str_config->orig.Get(1, str2)) return 1; /* char* <若 */
+	else if (int_config->orig.Get(1, str2)) return 2; /* int <若 */
 	else return 0;
 }
 const char* AyuSysConfig::GetParaStr(const char* name) const{
@@ -652,7 +652,7 @@ void AyuSysConfig::SetOrigParamArray(con
 	int_config->orig.SetOrig(str, deal, array);
 }
 void AyuSysConfig::SetOriginal(void) {
-	/* 全ての設定を元に戻す */
+	/* 荐絎祉 */
 	str_config->orig.SetOriginal();
 	int_config->orig.SetOriginal();
 	change_flag = 1;
@@ -674,8 +674,8 @@ void AyuSysConfig::Dump(FILE* f) const {
 }
 
 /************************************************
-** AyuSysConfig のコンストラクタ:
-** 全ての config 項目を初期化する
+** AyuSysConfig 潟潟鴻随
+**  config 
 */
 
 AyuSysConfig * AyuSysConfig::_singleton = NULL;
@@ -703,24 +703,24 @@ AyuSysConfig::AyuSysConfig(void) {
 	str_config = new AyuSysConfigString;
 	int_config = new AyuSysConfigIntlist;
 
-	/****** 文字列 *******/
-	SetOrigParaStr("#WAKUPDT", "GRDAT");	/* 枠、マウスカーソルなどの画像ファイル */
-	SetOrigParaStr("#REGNAME", "xclannad");	/* レジストリ名。セーブファイルの作成に使う */
-	SetOrigParaStr("#CAPTION", "xclannad");	/* ウィンドウのタイトル */
-	SetOrigParaStr("#SAVENAME","SAVE.INI");	/* セーブファイルの名前 */
-	SetOrigParaStr("#SAVETITLE", "This is save file"); /* セーブファイルの先頭の文字列 */
-	SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 使われてないセーブデータの名前 */
-	SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */
-	SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */
+	/****** 絖 *******/
+	SetOrigParaStr("#WAKUPDT", "GRDAT");	/* 鴻若純糸<ゃ */
+	SetOrigParaStr("#REGNAME", "xclannad");	/* 吾鴻祉若<ゃ篏篏帥 */
+	SetOrigParaStr("#CAPTION", "xclannad");	/* c潟帥ゃ */
+	SetOrigParaStr("#SAVENAME","SAVE.INI");	/* 祉若<ゃ */
+	SetOrigParaStr("#SAVETITLE", "This is save file"); /* 祉若<ゃ絖 */
+	SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 篏帥祉若若帥 */
+	SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */
+	SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */
 
-	SetOrigParaStr("#WAKU.000.000.NAME", ""); // テキストウィンドウの窓飾り画像名
-	SetOrigParaStr("#WAKU.000.000.BACK", ""); // テキストウィンドウのテキスト背景画像名
-	SetOrigParaStr("#WAKU.000.000.BTN", ""); // テキストウィンドウのボタン画像名
+	SetOrigParaStr("#WAKU.000.000.NAME", ""); // 鴻c潟腦蕋障糸
+	SetOrigParaStr("#WAKU.000.000.BACK", ""); // 鴻c潟鴻糸
+	SetOrigParaStr("#WAKU.000.000.BTN", ""); // 鴻c潟帥括糸
 
-	SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // マウスカーソルのファイル名
-	SetOrigParaStr("#CURSOR.000.NAME", ""); // リターンカーソルのファイル名
-	SetOrigParaStr("#SELBTN.000.NAME", ""); // 選択肢背景
-	SetOrigParaStr("#SELBTN.000.BACK", ""); // 選択肢背景
+	SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // 鴻若純<ゃ
+	SetOrigParaStr("#CURSOR.000.NAME", ""); // 帥若潟若純<ゃ
+	SetOrigParaStr("#SELBTN.000.NAME", ""); // 御∵
+	SetOrigParaStr("#SELBTN.000.BACK", ""); // 御∵
 
 	char name_str[8] = "#NAME.A";
 	for (i='A'; i<='Z'; i++) {
@@ -728,109 +728,109 @@ AyuSysConfig::AyuSysConfig(void) {
 		SetOrigParaStr(name_str, "");
 	}
 
-	/****** 数値列 *******/
-	SetOrigParam("#CANCELCALL", 2, 0,0); /* キャンセルボタン(右クリック)したときに呼び出されるサブルーチン番号(メニュー) */
-	SetOrigParam("#COM2_TITLE", 1, 1); /* ? */
-	SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 選択肢タイトルの色 */
-	SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* ? */
-	SetOrigParam("#SAVEFILETIME", 1, 24); /* セーブする場所の数 */
-	SetOrigParam("#SEEN_START", 1, 0); /* ゲームを開始するシナリオ番号 */
-	SetOrigParam("#SEEN_SRT", 1, 0); /* ゲームを開始するシナリオ番号(好き好き大好き) */
-	SetOrigParam("#SEEN_MENU",  1, 0); /* メニューのシナリオ番号 */
-	SetOrigParam("#SEEN_TEXT_CURRENT",  1, 0); /* seen.txt を root directory に置くか */
-	SetOrigParam("#FADE_TIME", 1, 40); /* 画面のフェード・アウトの速度 */
-	SetOrigParam("#NVL_SYSTEM",1, 0); /* テキストウィンドウが全画面か否か */
-	SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* テキストウィンドウの色 */
-	SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* テキストウィンドウの範囲 */
-	SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* テキストウィンドウを半透明にするか */
-	SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* テキストウィンドウの位置 */
-	SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 選択ウィンドウの位置 */
-	SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* なにかのウィンドウの位置 */
-	SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* なにかのウィンドウの位置 */
-	SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* なにかのウィンドウの位置 */
-	SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* テキストウィンドウの枠の種類。xkanon 独自設定 */
-	SetOrigParam("#RETN_CONT", 1, 16); /* リターンカーソルの数 */
-	SetOrigParam("#RETN_SPEED",1,100); /* リターンカーソルの動く速度 */
-	SetOrigParam("#RETN_XSIZE", 1, 16); /* リターンカーソルの大きさ */
-	SetOrigParam("#RETN_YSIZE", 1, 16); /* リターンカーソルの大きさ */
-	SetOrigParam("#FONT_SIZE", 1, 26); /* フォントの大きさ */
-	SetOrigParam("#FONT_WEIGHT", 1, 100); /* フォントの weight */
-	SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 文字の大きさ(半角) */
-	SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */
-	SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */
-	SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* テキスト表示速度 */
-	SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* テキスト表示 no wait */
-	SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* テキスト進行オートモード */
-	SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* オートモードでのキー待ち時間 */
+	/****** 医ゅ *******/
+	SetOrigParam("#CANCELCALL", 2, 0,0); /* c潟祉帥(劻)若喝冴泣若括(<ャ) */
+	SetOrigParam("#COM2_TITLE", 1, 1); /* 鐚 */
+	SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 御≪帥ゃ */
+	SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* 鐚 */
+	SetOrigParam("#SAVEFILETIME", 1, 24); /* 祉若贋 */
+	SetOrigParam("#SEEN_START", 1, 0); /* 蚊若紮激 */
+	SetOrigParam("#SEEN_SRT", 1, 0); /* 蚊若紮激(絅純絅純紊уソ) */
+	SetOrigParam("#SEEN_MENU",  1, 0); /* <ャ若激 */
+	SetOrigParam("#SEEN_TEXT_CURRENT",  1, 0); /* seen.txt  root directory 臀 */
+	SetOrigParam("#FADE_TIME", 1, 40); /* 脂≪с若祉≪綺 */
+	SetOrigParam("#NVL_SYSTEM",1, 0); /* 鴻c潟脂≪ */
+	SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* 鴻c潟 */
+	SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* 鴻c潟膀 */
+	SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* 鴻c潟 */
+	SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* 鴻c潟篏臀 */
+	SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 御c潟篏臀 */
+	SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* c潟篏臀 */
+	SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* c潟篏臀 */
+	SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* c潟篏臀 */
+	SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* 鴻c潟腮蕁xkanon 荐絎 */
+	SetOrigParam("#RETN_CONT", 1, 16); /* 帥若潟若純 */
+	SetOrigParam("#RETN_SPEED",1,100); /* 帥若潟若純綺 */
+	SetOrigParam("#RETN_XSIZE", 1, 16); /* 帥若潟若純紊с */
+	SetOrigParam("#RETN_YSIZE", 1, 16); /* 帥若潟若純紊с */
+	SetOrigParam("#FONT_SIZE", 1, 26); /* 潟紊с */
+	SetOrigParam("#FONT_WEIGHT", 1, 100); /* 潟 weight */
+	SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 絖紊с(茹) */
+	SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */
+	SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */
+	SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* 鴻茵腓咲綺 */
+	SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* 鴻茵腓 no wait */
+	SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* 鴻画若≪若 */
+	SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* 若≪若с弱≧ */
 
-	SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 裏画面の数 */
-	SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM データの 8bit -> 16bit 変換を行うか */
-	SetOrigParam("#MUSIC_TYPE",1,0); /* PCM データの種類 */
-	SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* バックログ用のボタン */
-	SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* バックログ用のボタン(左)の位置 */
-	SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* バックログ用のボタン(左)の位置 */
-	SetOrigParam("#MSGBK_MOD",1,0); /* バックログ用のボタンを使用するか */
+	SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 茖脂≪ */
+	SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM 若帥 8bit -> 16bit 紊茵 */
+	SetOrigParam("#MUSIC_TYPE",1,0); /* PCM 若帥腮蕁 */
+	SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* 亥帥 */
+	SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* 亥帥(綏)篏臀 */
+	SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* 亥帥(綏)篏臀 */
+	SetOrigParam("#MSGBK_MOD",1,0); /* 亥帥潟篏睡 */
 
 	SetOrigParam("#WAKU.000.000.TYPE", 1, 5);
-	SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // テキストウィンドウの移動用ボタン位置
-	SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); //    一時消去用ボタン位置
-	SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // スキップ用ボタン位置
-	SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // オート用ボタン位置
-	SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // バックログボタン位置
-	SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(進める)ボタン位置
-	SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(戻る)ボタン位置
-	SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン0位置
-	SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン1位置
-	SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン2位置
+	SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // 鴻c潟腱糸帥割臀
+	SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); //    筝羔サ帥割臀
+	SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // 鴻帥割臀
+	SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // 若帥割臀
+	SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // 違帥割臀
+	SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // 逸蚊鐚帥割臀
+	SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // 逸祉鐚帥割臀
+	SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
+	SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
+	SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
 
-	SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 文字サイズ
-	SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 文字の余裕
-	SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // ウィンドウ内の文字数
-	SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // テキスト位置。3つ目がx で1つ目がyらしい
-	SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 文字に影を付けるか
-	SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // ルビの文字サイズ
-	SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 文字同士の隙間?
-	SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 選択肢の実装方法
-	SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // ウィンドウ位置
-	SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // ウィンドウ色
-	SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // ウィンドウ色
-	/* SELCOM はよくわからんので無視 */
-	SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // ウィンドウを開くときの効果らしい
+	SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 絖泣ゃ
+	SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 絖篏茖
+	SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // c潟絖
+	SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // 鴻篏臀3ょx 1ょy
+	SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 絖綵宴篁
+	SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // 絖泣ゃ
+	SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 絖紕鐚
+	SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 御≪絎茖号
+	SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // c潟篏臀
+	SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // c潟
+	SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // c潟
+	/* SELCOM х∴ */
+	SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // c潟号
 	SetOrigParam("#WINDOW.000.OPEN_ANM_TIME", 1, 500);
-	SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // ウィンドウを閉じるときの効果らしい
+	SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // c潟号
 	SetOrigParam("#WINDOW.000.CLOSE_ANM_TIME", 1, 500);
-	SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 枠の種類
-	SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // ウィンドウ枠移動ボタン使用の可否
-	SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // ウィンドウ枠消去ボタン使用の可否
-	SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // スキップボタン使用の可否
-	SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // スキップボタン使用の可否
-	SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // バックログボタン使用の可否
-	SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // バックログ(進む)ボタン使用の可否
-	SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // バックログ(戻る)ボタン使用の可否
-	SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // その他ボタン0使用の可否
-	SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // その他ボタン1使用の可否
-	SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // その他ボタン2使用の可否
-	SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // 名前ウィンドウを別途使用するか
-	SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 名前フォントのサイズ
-	SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // 名前ウィンドウの文字の位置
-	SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // 名前ウィンドウの幅
-	SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 名前のセンタリングの有無
-	SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // 名前ウィンドウ位置(左下位置らしい)
-	SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // 名前ウィンドウ位置(左下位置らしい)
-	SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 顔ウィンドウ位置(始め2つがx,y、MOJI_POSからの相対位置なのに注意)
-	SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // リターンカーソルの位置
+	SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 腮蕁
+	SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // c潟腱糸帥割戎
+	SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // c潟羔サ帥割戎
+	SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // 鴻帥割戎
+	SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // 鴻帥割戎
+	SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // 違帥割戎
+	SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // 逸蚊鐚帥割戎
+	SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // 逸祉鐚帥割戎
+	SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // 篁帥鰹篏睡
+	SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // 篁帥鰹篏睡
+	SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // 篁帥鰹篏睡
+	SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // c潟ラ篏睡
+	SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 潟泣ゃ
+	SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // c潟絖篏臀
+	SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // c潟綛
+	SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 祉潟帥潟違
+	SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // c潟篏臀鐚綏筝篏臀鐚
+	SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // c潟篏臀鐚綏筝篏臀鐚
+	SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 蕁c潟篏臀(紮鐚ゃx,yMOJI_POS後鞘臀羈)
+	SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // 帥若潟若純篏臀
 
 
-	SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // リターンカーソルの大きさ
-	SetOrigParam("#CURSOR.000.CONT", 1, 50); // リターンカーソルの繰り返し数
-	SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // ブリンクする速さ
+	SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // 帥若潟若純紊с
+	SetOrigParam("#CURSOR.000.CONT", 1, 50); // 帥若潟若純膵違菴
+	SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // 潟
 
 	SetOrigParam("#SELBTN.000.CENTERING", 2, 0, 0);
-	SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 選択肢ウィンドウの位置
-	SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 選択肢ウィンドウの次の位置(相対)
-	SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 文字の大きさ
-	SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 非選択時の文字色
-	SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 選択時の文字色
+	SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 御≪c潟篏臀
+	SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 御≪c潟罨<篏臀鐚後常
+	SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 絖紊с
+	SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 御絖
+	SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 御絖
 
 	SetOrigParam("#COLOR_TABLE.000", 3, 255,255,255);
 	SetOrigParam("#SHAKE.000", 3, 0,0,0);
@@ -850,30 +850,30 @@ AyuSysConfig::~AyuSysConfig(void) {
 }
 
 static int SplitVar(const char* str, int* ret_var, int ret_size) {
-	/* , あるいは ),:( をセパレータとして、-?[0-9]+ の
-	** フォーマットの数値列を読み込む。先頭に (、末尾に ) が付きうる。
-	** (),-[0-9] 以外の文字があったらそこで終了
-	** 得られたデータ数を返す
+	/* ,  ),:( 祉若帥-?[0-9]+ 
+	** 若医ゅ茯粋昭 (絨障 ) 篁
+	** (),-[0-9] 篁ュ絖cх篋
+	** 緇若炊違菴
 	*/
 	if (*str == '(') str++;
 	int i; for (i=0; i<ret_size; i++) {
 		int c; int is_positive = 1;
-		/* セパレータの読み飛ばし */
+		/* 祉若帥茯翠違 */
 		c = *str;
 		if (c == ',' || c == ':') {
 			str++;
 		} else if (c == ')' && str[1] == '(') {
 			str += 2;
 		}
-		/* - を parse */
+		/* -  parse */
 		c = *str;
 		if (c == '-' && isdigit(str[1])) {
 			is_positive = -1; str++;
 		} else if (! isdigit(c)) {
-			return i; /* 異常な文字を見つけた:終了 */
+			return i; /* 医幻絖荀ゃ鐚腟篋 */
 		}
 		int number = 0;
-		/* 数字読み込み */
+		/* 医茯粋昭 */
 		while(isdigit( (c=*str) )) {
 			number *= 10;
 			number += c-'0';
@@ -883,7 +883,7 @@ static int SplitVar(const char* str, int
 	}
 	return i;
 }
-/* 決められた数の引数を得る。-1 ならエラーが生じた */
+/* 羆冴違綣違緇-1 若 */
 static inline int SplitVar(const char* str, int& var1) {
 	if (SplitVar(str, &var1, 1) != 1) return -1;
 	return 0;
@@ -925,17 +925,17 @@ bool AyuSysConfig::LoadInitFile(void)
 	unsigned char* buf_end = buf_orig + size;
 	int line_count = 0;
 	while(buf_orig < buf_end) {
-		/* buf_orig から一行読み込む */
-		/* その際に、
-		** ・頭が # 以外なら次の行までとばす
-		** ・"" 外のスペース、TABを初めとする制御文字 (0x20 以下のASCIIコード)を削除
-		** ・= で区切る。区切りは最大で10個で、tokens に代入される
-		** などの操作を行う
+		/* buf_orig 筝茵茯粋昭 */
+		/* 
+		** 脂 # 篁ュ罨<茵障с違
+		** "" 紊鴻若鴻TAB九勝絖 (0x20 篁ヤASCII潟若)
+		** = у阪阪紊с10сtokens 篁eャ
+		** 篏茵
 		*/
 
-		/* # チェック */
+		/* # с */
 		if (*buf_orig != '#') {
-			/* 次の '\n' まで読み飛ばし */
+			/* 罨< '\n' 障ц翠違 */
 			while(buf_orig < buf_end &&
 				*buf_orig != '\n' && *buf_orig != '\r') buf_orig++;
 			if (buf_orig < buf_end-1 && *buf_orig == '\r' && buf_orig[1] == '\n') buf_orig += 2;
@@ -943,7 +943,7 @@ bool AyuSysConfig::LoadInitFile(void)
 			line_count++;
 			continue;
 		}
-		/* 初期化 */
+		/*  */
 		token_deal = 1;
 		tokens[0] = buf;
 		buf_ptr = NULL;
@@ -951,7 +951,7 @@ bool AyuSysConfig::LoadInitFile(void)
 
 		while(buf_orig < buf_end && buf_ptr < 1023) {
 			if (in_quote) {
-				/* "" の中 */
+				/* "" 筝 */
 				int c = *buf_orig;
 				if (c == '\n' || c == '\r') {
 					break;
@@ -961,13 +961,13 @@ bool AyuSysConfig::LoadInitFile(void)
 					buf[buf_ptr++] = c;
 				}
 				buf_orig++;
-			} else { /* quote されてない */
-				/* 制御文字を読み飛ばす */
+			} else { /* quote  */
+				/* 九勝絖茯翠違 */
 				while(*buf_orig <= 0x20 && buf_orig < buf_end &&
 					*buf_orig != '\n' && *buf_orig != '\r') buf_orig++;
 				int c = *buf_orig;
 				if (c == '\n' || c == '\r') break;
-				/* = なら次の token */
+				/* = 罨< token */
 				if (c == '=') {
 					c = 0;
 					tokens[token_deal++] = buf+buf_ptr+1;
@@ -980,10 +980,10 @@ bool AyuSysConfig::LoadInitFile(void)
 			}
 		}
 		buf[buf_ptr] = '\0';
-		/* 末尾の \r\n を消去 */
+		/* 絨障 \r\n 羔サ */
 		if (buf_orig < buf_end-1 && buf_orig[0] == '\r' && buf_orig[1] == '\n') buf_orig += 2;
 		else if (buf_orig < buf_end && (buf_orig[0] == '\r' || buf_orig[0] == '\n')) buf_orig++;
-		/* 必要なら parse 内容を出力 */
+		/* 綽荀 parse 絎鴻阪 */
 		dprintf(("line %3d ",line_count));
 		for (i=0; i<token_deal; i++) {
 			dprintf(("%d:\"%s\", ",i,tokens[i]));
@@ -994,18 +994,18 @@ bool AyuSysConfig::LoadInitFile(void)
 		}
 
 
-		/* 得られた内容を parse */
+		/* 緇絎鴻 parse */
 
-		/* #NAME=<文字列> */
+		/* #NAME=<絖> */
 		int type = SearchParam(tokens[0]);
-		if (type == 1) { /* #NAME=<文字列> */
+		if (type == 1) { /* #NAME=<絖> */
 			if (token_deal != 2) {
 				dprintf(("Parse error, line %d, %s\n",line_count, tokens[0]));
 				goto parse_error;
 			}
 			SetOrigParaStr(tokens[0], tokens[1]);
 			goto parse_end;
-		} else if (type == 2) { /* #NAME=<数値列> */
+		} else if (type == 2) { /* #NAME=<医ゅ> */
 			if (token_deal != 2) {
 				dprintf(("Parse error, line %d, %s\n",line_count, tokens[0]));
 				goto parse_error;
@@ -1014,14 +1014,14 @@ bool AyuSysConfig::LoadInitFile(void)
 			SetOrigParamArray(tokens[0], number_deal, numbers);
 			goto parse_end;
 		}
-		/* 一般的な設定以外 : cdrom track など */
+		/* 筝荐絎篁ュ : cdrom track  */
 		if (strncmp(tokens[0],"#NAME.", 6) == 0) {
 			if (token_deal != 2) goto parse_error;
 			SetOrigParaStr(tokens[0], tokens[1]);
 			goto parse_end;
 		} else if (strncmp(tokens[0],"#DIRC.",6) == 0) {
 			if (token_deal != 3) goto parse_error;
-			/* ファイル形式の指定 */
+			/* <ゃ綵√絎 */
 			FileSearcher::FILETYPE type;
 			char* name = tokens[0]+6;
 			if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
@@ -1034,11 +1034,11 @@ bool AyuSysConfig::LoadInitFile(void)
 			else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
 			else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE;
 			else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
-			else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */
+			else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
 			if (tokens[2][0] == 'N') { /* directory */
 				file_searcher->SetFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
 				dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
-			} else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */
+			} else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */
 				file_searcher->SetFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
 				dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
 			} else goto parse_error;
@@ -1046,7 +1046,7 @@ bool AyuSysConfig::LoadInitFile(void)
 		}
 		if (strncmp(tokens[0],"#ADRC.",6) == 0) {
 			if (token_deal != 3) goto parse_error;
-			/* ファイル形式の指定 */
+			/* <ゃ綵√絎 */
 			FileSearcher::FILETYPE type;
 			char* name = tokens[0]+6;
 			if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
@@ -1059,14 +1059,14 @@ bool AyuSysConfig::LoadInitFile(void)
 			else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
 			else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE;
 			else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
-			else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */
+			else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
 			if (tokens[2][0] == 'N') { /* directory */
 				file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
 				dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
-			} else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */
+			} else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */
 				file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
 				dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
-			} else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* それ散るアーカイブ */
+			} else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* c≪若ゃ */
 				file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
 				dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
 			} else goto parse_error;
@@ -1074,7 +1074,7 @@ bool AyuSysConfig::LoadInitFile(void)
 		}
 		if (strncmp(tokens[0],"#FOLDNAME.",10) == 0) {
 			if (token_deal != 3) goto parse_error;
-			/* ファイル形式の指定 */
+			/* <ゃ綵√絎 */
 			FileSearcher::FILETYPE type;
 			char* name = tokens[0]+10;
 			if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
@@ -1087,11 +1087,11 @@ bool AyuSysConfig::LoadInitFile(void)
 			else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
 			else if (strcmp(name, "BGM") == 0) type = FileSearcher::BGM;
 			else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
-			else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */
+			else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
 			if (tokens[2][0] == '0') { /* directory */
 				file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
 				dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
-			} else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* アーカイブ */
+			} else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* ≪若ゃ */
 				file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_SCN2k, tokens[2]+2);
 				dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
 			} else goto parse_error;
@@ -1106,7 +1106,7 @@ bool AyuSysConfig::LoadInitFile(void)
 		if (strcmp(tokens[0], "#DSTRACK") == 0) {
 			/* #DSTRACK=00000000-99999000-00782556="filename"   ="name"       */
 			/* #DSTRACK=00000000-99999000-00782556="name"       */
-			/* 第二トークンの3つめのパラメータを得る(繰り返しの時の再生開始位置) */
+			/* 膃篋若潟鐚ゃ<若帥緇鐚膵違菴紮篏臀鐚 */
 			int start_pt = 0;
 			const char* tk1 = strchr(tokens[1], '-');
 			const char* tk2 = NULL;
@@ -1133,14 +1133,14 @@ bool AyuSysConfig::LoadInitFile(void)
 			dprintf(("Set SE %d, name %s\n",atoi(tokens[0]+4), tokens[1]));
 			goto parse_end;
 		}
-		/* 設定項目が見つからなかった */
+		/* 荐絎荀ゃc */
 		dprintf(("Cannot find configuration name: %s\n",tokens[0]));
 	parse_error:
 	parse_end:
 		line_count++;
 	}
 	delete info;
-	/* デフォルトのオプションを指定する */
+	/* 激с潟絎 */
 	// set_game(GetParaStr("#REGNAME"), *this);
 	return true;
 }
--- a/system/system_config.h
+++ b/system/system_config.h
@@ -1,5 +1,5 @@
 /*  system_config.h
- *      gameexe.ini ファイルの読み込み
+ *      gameexe.ini <ゃ茯粋昭
  */
 
 /*
@@ -27,7 +27,7 @@
 
 #include <string>
 
-/* CD Track 名 <-> Track 番号の変換を行う */
+/* CD Track  <-> Track 垩紊茵 */
 class TrackName {
 	private:
 		char** track;
@@ -51,12 +51,12 @@ class TrackName {
 		const char* WaveTrack(char* name);
 		const char* SETrack(int num);
 };
-/* gameexe.ini で設定されるパラメータ */
-/* まず初めに、設定項目を SetOrigPara* でセットする
-** ただし、設定名は255文字以下である必要がある。
+/* gameexe.ini ц┃絎<若 */
+/* 障荐絎 SetOrigPara* с祉
+** 荐絎255絖篁ヤс綽荀
 **
-** SetPara* で設定項目は変更できる
-** また、GetPara* で設定項目を得られる。
+** SetPara* ц┃絎紊眼с
+** 障GetPara* ц┃絎緇
 */
 
 class AyuSysConfig {
@@ -65,10 +65,10 @@ class AyuSysConfig {
 		static void Quit(void);
 
 		bool LoadInitFile(void);
-		/* パラメータを検索する */
-		/* str なら 1, int なら 2, 見つからないなら 0 */
+		/* <若帥罎膣≪ */
+		/* str  1, int  2, 荀ゃ 0 */
 		int SearchParam(const char* name) const;
-		/* パラメータを得る */
+		/* <若帥緇 */
 		const char* GetParaStr(const char* name) const; /* str */
 		int GetParam(const char* name, int deal, ...) const; /* int, error -> return -1, no error -> return 0 */
 		int GetOriginalParam(const char* name, int deal, ...) const; /* int, error -> return -1, no error -> return 0 */
@@ -78,28 +78,28 @@ class AyuSysConfig {
 			return n;
 		}
 		const int* GetParamArray(const char* name, int& deal) const;
-		/* パラメータを変更する */
+		/* <若帥紊眼 */
 		void SetParaStr(const char* name, const char* var); /* str */
 		void SetParam(const char* name, int deal, ...); /* int */
 
-		/* オリジナルの設定関係
-		** SetOriginal : 全ての設定を初めの状態に戻す
-		** DiffOriginal : 初めの状態と現在の状態の変更分を得る
-		** PatchOriginal: DiffOriginal で得た文字列を引数に
-		**   渡す。DiffOriginal 呼び出し時の状態に戻す
+		/* 吾荐絎≫
+		** SetOriginal : 荐絎倶祉
+		** DiffOriginal : 倶憜倶紊翫緇
+		** PatchOriginal: DiffOriginal у絖綣違
+		**   羝<DiffOriginal 若喝冴倶祉
 		*/
 		void SetOriginal(void);
 		void DiffOriginal(std::string&);
 		const char* PatchOriginal(const char*);
-		/* config の内容を表示する */
+		/* config 絎鴻茵腓冴 */
 		void Dump(FILE* f) const;
 
 	private:
-		/* 元設定を行う */
-		/* AyuSys からのみ可能 */
+		/* 荐絎茵 */
+		/* AyuSys 水 */
 		void SetOrigParaStr(const char* name, const char* var); /* str */
 		void SetOrigParam(const char* name, int para_deal, ...); /* int */
-		void SetOrigParamArray(const char* name, int deal, int* array); /* 上とおなじ */
+		void SetOrigParamArray(const char* name, int deal, int* array); /* 筝 */
 		AyuSysConfig(void);
 		~AyuSysConfig();
 
--- a/system/visarc.cc
+++ b/system/visarc.cc
@@ -2,8 +2,8 @@
 #define VERSION "1.00"
 
 /*****************************************
-**	Visual Arts の圧縮書庫ファイルを
-**	展開する
+**	Visual Arts х軒後昆<ゃ
+**	絮
 **
 **	usage : visarc x <arcfile> <file> [<file> ...]
 **		visarc l <arcfile>
@@ -239,12 +239,12 @@ void ExtractPngRgbaGraphic(char* path,ch
 	}
 	if (! masked) {
 		for (int i = 0; i < conv->Width() * conv->Height(); i++) {
-			data[4*i+3] = 0xff;	// 不透明度を最大にする
+			data[4*i+3] = 0xff;	// 筝綺紊с
 		}
 	}
-	if (outpath == NULL) ChangeExt(path,".png", buf); // path をつくる
+	if (outpath == NULL) ChangeExt(path,".png", buf); // path ゃ
 	else fname = outpath;
-	FILE* out = fopen(fname, "wb"); // ファイルを開く
+	FILE* out = fopen(fname, "wb"); // <ゃ
 	if (out == NULL) {
 		fprintf(stderr, "Cannot open raw file : %s\n",buf);
 		delete conv;
@@ -267,7 +267,7 @@ int main(int argc, char* argv[]) {
 		usage(); return -1;
 	}
 	for (i=2; i<argc; i++) {
-		/* option を削る */
+		/* option  */
 		argc--;
 		int j; for (j=i; j<argc; j++) argv[j] = argv[j+1];
 	}
--- a/window/button.cc
+++ b/window/button.cc
@@ -25,15 +25,15 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* r,g,b の基本色で number (0:left 1:right 2:up 3:down)の矢印のビットマップを作成する
-** width/heightのどちらかを-1にすると、それにあわせてスケール
+/* r,g,b 堺蚊 number (0:left 1:right 2:up 3:down)√違篏
+** width/height<-1鴻宴若
 */
 #include <stdlib.h>
 extern char* create_button(int number, int& width, int& height, int r, int g, int b);
 extern char* create_box(int& width, int& height, int r, int g, int b);
 
-// ボタンのbitmap
-// ランレングスで簡易圧縮
+// 帥潟bitmap
+// 潟潟違鴻х亜х軒
 static int buttonleft_cnt = 990;
 static char buttonleft[991] = {
 	0x00,0x10,0x04,0x7e,0x39,0x00,0x22,0x04,0x7f,0x59,0x00,0x1e,0x04,0x81,0x79,0x00,
@@ -379,7 +379,7 @@ static char* extract_button(int number, 
 	char* out = new char[width*height];
 	int outc = 0;
 	int i;
-	// ランレングスの展開
+	// 潟潟違鴻絮
 	for (i=0; i<size; i++) {
 		int c = *(unsigned char*)(data+i);
 		int s = 0;
@@ -396,15 +396,15 @@ static char* extract_button(int number, 
 	return out;
 }
 
-// R,G,B の指定色を基底色に、明るさを変えた色を RGB -> HLS -> RGB 変換で作成する
+// R,G,B 絎蚊阪蚊紊蚊 RGB -> HLS -> RGB 紊т
 struct ButtonColor {
 	int rs[8];
 	int gs[8];
 	int bs[8];
 	int as[8];
-	int* c_min, *c_mid, *c_max; // rgb->hls->rgb変換用。r,g,b を高い順にmax,mid,minに割り当てる
+	int* c_min, *c_mid, *c_max; // rgb->hls->rgb紊r,g,b 蕭max,mid,min蚊綵
 	bool is_gray;
-	int hc, hd, l, s; // h,l,s 系。h 要素は上の c_min|mid|maxにも入る
+	int hc, hd, l, s; // h,l,s 膤祉h 荀膣筝 c_min|mid|maxャ
 	ButtonColor(int _r, int _g, int _b);
 	void SetBrightness1(int n, int c1);
 	void SetBrightness(int c1, int c2, int c3, int c4, int c5);
@@ -419,7 +419,7 @@ ButtonColor::ButtonColor(int r, int g, i
 	}
 	*rs = r; *bs = b; *gs = g;
 	
-	// r,g,b の昇順にmax,mid,minをrs,gs,bsに割り当てる
+	// r,g,b max,mid,minrs,gs,bs蚊綵
 	if (r > g) {
 		if (r > b) { // r = max
 			c_max = rs;
@@ -511,7 +511,7 @@ static void draw_button(char* rdata, int
 	int xadd = width*65536/bwidth;
 	int yadd = height*65536/bheight;
 
-	// 元のビットマップに着色しながら縮小する
+	// 蚊膰絨
 	for (by=0; by<bheight; by++) {
 		ScaleData* d = data + y*width;
 		char* s = bdata + by*bwidth;
@@ -550,16 +550,16 @@ char* create_button(int number, int& wid
 	int bwidth, bheight;
 	char* bdata = extract_button(number, bwidth, bheight);
 	if (bdata == NULL) return NULL;
-	// 拡大率に合わせてwidth,heightをセット
+	// ≦ぇwidth,height祉
 	if (width == -1 && height == -1) width = bwidth, height = bheight;
 	else if (width == -1) width = bwidth * height / bheight;
 	else if (height == -1) height = bheight * width / bwidth;
 	if (width > bwidth) width = bwidth;
 	if (height > bheight) height = bheight;
 
-	// 色を設定する
+	// 蚊荐絎
 	ButtonColor color(r,g,b);
-	// 描画
+	// 
 	char* rdata = (char*)malloc(width*height*4*3);
 	color.SetBrightness(0x60, 0xa0, 0xc0, 0xe0, 0xe0);
 	draw_button(rdata, width, height, bdata, bwidth, bheight, color);
@@ -591,9 +591,9 @@ static void draw_box(char* buf, int widt
 	const int* gs = color.gs;
 	const int* bs = color.bs;
 	const int* as = color.as;
-	// まず、豆腐を書く
+	// 障莟吾
 	drawbox(buf, Rect(0,0,width,height), width, rs[3],gs[3],bs[3],as[3]);
-	// 影
+	// 綵
 	if (height > 2) {
 		drawbox(buf, Rect(0,0,width,kage_w1), width, rs[4], gs[4], bs[4],as[4]);
 		drawbox(buf, Rect(0,height-kage_w1,width,height), width, rs[1], gs[1], bs[1],as[1]);
@@ -612,7 +612,7 @@ static void draw_box(char* buf, int widt
 
 char* create_box(int& width, int& height, int r, int g, int b) {
 	ButtonColor color(r,g,b);
-	// scale のカーソル
+	// scale 若純
 	if (width == -1 && height == -1) width = 32, height = 48;
 	else if (width == -1) width = height*3/2;
 	else if (height == -1) height = width * 3/2;
@@ -622,7 +622,7 @@ char* create_box(int& width, int& height
 	if (kage_w2 <= 1) kage_w2 = 2;
 	
 	char* buf = (char*)malloc(width*height*4*3);
-	// 描画
+	// 
 	color.SetBrightness(0x60, 0xa0, 0xc0, 0xe0, 0xe0);
 	draw_box(buf, width, height, kage_w1, kage_w2, color);
 	color.SetBrightness(0x60, 0xa0, 0xe0, 0xe0, 0xe0);
--- a/window/event.cc
+++ b/window/event.cc
@@ -35,7 +35,7 @@
 
 using namespace std;
 
-bool save_req = false, load_req = false, grpdump_req = false; //  scn2k/scn2k_impl.cc: キーボードからセーブ・ロードできるように
+bool save_req = false, load_req = false, grpdump_req = false; //  scn2k/scn2k_impl.cc: 若若祉若祉若с
 bool pressAreq=false,pressFreq=false,pressDreq=false;
 namespace Event {
 /* Impl: struct Event::Video */
@@ -73,7 +73,7 @@ inline int Video::point_in(int x, int y)
 	else return -1;
 }
 
-/* カーソルの動く順序:上、左の順に準位付け */
+/* 若純綺鐚筝綏羣篏篁 */
 bool operator <(const Video& pos1, const Video& pos2) {
 	if (pos1.region.ty < pos2.region.ty) return true;
 	if (pos1.region.ty == pos2.region.ty) return pos1.region.lx < pos2.region.lx;
@@ -142,11 +142,11 @@ void ContainerImplTime::Delete(Time* del
 
 bool ContainerImplTime::Exec(unsigned int current_time) {
 	if (current_time == Time::NEVER_WAKE) return true;
-	// 呼び出しまでに作製されたitemを追加 
+	// 若喝冴障с篏茖純item菴遵 
 	insert(end(), new_item.begin(), new_item.end());
 	new_item.clear();
 	if (empty()) return true;
-	if (current_time == Time::FRAME_UPDATE) { // ビデオフレームの更新時
+	if (current_time == Time::FRAME_UPDATE) { // 若贋井
 		for (iterator it = begin(); it != end(); it++) {
 			if (! it->valid) continue;
 			
@@ -155,8 +155,8 @@ bool ContainerImplTime::Exec(unsigned in
 				it->instance->Elapsed(prev_execed_time);
 			}
 		}
-	} else { // 時間変化時
-		if (current_time < prev_execed_time) prev_execed_time = 0; /* 時間が一回りして0に戻ったとき */
+	} else { // 紊
+		if (current_time < prev_execed_time) prev_execed_time = 0; /* 筝鐚祉c */
 		for (iterator it = begin(); it != end(); it++) {
 			if (! it->valid) continue;
 			unsigned tm = it->instance->Wakeup();
@@ -166,7 +166,7 @@ bool ContainerImplTime::Exec(unsigned in
 		}
 		prev_execed_time = current_time;
 	}
-	// 処理中に削除された item を実際に削除
+	// 筝ゃ item 絎
 	erase(remove_if(begin(), end(), is_invalid), end());
 	return true;
 }
@@ -209,7 +209,7 @@ class ContainerImplVideo : private vecto
 		void Press(void);
 		void TakeScreenshot(void);
 		iterator cur_pos;
-		Video* cur_item; // 現在のフォーカス位置
+		Video* cur_item; // 憜若剛臀
 		int cur_pressed_x, cur_pressed_y;
 };
 
@@ -319,7 +319,7 @@ void ContainerImplVideo::Motion(int x, i
 	
 	}
 	
-	/* @@@ ドラッグ処理とマウスを押す処理のバッティングで「二回ボタンを押さないと云々」関連のバグの可能性あり */
+	/* @@@ 医鴻若c潟違с篋帥潟若篋∫c違醇с */
 	if (button_pressed & (1<<MOUSE_LEFT)) {
 		if (cur_item) cur_item->Drag(cur_pressed_x, cur_pressed_y, x, y);
 		return;
@@ -386,8 +386,8 @@ bool ContainerImplVideo::Exec(void) {
 	SDL_PumpEvents();
 	while(SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_ALLEVENTS) == 1) {
 		switch(event.type) {
-			case SDL_QUIT: return false; // @@@ なにかやらないと
-			case SDL_ACTIVEEVENT: // なにもしない
+			case SDL_QUIT: return false; // @@@ 
+			case SDL_ACTIVEEVENT: // 
 				// cout<<"active : gain "<<int(event.active.gain)<<", state "<<int(event.active.state)<<endl;
 				break;
 			case SDL_KEYDOWN:
@@ -495,12 +495,12 @@ bool ContainerImplVideo::Exec(void) {
 				// cout << "mouse which "<<int(event.button.which)<<"button "<<int(event.button.button)<<
 				//	"state "<<int(event.button.state)<<"x "<<event.button.x << "y "<<event.button.y<<endl;
 				break;
-			case SDL_VIDEOEXPOSE: // redraw の必要がある?
+			case SDL_VIDEOEXPOSE: // redraw 綽荀鐚
 				// cout<<"expose."<<endl;
 				break;
 		}
 	}
-	// Motion 呼び出しは一回だけ
+	// Motion 若喝冴筝
 	if (is_mouse_motion)
 		Motion(motion_x, motion_y);
 	return true;
@@ -595,9 +595,9 @@ bool Container::presscount(int mask) {
 
 } /* end of namespace Container */
 
-// 問題:
-// z 軸と xy 軸の相互干渉;高速化
-// 移動するウィジット描画の高速化
-// キャッシュ
-// 文字列の一部のみ更新の高速化
-// 「階層 z で x なる領域無効化、y なる領域生成」で良い?>Expose
+// 馹鐚
+// z 荵吾 xy 荵吾娯綛我鐚蕭
+// 腱糸c吾祉蕭
+// c激
+// 絖筝炊贋違蕭
+// 絮 z  x ≦劫y ц鐚鐚Expose
--- a/window/event.h
+++ b/window/event.h
@@ -38,8 +38,8 @@ namespace Event {
 	class Container;
 
 	/*
-	** マウスの press, ドラッグ、in/out を検出できる
-	** focus がある時の left/right/space(==press) のキーを判別できる
+	** 鴻 press, 違in/out 罎冴с
+	** focus  left/right/space(==press) 若ゅャс
 	*/
 	struct Video {
 		public:
@@ -52,7 +52,7 @@ namespace Event {
 			virtual void KeyLeft(void) {}
 			virtual void KeyRight(void) {}
 
-			int point_in(int x, int y); /* z or -1 を返す。大きいほど高いところにある */
+			int point_in(int x, int y); /* z or -1 菴紊с祉蕭 */
 
 			Video(Container& container);
 			Video(Container& container, const Rect& init_rect);
@@ -109,9 +109,9 @@ namespace Event {
 			void Delete(Time* item);
 
 			typedef bool (*motionfunc)(int x, int y, void* pointer);
-			void RegisterGlobalMotionFunc(motionfunc, void* pointer); // マウスの移動のたびに呼び出される関数を登録する
+			void RegisterGlobalMotionFunc(motionfunc, void* pointer); // 鴻腱糸潟若喝冴∽違脂蚊
 			void DeleteGlobalMotionFunc(motionfunc, void* pointer);
-			void RegisterGlobalPressFunc(motionfunc, void* pointer); // マウスのクリックのたびに呼び出される関数を登録する
+			void RegisterGlobalPressFunc(motionfunc, void* pointer); // 鴻潟若喝冴∽違脂蚊
 			void DeleteGlobalPressFunc(motionfunc, void* pointer);
 
 			Container(void);
--- a/window/menuitem.cc
+++ b/window/menuitem.cc
@@ -91,7 +91,7 @@ void MenuItem::deactivate(void) {
 
 void MenuItem::pack(void) {
 	int x_min = 0, y_min = 0;
-	if (lb_width == -1) { // 上にラベルを貼る
+	if (lb_width == -1) { // 筝莢若
 		if (lb_left < 0) lb_left = 0;
 		if (lb_bottom < 0) lb_bottom = 0;
 		if (label && label->Pic()) {
@@ -100,7 +100,7 @@ void MenuItem::pack(void) {
 		} else {
 			y_min = lb_bottom;
 		}
-	} else { // 左にラベルを貼る
+	} else { // 綏莢若
 		if (lb_right < 0) lb_right = 0;
 		if (label && label->Pic()) {
 			int label_width = label->Pic()->Width();
@@ -142,7 +142,7 @@ void MenuItem::pack(void) {
 	}
 
 	int x=x_min, y=y_min;
-	// width / height の再割り当て
+	// width / height 蚊綵
 	if (menu_width > width + x_min) {
 		int dif = menu_width - width - x_min;
 		int n = x_size + 1;
@@ -177,7 +177,7 @@ void MenuItem::pack(void) {
 			y += item_height[i];
 		}
 	}
-	// 位置の再割り当て
+	// 篏臀蚊綵
 	it = item.begin();
 	for (i=0; i<y_size; i++) {
 		for (j=0; j<x_size; j++) {
@@ -190,7 +190,7 @@ void MenuItem::pack(void) {
 			it++;
 		}
 	}
-	// 左にラベルがある場合、ラベルの高さ方向のセンタリング
+	// 綏翫蕭劫祉潟帥潟
 	if (label && label->Pic() && lb_width != -1) {
 		int label_width = label->Pic()->Width();
 		int label_height = label->Pic()->Height();
--- a/window/menuitem.h
+++ b/window/menuitem.h
@@ -34,23 +34,23 @@
 #define MenuRadioButton WidMenuRadioButton
 #define MenuScale WidMenuScale
 
-// 必要なもの:
+// 綽荀鐚
 //	
-//	ラベル:surfaceも貼れた方がよいが、まあいいや
-//	ラベル位置:ボタンの上、もしくは右
-//		右の場合:右中央へjustify するので、ラベル全体の幅と右マージンが必要
-//		上の場合:左下へjustify するので、左マージンと下マージンが必要
+//	鐚surface莢若鴻障
+//	篏臀鐚帥潟筝
+//		劻翫鐚劽賢紊justify с篏綛劻若吾潟綽荀
+//		筝翫鐚綏筝justify с綏若吾潟筝若吾潟綽荀
 
-//	内容:x,y個数を指定、その中で中央割り当て
+//	絎刻x,y違絎筝т賢紊蚊綵
 
-//		ラベル位置情報:上なら左下にjustify, 右なら右中央にjustify
-//		なので、下へのマージンと上へのマージン、
-//	ラベル+四角ボタン(チェックボックス)
-//		ボタンが押されるとdeactivateされる
+//		篏臀縁筝綏筝justify, 劻劽賢紊justify
+//		с筝吾若吾潟筝吾若吾潟
+//	鐚茹帥鰹с刻
+//		帥潟若deactivate
 //
-//	ラジオボタン
-//		テキストボタンの集合体。x,y の個数を指定
-//	スケール
+//	吾帥
+//		鴻帥潟篏x,y 違絎
+//	鴻宴若
 
 struct MenuItem : PicWidget {
 	int x_size, y_size;
--- a/window/picture.cc
+++ b/window/picture.cc
@@ -45,7 +45,7 @@ using namespace std;
 void DSurfaceBlitAlpha(Surface* src_o, const Rect& srcrect_o, Surface* dst_o, const Rect& dstrect_o, const unsigned char* alpha, const Rect& alpharect);
 void DSurfaceBlitAdd(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect, unsigned char alpha);
 void DSurfaceBlitMultiply(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect);
-void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // クリア
+void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // 
 #if 0 /* DEBUG */
 #include<sys/types.h>
 #include<sys/time.h>
@@ -101,11 +101,11 @@ PicBase::~PicBase() {
 	if (surface_own != NULL && (attribute & SURFACE_FREE)) root->DeleteSurface(surface_own);
 	if (surface_alpha != NULL && (attribute & ALPHA_FREE)) delete surface_alpha;
 	iterator it;
-	if (parent) { // 自分を親から削除
+	if (parent) { // 荀
 		parent->children.remove(this);
-		// root の update 情報から自分を削除
+		// root  update 宴
 		parent->Root().DeleteUpdatePic(this);
-		// 自分の領域を書き直す
+		// 吾眼
 		Rect old_ppos = rel_pos;
 		parent->QueryAbsPos(old_ppos);
 		parent->ReBlit(old_ppos);
@@ -113,9 +113,9 @@ PicBase::~PicBase() {
 }
 
 void PicBase::Blit(const Rect& rpos_orig) {
-	// 実際に描画する領域を得る
+	// 絎祉緇
 	Rect rpos = rpos_orig;
-	// 親widget上に設定されたclip area 内に描画を限定する
+	// 荀widget筝荐絎clip area 祉絎
 	if (clip_area.width() != 0) {
 		Rect clip = clip_area;
 		clip = child_pos(clip, this);
@@ -123,7 +123,7 @@ void PicBase::Blit(const Rect& rpos_orig
 	}
 	Rect apos = QueryAbsPos(rpos);
 	if (rpos.empty()) return;
-	// 必要に応じて保存、描画
+	// 綽荀綽篆絖
 	if (attribute & CACHE_BACK) root->BlitSurface(root->surface, apos, surface_back, rpos);
 	if (! (attribute & NO_PICTURE)) {
 		rpos.rmove(surface_x, surface_y);
@@ -134,7 +134,7 @@ void PicBase::Blit(const Rect& rpos_orig
 //if (apos.ty < 200) fprintf(stderr,"Blit: %p : (%d,%d,%d,%d) -> (%d,%d,%d,%d)\n",surface_own,rpos_orig.lx,rpos_orig.ty,rpos_orig.rx,rpos_orig.by,apos.lx,apos.ty,apos.rx,apos.by);
 		root->BlitSurface(surface_own, rpos, surface_alpha, surface_alpha_rect, root->surface, apos, attribute);
 		rpos.rmove(-surface_x, -surface_y);
-	} else if (parent == 0) { // 親がいないなら背景消去の責任をもつ
+	} else if (parent == 0) { // 荀羔サ莢篁祉
 		DSurfaceFill(root->surface, apos, 0, 0, 0);
 	}
 	PicContainer* cur = dynamic_cast<PicContainer*>(this);
@@ -144,7 +144,7 @@ void PicBase::Blit(const Rect& rpos_orig
 }
 
 void PicBase::SimpleBlit(Surface* screen) {
-	// 実際に描画する領域を得る
+	// 絎祉緇
 	Rect rpos(0, 0, rel_pos.width(), rel_pos.height());
 	Rect apos = QueryAbsPos(rpos);
 	if (rpos.empty()) return;
@@ -162,7 +162,7 @@ Rect PicBase::QueryAbsPos(Rect& rpos) {
 	if (parent == NULL) { // root container
 		return rpos;
 	}
-	// 親の座標に変換後、Query する
+	// 荀綺ф紊緇Query 
 	Rect ppos = parent_pos(rpos);
 	Rect apos = parent->QueryAbsPos(ppos);
 	rpos = child_pos(ppos, this);
@@ -200,14 +200,14 @@ void PicBase::ZMove(PicBase* move_to) {
 		fprintf(stderr,"Error: PicBase::ZMove was called with a no-brother picture\n");
 		return;
 	}
-	// move_to と zpos のうち、後ろの方の picture から書きなおす必要がある
+	// move_to  zpos <緇鴻 picture 吾綽荀
 	iterator redraw_zpos = z_pos; redraw_zpos++;
-	if (move_to == ZMOVE_BOTTOM) { // 最背面へ
+	if (move_to == ZMOVE_BOTTOM) { // ≪
 		parent->children.erase(z_pos);
 		parent->children.push_front(this);
 		z_pos = parent->children.begin();
 		redraw_zpos = parent->children.begin();
-	} else if (move_to == ZMOVE_TOP) { // 最前面へ
+	} else if (move_to == ZMOVE_TOP) { // ≪
 		redraw_zpos = z_pos; redraw_zpos++;
 		parent->children.erase(z_pos);
 		parent->children.push_back(this);
@@ -224,7 +224,7 @@ void PicBase::ZMove(PicBase* move_to) {
 	if (! is_hidden_now) {
 		is_cached = false;
 		ReBlit();
-		/* @@@ parent->Blit() と Blit() の違いが分からないので修正 06/12/02
+		/* @@@ parent->Blit()  Blit() т信罩 06/12/02
 		Rect ppos = rel_pos;
 		parent->QueryAbsPos(ppos);
 		parent->ReBlit(ppos);
@@ -272,16 +272,16 @@ bool PicBase::IsParent(PicBase* to) {
 }
 
 void PicBase::show(void) {
-	/* 自分の親がすべて shown か? */
+	/* 荀鴻 shown 鐚 */
 	PicContainer* cur;
 	for (cur = parent; cur != 0; cur = cur->parent)
 		if (cur->is_hidden) break;
-	if (cur != NULL) { // 親が隠れているので表示はしない
+	if (cur != NULL) { // 荀ц;腓冴
 		is_hidden = false;
 		is_hidden_now = true;
 		return;
 	}
-	if (is_hidden == false) return; // すでに表示されているのでなにもしない
+	if (is_hidden == false) return; // с茵腓冴с
 	if (widget != NULL) {
 		widget->activate();
 	}
@@ -330,8 +330,8 @@ void PicBase::SetSurfaceColorKey(int r, 
 
 void PicBase::SetSurfaceAlphaFile(const char* file) {
 
-	/* ファイルを元に alpha 画像を作成する */
-	/* ファイル: パルフェの 'fil' ファイル */
+	/* <ゃ alpha 糸篏 */
+	/* <ゃ鐚 с 'fil' <ゃ */
 	ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, file,"fil");
 	if (info == NULL) return;
 	char* new_alpha = info->CopyRead();
@@ -349,7 +349,7 @@ err_ret:
 	h = sr.height();
 	if (alpha_size < w*h) goto err_ret;
 	int i,j;
-	if ( ((SDL_Surface*)surface_own)->format->Amask == 0) { // mask を surface に繰り込む
+	if ( ((SDL_Surface*)surface_own)->format->Amask == 0) { // mask  surface 膵違莨若
 		Surface* dest = root->NewSurface(w,h, ALPHA_MASK);
 		for (i=0; i<h; i++) {
 			char* a = new_alpha + w*i;
@@ -371,8 +371,8 @@ err_ret:
 		root->DeleteSurface(surface_own);
 		surface_own = dest;
 		SetSurfaceAlpha(0, Rect(0,0));
-	} else { // 外部にマスク作成
-		/* マスクのうち、0xff であるべき部分を画像から判別、変更する */
+	} else { // 紊鴻篏
+		/* 鴻<0xff с鴻糸ゅャ紊眼 */
 		for (i=0; i<h; i++) {
 			char* a = new_alpha + w*i;
 			char* s = (char*)((SDL_Surface*)surface_own)->pixels + ((SDL_Surface*)surface_own)->pitch*i;
@@ -406,7 +406,7 @@ void PicBase::SetSurface(Surface* new_su
 	surface_h = -1;
 
 	if (attribute & FIT_SURFACE) {
-		// surface の大きさに自分の大きさを変更
+		// surface 紊с紊с紊
 		parent->ReBlit(rel_pos);
 		if (surface_own == 0) {
 			rel_pos = Rect(rel_pos.lx, rel_pos.ty);
@@ -488,7 +488,7 @@ PicContainer::~PicContainer() {
 	iterator end = children.end();
 	for (iterator it = children.begin(); it != end; ) {
 		iterator it_next = it; it_next++;
-		if ((*it)->widget != NULL) delete (*it)->widget; // picture にwidget が付属しているなら、そちらをdelete
+		if ((*it)->widget != NULL) delete (*it)->widget; // picture widget 篁絮<delete
 		else delete (*it);
 		it = it_next;
 	}
@@ -502,16 +502,16 @@ void PicContainer::BlitBack(iterator z, 
 
 	Rect ppos = parent_pos(rpos);
 	if (is_hidden_now) goto parent_redraw;
-	// cache されている領域を探す
-	// z自身がキャッシュしていれば、ここで終了
+	// cache 「
+	// z荳c激ャ違х篋
 	if ( ((*z)->attribute & CACHE_BACK) && ( (*z)->is_cached) && (*z)->rel_pos.is_inner(rpos)) {
 		Rect cpos = child_pos(rpos, *z);
 		Rect apos = (*z)->QueryAbsPos(cpos);
 		root->BlitSurface( (*z)->surface_back, cpos, root->surface, apos);
 		return;
 	}
-	// z より下の子がキャッシュ、あるいは SOLID 描画できないか?
-	for (it = z; it != begin;) { // 子がcontainerの場合のチェックは省略
+	// z 筝絖c激ャ SOLID 祉с鐚
+	for (it = z; it != begin;) { // 絖container翫с
 		it--;
 		if ( (*it)->is_hidden_now) continue;
 		if ( (*it)->rel_pos.is_crossed(rpos)) {
@@ -526,7 +526,7 @@ void PicContainer::BlitBack(iterator z, 
 			}
 		}
 	}
-	// 自分自身がキャッシュ、あるいは SOLID 描画できないか?
+	// 荳c激ャ SOLID 祉с鐚
 	if (rel_solid_area.is_inner(ppos)) {
 		goto self_redraw;
 	}
@@ -544,7 +544,7 @@ parent_redraw:
 	}
 	if (is_hidden_now) return;
 self_redraw:
-	BlitSelf(rpos); // 子は描画せず、自分だけ描画
+	BlitSelf(rpos); // 絖祉
 children_redraw:
 	for (; it != z; it++) {
 		if ( (*it)->is_hidden_now) continue;
@@ -586,11 +586,11 @@ void PicContainer::BlitFront(iterator z,
 }
 
 void PicContainer::BlitSelf(Rect rpos) {
-	// 実際に描画する領域を得る
+	// 絎祉緇
 	rpos.intersect(Rect(0, 0, rel_pos.width(), rel_pos.height()));
 	if (rpos.empty()) return;
 	Rect apos = QueryAbsPos(rpos);
-	// 必要に応じて保存、描画
+	// 綽荀綽篆絖
 	if (attribute & CACHE_BACK) root->BlitSurface(root->surface, apos, surface_back, rpos);
 	if (! (attribute & NO_PICTURE)) {
 		rpos.rmove(surface_x, surface_y);
@@ -600,7 +600,7 @@ void PicContainer::BlitSelf(Rect rpos) {
 			rpos.intersect(clip);
 		}
 		root->BlitSurface(surface_own, rpos, surface_alpha, surface_alpha_rect, root->surface, apos, attribute);
-	} else if (parent == NULL) { // 親がいないなら背景消去の責任をもつ
+	} else if (parent == NULL) { // 荀羔サ莢篁祉
 		DSurfaceFill(root->surface, apos, 0, 0, 0);
 	}
 }
@@ -628,7 +628,7 @@ void PicContainer::set_nowhiddenflag(boo
 	}
 }
 
-void PicContainer::RMove(int add_x, int add_y) { // event widget の移動があり得るので子についてもRMoveを呼び出す
+void PicContainer::RMove(int add_x, int add_y) { // event widget 腱糸緇уゃRMove若喝冴
 	PicBase::RMove(add_x, add_y);
 	iterator end = children.end();
 	for (iterator it = children.begin(); it != end; it++) {
@@ -724,7 +724,7 @@ class FileToSurface {
 
 FileToSurface::FileToSurface(const PicRoot& _root) : root(_root) {
 	count = 0;
-	count_max = 32; // キャッシュ量(決め打ち)
+	count_max = 32; // c激ラ鐚羆冴¥
 };
 
 FileToSurface::~FileToSurface() {
@@ -761,7 +761,7 @@ inline Surface* FileToSurface::LoadSurfa
 	Surface* s = NULL;
 	if (conv->Read(mem)) {
 		MaskType is_mask = conv->IsMask() ? ALPHA_MASK : NO_MASK;
-		if (is_mask == ALPHA_MASK) { // alpha がすべて 0xff ならマスク無しとする
+		if (is_mask == ALPHA_MASK) { // alpha 鴻 0xff 鴻<
 			int len = conv->Width()*conv->Height();
 			unsigned int* d = (unsigned int*)mem;
 			int i; for (i=0; i<len; i++) {
@@ -787,12 +787,12 @@ Surface* FileToSurface::Load(string name
 	Surface* surface = LoadSurface(name, mem);
 	if (surface == NULL) return NULL;
 
-	while (count >= count_max) { // count_max 以上のデータを可能なら削除する
+	while (count >= count_max) { // count_max 篁ヤ若帥純ゃ
 		qiterator it;
 		for (it=queue.begin(); it != queue.end(); it++) {
 			if (DeleteData(*it)) break;
 		}
-		if (it == queue.end()) break; // 全データが使用中なら終了
+		if (it == queue.end()) break; // 若帥篏睡筝腟篋
 	}
 	SurfaceIndex* new_index = new SurfaceIndex;
 	new_index->filename = name;
@@ -849,7 +849,7 @@ PicRoot::PicRoot(void) {
 }
 
 PicRoot::~PicRoot() {
-	// if (surface) DeleteSurfaceImpl(surface); // SDL_GetVideoSurface() した surface は開放の必要がないらしい
+	// if (surface) DeleteSurfaceImpl(surface); // SDL_GetVideoSurface()  surface 障綽荀
 	surface = NULL;
 	delete root;
 	delete ftosurface;
@@ -877,7 +877,7 @@ void PicRoot::DeleteUpdatePic(PicBase* p
 }
 
 void PicRoot::ExecUpdate(void) {
-	/* 共通する領域を消去する */
+	/* 演羔サ */
 	sort(update_rects.begin(), update_rects.end(), UpdateItem::less);
 	vector<UpdateItem>::iterator it;
 	vector<UpdateItem>::iterator end = update_rects.end();
@@ -891,12 +891,12 @@ void PicRoot::ExecUpdate(void) {
 		vector<UpdateItem>::iterator jt = it; jt++;
 		for (; jt != end; jt++) {
 			if (apos.is_inner(jt->apos)) {
-				if (jt->pic == pic || jt->pic->IsParent(pic)) { // 親が共通、かつ領域も共通
-					jt->rpos = Rect(0,0); // empty rect をセット
+				if (jt->pic == pic || jt->pic->IsParent(pic)) { // 荀演ら演
+					jt->rpos = Rect(0,0); // empty rect 祉
 					jt->apos = Rect(0,0);
 				}
-			} else if (jt->apos.is_inner(apos)) { // 相手に自分が包含される
-				if (jt->pic == pic || jt->pic->IsParent(pic)) { // 親が共通、かつ領域も共通
+			} else if (jt->apos.is_inner(apos)) { // 御
+				if (jt->pic == pic || jt->pic->IsParent(pic)) { // 荀演ら演
 					it->rpos = Rect(0,0);
 					it->apos = Rect(0,0);
 					break;
@@ -955,7 +955,7 @@ Surface* PicRoot::NewSurface(const char*
 	if (with_mask == COLOR_MASK) {
 		SDL_SetColorKey( (SDL_Surface*)s, SDL_SRCCOLORKEY, *(Uint32*)s->pixels);
 	}
-	/* xkanon の残骸 */
+	/* xkanon 罧薨 */
 	if (strcmp(f, "grdat") == 0)
         	SDL_SetColorKey(s, SDL_SRCCOLORKEY, 0x55aa66);
 	return s;
@@ -1039,7 +1039,7 @@ bool PicRoot::with_mask(Surface* s) {
 void PicRoot::SetWindowCaption(const char* caption) {
 #if USE_X11
 //	SDL_WM_SetCaption(caption, 0);
-	// SDLの関数では2バイト文字をサポートしてくれないので、同等の内容に修正
+	// SDL∽違с2ゃ絖泣若с膈絎鴻篆罩
 	SDL_SysWMinfo info;
 	memset(&info,0,sizeof(info));
 	SDL_VERSION(&(info.version));
--- a/window/picture.h
+++ b/window/picture.h
@@ -44,7 +44,7 @@ namespace Event {
 	class Video;
 }
 
-/* PicBase の内容をイベントと連動させるためのインターフェース */
+/* PicBase 絎鴻ゃ潟eゃ潟帥若с若 */
 class PicAnm {
 	public:
 		typedef std::vector<PicBase*>::iterator iterator;
@@ -104,7 +104,7 @@ class PicBase {
 		**		the latter form is used for 'rel_pos',
 		**		because rel_pos is defined as the relative position to the parent
 		*/
-		Rect QueryAbsPos(Rect& ppos); // この picture 内の rel_pos を表示するのに実際に必要な絶対座標を得る
+		Rect QueryAbsPos(Rect& ppos); //  picture  rel_pos 茵腓冴絎綽荀腟九上婚罔緇
 
 		static Rect child_pos(Rect rpos, PicBase* child) { /* return 'cpos' */
 			rpos.intersect(child->rel_pos);
@@ -129,9 +129,9 @@ class PicBase {
 
 		virtual void RMove(int add_x, int add_y);
 		void Move(int new_rx, int new_ry);
-		#define ZMOVE_TOP ((PicBase*)0xffff00ff) /* 最前面へ */
-		#define ZMOVE_BOTTOM ((PicBase*)0xffff0fff) /* 最背面へ */
-		void ZMove(PicBase* back); // back の前に移動(back と自分は同じ親を持つこと)
+		#define ZMOVE_TOP ((PicBase*)0xffff00ff) /* ≪ */
+		#define ZMOVE_BOTTOM ((PicBase*)0xffff0fff) /* ≪ */
+		void ZMove(PicBase* back); // back 腱糸(back 荀ゃ)
 
 		void SetSurface(Surface* new_surface, int x, int y, int attribute = 0);
 		void SetSurface(const char* new_surface, int x, int y);
@@ -166,8 +166,8 @@ class PicContainer : public PicBase {
 	private:
 		friend class PicBase;
 
-		void BlitBack(iterator z, Rect rpos); // z より後ろの領域を描画
-		void BlitFront(iterator z, Rect rpos); // z を含め、zより前の領域を描画
+		void BlitBack(iterator z, Rect rpos); // z 緇
+		void BlitFront(iterator z, Rect rpos); // z z
 		void BlitChildren(Rect rpos);
 		void BlitSelf(Rect rpos);
 		void BlitSelf(void) {
@@ -212,8 +212,8 @@ struct PicRoot {
 		void ExecUpdate(void);
 		void SetWindowCaption(const char* caption);
 
-		// Surface 操作
-		Surface* NewSurfaceFromRGBAData(int w, int h, char* data, MaskType with_mask) const; // data は malloc されたものであること(SDLの内部仕様)
+		// Surface 篏
+		Surface* NewSurfaceFromRGBAData(int w, int h, char* data, MaskType with_mask) const; // data  malloc с(SDL篁罕)
 		Surface* NewSurface(int w, int h, MaskType with_mask) const;
 		Surface* NewSurface(const char* filename, MaskType with_mask = ALPHA_MASK);
 		Surface* RotZoomSurface(Surface* from, double zoom, double rotate_angle);
@@ -239,7 +239,7 @@ struct PicRoot {
 
 class PicWidget {
 	private:
-		PicBase* pic; /* 本来継承するべきだが、遅延初期化したいので instance */
+		PicBase* pic; /* ョ帥鴻綮九 instance */
 	public:
 		PicWidget(void);
 		virtual ~PicWidget();
--- a/window/render.cc
+++ b/window/render.cc
@@ -172,7 +172,7 @@ void DSurfaceMove(Surface* src_o, const 
 	SDL_Surface* dst = (SDL_Surface*)dst_o;
 	SDL_Surface* src = (SDL_Surface*)src_o;
 
-	if (dst->format->BytesPerPixel != src->format->BytesPerPixel) return; // RGB変換はできない
+	if (dst->format->BytesPerPixel != src->format->BytesPerPixel) return; // RGB紊с
 
 	Rect srcrect(srcrect_o), dstrect(dstrect_o);
 	clip_rect(srcrect, dstrect, dst);
@@ -188,7 +188,7 @@ void DSurfaceMove(Surface* src_o, const 
 	char* smem_end = src_o->mem_end(srcrect);
 	char* dmem_end = dst_o->mem_end(dstrect);
 
-	// メモリに重なりがあり、src が上位側の場合、コピー方向を逆転する
+	// <≪src 筝篏眼翫潟惹劫荵≪
 	if (smem < dmem && dmem < smem_end) {
 		int i,j;
 		for (i=0; i<height; i++) {
@@ -221,7 +221,7 @@ void DSurfaceFillA(Surface* dsto, const 
 	char* dmem = (char*)(dst->pixels) + rect.ty*dbpl + rect.lx*bpp;
 	unsigned int pixel = SDL_MapRGBA(dst->format, r, g, b, 0);
 	unsigned int pixela = SDL_MapRGBA(dst->format, r, g, b, a);
-	a += a>>7; /* 0-256 にする */
+	a += a>>7; /* 0-256  */
 	int i, j;
 	for (i=0; i<height; i++) {
 		char* d = dmem;
@@ -281,7 +281,7 @@ static void blit_line(Uint32* dest, Uint
 	int j;
 	int ax = ax0;
 	const unsigned char* a = alpha + ax0;
-	if (awidth == 1) { //  わりとよくあるので最適化
+	if (awidth == 1) { //  ф
 		for (j=aj0; j < aj1; j++) {
 			blit_pixel(dest++, src++, alpha, use_srcalpha);
 		}
@@ -357,7 +357,7 @@ void DSurfaceBlitAdd(Surface* src_o, con
 	SDL_Surface* dst = (SDL_Surface*)dst_o;
 	SDL_Surface* src = (SDL_Surface*)src_o;
 
-	if (dst->format->BytesPerPixel != src->format->BytesPerPixel) return; // RGB変換はできない
+	if (dst->format->BytesPerPixel != src->format->BytesPerPixel) return; // RGB紊с
 
 	Rect srcrect(srcrect_o), dstrect(dstrect_o);
 	clip_rect(srcrect, dstrect, dst);
@@ -437,7 +437,7 @@ void DSurfaceBlitMultiply(Surface* src_o
 	char* smem = src_o->mem(srcrect);
 
 	SDL_PixelFormat& fmt = *dst->format;
-	/* dst の 0-255 を 0-pixel に変換する(積算) */
+	/* dst  0-255  0-pixel 紊鐚腥膊鐚 */
 	int i;
 	int table1[256], table2[256], table3[256];
 	Uint32 src_pixel = *(Uint32*)smem;
--- a/window/render.h
+++ b/window/render.h
@@ -32,11 +32,11 @@
 #include "surface.h"
 
 Rect DSurfaceRenderText(TextGlyphStream::iterator start, TextGlyphStream::iterator end, const Rect& srcrect,
-						Surface* dst, const Rect& dstrect); // 転損炭族竪
+						Surface* dst, const Rect& dstrect); // 絖
 
-void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // 促俗促棚促蔵
-void DSurfaceFillA(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // 促促足促孫促促促贈促坦促促揃テ棚
-void DSurfaceMove(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect); // 促続促臓
+void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // 
+void DSurfaceFillA(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // 鴻c潟荐絎
+void DSurfaceMove(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect); // 潟
 void DSurfaceBlitAlpha(Surface* src_o, const Rect& srcrect_o, Surface* dst_o, const Rect& dstrect_o, const unsigned char* alpha, const Rect& alpharect);
 void DSurfaceBlitAdd(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect, unsigned char alpha);
 void DSurfaceBlitMultiply(Surface* src_o, const Rect& srcrect_o, Surface* dst_o, const Rect& dstrect_o);
--- a/window/system.cc
+++ b/window/system.cc
@@ -79,12 +79,12 @@ namespace System {
 				old_time = start_time;
 			}
 
-	// 問題:
-	// z 軸と xy 軸の相互干渉;高速化
-	// 移動するウィジット描画の高速化
-	// キャッシュ
-	// 文字列の一部のみ更新の高速化
-	// 「階層 z で x なる領域無効化、y なる領域生成」で良い?>Expose
+	// 馹鐚
+	// z 荵吾 xy 荵吾娯綛我鐚蕭
+	// 腱糸c吾祉蕭
+	// c激
+	// 絖筝炊贋違蕭
+	// 絮 z  x ≦劫y ц鐚鐚Expose
 	/*
 			Uint32 end_time = SDL_GetTicks();
 			Uint32 delay = (end_time-start_time);
@@ -98,7 +98,7 @@ namespace System {
 	void Main::SetCursor(Surface* s, const Rect& r) {
 		if (instance == NULL) return;
 		if (instance->cursor) delete instance->cursor;
-		if (s == NULL) { // カーソル消去
+		if (s == NULL) { // 若純羔サ
 			instance->cursor = NULL;
 		} else if (s == DEFAULT_MOUSECURSOR) {
 			instance->cursor = NULL;
--- a/window/widget.cc
+++ b/window/widget.cc
@@ -142,9 +142,9 @@ MouseCursor::~MouseCursor() {
 
 bool MouseCursor::Motionfunc(int x, int y, void* pointer) {
 	MouseCursor* _this = (MouseCursor*)pointer;
-	// 左上がカーソルポイントの場合
+	// 綏筝若純ゃ潟翫
 	// _this->Pic()->Move(x,y);
-	// 左下がカーソルポイントの場合
+	// 綏筝若純ゃ潟翫
 	_this->Pic()->Move(x,y-_this->Pic()->Height());
 	return true;
 }
@@ -196,7 +196,7 @@ void Button::Toggle(bool new_toggle) {
 		return;
 	}
 	is_toggled = new_toggle;
-	// if (is_in) return; // is_in に関わらずウィジットの表示を変更することにする
+	// if (is_in) return; // is_in ≪c吾茵腓冴紊眼
 	if (is_toggled) {
 		if (nptn > 2)
 			Pic()->SetSurfacePos(sx+sdx*2, sy+sdy*2);
@@ -252,26 +252,26 @@ extern char* create_box(int& width, int&
 
 void Scale::Init(Rect r_orig) {
 	int r=cursor_color.r, g=cursor_color.g, b=cursor_color.b;
-	// 矢印
+	// √
 	int arrow_width = -1;
 	cursor_width = -1;
 	char* button1;
 	char* button2;
 	if (is_vertical) {
-		// 矢印に必要な領域確保
+		// √違綽荀腆坂
 		int arrow_height = r_orig.width();
 		button1 = create_button(2, arrow_height, arrow_width, r, g, b);
 		button2 = create_button(3, arrow_height, arrow_width, r, g, b);
 		if (r_orig.height() < arrow_width*4) {
-			if (r_orig.height() < 8) r_orig.by = r_orig.ty + 8; // 小さすぎる場合は強制変更
+			if (r_orig.height() < 8) r_orig.by = r_orig.ty + 8; // 絨翫綣桁九
 			free( (void*)button1);
 			free( (void*)button2);
 			arrow_width = r_orig.height()/4;
-			// 再割り当て
+			// 蚊綵
 			button1 = create_button(2, arrow_height, arrow_width, r, g, b);
 			button2 = create_button(3, arrow_height, arrow_width, r, g, b);
 		}
-		// 矢印ボタンの作成
+		// √違帥潟篏
 		Surface* a1s = parent->Root().NewSurfaceFromRGBAData(arrow_height, arrow_width*3, button1, ALPHA_MASK);
 		int x = r_orig.lx; int y = r_orig.ty;
 		arrow_up = new Button(container, parent, a1s, 0, 0, 0, arrow_width, 3, Rect(x,y,x+arrow_height,y+arrow_width),1);
@@ -280,32 +280,32 @@ void Scale::Init(Rect r_orig) {
 		x = r_orig.rx - arrow_height; y = r_orig.by - arrow_width;
 		arrow_down = new Button(container, parent, a2s, 0, 0, 0, arrow_width, 3, Rect(x,y,x+arrow_height,y+arrow_width),1);
 		arrow_down->Pic()->SetSurfaceFreeFlag();
-		// picture作成(ボタンの動く領域)
+		// picture篏鐚帥潟鐚
 		Rect r = r_orig;
 		r.ty += arrow_width;
 		r.by -= arrow_width;
 		panel = parent->create_node(r, 0);
 		SetPic(panel);
-		// ボタンの中心線を描画、設定
+		// 帥潟筝綽膩祉荐絎
 		Surface* s = parent->Root().NewSurface(r.width()/2, r.height(), ALPHA_MASK);
 		DSurfaceFill(s, Rect(0,0,r.width()/2,r.height()), 0, 0, 0, 0xff);
 		Pic()->SetSurface(s, -r.width()/4, 0, 0);
 		Pic()->SetSurfaceFreeFlag();
 	} else {
-		// 矢印に必要な領域確保
+		// √違綽荀腆坂
 		int arrow_height = r_orig.height();
 		button1 = create_button(0, arrow_width, arrow_height, r, g, b);
 		button2 = create_button(1, arrow_width, arrow_height, r, g, b);
 		if (r_orig.width() < arrow_width*4) {
-			if (r_orig.width() < 8) r_orig.rx = r_orig.lx + 8; // 小さすぎる場合は強制変更
+			if (r_orig.width() < 8) r_orig.rx = r_orig.lx + 8; // 絨翫綣桁九
 			free( (void*)button1);
 			free( (void*)button2);
 			arrow_width = r_orig.width()/4;
-			// 再割り当て
+			// 蚊綵
 			button1 = create_button(2, arrow_width, arrow_height, r, g, b);
 			button2 = create_button(3, arrow_width, arrow_height, r, g, b);
 		}
-		// 矢印ボタンの作成
+		// √違帥潟篏
 		Surface* a1s = parent->Root().NewSurfaceFromRGBAData(arrow_width, arrow_height*3, button1, ALPHA_MASK);
 		int x = r_orig.lx; int y = r_orig.ty;
 		arrow_up = new Button(container, parent, a1s, 0, 0, 0, arrow_height, 3, Rect(x,y,x+arrow_width,y+arrow_height),1);
@@ -314,13 +314,13 @@ void Scale::Init(Rect r_orig) {
 		x = r_orig.rx - arrow_width; y = r_orig.by - arrow_height;
 		arrow_down = new Button(container, parent, a2s, 0, 0, 0, arrow_height, 3, Rect(x,y,x+arrow_width,y+arrow_height),1);
 		arrow_down->Pic()->SetSurfaceFreeFlag();
-		// picture作成(ボタンの動く領域)
+		// picture篏鐚帥潟鐚
 		Rect r = r_orig;
 		r.lx += arrow_width;
 		r.rx -= arrow_width;
 		panel = parent->create_node(r, 0);
 		SetPic(panel);
-		// ボタンの中心線を描画、設定
+		// 帥潟筝綽膩祉荐絎
 		Surface* s = parent->Root().NewSurface(r.width(), r.height()/2, ALPHA_MASK);
 		DSurfaceFill(s, Rect(0,0,r.width(),r.height()/2), 0, 0, 0, 0xff);
 		Pic()->SetSurface(s, 0, -r.height()/4, 0);
@@ -344,14 +344,14 @@ void Scale::InitCursor(int width_ratio) 
 	if (width_ratio < 0) width_ratio = 0;
 	else if (width_ratio > 1024) width_ratio = 1024;
 	if (is_vertical) {
-		if (width_ratio == 0) cursor_width = Pic()->Width() * 3 / 2; // 幅の1.5倍
+		if (width_ratio == 0) cursor_width = Pic()->Width() * 3 / 2; // 綛1.5
 		else cursor_width = Pic()->Height()*width_ratio/1024;
-		if (cursor_width <= 0) return; // カーソルなし(いいのか?)
+		if (cursor_width <= 0) return; // 若純鐚鐚鐚
 		region = Rect(0, 0, Pic()->Width(), cursor_width);
 	} else { // horizontal
-		if (width_ratio == 0) cursor_width = Pic()->Height() * 3 / 2; // 高さの1.5倍
+		if (width_ratio == 0) cursor_width = Pic()->Height() * 3 / 2; // 蕭1.5
 		else cursor_width = Pic()->Width()*width_ratio/1024;
-		if (cursor_width <= 0) return; // カーソルなし(いいのか?)
+		if (cursor_width <= 0) return; // 若純鐚鐚鐚
 		region = Rect(0, 0, cursor_width, Pic()->Height());
 	}
 
@@ -368,7 +368,7 @@ void Scale::InitCursor(int width_ratio) 
 	cursor->drag_pointer = (void*)this;
 	cursor->show();
 
-	// 矢印等をクリックしたときの移動量計算
+	// √亥腱糸頥膊
 	int bar_width;
 	if (is_vertical) bar_width = Pic()->Height();
 	else bar_width = Pic()->Width();
@@ -479,7 +479,7 @@ TextButton::TextButton(Event::Container&
 	fore(_fore), pressed(_pressed), back(_back)
 {
 	bool rect_changed = false;
-	// まず、テキスト領域の広さを得る
+	// 障鴻綺緇
 	Rect r(r_orig);
 
 	if (text == NULL) text = "";
@@ -489,7 +489,7 @@ TextButton::TextButton(Event::Container&
 	TextStream ts = TextStream::ParseMoji(text, _fore.r , _fore.g, _fore.b, text_size);
 	TextGlyphStream gs = DefaultLayout(text_size)->Layout(ts, width);
 
-	if (r.width() == 0) { // 文字に合わせてウィジット作成
+	if (r.width() == 0) { // 絖c吾篏
 		rect_changed = true;
 		width = gs.width() + text_size;
 		r.rx = r.lx + gs.width();
@@ -502,7 +502,7 @@ TextButton::TextButton(Event::Container&
 	}
 
 	if (rect_changed) {
-		// 大きさ変更
+		// 紊с紊
 		Pic()->SetSurfaceRect(r);
 	}
 
@@ -515,7 +515,7 @@ TextButton::TextButton(Event::Container&
 	y = (Pic()->Height() - gs.height()) / 2;
 
 	//FIXME: (back.a == NULL ?)
-	if (back.a == 0) { // 背景なし、もしくはボタン押の状態のみ背景あり
+	if (back.a == 0) { // 帥恰若倶粋
 		surface = root.NewSurface(r.width(), r.height()*2, ALPHA_MASK);
 		DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0);
 		if (attribute & REVERSE) {
@@ -532,8 +532,8 @@ TextButton::TextButton(Event::Container&
 			DSurfaceRenderText(gs.begin(), gs.end(), Rect(0,0,gs.width(),gs.height()), surface, Rect(x,y+r.height()));
 		}
 		nptn = 2;
-	} else { // ボタン型の背景あり
-		/* ラベル用の Surface を作る */
+	} else { // 帥喝
+		/*  Surface 篏 */
 		width = r.width(); height = r.height();
 		char* box = create_box(width, height, back.r, back.g, back.b);
 		surface = root.NewSurfaceFromRGBAData(r.width(), r.height()*3, box, ALPHA_MASK);
@@ -558,7 +558,7 @@ TextButton::TextButton(Event::Container&
 void TextButton::SetText(const char* text, const Color& _fore, const Color& _pressed, const Color& _back)
 {
 	int width = Pic()->Width(); int height = Pic()->Height();
-	// まず、テキスト領域の広さを得る
+	// 障鴻綺緇
 	if (text == NULL) text = "";
 
 	TextGlyphStream gs = DefaultLayout(text_size)->Layout(text, width);
@@ -575,7 +575,7 @@ void TextButton::SetText(const char* tex
 	surface = NULL;
 
 	//FIXME: (back.a == NULL) ?
-	if (back.a == 0) { // 背景なし
+	if (back.a == 0) { // 
 		surface = root.NewSurface(width, height*2, ALPHA_MASK);
 		DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0);
 		if (attribute & REVERSE) {
@@ -589,7 +589,7 @@ void TextButton::SetText(const char* tex
 		gs.SetReverse(false);
 		nptn = 2;
 	} else {
-		/* ラベル用の Surface を作る */
+		/*  Surface 篏 */
 		char* box = create_box(width, height, _back.r, _back.g, _back.b);
 		surface = root.NewSurfaceFromRGBAData(width, height*3, box, ALPHA_MASK);
 	
@@ -701,7 +701,7 @@ label_wait:
 	cursor_activated = false;
 	if (cursor) cursor->hide();
 	while(cur_pos != gstream.end()) {
-		// スクロールしては次行描画、を繰り返す
+		// 鴻若罨∴祉膵違菴
 		for (scroll_height = CalcScrollHeight(); scroll_height > 0; scroll_height--) {
 			status = SCROLL;
 label_scroll:
@@ -763,7 +763,7 @@ void Text::Start(void) {
 	bottom_pos.clear();
 	layout.Layout(stream, gstream, bottom_pos, pictext->Width()-fontsize/2);
 
-	// height の積算値として bottom_pos を計算
+	// height 腥膊ゃ bottom_pos 荐膊
 	std::vector<int>::iterator it;
 	int pos = 0;
 	for (it = bottom_pos.begin(); it != bottom_pos.end(); it++) {
@@ -783,13 +783,13 @@ void Text::Start(void) {
 }
 
 void Text::DrawText(int& nChar) {
-	// 描画範囲を得る
+	// 紫蚊緇
 	iterator end = gstream.end();
 	iterator it = cur_pos;
-	while(nChar && it != end) { // nChar < 0 なら出来るだけの文字を描画
+	while(nChar && it != end) { // nChar < 0 堺ャ絖
 		if (! (it->flag & TextGlyph::Group)) nChar--;
 		if (it->flag & TextGlyph::LineEnd) {
-			if (bottom_pos[line_number+1] > srcrect.by) { //改行すると画面から出てしまう
+			if (bottom_pos[line_number+1] > srcrect.by) { //壕脂≪冴障
 				it++;
 				if (nChar == 0) nChar = 1;
 				break;
@@ -798,14 +798,14 @@ void Text::DrawText(int& nChar) {
 		}
 		it++;
 	}
-	// 描画する
+	// 祉
 	Rect r = DSurfaceRenderText(cur_pos, it, srcrect, surface, Rect(0,0,0,0));
 	pictext->ReBlit(r);
 	cur_pos = it;
 }
 
 void Text::Scrollup(int& nChar) {
-	if (nChar < 0) { // 一画面分スクロールする
+	if (nChar < 0) { // 筝脂√鴻若
 		DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0);
 		pictext->ReBlit();
 		srcrect = Rect(*surface);
@@ -814,7 +814,7 @@ void Text::Scrollup(int& nChar) {
 		scrolled_count = 0;
 		return;
 	}
-	// スクロール幅を求める
+	// 鴻若綛羆
 	const int max_scroll_count = 8;
 	int dy = bottom_pos[line_number+1] - bottom_pos[line_number];
 	int cur_dy;
@@ -873,7 +873,7 @@ Label::Label(PicContainer* parent, const
 
 	TextGlyphStream gs = DefaultLayout(text_size)->Layout(text, width);
 
-	if (r.width() == 0) { // 文字に合わせてウィジット作成
+	if (r.width() == 0) { // 絖c吾篏
 		width = gs.width();
 		r.rx = r.lx + gs.width();
 	}
@@ -883,7 +883,7 @@ Label::Label(PicContainer* parent, const
 
 	SetPic(parent->create_leaf(r, 0));
 
-	/* ラベル用の Surface を作る */
+	/*  Surface 篏 */
 	surface = parent->Root().NewSurface(r.width(), r.height(), ALPHA_MASK);
 	
 	DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0);
@@ -927,18 +927,18 @@ Dialog::Dialog(Event::Container& contain
 
 	XKFont::HorizLayout& layout = *DefaultLayout(26);
 	int dialog_width = parent->Width() / 2;
-	TextGlyphStream s_ok = layout.Layout("OK", dialog_width);
-	TextGlyphStream s_cancel = layout.Layout("取消", dialog_width);
+	TextGlyphStream s_ok = layout.Layout("鐚鐚", dialog_width);
+	TextGlyphStream s_cancel = layout.Layout("羔", dialog_width);
 	TextGlyphStream s_text = layout.Layout(text, dialog_width);
 
 	Rect r_text(0, 0, s_text.width(), s_text.height());
 	Rect r_ok(0, 0, s_ok.width(), s_ok.height());
 	Rect r_cancel(0, 0, s_cancel.width(), s_cancel.height());
 
-	/* ダイアログボックスの Surface を作る */
+	/* ゃ≪違鴻 Surface 篏 */
 	int dwidth = r_text.width() + (r_text.width()/10)*2 + 6;
 	int dheight = r_text.height() + r_ok.height() + r_cancel.height()*3 + 4;
-	surface_diag = parent->Root().NewSurface(dwidth, dheight, NO_MASK); // alpha なし
+	surface_diag = parent->Root().NewSurface(dwidth, dheight, NO_MASK); // alpha 
 	DSurfaceFill(surface_diag, Rect(*surface_diag), 0xf0, 0xd0, 0xa0);
 	DrawBox(surface_diag, Rect(0,0,dwidth,dheight));
 
@@ -950,20 +950,20 @@ Dialog::Dialog(Event::Container& contain
 	parent->Root().BlitSurface(surface_text, r_text, surface_diag, Rect(x, y, x+r_text.width(), y+r_text.height()));
 	parent->Root().DeleteSurface(surface_text);
 
-	/* panel をつくる */
+	/* panel ゃ */
 	x = (parent->Width()-dwidth)/2;
 	y = (parent->Height()-dheight)/2;
 	SetPic(parent->create_node(Rect(x, y, x+dwidth, y+dheight), 0));
 
-	/* ボタンを作成する */
-	/* f8d8c8 背景(明)*/
-	/* f0d0a0 背景*/
-	/* b08040 枠(明)*/
-	/* 805010 枠*/
-	/* 382018 黒*/
-	/* 9890f8 青*/ 
-	/* dc6448 赤*/
-	/* 各ボタンは左右にボタン幅の 1/4, 上下にボタン幅の 1/4 のマージンを持つ */
+	/* 帥潟篏 */
+	/* f8d8c8 ()*/
+	/* f0d0a0 */
+	/* b08040 鐚)*/
+	/* 805010 */
+	/* 382018 藥*/
+	/* 9890f8 */ 
+	/* dc6448 莎*/
+	/* 帥潟綏劻帥喝 1/4, 筝筝帥喝 1/4 若吾潟 */
 	Rect r_btn(r_ok); r_btn.join(r_cancel);
 	int btn_width = r_btn.width() * 3 / 2;
 	int btn_height = r_btn.height() * 3 / 2;
@@ -1184,8 +1184,8 @@ void AnmAlphaMove::Exec(int count) {
 	if (ptns.empty()) return;
 	if (cur_count != 0 && ptns[cur_count].next_tick > count) return;
 	if (cur_count >= ptns.size()) return;
-	// 次のパターンを探す
-	// count <= it->next_tick なる条件を満たす最後の it を探す
+	// 罨<帥若潟「
+	// count <= it->next_tick >散羣緇 it 「
 	std::vector<Ptn>::iterator it;
 	for (it=ptns.begin()+cur_count; it != ptns.end(); it++) {
 		if (count <= it->next_tick) break;
@@ -1212,7 +1212,7 @@ void AnmAlphaMove::Finish(void) {
 	if (ptns.empty()) return;
 	if (cur_count >= ptns.size() - 1) return;
 	cur_count = ptns.size() - 1;
-	Exec(ptns[cur_count].next_tick); // 最後の pattern の状態にする
+	Exec(ptns[cur_count].next_tick); // 緇 pattern 倶
 }
 
 AnmPtnSolid::AnmPtnSolid(Event::Container& container, PicBase* _pic, const unsigned char* _ptn, const Rect& _alpha_r, int total_time) :
@@ -1288,68 +1288,68 @@ void AnmPtnAlpha::Finish(void) {
 
 /*
 
-Widget の種類
-	Mouse: マウス位置に連動する。Surface と origin が必須
-	Panel : なにも存在しないところに張りつけていく
-		背景張りつけも可能
-		ButtonPanel : 無効化可能。Group の Button がカーソルに入ったら、全Button / Label が「カーソル下」状態になる
-			同一変数を扱うボタンは原則、同一ButtonPanel の下に入ること(同期する。高速化可能)
-			そうでない場合、ボタンの GlobalVariable フラグを立てる必要がある
-		背景種類:Window
-			内部の透明度と枠形を別々に指定可能。枠形は全枠、部分枠どちらの形でも可能
-			(部分枠なら、内部的には上枠、下枠、左右枠と別 Surface で管理する)
+Widget 腮蕁
+	Mouse: 剛臀eSurface  origin 綽
+	Panel : 絖綣泣ゃ
+		綣泣ゃ
+		ButtonPanel : ≦劫純Group  Button 若純ャcButton / Label 若純筝倶
+			筝紊違宴帥潟筝ButtonPanel 筝ャ鐚蕭緒
+			с翫帥潟 GlobalVariable 違腴綽荀
+		腮蕁鐚Window
+			綺綵≪ャ絎純綵≪<綵≪с
+			鐚筝筝綏勄 Surface х∞鐚
 		DragButton
-			Panel 全体をドラッグし、場所変更できるボタン。
-	Button: 無効化>通常>カーソル下>ボタン押下 のpicture / animation
-		Toggle Button にできる(Group化すればRadioButtonにもできる)
-	Label : 無効化>通常>カーソル下 のanimation
-		animation は
-		・上への変化
-		・下への変化
-		・常時変形
-		の3つの形式をもつ。
-		形式は
-		・x / y increment による(全領域と x,y の大きさを指定すると左上から右上、左下、という方へ勝手に領域を変更していく)
-		・色変化(明度変化)。色テーブルを指定する。Surface は alpha のみとする
-			どちらも、一つのラベルに使う時間の長さを指定する
-		・callback による。指定した一定時間以上が立つとCallBack が呼び出され、新たなSurface , origin を指定する。
+			Panel 篏違贋紊眼с帥潟
+	Button: ≦劫鐚絽醐若純筝鐚帥恰寂 picture / animation
+		Toggle Button с(GroupRadioButtonс)
+	Label : ≦劫鐚絽醐若純筝animation
+		animation 
+		私吾紊
+		私吾紊
+		糸幻紊綵
+		鐚ゃ綵√ゃ
+		綵√
+		x / y increment 鐚 x,y 紊с絎綏筝劽綏筝鴻後紊眼鐚
+		肢峨鐚綺紊鐚蚊若絎Surface  alpha 帥
+			<筝ゃ篏帥激絎
+		callback 絎筝絎篁ヤ腴ゃCallBack 若喝冴違Surface , origin 絎
 
-		・Surface は
-			普通の画像
-			文字列(適当に仮想化)
-			画像数値列
-		のいずれか
+		Surface 
+			糸
+			絖鐚綵篁喝鐚
+			糸医ゅ
+		
 	Cursor
-		リターンカーソル。Label の一種。
+		帥若潟若純Label 筝腮
 	Number
-		数字を表示する。フォントの大きさ、もしくは画像数値列
+		医茵腓冴潟紊с糸医ゅ
 	Text
-		テキストを表示する
-		パネルの大きさだけ指定すると適当にやってくれる
-		カーソルの位置(文字の次/最終)を指定すること
-		機能:文字送り速度設定、読み飛ばし設定(常に最高速で押しっぱなし)
-	ProgressBar など
-		バーの長さ、あるいは位置で変数の大きさを示す。
-		Tick, Max を指定、変数の変化には適当に対応できるようにする
-		バーの方向として縦/横。Surface は繰り返しで使う(速度上、32pixel くらいあったほうがいいかも?)
-		バーの代わりにボタンも使える。Surface 指定のメソッドが違うだけ。
-		オプション:バーのどこかをクリックされたとき、そこに移動するかそこに向かって移動するか
-		オプション?:矢印ボタン(いらないか)
+		鴻茵腓冴
+		紊с絎綵c
+		若純篏臀鐚絖罨/腟鐚絎
+		罘緒絖綺荐絎茯翠違荐絎鐚絽吾蕭ф若c宴鐚
+	ProgressBar 
+		若激篏臀у違紊с腓冴
+		Tick, Max 絎紊違紊綵絲上с
+		若劫膰/罔Surface 膵違菴т戎鐚綺筝32pixel c祉鐚鐚
+		若篁c帥潟篏帥Surface 絎<純
+		激с鰹若腱糸c腱糸
+		激с鰹鐚√違帥鰹鐚
 	ScrollBar
-		横/縦。Panel と連動する(専用, ProgressBar の一種として実装)
-		(Panel 側で「見えない部分はdelete, 見える部分は自動で作成」機能をつける?:バックログ)
+		罔/膰Panel e(絨, ProgressBar 筝腮絎茖)
+		(Panel 眼с荀delete, 荀т罘純ゃ鐚鐚逸
 
 	
 	
-メニューの出し方
-	右クリック
-	ボタンを押す
-	上の方、右の方など領域に行くとヌっと出てくる
-メニューモード内
-	ボタンを押して終了
-	マップを作っておき、各メニューに名前を割り振ると二次元に広がったメニューになる
-	名前を割り振ると上に名前リストがでてくる
-	名前を割り振ると横に名前リストが出てくる
+<ャ若冴
+	劻
+	帥潟若
+	筝鴻劻鴻茵c冴
+<ャ若≪若
+	帥潟若腟篋
+	篏c<ャ若蚊篋罨≦綺c<ャ若
+	蚊筝鴻с
+	蚊罔鴻冴
 
 */
 // }
--- a/window/widget.h
+++ b/window/widget.h
@@ -87,7 +87,7 @@ struct Button : public Event::Video, Pic
 	DragFunc drag_func;
 	void* drag_pointer;
 
-	/* 継承 */
+	/* 膓 */
 	void activate(void) { Event::Video::activate();}
 	void deactivate(void) { Event::Video::deactivate();}
 	void SetRegion(const Rect& new_rect) { Event::Video::SetRegion(new_rect);}
@@ -131,11 +131,11 @@ struct Scale : Event::Video, PicWidget {
 		static void PressCursor(void* pointer, Button* from);
 		static void DragCursor(int x_from, int y_from,int x, int y, void* pointer, Button* from);
 
-		// 継承:Event::Video
+		// 膓随Event::Video
 		void Press(void);
 		void Motion(int x, int y);
 
-		/* 継承 : PicWidget */
+		/* 膓 : PicWidget */
 		void activate(void) { Event::Video::activate();}
 		void deactivate(void) { Event::Video::deactivate();}
 		void SetRegion(const Rect& new_rect) { Event::Video::SetRegion(new_rect);}
@@ -167,7 +167,7 @@ struct Text : public Event::Video, Event
 		TimeCursor* cursor;
 		Surface* surface;
 		TextGlyphStream gstream;
-		std::vector<int> bottom_pos; // 行高さ(height)の累計値
+		std::vector<int> bottom_pos; // 茵蕭(height)膣荐
 		XKFont::HorizLayout layout;
 		int fontsize;
 
--- a/xlovesys.cc
+++ b/xlovesys.cc
@@ -28,8 +28,8 @@
 // #define ROOTPATH "/mnt/KEY/CLANNAD"
 // #define ROOTPATH "/home/uenok/pb"
 // #define FONT "msgothic.ttc"
-	/* kochi-mincho-subst.ttf あるいは -*-*-*-r-*--24-*-*-*-*-*-jisx0208.1983-* など */
-	/* TrueType Font は /usr/X11R6/lib/X11/fonts/TrueType/ などに存在する必要がある */
+	/* kochi-mincho-subst.ttf  -*-*-*-r-*--24-*-*-*-*-*-jisx0208.1983-*  */
+	/* TrueType Font  /usr/X11R6/lib/X11/fonts/TrueType/ 絖綽荀 */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -55,7 +55,7 @@ const char key_lb_orig[] = {0x4b, 0x45, 
 const char key_lb_new[] = "KEY\\LittleBusters";
 
 
-extern "C" int main(int argc, char* argv[]); /* SDL.h で定義されるので必要ないはずなんだけど…… */
+extern "C" int main(int argc, char* argv[]); /* SDL.h у臂у荀 */
 
 int main(int argc, char *argv[]) {
 	AyuSysConfig *config = AyuSysConfig::GetInstance();
@@ -116,7 +116,7 @@ int main(int argc, char *argv[]) {
 	FileSearcher::GetInstance()->InitRoot(rootPath);
 	config->LoadInitFile();
 	const char* regname = config->GetParaStr("#REGNAME");
-	if (strcmp(regname, key_lb_orig) == 0) { // "リトルバスターズ! -> LittleBustersに#REGNAMEを変更
+	if (strcmp(regname, key_lb_orig) == 0) { // "鴻帥若削 -> LittleBusters#REGNAME紊
 		config->SetParaStr("#REGNAME", key_lb_new);
 	}
 	if (xor_key == NULL)