WonderWitch.Com ■TOPネタ
・技その7「サスペンド/リジュームライブラリResumeIL(β版)」
ライブラリResumeIL(β版)を使ってサスペンド/リジューム機能に対応させてみる

ワンダーウィッチサポートWebサイトにて、WSC用 サスペンド/リジュームライブラリ「ResumeIL」のβ版が公開されました(動作確認の段階です)。これは、ワンダーウィッチをサスペンドとリジュームに対応させるためのライブラリです(電源を落せる状態にすることを「サスペンド」、逆に電源OFFから復帰することを「リジューム」といいます)。(松原)
*以下の記事は、βテスター用を元に作成していますので、今後仕様が変更される可能性があります。

◆下準備
「ResumeIL」はFreyaOSのバージョンが1.1.4以上でないと正常に動作しません。もし、FreyaOSのバージョンが古い場合は、ツール「TransMagic」を使って更新しましょう。FreyaOSのバイナリファイルは ワンダーウィッチサポートWebサイトからダウンロードできます。


次に“resume.il”をワンダーウィッチのプログラムエリア(ROM0)に転送します。ファイルは転送された先で、“@proc”という名前になります。転送後は忘れずに、シェル(MEG)のリブート(「終了」してY3キーを押す)を行ってILを初期化しましょう。以上で、準備OKです。

◆サンプル「ぴったりさん」
β版に添付されているサンプルプログラム「ぴったりさん」を実行してみましょう。「sample」フォルダにある「r1024.fx」をプログラムエリア(ROM0)に転送してランチャで立ち上げてください。

「ぴったりさん」実行中の画面です。2枚のスクリーンが重なって表示されています(ちなみに、この絵には意味はなさそうです)。X(方向)キーを押すと、スクリーンがスクロールします。
Y4キーを押すと、サスペンドが行われ、ランチャ画面に戻ります(あとで確認しますので、スクリーンの重なり具合を頭に入れておきましょう)。

◆サスペンド
しかし、プログラムはプロセスとしてまだ生きています。プロセスはメニューの表示で確認することができます(「r1024」)。サスペンドすると、変数やキャラクターにいたるまで全ての状態が「resume.dat」というファイルとして、ワークエリア(RAM0)に保存されます。
ここでpowerキーを押して電源をオフにします。あと、Y3キーでリブートしてしまうとサスペンドの情報が消えてしまいますので、やらないように注意しましょう。




電源オフ(なんちて)



◆リジューム
電源オフ状態から復帰させます。
方法は簡単で、ワンダースワンカラーの電源を入れるだけです。MEGのランチャ画面が飛ばされて、Y4を押した時の状態からプログラムが再開されます。
スクロールの位置がきちんと復元されていればリジューム成功です。

◆どう生かすか?
この、サスペンド/リジューム機能はプログラム内に…

procIL->_yield();

…この1行を追加するだけで、対応させることができます。これで簡単に、プログラムの中断が行えるようになりますので、ワンダーウィッチの使い勝手が向上するのではないでしょうか(電池の節約になります)。ただ、サスペンド後に誤ってリブートするとデータが消えてしまいますので、重要なデータをリジュームするという使い方は避けた方がよさそうです。
WWGP2002用の応募作品にもResumeILを生かしてみてはいかがでしょう?
ではまた。
本題のResumeILとは関係ないことですが、このサンプルでは全部で1024個のキャラクターを敷き詰めています(32x32個 x2枚)。どうやら、ワンダースワンカラーはスクリーン描画で最大1024個のキャラクターを扱えるようです(ワンダースワンは512個まで)。
512以上のキャラクター番号を使うには、表示データのbit13を1にして、キャラクター番号を1FFh(511)でマスクすればいいようです。

■TOP ▲BACK >NEXT

Presented by WonderWitch.Com 運営委員会