HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1011
oxメモリ上の16進数をリトルエディアンとして扱わない方法2解決


ox

リンク

2006/10/11(Wed) 16:36:16|NO.2937

12x10ピクセルのビットマップフォントが、
ShiftJISコードに準拠した順番で左上より右下へ並んでいる
フォントマップを利用しています。
http://www.softclub.co.jp/~zoro/k12x10/k12x10.gif
#図形文字(スペースを含めた表示される文字)のみのマップになっていますので
#「順番」が準拠しているだけです。

これを利用し、画面上に文字を描写させるためにサンプルスクリプトを書いてみました。
1バイト文字(半角英数)は容易に出来そうなので割愛し、2バイト(全角)文字の
表示を行おうと考えております。

まずは、フォントマップからフォントを正しく指定するために指定された文字コードから
フォントマップ上におけるX,Y座標を取得しなければなりません。

【スクリプト】

#define mx 1128 //フォントマップのXサイズ #define my 790 //フォントマップのYサイズ #define fx 12 //1文字のXサイズ #define fy 10 //1文字のYサイズ x = 0 y = 0 screen 0 : picload "k12x10.gif" st = "あいうえお" //文字列 sj = wpeek(st,0) //全角1文字取り出す sj -= (0x8120) //補正 y = ((sj*fx)/mx)*fy x = ((sj*fx)\mx) color 255,0,0 : line x,0,x,ginfo_winy : line 0,y,ginfo_winx,y
【EOS】

文字列変数stより0バイト目より2バイト分のデータを取得し(この場合は0x82A0)、
数値型変数sjに代入しています。
この変数sjをフォント座標X,Yの取得のため利用しているのですが、
リトルエディアンとして値が扱われてしまい、一筋縄ではいかなくなります。
アドレス0x00-0x01の各バイトを入れ替えることにより対処は可能ですが、
もし他に効率のよい方法がありましたらと思い、ご教授をお願いしようと思いました。

#ゲームなどで2バイトのオリジナルフォントを使用する機会も多いので、
#他の方はどうされているのかな、と考えていました。

よろしくお願いします。



この記事に返信する


ゆちボン

リンク

2006/10/13(Fri) 21:39:07|NO.2960

まずは、、、
うっひゃー、、、すごいですね。。。
そのフォント・・・

>リトルエディアンとして値が扱われてしまい、一筋縄ではいかなくなります。
どうにかすればビッグエディアンに直せるんではないでしょうか。
方法を覚えていません。。。ので、Googleで検索。
するとこんなものが出てきました。
	;HSPの場合
a = 1 ll_getptr a ll_ret p ll_str s,p,4 mes s stop
どうやらこれだけでできるみたいです。



ox

リンク

2006/10/18(Wed) 01:27:07|NO.3007

>>ゆちボン様

検索ワードが悪かったのか、少々うかつでした。
本当にありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.