So-net無料ブログ作成

USB Loader GXについて [Wii]

まだまだ、開発途上のUSB Loader GXですが...
多言語化対応が進んでいます。FreeTypeGXの日本語対応を公開させて
いただいだ事もありますので..チョットだけ説明しておきます。

多言語化対応といっても組込まれているttfフォントは、日本語フォントは
含まれていません。日本語Unicode対応のttfフォント(font.ttf)に置換えて
リビルドする必要があります。
また、コード変換(Unicodefix)は簡体と繁体中国語しか組込まれていません。
当然、UTF-8で記述すれば良いと思うのですが...
残念ながら現状ではUTF-8からUnicode(UTF-16)の変換処理は、
1バイト系しか対応しておりません(近く対応されるとは思いますが..)。

結局、FreeTypeGX.cppの修正も必要になります。
ttfフォントのLSBの処理は追加(カーニング処理はあまり気にしなくてもいい)
されたので、UTF-8からUTF-16への変換部分だけの修正で十分です。

<FreeTypeGX.cppの修正箇所>
 68: char *tempSrc = strChar;
 69: wchar_t *tempDest = strWChar;
 70: while((*tempDest++ = *tempSrc++));
を、
 68: int ln = mbstowcs(strWChar, strChar, strlen(strChar));
 69: if(ln < 0) ln = 0;
 70: strWChar[ln] = (wchar_t)'\0';
に、修正します。

当然、「FreeTypeGX_JPN」を修正して使用すればSJISも使用できますが..
都度、修正が面倒だと思いますので....
但し、上記の修正ではゲームタイトルや言語ファイルはUTF-8で記述して
ください(ソースに日本語を入れる場合も..)。

UTF-8を使用する場合、半角カナのバイト数に注意が必要です。
表示上では、全角で2バイト半角で1バイトですが、実際には殆どが3バイトで定義されます。
表示上の桁数だけで、記入するとプログラム中で定義した桁数を超えてしまい
不具合が発生する可能性があります。全角は表示上と同じ2バイトです。


コメント(25) 
共通テーマ:日記・雑感

コメント 25

yasun

Hello
要約すると、日本語対応には下記を取り込むと宜しいのでしょうか?
ご教授お願いいたします。

yasun (エンジニアとは新規に発明をしないが現存する知識を共有し予算内&期間内により便利な物を作る者たちを言う。)


●モジュール追加(Shift-jis->Unicode)
GB2Unicode.c
GB2Unicode.h
SJ2Unicode.c //日本語変換のソース追加
SJ2Unicode.h //日本語変換のソース追加

●日本語ファイルをS-jis記述に変更
Language.txtをShift-JISに変更。

●FreeTypeGX.cpp内で
#include "CH2Unicode.h"
#include "GB2Unicode.h"
ここらに、日本語変換のHeader FileをInclude。

wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
wchar_t *strWChar;
strWChar = new wchar_t[strlen(strChar) + 1];

if(Settings.unicodefix == 1) {
CH2Unicode(strChar, strWChar);
} else if(Settings.unicodefix == 2) {
ConverGB2Unicode(strChar, strWChar);
} else if(Settings.unicodefix == 3) {
ConverSJ2Unicode(strChar, strWChar); //何かShift-JISからUnicode変換の関数Call(詳細はFFS)
} else {
char *tempSrc = strChar;
wchar_t *tempDest = strWChar;
while((*tempDest++ = *tempSrc++));
}

by yasun (2009-05-26 17:12) 

皇帝

yasunさん

SJISを使用するならそれで良いと思います。
現在の国際化の情勢からすると、チャントUTF-8に対応するだけでも
良いと思いますが....
ConverSJ2Unicode()は、FreeTypeGX_JPNを参考にすればすぐ作れると
思います。その仕様で作り直して公開してもいいですよ。

しかし、フォントが問題ですね。全て組み込むのは無理があるので、
unicodefixの値で該当するフォントを読み込むようにしないと
あまり意味がありません。

by 皇帝 (2009-05-26 18:42) 

yasun

お返事ありがとうございます。
アーキレベルでUnicode変換を検討してたのですが添付URLの通り韓国のpooyanさんが、Rudolphさんのこちらの変更をフィードバックされていたので
>現在の国際化の情勢からすると、チャントUTF-8に対応するだけでも
良いと思いますが....
上記の方向になるでしょう。
残課題としては・・・Language.txtとLanguage.hのChar配列間の矛盾探しかな? さぁ、やるべ。
Rudolphさん、ご協力感謝です。

yasun

PS:

by yasun (2009-05-26 20:26) 

けん

こんにちは。
今回の修正は行数がずれてるんですがこれでOKでしょうか?
61 wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
62 wchar_t *strWChar;
63 strWChar = new wchar_t[strlen(strChar) + 1];
64
65 char *tempSrc = strChar;
66 wchar_t *tempDest = strWChar;
67
68 /// Rudolph /////////
69 _sjis2unicode(tempSrc, tempDest);
70 // while((*tempDest++ = *tempSrc++));

                ↓ 

61 wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
62 wchar_t *strWChar;
63 strWChar = new wchar_t[strlen(strChar) + 1];
64
65 int ln = mbstowcs(strWChar, strChar, strlen(strChar));
66 if(ln < 0) ln = 0;
67
68 /// Rudolph /////////
69 _sjis2unicode(tempSrc, tempDest);
70 // strWChar[ln] = (wchar_t)'\0';

69のところでエラーを吐きます。
by けん (2009-05-28 13:39) 

けん

69は解決しました。
今度は
gui_text.cpp
e:/trunk/source/libwiigui/gui_text.cpp: In member function 'virtual void GuiText::Draw()':
e:/trunk/source/libwiigui/gui_text.cpp:394: error: 'FTGX_JUSTIFY_MASK' was not declared in this scope
make[1]: *** [gui_text.o] Error 1
"make": *** [build] Error 2

gui_text.cppの
if((drawStyle & FTGX_JUSTIFY_MASK) == FTGX_JUSTIFY_CENTER)で止まります。
by けん (2009-05-28 14:16) 

Rudolphファン

gxの開発者dimokが次のように書いています。
このページへのupでもいいのでRudolphさんの本気を期待しています。

For the Japanese guys. Please send me the two files .c and .h to transform from UN2JP. Than i add it to the loader. (Come to IRC or pm me)
by Rudolphファン (2009-06-02 23:03) 

Armani

質問です。これらのGXを導入するのに
もし日本語化しなければ(オリジナルのままで)
コンパイルやらなにやらなど必要ないのでしょうか?
上記のように言語変更などの作業も必要ないのでしょうか?
ぐぐっても日本語化しかのっておらずで・・・
by Armani (2009-06-03 15:54) 

皇帝

けんさん

亀で申し訳ありません。FreeTypeGX.hが変更になっておりますので
単純に置き換えしてはダメです。FreeTypeGX.h/cppは、該当箇所のみ
修正し直す必要があります。

Rudolphファンさん
ファンなのはうれしいですが...
UN2JP???、JP2UN(SJIS2Unicode)のことかな?
英語が苦手な事と、「FreeTypeGX_JPN」を見ればすぐに分かることなので..
暫く様子見とさせていただきます。
まだ、UTF-8のサポートも無いしフォントを外部から読み込むようにする気配も
ないですし...CoverFlowでは、一応指摘コードでUTF-8をサポートしたのに...

Armaniさん

配布されているdol起動もしくはwadを導入すればいいと思いますが...

by 皇帝 (2009-06-03 21:43) 

yasun

>>英語が苦手な事と、「FreeTypeGX_JPN」を見ればすぐに分かることなので..暫く様子見

Rudolphさん
SJIS Unicodefixを英訳して展開してUploadしておきました・・・(一応、引用して置きましたが事後了承でよいでしょうか?)
※私は理解しました。 あとはお外で分かってくれるかは・・・一週間放置しとこう。

Rudolphファンさん
さぁー、一緒に、Rudolphを世界に広めましょうw
次は、GBATEMPにてお待ちしてますw

ではでは
yasun

by yasun (2009-06-08 20:56) 

wiipspiso

yasunさん
こちらでお願いするのは違うとは思うのですが、ぜひ日本語で解説していただきたいです。
by wiipspiso (2009-06-09 12:55) 

yasun

>ぜひ日本語で
For Your Information

yasun@『紅の雑記』さんをご覧くださいw (ヒソヒソ)

PS: Rudolph様、場をちょっと拝借します
by yasun (2009-06-09 20:53) 

wiipspiso

yasunさん
誘導ありがとうございました。なんとか成功しました。m(_ _)m
by wiipspiso (2009-06-10 19:52) 

kukai

先ほど rev497にて
皇帝さんの Unicode Fixが反映されてました。
font.ttfだけ差し替えて makeすればokでした。

あらためて皇帝さんに感謝です。 m(_ _)m
by kukai (2009-06-13 07:15) 

awase

USB Loader GXユーザーの皆さんに質問なのですが、
日本語化したdolで公式ページのForwarderで立ち上がりますでしょうか?
ここ最近のrevでは立ち上がらなくなっているのは当方だけでしょうか?

みなさんの意見をお聞かせください。
by awase (2009-06-15 02:11) 

aki

USB Loader GXが日本語化したdolではForwarderで立ち上がらなくなりました。
HBCからしか立ち上がらなくなりました。
原因がわかりません・・・
日本語化しないと立ち上がるみたい・・・?
by aki (2009-06-15 03:13) 

awase

最新のForwarder_14.06.09で起動確認しました。
書き込んどいて数時間後には新しいのが出るという間抜けな結果に(+ +;)
ですのでaki様最新のForwarderの14.06.09でお試しあれ
by awase (2009-06-15 10:49) 

aki

awase様
最新のForwarderの14.06.09でOKでした。
ありがとうございます。
by aki (2009-06-16 01:53) 

皇帝

r519で、やっとフォントの読込みができるようになりました。
カバー・フォルダに、使用したい「font.ttf」入れておけばいいです。
でも久々に触ったら..この重さは..タルくて使い物にならないよー!
by 皇帝 (2009-06-16 09:56) 

awase

皇帝様
お世話になっております。
確かに外部フォントを読み込ませると重いですね、、、
スロー再生みたいな、、、
ちなみにfont.ttfはカバーフォルダではなくテーマフォルダですよね?
やはり現状はfont.ttfを差し替えてコンパイルしなおした方がよさそうです。
差し替えてやれば速度的にはずいぶん改善されます。
by awase (2009-06-16 12:05) 

皇帝

awaseさん

打ち間違えました。ご指摘通りのテーマ・フォルダのつもりでした。
>確かに外部フォントを読み込ませると重いですね、、、
フォント差し替えて、リビルドだと遅くないのですか?
試してませんでした。
by 皇帝 (2009-06-16 13:28) 

外構

お疲れ様です。
頑張ってください
by 外構 (2009-06-16 15:49) 

ふじまる

現在の仕様は、外部フォントファイルはメモリに読み込んでいないため
動作が遅いんでしょうね。(文字表示の度にSDにアクセス)

最初にメモリにロードしちゃえばいいと思うんですが、メモリ周りが
厳しいんでしょうか?

CoverFlowなんかは大きいサイズのフォントだと起動しないし...。
by ふじまる (2009-06-16 23:10) 

guest

Wiiの方からコメントして申し訳ありません。
GBA_ExpLoader_MSHL2_01がDLできません。なぜでしょうか???
by guest (2009-06-23 17:01) 

awase

お久しぶりです。
r568で確認したのですがフォント差し替えだとゲームが立ち上がりませんのでご注意ください。
ただし、外部フォント読み込みの速度がかなり改善されたようで実用レベルだと思います。
ですので特別なリビルドの必要がなくなりました。
テーマフォルダにフォントを入れてやって日本語を選択するだけで完全日本語化となります。以降はusbloader gx上でアップデートもできます。
GXも安定してきたと思ってよいのではないかと思います。
by awase (2009-07-01 01:09) 

aakaTMY

はじめまして
いつもわかりやすい解説ありがたいです!!!!
これからもよろしくお願いします!!!!!
by aakaTMY (2009-08-27 12:45) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。