diff --git a/dlm.vcxproj b/dlm.vcxproj
index 124dedd..1cdd8c3 100644
--- a/dlm.vcxproj
+++ b/dlm.vcxproj
@@ -16,6 +16,7 @@
+
diff --git a/dlm.vcxproj.filters b/dlm.vcxproj.filters
index 9b341a5..a886b09 100644
--- a/dlm.vcxproj.filters
+++ b/dlm.vcxproj.filters
@@ -6,6 +6,7 @@
+
diff --git a/main.cpp b/main.cpp
index 6496769..e8095b6 100644
--- a/main.cpp
+++ b/main.cpp
@@ -55,6 +55,7 @@ int grap[161][8], mgrap[51];
//文字
void str(const char* c, int a, int b);
+void stri(int id, int a, int b);
//)
@@ -123,7 +124,7 @@ int titem[tmax], txtype[tmax];
//メッセージブロック
int tmsgtm, tmsgtype, tmsgx, tmsgy, tmsgnobix, tmsgnobiy, tmsg;
-void ttmsg(); void txmsg(const char* x, int a);
+void ttmsg(); void txmsg(int x, int a);
//効果を持たないグラ
void eyobi(int xa, int xb, int xc, int xd, int xe, int xf, int xnobia, int xnobib, int xgtype, int xtm);
@@ -203,9 +204,48 @@ const char* xs[31];
long stime;
+// Language
+
+// language string def
+#define JP(id, s) id,
+#define EN(id, s)
+#define CN(id, s)
+enum StringIDs {
+ IDS_EMPTY,
+#include "str.h"
+ IDS_COUNT,
+};
+enum LanguageID {
+ LANG_JP,
+ LANG_EN,
+ LANG_CN,
+ LANG_COUNT,
+};
+
+static const char* string_table[LANG_COUNT][IDS_COUNT];
+static int lang = 0;
+
+void lang_init() {
+ for (int i = 0; i < LANG_COUNT; i++) {
+ for (int id = 0; id < IDS_COUNT; id++) {
+ string_table[i][id] = "";
+ }
+ }
+
+#define EN(id, s) string_table[LANG_EN][id] = s;
+#define JP(id, s) string_table[LANG_JP][id] = s;
+#define CN(id, s) string_table[LANG_CN][id] = s;
+#include "str.h"
+}
+
+void drawlang(int id, int a, int b) {
+ drawstring(a, b, string_table[lang][id]);
+}
+
// プログラムは WinMain から始まります
int main() {
+ lang_init();
graphics_init();
sound_init();
input_init();
@@ -266,14 +306,12 @@ void rpaint() {
//51
setcolor(255, 255, 255);
- if (ntype[t] == 100) {
+ if (ntype[t] == 100)
drawstring(xx[0] / 100 + fma1, xx[1] / 100 + fmb, "51");
- }
-
if (ntype[t] == 101)
- drawstring(xx[0] / 100 + fma1, xx[1] / 100 + fmb, "ゲームクリアー");
+ drawlang(xx[0] / 100 + fma1, xx[1] / 100 + fmb, IDS_2);
if (ntype[t] == 102)
- drawstring(xx[0] / 100 + fma1, xx[1] / 100 + fmb, "プレイしてくれてありがとー");
+ drawlang(xx[0] / 100 + fma1, xx[1] / 100 + fmb, IDS_3);
}
} //t
@@ -878,32 +916,24 @@ void rpaint() {
setc0();
if (mmsgtm >= 1) {
mmsgtm--;
- xs[0] = "";
+ int strid = 0;
- if (mmsgtype == 1) xs[0] = "お、おいしい!!";
- if (mmsgtype == 2) xs[0] = "毒は無いが……";
- if (mmsgtype == 3) xs[0] = "刺さった!!";
- if (mmsgtype == 10) xs[0] = "食べるべきではなかった!!";
- if (mmsgtype == 11) xs[0] = "俺は燃える男だ!!";
- if (mmsgtype == 50) xs[0] = "体が……焼ける……";
- if (mmsgtype == 51) xs[0] = "たーまやー!!";
- if (mmsgtype == 52) xs[0] = "見事にオワタ";
- if (mmsgtype == 53) xs[0] = "足が、足がぁ!!";
- if (mmsgtype == 54) xs[0] = "流石は摂氏800度!!";
- if (mmsgtype == 55) xs[0] = "溶岩と合体したい……";
- //if (mmsgtype==56)xs[0]="";
+ if (mmsgtype == 1) strid = IDS_MSG_1;
+ if (mmsgtype == 2) strid = IDS_MSG_2;
+ if (mmsgtype == 3) strid = IDS_MSG_3;
+ if (mmsgtype == 10) strid = IDS_MSG_10;
+ if (mmsgtype == 11) strid = IDS_MSG_11;
+ if (mmsgtype == 50) strid = IDS_MSG_50;
+ if (mmsgtype == 51) strid = IDS_MSG_51;
+ if (mmsgtype == 52) strid = IDS_MSG_52;
+ if (mmsgtype == 53) strid = IDS_MSG_53;
+ if (mmsgtype == 54) strid = IDS_MSG_54;
+ if (mmsgtype == 55) strid = IDS_MSG_55;
- //if (stagecolor<=1 || stagecolor==3)setc0();
- //if (stagecolor==2)setc1();
-
- //str(xs[0],(ma+mnobia+300)/100,mb/100);
-
- setc0();
- str(xs[0], (ma + mnobia + 300) / 100 - 1, mb / 100 - 1);
- str(xs[0], (ma + mnobia + 300) / 100 + 1, mb / 100 + 1);
+ setfonttype(DX_FONTTYPE_EDGE);
setc1();
- str(xs[0], (ma + mnobia + 300) / 100, mb / 100);
-
+ stri(strid, (ma + mnobia + 300) / 100, mb / 100);
+ setfonttype(DX_FONTTYPE_NORMAL);
} //mmsgtm
@@ -913,78 +943,69 @@ void rpaint() {
if (amsgtm[t] >= 1) {
amsgtm[t]--; //end();
- xs[0] = "";
+ int strid = 0;
- //if (amsgtype[t]==1001)xs[0]="";
- if (amsgtype[t] == 1001) xs[0] = "ヤッフー!!";
- if (amsgtype[t] == 1002) xs[0] = "え?俺勝っちゃったの?";
- if (amsgtype[t] == 1003) xs[0] = "貴様の死に場所はここだ!";
- if (amsgtype[t] == 1004) xs[0] = "二度と会う事もないだろう";
- if (amsgtype[t] == 1005) xs[0] = "俺、最強!!";
- if (amsgtype[t] == 1006) xs[0] = "一昨日来やがれ!!";
- if (amsgtype[t] == 1007) xs[0] = "漢に後退の二文字は無い!!";
- if (amsgtype[t] == 1008) xs[0] = "ハッハァ!!";
+ if (amsgtype[t] == 1001) strid = IDS_AMSG_1001;
+ if (amsgtype[t] == 1002) strid = IDS_AMSG_1002;
+ if (amsgtype[t] == 1003) strid = IDS_AMSG_1003;
+ if (amsgtype[t] == 1004) strid = IDS_AMSG_1004;
+ if (amsgtype[t] == 1005) strid = IDS_AMSG_1005;
+ if (amsgtype[t] == 1006) strid = IDS_AMSG_1006;
+ if (amsgtype[t] == 1007) strid = IDS_AMSG_1007;
+ if (amsgtype[t] == 1008) strid = IDS_AMSG_1008;
+
+ if (amsgtype[t] == 1011) strid = IDS_AMSG_1011;
+ if (amsgtype[t] == 1012) strid = IDS_AMSG_1012;
+ if (amsgtype[t] == 1013) strid = IDS_AMSG_1013;
+ if (amsgtype[t] == 1014) strid = IDS_AMSG_1014;
+ if (amsgtype[t] == 1015) strid = IDS_AMSG_1015;
+ if (amsgtype[t] == 1016) strid = IDS_AMSG_1016;
+ if (amsgtype[t] == 1017) strid = IDS_AMSG_1017;
+ if (amsgtype[t] == 1018) strid = IDS_AMSG_1018;
+
+ if (amsgtype[t] == 1021) strid = IDS_AMSG_1021;
+ if (amsgtype[t] == 1022) strid = IDS_AMSG_1022;
+ if (amsgtype[t] == 1023) strid = IDS_AMSG_1023;
+ if (amsgtype[t] == 1024) strid = IDS_AMSG_1024;
+ if (amsgtype[t] == 1025) strid = IDS_AMSG_1025;
+ if (amsgtype[t] == 1026) strid = IDS_AMSG_1026;
+ if (amsgtype[t] == 1027) strid = IDS_AMSG_1027;
+ if (amsgtype[t] == 1028) strid = IDS_AMSG_1028;
+
+ if (amsgtype[t] == 1031) strid = IDS_AMSG_1031;
+ if (amsgtype[t] == 1032) strid = IDS_AMSG_1032;
+ if (amsgtype[t] == 1033) strid = IDS_AMSG_1033;
+ if (amsgtype[t] == 1034) strid = IDS_AMSG_1034;
+ if (amsgtype[t] == 1035) strid = IDS_AMSG_1035;
+ if (amsgtype[t] == 1036) strid = IDS_AMSG_1036;
+ if (amsgtype[t] == 1037) strid = IDS_AMSG_1037;
+ if (amsgtype[t] == 1038) strid = IDS_AMSG_1038;
- if (amsgtype[t] == 1011) xs[0] = "ヤッフー!!";
- if (amsgtype[t] == 1012) xs[0] = "え?俺勝っちゃったの?";
- if (amsgtype[t] == 1013) xs[0] = "貴様の死に場所はここだ!";
- if (amsgtype[t] == 1014) xs[0] = "身の程知らずが……";
- if (amsgtype[t] == 1015) xs[0] = "油断が死を招く";
- if (amsgtype[t] == 1016) xs[0] = "おめでたい奴だ";
- if (amsgtype[t] == 1017) xs[0] = "屑が!!";
- if (amsgtype[t] == 1018) xs[0] = "無謀な……";
-
- if (amsgtype[t] == 1021) xs[0] = "ヤッフー!!";
- if (amsgtype[t] == 1022) xs[0] = "え?俺勝っちゃったの?";
- if (amsgtype[t] == 1023) xs[0] = "二度と会う事もないだろう";
- if (amsgtype[t] == 1024) xs[0] = "身の程知らずが……";
- if (amsgtype[t] == 1025) xs[0] = "僕は……負けない!!";
- if (amsgtype[t] == 1026) xs[0] = "貴様に見切れる筋は無い";
- if (amsgtype[t] == 1027) xs[0] = "今死ね、すぐ死ね、骨まで砕けろ!!";
- if (amsgtype[t] == 1028) xs[0] = "任務完了!!";
-
- if (amsgtype[t] == 1031) xs[0] = "ヤッフー!!";
- if (amsgtype[t] == 1032) xs[0] = "え?俺勝っちゃったの?";
- if (amsgtype[t] == 1033) xs[0] = "貴様の死に場所はここだ!";
- if (amsgtype[t] == 1034) xs[0] = "身の程知らずが……";
- if (amsgtype[t] == 1035) xs[0] = "油断が死を招く";
- if (amsgtype[t] == 1036) xs[0] = "おめでたい奴だ";
- if (amsgtype[t] == 1037) xs[0] = "屑が!!";
- if (amsgtype[t] == 1038) xs[0] = "無謀な……";
-
- if (amsgtype[t] == 15) xs[0] = "鉄壁!!よって、無敵!!";
- if (amsgtype[t] == 15) xs[0] = "丸腰で勝てるとでも?";
- if (amsgtype[t] == 15) xs[0] = "パリイ!!";
- if (amsgtype[t] == 18) xs[0] = "自業自得だ";
- if (amsgtype[t] == 20) xs[0] = "Zzz";
- if (amsgtype[t] == 21) xs[0] = "ク、クマー";
- if (amsgtype[t] == 24) xs[0] = "?";
- if (amsgtype[t] == 25) xs[0] = "食べるべきではなかった!!";
- if (amsgtype[t] == 30) xs[0] = "うめぇ!!";
- if (amsgtype[t] == 31) xs[0] = "ブロックを侮ったな?";
- if (amsgtype[t] == 32) xs[0] = "シャキーン";
-
- if (amsgtype[t] == 50) xs[0] = "波動砲!!";
- if (amsgtype[t] == 85) xs[0] = "裏切られたとでも思ったか?";
- if (amsgtype[t] == 86) xs[0] = "ポールアターック!!";
-
-
-
- //if (stagecolor<=1 || stagecolor==3)setc0();
- //if (stagecolor==2)setc1();
+ if (amsgtype[t] == 15) strid = IDS_AMSG_15;
+ if (amsgtype[t] == 16) strid = IDS_AMSG_16;
+ if (amsgtype[t] == 17) strid = IDS_AMSG_17;
+ if (amsgtype[t] == 18) strid = IDS_AMSG_18;
+ if (amsgtype[t] == 20) strid = IDS_AMSG_20;
+ if (amsgtype[t] == 21) strid = IDS_AMSG_21;
+ if (amsgtype[t] == 24) strid = IDS_AMSG_24;
+ if (amsgtype[t] == 25) strid = IDS_AMSG_25;
+ if (amsgtype[t] == 30) strid = IDS_AMSG_30;
+ if (amsgtype[t] == 31) strid = IDS_AMSG_31;
+ if (amsgtype[t] == 32) strid = IDS_AMSG_32;
+
+ if (amsgtype[t] == 50) strid = IDS_AMSG_50;
+ if (amsgtype[t] == 85) strid = IDS_AMSG_85;
+ if (amsgtype[t] == 86) strid = IDS_AMSG_86;
if (amsgtype[t] != 31) {
- //str(xs[0],(aa[t]+anobia[t]+300-fx)/100,(ab[t]-fy)/100);
xx[5] = (aa[t] + anobia[t] + 300 - fx) / 100; xx[6] = (ab[t] - fy) / 100;
} else {
xx[5] = (aa[t] + anobia[t] + 300 - fx) / 100; xx[6] = (ab[t] - fy - 800) / 100;
}
- //setc0();
- //str(xs[0],xx[5]-1,xx[6]-1);str(xs[0],xx[5]+1,xx[6]+1);
setfonttype(DX_FONTTYPE_EDGE);
setc1();
- str(xs[0], xx[5], xx[6]);
+ stri(strid, xx[5], xx[6]);
setfonttype(DX_FONTTYPE_NORMAL);
@@ -1018,7 +1039,7 @@ void rpaint() {
if (mainmsgtype >= 1) {
setfont(20, 4);
setcolor(255, 255, 255);
- if (mainmsgtype == 1) {drawstring(126, 100, "WELCOME TO OWATA ZONE"); }
+ if (mainmsgtype == 1) {drawlang(126, 100, IDS_4); }
if (mainmsgtype == 1) {for (t2 = 0; t2 <= 2; t2++) drawstring(88 + t2 * 143, 210, "1"); }
setfont(20, 5);
} //mainmsgtype>=1
@@ -1041,7 +1062,7 @@ void rpaint() {
char buff[128];
setfonttype(DX_FONTTYPE_EDGE);
setc1();
- snprintf(buff, sizeof(buff), "SCORE: %d", score);
+ snprintf(buff, sizeof(buff), "%s: %d", string_table[lang][IDS_SCORE], score);
drawstring(10, 5, buff);
#ifdef TEST_MODE
snprintf(buff, sizeof(buff), "st:%d-%d-%d mainproc:%d", sta, stb, stc, mainproc);
@@ -1056,26 +1077,26 @@ void rpaint() {
if (mainproc == 2) {
setcolor(255, 255, 255);
- str("制作・プレイに関わった方々", 240 - 13 * 20 / 2, xx[12] / 100);
- str("ステージ1 プレイ", 240 - 9 * 20 / 2, xx[13] / 100);
- str("先輩 Ⅹ~Z", 240 - 6 * 20 / 2, xx[14] / 100);
- str("ステージ2 プレイ", 240 - 9 * 20 / 2, xx[15] / 100);
- str("友人 willowlet ", 240 - 8 * 20 / 2, xx[16] / 100);
- str("ステージ3 プレイ", 240 - 9 * 20 / 2, xx[17] / 100);
- str("友人 willowlet ", 240 - 8 * 20 / 2, xx[18] / 100);
- str("ステージ4 プレイ", 240 - 9 * 20 / 2, xx[19] / 100);
- str("友人2 ann ", 240 - 6 * 20 / 2, xx[20] / 100);
- str("ご協力", 240 - 3 * 20 / 2, xx[21] / 100);
- str("T先輩", 240 - 3 * 20 / 2, xx[22] / 100);
- str("S先輩", 240 - 3 * 20 / 2, xx[23] / 100);
- str("動画技術提供", 240 - 6 * 20 / 2, xx[24] / 100);
- str("K先輩", 240 - 3 * 20 / 2, xx[25] / 100);
- str("動画キャプチャ・編集・エンコード", 240 - 16 * 20 / 2, xx[26] / 100);
- str("willowlet ", 240 - 5 * 20 / 2, xx[27] / 100);
- str("プログラム・描画・ネタ・動画編集", 240 - 16 * 20 / 2, xx[28] / 100);
- str("ちく", 240 - 2 * 20 / 2, xx[29] / 100);
+ stri(IDS_STAFF_1, 240 - 13 * 20 / 2, xx[12] / 100);
+ stri(IDS_STAFF_2, 240 - 9 * 20 / 2, xx[13] / 100);
+ stri(IDS_STAFF_3, 240 - 6 * 20 / 2, xx[14] / 100);
+ stri(IDS_STAFF_4, 240 - 9 * 20 / 2, xx[15] / 100);
+ stri(IDS_STAFF_5, 240 - 8 * 20 / 2, xx[16] / 100);
+ stri(IDS_STAFF_6, 240 - 9 * 20 / 2, xx[17] / 100);
+ stri(IDS_STAFF_7, 240 - 8 * 20 / 2, xx[18] / 100);
+ stri(IDS_STAFF_8, 240 - 9 * 20 / 2, xx[19] / 100);
+ stri(IDS_STAFF_9, 240 - 6 * 20 / 2, xx[20] / 100);
+ stri(IDS_STAFF_10, 240 - 3 * 20 / 2, xx[21] / 100);
+ stri(IDS_STAFF_11, 240 - 3 * 20 / 2, xx[22] / 100);
+ stri(IDS_STAFF_12, 240 - 3 * 20 / 2, xx[23] / 100);
+ stri(IDS_STAFF_13, 240 - 6 * 20 / 2, xx[24] / 100);
+ stri(IDS_STAFF_14, 240 - 3 * 20 / 2, xx[25] / 100);
+ stri(IDS_STAFF_15, 240 - 16 * 20 / 2, xx[26] / 100);
+ stri(IDS_STAFF_16, 240 - 5 * 20 / 2, xx[27] / 100);
+ stri(IDS_STAFF_17, 240 - 16 * 20 / 2, xx[28] / 100);
+ stri(IDS_STAFF_18, 240 - 2 * 20 / 2, xx[29] / 100);
- str("プレイしていただき ありがとうございました~", 240 - 22 * 20 / 2, xx[30] / 100);
+ stri(IDS_STAFF_19, 240 - 22 * 20 / 2, xx[30] / 100);
}
@@ -1117,7 +1138,7 @@ void rpaint() {
setcolor(0, 0, 0);
- str("Enterキーを押せ!!", 240 - 8 * 20 / 2, 250);
+ stri(IDS_START, 240 - 8 * 20 / 2, 250);
} //if (mainproc==100)
@@ -3491,6 +3512,10 @@ void str(const char *x, int a, int b) {
xx[2] = 4;
}
+void stri(int id, int a, int b) {
+ str(string_table[lang][id], a, b);
+}
+
//音楽再生
void stagecls() {
@@ -5357,75 +5382,75 @@ void ttmsg() {
setc1();
//フォント
setfont(20, 5);
- txmsg("テスト hoge", 0);
+ txmsg(IDS_TMSG_0, 0);
}
if (tmsg == 1) {
setc1();
- txmsg("", 0);
- txmsg("ステージ 1 より", 0);
- txmsg("特殊的なものが増えたので", 1);
- txmsg("気をつけてくれよ~", 2);
- txmsg("後、アイテムの一部を利用するかも…", 4);
- txmsg(" ちく より", 6);
+ txmsg(IDS_EMPTY, 0);
+ txmsg(IDS_TMSG_11, 0);
+ txmsg(IDS_TMSG_12, 1);
+ txmsg(IDS_TMSG_13, 2);
+ txmsg(IDS_TMSG_14, 4);
+ txmsg(IDS_TMSG_15, 6);
}
if (tmsg == 2) {
- txmsg(" ?が必要です ", 3);
- txmsg(" m9(^Д^)", 6);
+ txmsg(IDS_TMSG_21, 3);
+ txmsg(IDS_TMSG_22, 6);
}
if (tmsg == 3) {
- txmsg(" 別にコインに意味ないけどね ", 3);
- txmsg(" (・ω・ )ノシ", 6);
+ txmsg(IDS_TMSG_31, 3);
+ txmsg(IDS_TMSG_32, 6);
}
if (tmsg == 4) {
- txmsg("この先に隠しブロックがあります ", 2);
- txmsg("注意してください !!", 4);
+ txmsg(IDS_TMSG_41, 2);
+ txmsg(IDS_TMSG_42, 4);
}
if (tmsg == 5) {
- txmsg("", 0);
- txmsg(" 前回よりも難易度を下げましたので", 1);
- txmsg(" 気楽にプレイしてください ", 3);
- txmsg(" ちく より", 6);
+ txmsg(IDS_EMPTY, 0);
+ txmsg(IDS_TMSG_51, 1);
+ txmsg(IDS_TMSG_52, 3);
+ txmsg(IDS_TMSG_53, 6);
}
if (tmsg == 6) {
- txmsg("", 0);
- txmsg(" そこにいる敵のそばによると、 ", 1);
- txmsg(" 自分と一緒にジャンプしてくれます。", 2);
- txmsg(" 可愛いですね。 ", 3);
+ txmsg(IDS_EMPTY, 0);
+ txmsg(IDS_TMSG_61, 1);
+ txmsg(IDS_TMSG_62, 2);
+ txmsg(IDS_TMSG_63, 3);
}
if (tmsg == 7) {
- txmsg("", 0);
- txmsg(" あの敵は連れて来れましたか?、 ", 1);
- txmsg(" 連れて来れなかった貴方は、 ", 2);
- txmsg(" そこの落とし穴から Let's dive! ", 3);
+ txmsg(IDS_EMPTY, 0);
+ txmsg(IDS_TMSG_71, 1);
+ txmsg(IDS_TMSG_72, 2);
+ txmsg(IDS_TMSG_73, 3);
}
if (tmsg == 8) {
- txmsg("そんな容易に", 1);
- txmsg("ヒントに頼るもんじゃないぜ", 2);
- txmsg("ほら、さっさと次行きな!!", 3);
+ txmsg(IDS_TMSG_81, 1);
+ txmsg(IDS_TMSG_82, 2);
+ txmsg(IDS_TMSG_83, 3);
}
if (tmsg == 9) {
- txmsg(" 正真正銘のファイナルステージ。 ", 1);
- txmsg(" クリアすれば遂にエンディング!! ", 2);
- txmsg(" その土管から戻ってもいいんだぜ? ", 3);
+ txmsg(IDS_TMSG_91, 1);
+ txmsg(IDS_TMSG_92, 2);
+ txmsg(IDS_TMSG_93, 3);
}
if (tmsg == 100) {
- txmsg("え?私ですか? ", 0);
- txmsg("いやぁ、ただの通りすがりの", 2);
- txmsg("ヒントブロックですよ~", 3);
- txmsg("決して怪しいブロックじゃないですよ", 5);
- txmsg(" (…チッ)", 6);
+ txmsg(IDS_TMSG_1001, 0);
+ txmsg(IDS_TMSG_1002, 2);
+ txmsg(IDS_TMSG_1003, 3);
+ txmsg(IDS_TMSG_1004, 5);
+ txmsg(IDS_TMSG_1005, 6);
}
@@ -5444,10 +5469,10 @@ void ttmsg() {
} //ttmsg
-void txmsg(const char *x, int a) {
+void txmsg(int id, int a) {
int xx = 6;
- str(x, 60 + xx, 40 + xx + a * 24);
+ stri(id, 60 + xx, 40 + xx + a * 24);
} //txmsg
diff --git a/str.h b/str.h
new file mode 100644
index 0000000..714a7d8
--- /dev/null
+++ b/str.h
@@ -0,0 +1,450 @@
+#ifndef EN
+#define EN(id, str)
+#endif
+#ifndef JP
+#define JP(id, str)
+#endif
+#ifndef CN
+#define CN(id, str)
+#endif
+
+JP(IDS_2, "ゲームクリアー")
+CN(IDS_2, "ゲームクリアー")
+EN(IDS_2, "ゲームクリアー")
+
+JP(IDS_3, "プレイしてくれてありがとー")
+CN(IDS_3, "プレイしてくれてありがとー")
+EN(IDS_3, "プレイしてくれてありがとー")
+
+JP(IDS_4, "WELCOME TO OWATA ZONE")
+CN(IDS_4, "WELCOME TO OWATA ZONE")
+EN(IDS_4, "WELCOME TO OWATA ZONE")
+
+JP(IDS_SCORE, "SCORE")
+CN(IDS_SCORE, "SCORE")
+EN(IDS_SCORE, "SCORE")
+
+JP(IDS_MSG_1, "お、おいしい!!")
+CN(IDS_MSG_1, "お、おいしい!!")
+EN(IDS_MSG_1, "お、おいしい!!")
+
+JP(IDS_MSG_2, "毒は無いが……")
+CN(IDS_MSG_2, "毒は無いが……")
+EN(IDS_MSG_2, "毒は無いが……")
+
+JP(IDS_MSG_3, "刺さった!!")
+CN(IDS_MSG_3, "刺さった!!")
+EN(IDS_MSG_3, "刺さった!!")
+
+JP(IDS_MSG_10, "食べるべきではなかった!!")
+CN(IDS_MSG_10, "食べるべきではなかった!!")
+EN(IDS_MSG_10, "食べるべきではなかった!!")
+
+JP(IDS_MSG_11, "俺は燃える男だ!!")
+CN(IDS_MSG_11, "俺は燃える男だ!!")
+EN(IDS_MSG_11, "俺は燃える男だ!!")
+
+JP(IDS_MSG_50, "体が……焼ける……")
+CN(IDS_MSG_50, "体が……焼ける……")
+EN(IDS_MSG_50, "体が……焼ける……")
+
+JP(IDS_MSG_51, "たーまやー!!")
+CN(IDS_MSG_51, "たーまやー!!")
+EN(IDS_MSG_51, "たーまやー!!")
+
+JP(IDS_MSG_52, "見事にオワタ")
+CN(IDS_MSG_52, "見事にオワタ")
+EN(IDS_MSG_52, "見事にオワタ")
+
+JP(IDS_MSG_53, "足が、足がぁ!!")
+CN(IDS_MSG_53, "足が、足がぁ!!")
+EN(IDS_MSG_53, "足が、足がぁ!!")
+
+JP(IDS_MSG_54, "流石は摂氏800度!!")
+CN(IDS_MSG_54, "流石は摂氏800度!!")
+EN(IDS_MSG_54, "流石は摂氏800度!!")
+
+JP(IDS_MSG_55, "溶岩と合体したい……")
+CN(IDS_MSG_55, "溶岩と合体したい……")
+EN(IDS_MSG_55, "溶岩と合体したい……")
+
+JP(IDS_AMSG_1001, "ヤッフー!!")
+CN(IDS_AMSG_1001, "ヤッフー!!")
+EN(IDS_AMSG_1001, "ヤッフー!!")
+
+JP(IDS_AMSG_1002, "え?俺勝っちゃったの?")
+CN(IDS_AMSG_1002, "え?俺勝っちゃったの?")
+EN(IDS_AMSG_1002, "え?俺勝っちゃったの?")
+
+JP(IDS_AMSG_1003, "貴様の死に場所はここだ!")
+CN(IDS_AMSG_1003, "貴様の死に場所はここだ!")
+EN(IDS_AMSG_1003, "貴様の死に場所はここだ!")
+
+JP(IDS_AMSG_1004, "二度と会う事もないだろう")
+CN(IDS_AMSG_1004, "二度と会う事もないだろう")
+EN(IDS_AMSG_1004, "二度と会う事もないだろう")
+
+JP(IDS_AMSG_1005, "俺、最強!!")
+CN(IDS_AMSG_1005, "俺、最強!!")
+EN(IDS_AMSG_1005, "俺、最強!!")
+
+JP(IDS_AMSG_1006, "一昨日来やがれ!!")
+CN(IDS_AMSG_1006, "一昨日来やがれ!!")
+EN(IDS_AMSG_1006, "一昨日来やがれ!!")
+
+JP(IDS_AMSG_1007, "漢に後退の二文字は無い!!")
+CN(IDS_AMSG_1007, "漢に後退の二文字は無い!!")
+EN(IDS_AMSG_1007, "漢に後退の二文字は無い!!")
+
+JP(IDS_AMSG_1008, "ハッハァ!!")
+CN(IDS_AMSG_1008, "ハッハァ!!")
+EN(IDS_AMSG_1008, "ハッハァ!!")
+
+
+JP(IDS_AMSG_1011, "ヤッフー!!")
+CN(IDS_AMSG_1011, "ヤッフー!!")
+EN(IDS_AMSG_1011, "ヤッフー!!")
+
+JP(IDS_AMSG_1012, "え?俺勝っちゃったの?")
+CN(IDS_AMSG_1012, "え?俺勝っちゃったの?")
+EN(IDS_AMSG_1012, "え?俺勝っちゃったの?")
+
+JP(IDS_AMSG_1013, "貴様の死に場所はここだ!")
+CN(IDS_AMSG_1013, "貴様の死に場所はここだ!")
+EN(IDS_AMSG_1013, "貴様の死に場所はここだ!")
+
+JP(IDS_AMSG_1014, "身の程知らずが……")
+CN(IDS_AMSG_1014, "身の程知らずが……")
+EN(IDS_AMSG_1014, "身の程知らずが……")
+
+JP(IDS_AMSG_1015, "油断が死を招く")
+CN(IDS_AMSG_1015, "油断が死を招く")
+EN(IDS_AMSG_1015, "油断が死を招く")
+
+JP(IDS_AMSG_1016, "おめでたい奴だ")
+CN(IDS_AMSG_1016, "おめでたい奴だ")
+EN(IDS_AMSG_1016, "おめでたい奴だ")
+
+JP(IDS_AMSG_1017, "屑が!!")
+CN(IDS_AMSG_1017, "屑が!!")
+EN(IDS_AMSG_1017, "屑が!!")
+
+JP(IDS_AMSG_1018, "無謀な……")
+CN(IDS_AMSG_1018, "無謀な……")
+EN(IDS_AMSG_1018, "無謀な……")
+
+
+JP(IDS_AMSG_1021, "ヤッフー!!")
+CN(IDS_AMSG_1021, "ヤッフー!!")
+EN(IDS_AMSG_1021, "ヤッフー!!")
+
+JP(IDS_AMSG_1022, "え?俺勝っちゃったの?")
+CN(IDS_AMSG_1022, "え?俺勝っちゃったの?")
+EN(IDS_AMSG_1022, "え?俺勝っちゃったの?")
+
+JP(IDS_AMSG_1023, "二度と会う事もないだろう")
+CN(IDS_AMSG_1023, "二度と会う事もないだろう")
+EN(IDS_AMSG_1023, "二度と会う事もないだろう")
+
+JP(IDS_AMSG_1024, "身の程知らずが……")
+CN(IDS_AMSG_1024, "身の程知らずが……")
+EN(IDS_AMSG_1024, "身の程知らずが……")
+
+JP(IDS_AMSG_1025, "僕は……負けない!!")
+CN(IDS_AMSG_1025, "僕は……負けない!!")
+EN(IDS_AMSG_1025, "僕は……負けない!!")
+
+JP(IDS_AMSG_1026, "貴様に見切れる筋は無い")
+CN(IDS_AMSG_1026, "貴様に見切れる筋は無い")
+EN(IDS_AMSG_1026, "貴様に見切れる筋は無い")
+
+JP(IDS_AMSG_1027, "今死ね、すぐ死ね、骨まで砕けろ!!")
+CN(IDS_AMSG_1027, "今死ね、すぐ死ね、骨まで砕けろ!!")
+EN(IDS_AMSG_1027, "今死ね、すぐ死ね、骨まで砕けろ!!")
+
+JP(IDS_AMSG_1028, "任務完了!!")
+CN(IDS_AMSG_1028, "任務完了!!")
+EN(IDS_AMSG_1028, "任務完了!!")
+
+
+JP(IDS_AMSG_1031, "ヤッフー!!")
+CN(IDS_AMSG_1031, "ヤッフー!!")
+EN(IDS_AMSG_1031, "ヤッフー!!")
+
+JP(IDS_AMSG_1032, "え?俺勝っちゃったの?")
+CN(IDS_AMSG_1032, "え?俺勝っちゃったの?")
+EN(IDS_AMSG_1032, "え?俺勝っちゃったの?")
+
+JP(IDS_AMSG_1033, "貴様の死に場所はここだ!")
+CN(IDS_AMSG_1033, "貴様の死に場所はここだ!")
+EN(IDS_AMSG_1033, "貴様の死に場所はここだ!")
+
+JP(IDS_AMSG_1034, "身の程知らずが……")
+CN(IDS_AMSG_1034, "身の程知らずが……")
+EN(IDS_AMSG_1034, "身の程知らずが……")
+
+JP(IDS_AMSG_1035, "油断が死を招く")
+CN(IDS_AMSG_1035, "油断が死を招く")
+EN(IDS_AMSG_1035, "油断が死を招く")
+
+JP(IDS_AMSG_1036, "おめでたい奴だ")
+CN(IDS_AMSG_1036, "おめでたい奴だ")
+EN(IDS_AMSG_1036, "おめでたい奴だ")
+
+JP(IDS_AMSG_1037, "屑が!!")
+CN(IDS_AMSG_1037, "屑が!!")
+EN(IDS_AMSG_1037, "屑が!!")
+
+JP(IDS_AMSG_1038, "無謀な……")
+CN(IDS_AMSG_1038, "無謀な……")
+EN(IDS_AMSG_1038, "無謀な……")
+
+
+JP(IDS_AMSG_15, "鉄壁!!よって、無敵!!")
+CN(IDS_AMSG_15, "鉄壁!!よって、無敵!!")
+EN(IDS_AMSG_15, "鉄壁!!よって、無敵!!")
+
+JP(IDS_AMSG_16, "丸腰で勝てるとでも?")
+CN(IDS_AMSG_16, "丸腰で勝てるとでも?")
+EN(IDS_AMSG_16, "丸腰で勝てるとでも?")
+
+JP(IDS_AMSG_17, "パリイ!!")
+CN(IDS_AMSG_17, "パリイ!!")
+EN(IDS_AMSG_17, "パリイ!!")
+
+JP(IDS_AMSG_18, "自業自得だ")
+CN(IDS_AMSG_18, "自業自得だ")
+EN(IDS_AMSG_18, "自業自得だ")
+
+JP(IDS_AMSG_20, "Zzz")
+CN(IDS_AMSG_20, "Zzz")
+EN(IDS_AMSG_20, "Zzz")
+
+JP(IDS_AMSG_21, "ク、クマー")
+CN(IDS_AMSG_21, "ク、クマー")
+EN(IDS_AMSG_21, "ク、クマー")
+
+JP(IDS_AMSG_24, "?")
+CN(IDS_AMSG_24, "?")
+EN(IDS_AMSG_24, "?")
+
+JP(IDS_AMSG_25, "食べるべきではなかった!!")
+CN(IDS_AMSG_25, "食べるべきではなかった!!")
+EN(IDS_AMSG_25, "食べるべきではなかった!!")
+
+JP(IDS_AMSG_30, "うめぇ!!")
+CN(IDS_AMSG_30, "うめぇ!!")
+EN(IDS_AMSG_30, "うめぇ!!")
+
+JP(IDS_AMSG_31, "ブロックを侮ったな?")
+CN(IDS_AMSG_31, "ブロックを侮ったな?")
+EN(IDS_AMSG_31, "ブロックを侮ったな?")
+
+JP(IDS_AMSG_32, "シャキーン")
+CN(IDS_AMSG_32, "シャキーン")
+EN(IDS_AMSG_32, "シャキーン")
+
+JP(IDS_AMSG_50, "波動砲!!")
+CN(IDS_AMSG_50, "波動砲!!")
+EN(IDS_AMSG_50, "波動砲!!")
+
+JP(IDS_AMSG_85, "裏切られたとでも思ったか?")
+CN(IDS_AMSG_85, "裏切られたとでも思ったか?")
+EN(IDS_AMSG_85, "裏切られたとでも思ったか?")
+
+JP(IDS_AMSG_86, "ポールアターック!!")
+CN(IDS_AMSG_86, "ポールアターック!!")
+EN(IDS_AMSG_86, "ポールアターック!!")
+
+JP(IDS_STAFF_1, "制作・プレイに関わった方々")
+CN(IDS_STAFF_1, "制作・プレイに関わった方々")
+EN(IDS_STAFF_1, "制作・プレイに関わった方々")
+
+JP(IDS_STAFF_2, "ステージ1 プレイ")
+CN(IDS_STAFF_2, "ステージ1 プレイ")
+EN(IDS_STAFF_2, "ステージ1 プレイ")
+
+JP(IDS_STAFF_3, "先輩 Ⅹ~Z")
+CN(IDS_STAFF_3, "先輩 Ⅹ~Z")
+EN(IDS_STAFF_3, "先輩 Ⅹ~Z")
+
+JP(IDS_STAFF_4, "ステージ2 プレイ")
+CN(IDS_STAFF_4, "ステージ2 プレイ")
+EN(IDS_STAFF_4, "ステージ2 プレイ")
+
+JP(IDS_STAFF_5, "友人 willowlet ")
+CN(IDS_STAFF_5, "友人 willowlet ")
+EN(IDS_STAFF_5, "友人 willowlet ")
+
+JP(IDS_STAFF_6, "ステージ3 プレイ")
+CN(IDS_STAFF_6, "ステージ3 プレイ")
+EN(IDS_STAFF_6, "ステージ3 プレイ")
+
+JP(IDS_STAFF_7, "友人 willowlet ")
+CN(IDS_STAFF_7, "友人 willowlet ")
+EN(IDS_STAFF_7, "友人 willowlet ")
+
+JP(IDS_STAFF_8, "ステージ4 プレイ")
+CN(IDS_STAFF_8, "ステージ4 プレイ")
+EN(IDS_STAFF_8, "ステージ4 プレイ")
+
+JP(IDS_STAFF_9, "友人2 ann ")
+CN(IDS_STAFF_9, "友人2 ann ")
+EN(IDS_STAFF_9, "友人2 ann ")
+
+JP(IDS_STAFF_10, "ご協力")
+CN(IDS_STAFF_10, "ご協力")
+EN(IDS_STAFF_10, "ご協力")
+
+JP(IDS_STAFF_11, "T先輩")
+CN(IDS_STAFF_11, "T先輩")
+EN(IDS_STAFF_11, "T先輩")
+
+JP(IDS_STAFF_12, "S先輩")
+CN(IDS_STAFF_12, "S先輩")
+EN(IDS_STAFF_12, "S先輩")
+
+JP(IDS_STAFF_13, "動画技術提供")
+CN(IDS_STAFF_13, "動画技術提供")
+EN(IDS_STAFF_13, "動画技術提供")
+
+JP(IDS_STAFF_14, "K先輩")
+CN(IDS_STAFF_14, "K先輩")
+EN(IDS_STAFF_14, "K先輩")
+
+JP(IDS_STAFF_15, "動画キャプチャ・編集・エンコード")
+CN(IDS_STAFF_15, "動画キャプチャ・編集・エンコード")
+EN(IDS_STAFF_15, "動画キャプチャ・編集・エンコード")
+
+JP(IDS_STAFF_16, "willowlet ")
+CN(IDS_STAFF_16, "willowlet ")
+EN(IDS_STAFF_16, "willowlet ")
+
+JP(IDS_STAFF_17, "プログラム・描画・ネタ・動画編集")
+CN(IDS_STAFF_17, "プログラム・描画・ネタ・動画編集")
+EN(IDS_STAFF_17, "プログラム・描画・ネタ・動画編集")
+
+JP(IDS_STAFF_18, "ちく")
+CN(IDS_STAFF_18, "ちく")
+EN(IDS_STAFF_18, "ちく")
+
+
+JP(IDS_STAFF_19, "プレイしていただき ありがとうございました~")
+CN(IDS_STAFF_19, "プレイしていただき ありがとうございました~")
+EN(IDS_STAFF_19, "プレイしていただき ありがとうございました~")
+
+
+JP(IDS_START, "Enterキーを押せ!!")
+CN(IDS_START, "Enterキーを押せ!!")
+EN(IDS_START, "Enterキーを押せ!!")
+
+JP(IDS_TMSG_0, "テスト hoge")
+CN(IDS_TMSG_0, "テスト hoge")
+EN(IDS_TMSG_0, "テスト hoge")
+
+JP(IDS_TMSG_11, "ステージ 1 より")
+JP(IDS_TMSG_12, "特殊的なものが増えたので")
+JP(IDS_TMSG_13, "気をつけてくれよ~")
+JP(IDS_TMSG_14, "後、アイテムの一部を利用するかも…")
+JP(IDS_TMSG_15, " ちく より")
+CN(IDS_TMSG_11, "ステージ 1 より")
+CN(IDS_TMSG_12, "特殊的なものが増えたので")
+CN(IDS_TMSG_13, "気をつけてくれよ~")
+CN(IDS_TMSG_14, "後、アイテムの一部を利用するかも…")
+CN(IDS_TMSG_15, " ちく より")
+EN(IDS_TMSG_11, "ステージ 1 より")
+EN(IDS_TMSG_12, "特殊的なものが増えたので")
+EN(IDS_TMSG_13, "気をつけてくれよ~")
+EN(IDS_TMSG_14, "後、アイテムの一部を利用するかも…")
+EN(IDS_TMSG_15, " ちく より")
+
+JP(IDS_TMSG_21, " ?が必要です ")
+JP(IDS_TMSG_22, " m9(^Д^)")
+CN(IDS_TMSG_21, " ?が必要です ")
+CN(IDS_TMSG_22, " m9(^Д^)")
+EN(IDS_TMSG_21, " ?が必要です ")
+EN(IDS_TMSG_22, " m9(^Д^)")
+
+JP(IDS_TMSG_31, " 別にコインに意味ないけどね ")
+JP(IDS_TMSG_32, " (・ω・ )ノシ")
+CN(IDS_TMSG_31, " 別にコインに意味ないけどね ")
+CN(IDS_TMSG_32, " (・ω・ )ノシ")
+EN(IDS_TMSG_31, " 別にコインに意味ないけどね ")
+EN(IDS_TMSG_32, " (・ω・ )ノシ")
+
+JP(IDS_TMSG_41, "この先に隠しブロックがあります ")
+JP(IDS_TMSG_42, "注意してください !!")
+CN(IDS_TMSG_41, "この先に隠しブロックがあります ")
+CN(IDS_TMSG_42, "注意してください !!")
+EN(IDS_TMSG_41, "この先に隠しブロックがあります ")
+EN(IDS_TMSG_42, "注意してください !!")
+
+JP(IDS_TMSG_51, " 前回よりも難易度を下げましたので")
+JP(IDS_TMSG_52, " 気楽にプレイしてください ")
+JP(IDS_TMSG_53, " ちく より")
+CN(IDS_TMSG_51, " 前回よりも難易度を下げましたので")
+CN(IDS_TMSG_52, " 気楽にプレイしてください ")
+CN(IDS_TMSG_53, " ちく より")
+EN(IDS_TMSG_51, " 前回よりも難易度を下げましたので")
+EN(IDS_TMSG_52, " 気楽にプレイしてください ")
+EN(IDS_TMSG_53, " ちく より")
+
+JP(IDS_TMSG_61, " そこにいる敵のそばによると、 ")
+JP(IDS_TMSG_62, " 自分と一緒にジャンプしてくれます。")
+JP(IDS_TMSG_63, " 可愛いですね。 ")
+CN(IDS_TMSG_61, " そこにいる敵のそばによると、 ")
+CN(IDS_TMSG_62, " 自分と一緒にジャンプしてくれます。")
+CN(IDS_TMSG_63, " 可愛いですね。 ")
+EN(IDS_TMSG_61, " そこにいる敵のそばによると、 ")
+EN(IDS_TMSG_62, " 自分と一緒にジャンプしてくれます。")
+EN(IDS_TMSG_63, " 可愛いですね。 ")
+
+JP(IDS_TMSG_71, " あの敵は連れて来れましたか?、 ")
+JP(IDS_TMSG_72, " 連れて来れなかった貴方は、 ")
+JP(IDS_TMSG_73, " そこの落とし穴から Let's dive! ")
+CN(IDS_TMSG_71, " あの敵は連れて来れましたか?、 ")
+CN(IDS_TMSG_72, " 連れて来れなかった貴方は、 ")
+CN(IDS_TMSG_73, " そこの落とし穴から Let's dive! ")
+EN(IDS_TMSG_71, " あの敵は連れて来れましたか?、 ")
+EN(IDS_TMSG_72, " 連れて来れなかった貴方は、 ")
+EN(IDS_TMSG_73, " そこの落とし穴から Let's dive! ")
+
+JP(IDS_TMSG_81, "そんな容易に")
+JP(IDS_TMSG_82, "ヒントに頼るもんじゃないぜ")
+JP(IDS_TMSG_83, "ほら、さっさと次行きな!!")
+CN(IDS_TMSG_81, "そんな容易に")
+CN(IDS_TMSG_82, "ヒントに頼るもんじゃないぜ")
+CN(IDS_TMSG_83, "ほら、さっさと次行きな!!")
+EN(IDS_TMSG_81, "そんな容易に")
+EN(IDS_TMSG_82, "ヒントに頼るもんじゃないぜ")
+EN(IDS_TMSG_83, "ほら、さっさと次行きな!!")
+
+JP(IDS_TMSG_91, " 正真正銘のファイナルステージ。 ")
+JP(IDS_TMSG_92, " クリアすれば遂にエンディング!! ")
+JP(IDS_TMSG_93, " その土管から戻ってもいいんだぜ? ")
+CN(IDS_TMSG_91, " 正真正銘のファイナルステージ。 ")
+CN(IDS_TMSG_92, " クリアすれば遂にエンディング!! ")
+CN(IDS_TMSG_93, " その土管から戻ってもいいんだぜ? ")
+EN(IDS_TMSG_91, " 正真正銘のファイナルステージ。 ")
+EN(IDS_TMSG_92, " クリアすれば遂にエンディング!! ")
+EN(IDS_TMSG_93, " その土管から戻ってもいいんだぜ? ")
+
+JP(IDS_TMSG_1001, "え?私ですか? ")
+JP(IDS_TMSG_1002, "いやぁ、ただの通りすがりの")
+JP(IDS_TMSG_1003, "ヒントブロックですよ~")
+JP(IDS_TMSG_1004, "決して怪しいブロックじゃないですよ")
+JP(IDS_TMSG_1005, " (…チッ)")
+CN(IDS_TMSG_1001, "え?私ですか? ")
+CN(IDS_TMSG_1002, "いやぁ、ただの通りすがりの")
+CN(IDS_TMSG_1003, "ヒントブロックですよ~")
+CN(IDS_TMSG_1004, "決して怪しいブロックじゃないですよ")
+CN(IDS_TMSG_1005, " (…チッ)")
+EN(IDS_TMSG_1001, "え?私ですか? ")
+EN(IDS_TMSG_1002, "いやぁ、ただの通りすがりの")
+EN(IDS_TMSG_1003, "ヒントブロックですよ~")
+EN(IDS_TMSG_1004, "決して怪しいブロックじゃないですよ")
+EN(IDS_TMSG_1005, " (…チッ)")
+
+#undef EN
+#undef CN
+#undef JP
\ No newline at end of file