SSブログ

FreeTypeGX SJIS/UTF-8対応 [Wii]

FreeTypeGXの日本語対応で、SJISだけでなくUTF-8にも対応してみました。

判定は非常に適当なので、もしメッセージがバケる場合は表示するメッセージ側で
適当に調整してください。
今回の修正で、snes9x-gx等のlibfatを使用してファイル名を表示している
プログラムでも日本語を表示することができるようになります。

また、ソース内の日本語のメッセージやタイトルをUTF-8で記述するが可能になりました。

FreeTypeGX_JPN

但し、「libogc_SJIS」はUTF-8には対応していませんので、「libogc_SJIS」を使用する場合は、
今まで通りSJISにて記述する必要があります。


== 「読んでネ」の修正箇所  2009/5/5 ==

「usbloader-gui_DevJ」を、「FreeTypeGX_JPN」に読み替え

 ・libogc等の最新版を導入(snes9x-gxやfceugcから)
   snes9x-gx.googlecode.com/files/libogc-30-04-2009.zip
   fceugc.googlecode.com/files/libogc-30-04-2009.zip
    (USB Iso Loader GUIの場合もこちらの方がいいと思います)

 ・FreeTypeGX_JPNからsourceフォルダをコピー
   sjis2unicode.tblを、sourceフォルダ直下にコピー
  日本語用のフォントを、USB Iso Loader GUIのsource\fontsに上書きコピー
   (bg_options_entry.pngは、オリジナルが同一になったため削除しました)


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

コメント 41

るい

ご苦労様です。公開ありがとうございます。
さっそく試してみたいと思います。
by るい (2009-05-02 08:29) 

wiipspiso

うまくいきました。
ありがとうございます。
by wiipspiso (2009-05-02 10:43) 

皇帝

るいさん

試した結果も教えてください。


wiipspisoさん

早!下準備が完璧でしたね。

by 皇帝 (2009-05-02 11:08) 

AZK

ライブラリいただきました!!

大したことではありませんがbg_options_entry.pngが同梱されてないみたいです。
それと2chユーザから今回のライブラリの動作検証動画がUPされてます。(ご参考まで)
ttp://www.youtube.com/watch?v=mBg8JXCW9nQ&fmt=34
by AZK (2009-05-02 11:46) 

皇帝

AZKさん

bg_options_entry.pngですが、公式のものが高さ28ピクセルに
変更になってます(以前同梱していたものと同様)。
よって、変更不要ですので削除いたしました。
一応、チャント使えているようなので安心しました。

by 皇帝 (2009-05-02 12:29) 

AZK

そういうことだったんですね。了解です!
「読んでネ.txt」に上書きしてねって書いてあったのでどこにあるのかなと探しておりました...

なんにせよ、こちらでも問題なく日本語化できました。
ありがとうございます!!
by AZK (2009-05-02 13:09) 

UD

書き込み、初ですがいつもありがとうございます。
日本語化できました。
ありがとうございます。

by UD (2009-05-02 14:39) 

皇帝

AZKさん

本当だ!「読んでネ.txt」から削除するの忘れてました。

「読んでネ.txt」の
>bg_options_entry.png(チョット、幅を広げた)を、USB Iso Loader GUIの>source\imagesに上書きコピー
は、無視してください。

by 皇帝 (2009-05-02 19:43) 

klan

皇帝さん

さっそくの対応、お疲れ様です。
私も試してみましたが、バッチリです。
また今回のソースも参考に、勉強させてもらいます!
by klan (2009-05-03 03:24) 

AZK

皇帝さん こんにちわ!
FreeTypeGX_JPNをfceugcに適用し
こちらも問題なく起動でき日本語化成功したかと思ったのですが
セーブをするとコードダンプしてしまいます。
切り分けたところFreeTypeGX_JPNを適用しないとこの現象は起こらないため
日本語化モジュールの何かしらかが原因となっているようなのですが
それ以上わかりませんでした。解決可能でしょうか?

fceugcソース
http://code.google.com/p/fceugc/source/list

不具合再現手順
1. fceugc Rev.222にFreeTypeGX_JPNを適用(要:fontの位置調整)
2. make
3. fceugc起動
4. 任意のゲーム起動
5. Homeボタンを押して設定画面起動
6. セーブ選択
7. Stateセーブ選択
コードダンプ画面発生

※1をしないとコードダンプは発生しない
by AZK (2009-05-04 12:19) 

皇帝

AZKさん

確認しました。日本語化しなくてもソースからリビルドするだけで
ご指摘の現象が発生することがあるので..
色々と調べてたらモジュールのダウンロードの所に、「libogc-30-04-2009.zip」が
あることを発見!
これを使用したら日本語化しても問題ないようです。
まだ、devkitの方ではVerが上がっていないのとソースが見つけられないので
何が変わったのか不明ですが..

by 皇帝 (2009-05-04 19:55) 

AZK

うはっ、libogc側の問題でしたか!! 適用前にコンパイルした際には問題なかったので、
てっきり日本語化で変更部分の何がしかが原因と思ってしまいました。
これは失礼しました。
助言いただいた通りサイトのlibogc-30-04-2009.zipの適用で問題が起こらなくなることが確認できました。

それにしても開発者毎に使っているライブラリが区々なので、こういう不具合が発生するとなかなか原因切り分け大変ですね..お騒がせいたしました..
by AZK (2009-05-04 21:16) 

sawa

* 前記事よりもこちらに書いたほうがいいとおもわれるので、
 こちらに書かせていただきます。
 別記事の同質問は、削除願います。

 初めまして。いつも各種ツール利用させていただかせている者です。
皇帝様の日本語化キットでUSB Iso Loader GUIですが、
#--------------------------------------------------------
menu.cpp
c:/make/source/menu.cpp: In function 'int MenuInstall()':
c:/make/source/menu.cpp:1418: error: 'struct WPADData' has no member named 'battery_level'
c:/make/source/menu.cpp: In function 'int MenuDiscList()':
~エラー同じなので中略~
make[1]: *** [menu.o] Error 1
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:00
#--------------------------------------------------------
とのエラーがでてきてしまいます。
どうすれば回避できるかご教示いただければ幸いです。
by sawa (2009-05-04 21:55) 

AZK

sawaさん

こんばんわ。AZKです。
皇帝さんの「読んでネ.txt」に書いてある通りにコンパイルすれば
最新版のUSB Iso Loader GUI(rev262)でも問題なく
コンパイルされることを確認しました。
オリジナルのmenu.cppにはmenu.cpp:1418は空行のため
自分で書き換えた部分か、コンパイル環境が正しくセットアップされてない
ことが原因のような気がします。

再度、皇帝さんの「読んでネ.txt」の通りにできてるか確認されると
よいかと思います。ご参考まで。
by AZK (2009-05-04 22:37) 

sawa

書いた内容に誤りがありました。正確には、
#---------------------------------------------------------
c:/Wii/usb/source/menu.cpp: In function 'int MenuInstall()':
c:/Wii/usb/source/menu.cpp:1990: error: 'struct WPADData' has no member named 'battery_level'
c:/Wii/usb/source/menu.cpp: In function 'int MenuDiscList()':
c:/Wii/usb/source/menu.cpp:2422: error: 'struct WPADData' has no member named 'battery_level'
c:/Wii/usb/source/menu.cpp: In function 'int MenuFormat()':
c:/Wii/usb/source/menu.cpp:2989: error: 'struct WPADData' has no member named 'battery_level'
make[1]: *** [menu.o] Error 1
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:01
#---------------------------------------------------------
です。

by sawa (2009-05-04 23:17) 

皇帝

sawaさん

それは、libogcが古い為です。
おそらく、devkitの1.7.1aのままではないかと思います。
「libogc-04-04-2009.zip」か「libogc-30-04-2009.zip」を入れてください。


by 皇帝 (2009-05-04 23:31) 

sawa

devkitProのバージョンは1.4.1.0ですので最新のはずです。
libogc-04-04-2009.zipをいれてみましたが変化無でした。
by sawa (2009-05-05 00:19) 

皇帝

sawaさん

devkitPro\libogc\include\wiiuse\wpad.hが、古いと思うのですが..
チャント、解凍したlibogcをdevkitPro\libogcに上書きしてますか?

by 皇帝 (2009-05-05 07:16) 

sawa

皇帝様の仰った方法で出来ました。
くだらない質問のために、貴重なお時間を割いていただき
ありがとうございました。
by sawa (2009-05-05 10:47) 

ゆっきー

makeを実行すると

c:/devkitPro/develop/usb/source/libwiigui/gui_text.cpp: In member function 'int GuiText::GetTextWidth()':
c:/devkitPro/develop/usb/source/libwiigui/gui_text.cpp:171: error: no matching function for call to 'FreeTypeGX::changeSize(int&, int)'
c:/devkitPro/develop/usb/source/FreeTypeGX.h:278: note: candidates are: void FreeTypeGX::changeSize(FT_UInt)
c:/devkitPro/develop/usb/source/libwiigui/gui_text.cpp: In member function 'virtual void GuiText::Draw()':
c:/devkitPro/develop/usb/source/libwiigui/gui_text.cpp:197: error: no matching function for call to 'FreeTypeGX::changeSize(int&, int)'
c:/devkitPro/develop/usb/source/FreeTypeGX.h:278: note: candidates are: void FreeTypeGX::changeSize(FT_UInt)
make[1]: *** [gui_text.o] Error 1
"make": *** [build] Error 2

とでるのですが。。。
by ゆっきー (2009-05-08 16:29) 

おさる

ゆっきー様と同じ症状が出ております、ソースはr296です292、294辺りでは問題無くコンパイル出来たのですが・・・

by おさる (2009-05-08 17:17) 

通りすがり

最新版r296のmakeで特に問題は出ませんねぇ・・・
再度、手違いがないか手順を見直すとよいかと思いますヨ
by 通りすがり (2009-05-08 19:23) 

皇帝

ゆっきーさん、おさるさん

usbloader-gui のr295で、FreeTypeGXが弄られてしまいました。
usbloader-gui のr295以降で使用する場合は下記の修正を加えてください。

FreeTypeGX.cpp
218: void FreeTypeGX::changeSize(FT_UInt vPointSize, FT_UInt hPointSize) {
220: this->ftPointSize = vPointSize;
221: FT_Set_Pixel_Sizes(this->ftFace, hPointSize, this->ftPointSize);

FreeTypeGX.h
278: void changeSize(FT_UInt vPointSize, FT_UInt hPointSize=0);
by 皇帝 (2009-05-08 19:29) 

おさる

修正後、問題無くコンパイル通りました
素早い対応、有難うございました
by おさる (2009-05-08 19:42) 

wiipspiso

r295同じくコンパイルできました。
ありがとうございます。
コメントを自分用メモとして引用させていただきました。
by wiipspiso (2009-05-08 22:12) 

HACKメモ

おはようございます。
初めての書き込みでございます。

この度は、私のミスにもかかわらず、当ブログまで来て頂きご助言をいただきまして誠にありがとうございますm(__)m
大切な時間をとらせてしまう結果となり反省しております。

ただいま、記事の修正も終わりまして再アップ致しました。

本当にありがとうございましたm(__)m


by HACKメモ (2009-05-09 10:47) 

ゆっきー

遅くなりました。
正常にコンパイルできました。
ありがとうございます。


by ゆっきー (2009-05-09 17:06) 

けん

こんにちは。
いろんなホームページを探って手がかりを探そうとしたんですけど無理だったので質問させてください。
r367でこのようなエラーが出ます。
FreeTypeGXの書き換えもやりましたし「libogc-04-04-2009.zip」と「libogc-30-04-2009.zip」も入れてみました。
ソースが悪いのでしょうか?
> "make"
disc.c
f:/trunk/source/disc.c: In function '__Disc_SetTime':
f:/trunk/source/disc.c:139: error: conflicting types for 'settime'
c:/devkitPro/libogc/include/ogc/lwp_watchdog.h:68: error: previous declaration of 'settime' was here
make[1]: *** [disc.o] Error 1
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:01
by けん (2009-05-20 12:40) 

けん

たびたびすみません。
libogc-13-05-2009.zipを上書きしたら状況が変化して今度は
> "make"
fatmounter.c
f:/trunk/source/fatmounter.c: In function 'USBDevice_Init':
f:/trunk/source/fatmounter.c:18: error: too many arguments to function 'fatMount'
make[1]: *** [fatmounter.o] Error 1
"make": *** [build] Error 2

by けん (2009-05-20 14:05) 

R360

>けんさん
devkitPro1.5.0にlibogc-05-13を入れてmake
してみて下さい。
by R360 (2009-05-20 14:32) 

R360

>けんさん
devkitPro1.5.0に
devkitPro Libraries 03-04-2009 (*追加修正)と
libogc-05-13
を入れてmake
by R360 (2009-05-20 14:35) 

けん

R360さん早速ありがとうございます。
思考錯誤してました。
上記条件でやっても
if (fatMount("USB", &__io_usbstorage, 0, CACHE, SECTORS)) {
のところで止まりますね。
by けん (2009-05-20 15:10) 

R360

>けんさん
私は fatmounter.c の

if (fatMount("USB", &__io_usbstorage, 0, CACHE, SECTORS)) {

if (fatMountSimple("USB", &__io_usbstorage)) {
変更して通しましたが不具合があるかもしれません。

cfg.c
255 THEME.maxcharacters = 33;
も追加修正しておくと
にしておくと文字のはみ出しが無くなるので良いかも知れません、

自分の所だけかもしれませんがtitles.txtを利用して
日本語表示時に改行が少しおかしくなったりしてます。
by R360 (2009-05-20 16:04) 

けん

R360さんありがとうございます。
おかげで問題無くコンパイル出来ました。

このバージョンは日本語表示にすると文字が重なったりしますね。
あとlanguage.txtを日本語にしてみましたが認識してくれません。

今日1日楽しめました。また少しいじってみます。
ご多忙中お世話になりました。
by けん (2009-05-20 17:15) 

R360

>language.txt
language(.txtは無)
gui設定からSD:\config\language\language
と指定してやればウチでは確認できました。

by R360 (2009-05-20 17:24) 

けん

早い対応ありがとうございます。language完璧です。私の日本語は怪しいですけどw
タイトルがtitles.txtなので、拡張子なしとは思いもつきませんでした。
少し勉強してソースの中が理解できればよいのですが・・・。
今後ともよろしくお願いします。
by けん (2009-05-20 18:00) 

DOKU

タイトルのズレについて
少し前のバージョンから、titles.txtだけではなく、HDDにバックアップした
イメージを日本語にしていても、改行がズレて2重表示されました。
色々試したら、禁止文字?があるみたいで、
私の環境では、ダと棒の文字がタイトルの中にあると表示がズレるようです。
技術的なことはわかりませんが、この2文字があるものを変更すると
表示ズレはなくなりました。

他にも駄目な文字があるかもしれません

読んでネ.txtにバグ修正として記載されているgui_gamebrowser.cppの
修正ですが、ソース内容がだいぶ違うみたいですが、現状も2カ所を
sprintfをstrncpyに置き換える処置をして構わないのでしょうか?
ご存じの方いらっしゃいましたら、よろしくお願いします。
by DOKU (2009-05-21 18:05) 

いっち

ゲームリストのタイトルのズレの件ですが、自分は
gui_gamebrowser.cppの

144: if (pch!=NULL){gameTxt[i]->SetPosition(24, 15);}
365: if (pch!=NULL){gameTxt[i]->SetPosition(24, 15);}

144: if (pch!=NULL){gameTxt[i]->SetPosition(24, 0);}
365: if (pch!=NULL){gameTxt[i]->SetPosition(24, 0);}
にすることで対策しています。

ソースをいじるのはこれが初めてなので適切な処置かどうかは
分かりませんが、今のところ問題なく表示されています。
ご参考までに。
by いっち (2009-05-21 21:43) 

いっつあん

libogc-21-05-2009.zipで上書きしたらうまくコンパイルできました
日本語化もOKでした
by いっつあん (2009-05-22 13:28) 

ごち

libogc-23-05-2009.zipが出ています。
こちらもOKだと思います。
by ごち (2009-05-24 14:31) 

ハーレム

お世話になります。
wii SNES9X-GXを日本語化にチャレンジしております。
最新ソースをそのままmakeするとエラーが出ません
FreeTypeGXを導入すると下記のエラーが出てとまります。
お手数ですがご教授ねがえますでしょうか?
コンパイルは初の挑戦ど素人レベルです・・・。

gui_sound.cpp
gui_text.cpp
c:/snes9x-gx/source/ngc/gui/gui_text.cpp: In constructor 'GuiText::GuiText(const char*, int, GXColor)':
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:49: error: 'charToWideChar' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp: In constructor 'GuiText::GuiText(const char*)':
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:78: error: 'charToWideChar' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp: In member function 'void GuiText::SetText(const char*)':
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:113: error: 'charToWideChar' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp: In member function 'virtual void GuiText::Draw()':
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:219: error: 'MAX_FONT_SIZE' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:224: error: 'ChangeFontSize' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:239: error: 'charToWideChar' was not declared in this scope
c:/snes9x-gx/source/ngc/gui/gui_text.cpp:273: error: 'charToWideChar' was not declared in this scope
make[2]: *** [gui_text.o] Error 1
make[1]: *** [build_wii] Error 2
make[1]: Leaving directory `/c/snes9x-gx'
"make": *** [wii] Error 2

> Process Exit Code: 2
> Time Taken: 00:37



by ハーレム (2010-01-14 01:11) 

コメントを書く

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

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