コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

DS版OsoScriptを作った

あれもこれもと一通りの機能を付けていたら、こんな時間になってしまいました。でも低機能です。ColdFireに持って行くためのテスト版というところでしょうか。今までブログに書いてきた機能は実装されています。

とりあえず、NDS版用に新規実装した命令を説明します。

printコマンド print( 表示画面, X, Y, テキスト, 文字色 );

printは、任意の画面に文字を表示します。ただし、日本語はS-JISです。

rgbコマンド rgb( 赤, 緑, 青 );

rgbは、色を指定します。NDSは0〜31の階調の表示色となります。

lineコマンド line( 描画画面, X0,Y0, X1,Y1, 色 );

lineは、(X0,Y0)-(X1,Y1)の座標に指定色で線を引きます。

clsコマンド cls( 描画画面, 色 );

clsは、指定色に画面を塗りつぶします。

randコマンド rand( 数値 );

randは、0〜(指定値-1)までの整数をランダムに発生します。

touchkeyコマンド touchkey();

touchkeyは、押されているボタンやペンタッチ状況を取得します。

KEY_A: BIT(0)         KEY_DOWN: BIT(7)
KEY_B: BIT(1)         KEY_R: BIT(8)
KEY_SELECT: BIT(2)      KEY_L: BIT(9)
KEY_START: BIT(3)       KEY_X: BIT(10)
KEY_RIGHT: BIT(4)       KEY_Y: BIT(11)
KEY_LEFT: BIT(5)       KEY_TOUCH: BIT(12)
KEY_UP: BIT(6)        KEY_LID: BIT(13)

touchxコマンド touchx();

touchxは、ペンタッチしているX座標を取得します。タッチしていない場合は、最後にタッチされた値を返します。

touchyコマンド touchy();

touchyは、ペンタッチしているY座標を取得します。タッチしていない場合は、最後にタッチされた値を返します。

lcdswapコマンド lcdswap();

lcdswapは、上画面と下画面を入れ替えます。

bmpconnectコマンド bmpconnect( bmpファイル名 );

bmpconnectは、BMPファイルをスクリプトから読み出せるようにします。ただし、読めるBMPファイルは24ビットと8ビットデータに限ります。色データは読み込み時に15ビットに減色します。

putgコマンド putg( 画面, X, Y, 幅, 高さ, BMPのX座標, BMPのY座標 );

putgは、コネクトしたBMPファイルの任意の場所の絵を画面に貼り付けます。

cpygコマンド cpyg( 元画面, 先画面, X, Y, 幅, 高さ, 元のX座標, 元のY座標 );

cpygは、任意の画面上の画像を指定画面の任意の位置に貼り付けます。

setmainコマンド setmain( 数値 );

setmainは、表裏2画面あるメイン画面のどちらを表にするかを指定します。0と1で画面が入れ替わりダブルバッファのような使い方ができます。また、画素のマスクビットBIT(15)を0にすると、透過し表画面から裏画面が見えます。

connectmemコマンド connectmem( ファイル名, 接続モード );

connectmemは、任意のファイルをMem領域を使ってスクリプトから読み書きできるようにします。接続モードとは、ファイルオープンを"rb+"(0で指定)にするか"wb+"(1で指定)にするか設定できます。予め読み込ませたいデータがある場合は、0を指定してください。1の場合は新規にファイルを作成することができます。

readコマンド read( ファイルアドレス, メモリアドレス, サイズ );

readは、コネクトしたファイルからメモリにデータを取得します。ただし、取得できるのはMem領域という領域にのみです。この領域は256×192×2バイトあります。

writeコマンド write( メモリアドレス, ファイルアドレス, サイズ );

writeは、コネクトしたファイルにMem領域内のデータを書き込みできます。

boxコマンド box( 画面, X0, Y0, X1, Y1, 色, 塗りつぶし );

boxは、画面に(X0,Y0)-(X1,Y1)で囲まれる領域にボックスを描きます。塗りつぶし値=1としたとき、ボックスの中を塗りつぶします。

pointコマンド point( 画面, X, Y );

pointは、画面の任意の位置の色を取得します。ここで、画面にMem領域を指定した場合、Mem領域のデータを取得することが可能です。ただし、1ピクセルは2バイトなので、取得値、アドレス共に、2バイト単位です。

colorswapコマンド colorswap( 画面, X0, Y0, X1, Y1, 元色, 変更色 );

colorswapは、画面の(X0,Y0)-(X1,Y1)に指定された領域内の元色に当たる色を変更色に入れ替えます。ここで、透過色にしたい色を0に入れ替えれば透過画素になります。

pixelコマンド pixel( 画面, X, Y, 色 );

pixelは、画面の任意の場所の画素の色を設定できます。ここで、画面にMem領域を指定した場合、Mem領域にデータを書き込むことが可能です。ただし、1ピクセルは2バイトなので、取得値、アドレス共に、2バイト単位です。

クリスマスプレゼントには遅れましたが、明日、公開したいと思います。

本当にやりたいこと

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム