SoftwareReset

『suica32』にソフトウェア・リセットを付ける方法。


1.このサンプル・プログラム(新規作成箇所、改変箇所)のライセンス

『AIMS/Luaライブラリー』
ソフトウェア・リセット
Copyright(C)2012 むずでょ

※このサンプル・プログラムの新規作成箇所、改変箇所はむずでょが記述しました。
※複製・改変・再配布可。無保証。 修正BSDライセンスと同じとします。
※及び無料。



2.解説

キーボードの [F12] キーで ソフトウェア・リセットをする、
または、ゲームパッドの [5:L]、[6:R]、[7:Select]、[8:Pause] 同時押しで ソフトウェア・リセットを
する機能をつけるには。

    (※ソフトウェア・リセット……タイトル画面に戻るボタン)


(1)boot.lua に次の定数、

  ┌────────────────────────────────────┐
   -------------------------------------------
   -- 定数初期化
   -------------------------------------------
   【中略】
   -- こうやってテーブルの下に分けておくと色々楽です
   PLAYERCONF = {};
   ENEMYCONF = {};
   PLAYTIME = 0;
   --【改変】追加と変更。ここから。
BOOT_softwarereset = false; --ソフトウェア・リセットのフラグ。
DIK_F12 = 88; --[F12]キーのDirectXでのキー番号。AIMSd.lua に定義されているが、nil 値になっていたので再定義。
  --【/改変】追加と変更。ここまで。
   └────────────────────────────────────┘

を追加。




(2)game_common.luaのupdateInputs() に次の処理を追加。

  ┌────────────────────────────────────┐
   function updateInputs()
--【改変】追加。ここから。
      --キーボードのキーを取得する。何も押されていなかった場合 0。
       local directxKey
       directxKey = inkey();
       
       if( 0 ~= directxKey )then
           
           if( DIK_F12 == directxKey )then
               --キーボードの[F12]キーを押した場合。

              --ソフトウェア・リセット。
               BOOT_softwarereset = true;
           end
           
       end
   
       if(
           1 <= getJoyPressCount( 0, BUTTON_TRIG5) and
           1 <= getJoyPressCount( 0, BUTTON_TRIG6) and
           1 <= getJoyPressCount( 0, BUTTON_TRIG7) and
           1 <= getJoyPressCount( 0, BUTTON_TRIG8)
       )then
           --ゲームパッドの[5:L]、[6:R]、[7:Select]、[8:Pause]を同時に押した場合と想定。

          --ソフトウェア・リセット。
           BOOT_softwarereset = true;
       end
--【/改変】追加。ここまで。

      INPUT = {0,0,0,0,0} -- 順に、UP,DOWN,LEFT,RIGHT,TRIG1
   └────────────────────────────────────┘


(3)game.lua の game_OnStep に次の処理を追加。

  ┌────────────────────────────────────┐
   function game_OnStep()
--【改変】追加。ここから。
      --ソフトウェア・リセット判定
       if BOOT_softwarereset then
           changeScene("title");
       end
--【/改変】追加。ここまで。
      
       PLAYTIME = PLAYTIME + 1
   └────────────────────────────────────┘

  画面遷移は、無条件に title に飛ぶように設定。



(4)
s/scene/title の title_OnStart に追加。
  ┌────────────────────────────────────┐
   function title_OnStart()
       cls();
       clearLayerSettings();
       createActor(G.title.bg,320,240,0);
       vtitle_state = 0;
       playMusicLoop("mus/title_in.ogg","mus/title_lp.ogg");

      --【改変】追加と削除。ここから。
BOOT_softwarereset = false
      --【/改変】追加と削除。ここまで。
   end
   └────────────────────────────────────┘



以上。

  • 最終更新:2013-06-20 05:55:16

このWIKIを編集するにはパスワード入力が必要です

認証パスワード