japaneses text

Say listen I was having some problems with the hud trying to make some Japanese text for famicom games and I was wondering if there was anyone who could help me or other people with that sort of thing. And thank you.
 

dale_coop

Moderator
Staff member
The NES letters displayed on screen are just tiles, I means a graphic tile. In NESmaker, in the "HUD & boxes > Tiles" those different graphic tiles (from your tiles) are assigned to keyboard letters:

2021-08-03-10-06-02-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png

Doing that, each time you will your the "A" keyboard letter in one of your texts, it will draw that particular tile on the screen.


For example, if I use a text with my ABC keyboards letters:

2021-08-03-10-08-19-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png


On screen, it will draw:

2021-08-03-10-50-22-Mesen-game.png



Now, imagine that if your HUD tiles is totally different, using any graphics (like for example, a small list of kana):

2021-08-03-10-15-01-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png

Your A keyboard letter is still assigned to the same tile ID (same tile index in the tileset) but now instead of a graphic "A", there is something else. In this example, even the "0" keyboard letter is now a graphic tile totally different.

The result is now, with my previous text using the ABC keyboard letters, it will draw those tiles on screen:

2021-08-03-10-21-20-Mesen-game.png




Knowing that, you can place (in your hud tileset) all the graphic tiles you will need in order to draw words on your screen, and try to use the corresponding keyboard letters in your nesmaker texts.

For example, if I want to draw "KUBO" in katakana on screen (which is キュボ), I will need to draw those 4 graphics tiles:

2021-08-03-10-40-21-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png


If I check my HUD tileset, I will need to use those ones:

2021-08-03-10-42-28-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png


In the correct, order those graphic tiles corresponds to the keyboard letters:

2021-08-03-10-46-47-NES-MAKER-4-5-9-Version-0x176-Adventure-Tutorial-MST.png


And finally, in my game, the text will be draw like I want:

2021-08-03-10-47-55-Mesen-game.png



The whole thing is just puzzling (the graphic tiles from your hud tileset... using the corresponding keyboard letters)
 

Jonny

Well-known member
The whole thing is just puzzling (the graphic tiles from your hud tileset... using the corresponding keyboard letters)
On the same subject, how would you recommend doing the actual translation. I can use the entire HUD so about 62 characters available because I'm not using that tileset for anything else. Do you think Google translator is accurate enough or does the language have certain elements which might be badly translated without human input?
 

dale_coop

Moderator
Staff member
For the translation itself. Google will produce shitty texts.
I'd suggest to find a real person who can translate your texts for you (and simplify them, in order to use the minimum kanji / hiragana or katakana for the entire game).
 

Jonny

Well-known member
For the translation itself. Google will produce shitty texts.
I'd suggest to find a real person who can translate your texts for you (and simplify them, in order to use the minimum kanji / hiragana or katakana for the entire game).
Thank you for the advice. I've found someone on fiverr who has good reviews. Would the same apply for a this website as Google?
Last question I promise!... Is it better to use Katakana only?
I'll do a tileset to demonstrate the limitations then contact someone, thanks again.
 

dale_coop

Moderator
Staff member
Usually FAMICOM games used katakana or hiragana for texts, because those have a limited list of "characters" (around 50). Using full Japanese texts (kanji + hiragana + katakana would require so many tiles... it's not possible for a nes/famicom game).
 

BITVADER

Member
この問題を無事に解決できたかどうかわかりませんが、私なりに今実装している日本語メッセージの使用について書き連ねていきます。
なお、おそらくこの内容を役立てられる人は日本語のわかる人だけだと思うので、日本語で記述していきます。

nihongo02.png
実際にゲーム画面です。
平仮名とカタカナが混じったメッセージがテキストボックスで表示されています。
nihongo01.png
使っている文字の種類はおよそ92文字となります。
BGのタイル#90から#BFまでの48文字と#D0から#FFまでの48文字を合わせた数から、
テキストボックスのスペースや空白に使うタイルを取り除いた数が文字として使えるBGタイルの最大数と認識しています。

ちなみに通常のNesmakerのモジュールだとHudのタイルで書かれた文字(#D0から#FFまでの48文字)しか使えない為
空白を除いた46文字しかテキストで使えませんが、以下のリンクから学ぶことで倍の92文字が使用できるようになります。
http://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739

日本語には片仮名と平仮名だけで50文字ずつあり、さらに句読点や50音に無い文字や記号も必要になります。
したがってゲームに使用できる文字の数は非常に限られたものになります。

そのため、私の場合はまずゲームで表示するすべての文章を下書きし、その文章の中から使用頻度の高低を決め、
使用頻度の低い文字は言い回しを変えたりしています。
そして文字の配置がバラバラなのは日本語キーボードのキートップに書かれている平仮名(かな打ち用の表記)を基準にしているからです。
それは下書きをゲームで使用できるテキストに変換する際に非常に便利だからです。
上記のBGであればNesmakerで入力する文字は
「おはよう」→「6f94」となります。

下書きの文章をアプリケーションで一括変換すれば楽ですが、細かいテキストを追加したりする際にはキーボードで\直接入力します。

もし92文字以上の文字を使いたいのなら、何らかのスクリプトでHud.bmpやPathTiles00.bmpを書き換えるスクリプトが必要となるでしょう。
 

dale_coop

Moderator
Staff member
この問題を無事に解決できたかどうかわかりませんが、私なりに今実装している日本語メッセージの使用について書き連ねていきます。
なお、おそらくこの内容を役立てられる人は日本語のわかる人だけだと思うので、日本語で記述していきます。

View attachment 8617
実際にゲーム画面です。
平仮名とカタカナが混じったメッセージがテキストボックスで表示されています。
View attachment 8618
使っている文字の種類はおよそ92文字となります。
BGのタイル#90から#BFまでの48文字と#D0から#FFまでの48文字を合わせた数から、
テキストボックスのスペースや空白に使うタイルを取り除いた数が文字として使えるBGタイルの最大数と認識しています。

ちなみに通常のNesmakerのモジュールだとHudのタイルで書かれた文字(#D0から#FFまでの48文字)しか使えない為
空白を除いた46文字しかテキストで使えませんが、以下のリンクから学ぶことで倍の92文字が使用できるようになります。
http://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739

日本語には片仮名と平仮名だけで50文字ずつあり、さらに句読点や50音に無い文字や記号も必要になります。
したがってゲームに使用できる文字の数は非常に限られたものになります。

そのため、私の場合はまずゲームで表示するすべての文章を下書きし、その文章の中から使用頻度の高低を決め、
使用頻度の低い文字は言い回しを変えたりしています。
そして文字の配置がバラバラなのは日本語キーボードのキートップに書かれている平仮名(かな打ち用の表記)を基準にしているからです。
それは下書きをゲームで使用できるテキストに変換する際に非常に便利だからです。
上記のBGであればNesmakerで入力する文字は
「おはよう」→「6f94」となります。

下書きの文章をアプリケーションで一括変換すれば楽ですが、細かいテキストを追加したりする際にはキーボードで\直接入力します。

もし92文字以上の文字を使いたいのなら、何らかのスクリプトでHud.bmpやPathTiles00.bmpを書き換えるスクリプトが必要となるでしょう。

妻の協力を得て、私たちも同じ方法を取りました。まず、すべての文章を紙に下書きし、カタカナの使用文字数を減らすために文章を修正・簡略化しました(特に共通の文字をできるだけ多く使うように調整)。その後、カタカナの文字とNESmakerのタイル(テキストボックスに入力する文字や記号)との対応表を作成しました。

『SkateCat』では、少し異なる(やや複雑な)方法を使用しました。特定のスクリプトを作成し、各テキスト画面ごとに異なるHUD.BMPを読み込むようにしました。これにより、各画面で約30種類の異なる文字を使用することが可能になりました。

@BITVADER あなたのゲームの演出は本当に素晴らしいですね。カットシーンのテキスト表現も見事です!
 

hiro6120

New member
この問題を無事に解決できたかどうかわかりませんが、私なりに今実装している日本語メッセージの使用について書き連ねていきます。
なお、おそらくこの内容を役立てられる人は日本語のわかる人だけだと思うので、日本語で記述していきます。

View attachment 8617
実際にゲーム画面です。
平仮名とカタカナが混じったメッセージがテキストボックスで表示されています。
View attachment 8618
使っている文字の種類はおよそ92文字となります。
BGのタイル#90から#BFまでの48文字と#D0から#FFまでの48文字を合わせた数から、
テキストボックスのスペースや空白に使うタイルを取り除いた数が文字として使えるBGタイルの最大数と認識しています。

ちなみに通常のNesmakerのモジュールだとHudのタイルで書かれた文字(#D0から#FFまでの48文字)しか使えない為
空白を除いた46文字しかテキストで使えませんが、以下のリンクから学ぶことで倍の92文字が使用できるようになります。
http://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739

日本語には片仮名と平仮名だけで50文字ずつあり、さらに句読点や50音に無い文字や記号も必要になります。
したがってゲームに使用できる文字の数は非常に限られたものになります。

そのため、私の場合はまずゲームで表示するすべての文章を下書きし、その文章の中から使用頻度の高低を決め、
使用頻度の低い文字は言い回しを変えたりしています。
そして文字の配置がバラバラなのは日本語キーボードのキートップに書かれている平仮名(かな打ち用の表記)を基準にしているからです。
それは下書きをゲームで使用できるテキストに変換する際に非常に便利だからです。
上記のBGであればNesmakerで入力する文字は
「おはよう」→「6f94」となります。

下書きの文章をアプリケーションで一括変換すれば楽ですが、細かいテキストを追加したりする際にはキーボードで\直接入力します。

もし92文字以上の文字を使いたいのなら、何らかのスクリプトでHud.bmpやPathTiles00.bmpを書き換えるスクリプトが必要となるでしょう。
素晴らしいですね。私は日本人なので日本語を使いたいと思ってました。
添付されたリンクに行って調べたのですが・・・
caps onを書く場所が見つからず、実装出来ませんでした。

どうやって92文字を使う事が可能になったのか、是非知りたいです。
よろしくお願いします。
 

hiro6120

New member
妻の協力を得て、私たちも同じ方法を取りました。まず、すべての文章を紙に下書きし、カタカナの使用文字数を減らすために文章を修正・簡略化しました(特に共通の文字をできるだけ多く使うように調整)。その後、カタカナの文字とNESmakerのタイル(テキストボックスに入力する文字や記号)との対応表を作成しました。

『SkateCat』では、少し異なる(やや複雑な)方法を使用しました。特定のスクリプトを作成し、各テキスト画面ごとに異なるHUD.BMPを読み込むようにしました。これにより、各画面で約30種類の異なる文字を使用することが可能になりました。

@BITVADER あなたのゲームの演出は本当に素晴らしいですね。カットシーンのテキスト表現も見事です!
画面ごとに異なるHUD.BMPを読み込めるのは素晴らしいですね。
それはかなり難しいスクリプトなのでしょうか?
気になります、是非に教えて欲しいです。
よろしくお願いします。
 

Anna_TeamRocket

New member
どうしたんだい、おまえたち? :D
いいか、『ダウンタウン熱血物語』のコードをそのままパクればいいのさ。あんな感じだったろ:
1. まず、値を読み込む。
2. もし「濁音」なら、上に濁点をつけてからステップ4へ。
3. もし「半濁音」なら、上に半濁点をつけてからステップ4へ。
4. 文字を書き込む。
5.「終止符」がくるまで、最初から繰り返す。
 

hiro6120

New member
どうしたんだい、おまえたち? :D
いいか、『ダウンタウン熱血物語』のコードをそのままパクればいいのさ。あんな感じだったろ:
1. まず、値を読み込む。
2. もし「濁音」なら、上に濁点をつけてからステップ4へ。
3. もし「半濁音」なら、上に半濁点をつけてからステップ4へ。
4. 文字を書き込む。
5.「終止符」がくるまで、最初から繰り返す。
質問はこのリンク先の、caps onを書く場所が分からないのです。
http://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739
テキストを書き込む前に、まだスクリプトが完成してないのです。

こちらは初心者なので、簡単な言葉の回答は望んでいません。
以上。
 

Anna_TeamRocket

New member
質問はこのリンク先の、caps onを書く場所が分からないのです。
http://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739
テキストを書き込む前に、まだスクリプトが完成してないのです。

こちらは初心者なので、簡単な言葉の回答は望んでいません。
以上。
実は、とてもシンプルなことなんです。分かってほしいとまでは言いませんけれど、少しだけ考えてみていただけませんか? もしかしたら、あなたの中でふと腑に落ちることもあるかもしれません。……そもそも、私はNesmakerのユーザーではありませんしね。
Code:
    STA $2006    ;VRAMアドレスの上位バイトを書き込み(画面上のタイル描画位置)
    LDA $2A        ;ゼロページ($2A)の値をAにロード
    STA $2006    ;VRAMアドレスの下位バイトを書き込み
    LDX #$03    ;Xレジスタに3を代入
    LDA #$00    ;Aレジスタに0を代入
MARK1: 
    STA $2007    ;背景タイルを書き込み(書き込むたびにアドレスが自動インクリメントされる)
    DEX            ;Xレジスタの値から1を引く
    BPL MARK1    ;マイナスフラグが立っていなければMARK1へジャンプ
    LDA $2A        ;ゼロページ($2A)の値をAにロード
    CLC            ;キャリーフラグをクリア
    ADC #$20    ;Aに$20を加算(次の行へ移動)
    PHA            ;Aレジスタの値をスタックに保存
    LDA $2B        ;ゼロページ($2B)の値をAにロード
    ADC #$00    ;キャリーを含めて0を加算
    STA $2006    ;VRAMアドレスの上位バイトを書き込み
    PLA            ;スタックから値をAレジスタに戻す
    STA $2006    ;VRAMアドレスの下位バイトを書き込み
    LDX #$03    ;Xレジスタに3を代入
    LDA #$00    ;Aレジスタに0を代入
MARK2: 
    STA $2007    ;背景タイルを書き込み
    DEX            ;Xレジスタの値から1を引く
    BPL MARK2    ;マイナスフラグが立っていなければMARK2へジャンプ
    INC $0681    ;RAM($0681)の値に1を加算
    INC $0681
    INC $0681
    INC $0681 
    JSR $E330    ;サブルーチン呼び出し(戻り先アドレスをスタックに保存)
    LDA $0681    ;AにRAM($0681)の値をロード
    CMP #$40    ;Aと$40を比較(ステータスフラグのみ変化)
    RTS            ;サブルーチンから復帰
 

hiro6120

New member
実は、とてもシンプルなことなんです。分かってほしいとまでは言いませんけれど、少しだけ考えてみていただけませんか? もしかしたら、あなたの中でふと腑に落ちることもあるかもしれません。……そもそも、私はNesmakerのユーザーではありませんしね。
Code:
    STA $2006    ;VRAMアドレスの上位バイトを書き込み(画面上のタイル描画位置)
    LDA $2A        ;ゼロページ($2A)の値をAにロード
    STA $2006    ;VRAMアドレスの下位バイトを書き込み
    LDX #$03    ;Xレジスタに3を代入
    LDA #$00    ;Aレジスタに0を代入
MARK1:
    STA $2007    ;背景タイルを書き込み(書き込むたびにアドレスが自動インクリメントされる)
    DEX            ;Xレジスタの値から1を引く
    BPL MARK1    ;マイナスフラグが立っていなければMARK1へジャンプ
    LDA $2A        ;ゼロページ($2A)の値をAにロード
    CLC            ;キャリーフラグをクリア
    ADC #$20    ;Aに$20を加算(次の行へ移動)
    PHA            ;Aレジスタの値をスタックに保存
    LDA $2B        ;ゼロページ($2B)の値をAにロード
    ADC #$00    ;キャリーを含めて0を加算
    STA $2006    ;VRAMアドレスの上位バイトを書き込み
    PLA            ;スタックから値をAレジスタに戻す
    STA $2006    ;VRAMアドレスの下位バイトを書き込み
    LDX #$03    ;Xレジスタに3を代入
    LDA #$00    ;Aレジスタに0を代入
MARK2:
    STA $2007    ;背景タイルを書き込み
    DEX            ;Xレジスタの値から1を引く
    BPL MARK2    ;マイナスフラグが立っていなければMARK2へジャンプ
    INC $0681    ;RAM($0681)の値に1を加算
    INC $0681
    INC $0681
    INC $0681
    JSR $E330    ;サブルーチン呼び出し(戻り先アドレスをスタックに保存)
    LDA $0681    ;AにRAM($0681)の値をロード
    CMP #$40    ;Aと$40を比較(ステータスフラグのみ変化)
    RTS            ;サブルーチンから復帰
ご返答ありがとうございます。
質問はこのリンクhttp://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739
での実装が可能か不可能かを聞きました。
別のスクリプトを実装しなければ出来ないのでしょうか?
 

BITVADER

Member
ご返答ありがとうございます。
質問はこのリンクhttp://www.nesmakers.com/index.php?threads/upper-and-lowercase-text-in-version-4-5.5341/post-47739
での実装が可能か不可能かを聞きました。
別のスクリプトを実装しなければ出来ないのでしょうか?
最終的にバケットマウス氏のスクリプトを正しく実装していれば、92文字を使う事が出来ました。
ただ大文字小文字を使い分ける方法が異なっていたのです。
上の段(#90からの片仮名もじ)を使うときは文字の前に「$」をつける必要がありました。
 

hiro6120

New member
最終的にバケットマウス氏のスクリプトを正しく実装していれば、92文字を使う事が出来ました。
ただ大文字小文字を使い分ける方法が異なっていたのです。
上の段(#90からの片仮名もじ)を使うときは文字の前に「$」をつける必要がありました。
ご返信ありがとうございます^^
まだ試していませんが、実装したいと思います。

コード的には、そのままコピーペーストで良いのでしょうか?
capsOn をどこに追加すれば良いのでしょうか?
細かくコードを教えて頂けたら嬉しいです。

テキストの問題も、RGFではもっと簡単になるかもしれませんね^-^
 
Top Bottom