ドキュメントがまったく無いというのも考えものなので。
mvm.pexをp/eceに転送しておいてください。 それから、適当にプログラムをこしらえて。ライブラリとか サンプルとかを参考に。
それからコンパイル。コンパイルする際は、一緒に付いてる mvm.jarにクラスパスを通しておいてください。
ex) $ javac -classpath mvm.jar nanika.java
コンパイルできたら必要そうなファイルを main.jar に入れておいてください。 mvm.jarは入れなくていいです。
ex) $ jar -cvf main.jar *.class
それをp/eceに送って、mvmを実行。動かなかったら多分僕が悪いです、気が向いたらバグ報告ください。
標準ライブラリみたいなものは以下のものが使えるはずです。 コンパイル時にギリギリ困らない程度実装されてます。
Object | equals だけ実装 |
String | コンストラクタ String(String) だけ実装 |
StringBuffer | appendとtoString()は実装 |
それと以下ふたつが package vaca に含まれます。
「Java仮想マシンって名乗っちゃだめ(商標なので)」っていうんだったら、 Java仮想マシン。略して"Vaか"だよ馬鹿。だからパッケージ名vacaでいいんだよ。
っていうふうな感じで名付けたパッケージ名だったように思います。
P/ECEへのインターフェースです。基本的にP/ECEのAPIを基にしてるので そっちの方も参照してください。 全部 static メソッドなんで、そのまま使ってください。
public static void lcdTrans | pceLCDTrans VRAMの転送。 |
public static byte[] lcdSetBuffer(byte[]buf) | pceLCDSetBuffer VRAMの設定、取得 |
public static int padGet() | pcePadGet パッドの状態の取得。ちなみに、Piece.PAD_RI とかが使えます |
public static void cls() | VRAMの消去。 自分でVRAM取得して配列の値いじってもいいんだけど、こっちのほうが速い |
public static void appReqExit(int code) | pceAppReqExit |
public static void drawBmp( PieceBmp bmp, int x, int y ) | x, y の位置に bmp の描画。 |
drawBmpできるビットマップを pgd ファイルから作ります。 ちなみに、main.jar に含まれているファイルはそのまま使えます。 今はコンストラクタしか無いです。
public PieceBmp( String filename ) | filename からビットマップをロードします。 失敗したら例外とかじゃなくて、そのまま異常終了してしまうのが辛い (例外処理がまだきちんと実装されてないので…) |
大体こんな感じです。あと文字描画さえできれば基本的なところは大丈夫だと思うのですが。
mvm.zipに含まれるサンプルです
import vaca.*; class Main // Mainっていうクラスを用意 { int x=0,y=0; byte [] lcdbuff; PieceBmp bmp; public Main(){ // 最初にコンストラクタが呼ばれます lcdbuff = Piece.lcdSetBuffer( null ); bmp = new PieceBmp("test.pgd"); } public void appProc( int cnt ) { // appProcはP/ECEのそれと一緒 int pad = Piece.padGet(); if ( ((pad&Piece.PAD_DN)!=0) && y<88 ) y++; else if ( ((pad&Piece.PAD_UP)!=0) && y>0 ) y--; if ( ((pad&Piece.PAD_RI)!=0) && x<128 ) x++; else if ( ((pad&Piece.PAD_LF)!=0) && x>0 ) x--; if ( (pad&Piece.TRG_C) == Piece.PAD_C ) { Piece.appReqExit( 0 ); // 終了 } Piece.drawBmp( bmp, x, y ); Piece.lcdTrans(); Piece.cls(); } }
色々気を付けないといけない点があります
他にもあるかも。