様々なラッピングを施して、iアプリ環境の自作 Virtual Machine を
  Android への移植が8割程完了した。
  以前作成したゲームコンテンツは問題なく動作。
  完全同一の VM コードで、プラットフォームを飛び越えてゲームが動く事に
  すげー感動。
   VM の満足度は 3割ほど。「何でも、どこでも、高機能に」動かせることを
  目標にしてます。
  あとは Graphics3D 関連の一部 API や、画面タッチのイベントを MIDP と
  Android で VM 上で吸収して実装する必要がある。
  ここ2日間、ずーっと自宅で Android エミュに付きっ切りだったので様々な
  事実を理解できた。
  ハマる箇所は多い。とくに lockCanvas() unlockCanvasAndPost() を iアプリの
  ようなダブルバッファリングをイメージしているとハマる。
  概念としては DirectDraw 時代のフリッピングと似ている。
  プライマリとバックバッファを切り替える。
  基本的に毎フレーム全描画を行うか、領域を指定して描画しないと意図しない
  現象が 起きたように 見える。
  一枚なにか描画して  lockCanvas() / unlockCanvasAndPost() の間に何も描画
  しない処理を入れ、それを繰り返すとわかりやすい。
  一つ前に転送した画面と、現在の画面が交互に表示されることが確認できる。
  あとサウンド関連で midi を鳴らしているのだけど、エミュ上では場合により
  onCompletion() によるループ再生が行われないときがある。
  この場合 seekTo() を行った後、Thread.yield(); で他のタスクに優先度を
  上げてやると9割方解決。10割にはまだ届かない。
  
0 件のコメント:
コメントを投稿