【概略フロー】 各種初期化処理 (20 〜 210) | +-------------->+ (メインループ: 310 〜 600) | | | ペンタッチされるまで待つ | | | 1つ目の牌なら選択 | | | 2つめの牌なら取れるか確認 | | | 取れるなら牌を取り除く | | | 全ての牌を取り除いたか? | | +---------------+ | ゲームクリア表示 | ハイスコア登録 | 本ゲームの終了
【定数扱いの変数】 P$(&23) : 牌の上半分のデータ Q$(&23) : 牌の下半分のデータ VM(&9) : 垂直ライン処理で使用するマスク値 VS(&9) : 垂直ライン処理で使用する開始位置の値 VR(&9) : 垂直ライン処理で使用する終了位置の値 HM(&13,&1) : 水平ライン処理で使用するマスク値 HS(&13,&1) : 水平ライン処理で使用する開始位置の値 HR(&13,&1) : 水平ライン処理で使用する終了位置の値 P : 1 を入れとく変数 N : -1 を入れとく変数 O : 0 を入れとく変数 J$="順位 名前 記録 記録日時" K$=" " F$="SX:SHISEN13.BA" 【可変ワーク変数】 LX(&3) : 確認ラインのx座標 LY(&3) : 確認ラインのy座標 K(&4) : 検索した時に、見つけた数を入れる配列 X(&3) : 検索した時に、見つけた座標を入れるための配列 Y(&3) : 検索した時に、見つけた座標を入れるための配列 M$(&1,&3) : メニュー表示文字列を格納する配列。 LC=&0 : 確認ラインの線の数を返す変数 SX,EX,SY,EY : 上下左右にどこまでいけるかを入れる変数 H0,H1,V0 : bit処理による牌の有無チェック補助用作業変数 UB,UT : 牌がとれるかのチェックで使用する変数 XW,YW : 牌がとれるかのチェックで使用する作業変数 FA : FT,FB,FL,FRの4つをまとめたチェック用フラグ FT,FB,FL,FR : 上下左右にチェックする必要があるかを示すフラグ OK=&0 : サーチが正常にできたかを返すフラグ SE=&0 : ファイルのエラーを示すフラグ OE=&0 : ファイルのオープンエラーを示すフラグ A$,B$ : キー入力用の作業変数 KF : 機能キーフラグ I,J,K,L : あちこちで使われる作業変数 XX : X座標に関して計算する為のワーク YY : Y座標に関して計算する為のワーク WX,WY : メッセージ表示の時の座標指定です。他にも使うけど。 D : コの字型で取るときの距離(1,2,3,...) LLIN : ヘルプで用いるライン数 LP : ヘルプで用いるループカウンタ 【ゲーム中使用変数】 C(&8F) : 144枚のカードを並べかえる為の配列。(現在の並びを保持) G(&9,&13) : 画面のどこに何の牌があるかを保持。 VW(&13) : 垂直ラインに関する牌の有無を保持する変数 HW(&9,&1) : 水平ラインに関する牌の有無を保持する変数 SF(&23) : 検索処理で、既になくなった牌種別かを示す変数 MF=&0 : 確認ラインのON/OFFフラグ(0で現在ONである) BF=&0 : 現在表示されているボタンを示すフラグ変数 BC : この変数にボタンの表示状態を設定して、*BCHGを呼び出す。 S$,E$ : クリア時間の表示及びゲーム開始時刻の保持 SCH=&0 : 次回サーチする時の開始牌 MD=&0 : サーチモードの後か否かを示すフラグ(0なら通常) Z=&90 : 残り牌数(これが0になるとゲームが終わる) P1=-1 : 1つめの選択してる牌のコードを格納する。 HF=&0 : ハイスコア記録可能か否かを示す。0なら記録可能。 SV1,SV2,SV3,SV4 : 矩形を指定するための作業変数 X,Y : 1つめの牌の座標を保持する変数 V,W : 2つめの牌の座標を保持する変数 T1,U1 : 1つめの牌の座標を保持する変数 T2,U2 : 2つめの牌の座標を保持する変数 S1X,S1Y,S2X,S2Y : サーチした時の2つの牌の座標を保持する変数 S : 開始時刻に使ったり、その他いろいろ。 E : 終了時刻に使ったり、その他いろいろ。 R : 経過秒数(繰越し時間格納用変数) D$ : クリアした時or最後に時刻を見た時の日付 MES$ : MKDIAGルーチンで表示するメッセージ受け渡し変数 【その他の変数】 A : ハイスコアの検索時に使う作業変数 N$ : ハイスコア記録者の名前を入れる文字列 TL,TI,TJ : サーチする時の作業変数 M : 実際に見つかった数を調べる為の変数
790 *TCH ペンタッチ割り込み処理 810 *ERR エラー処理 850 *ERR2 エラー処理2 870 *CFGW 確認ラインOn/Offフラグの状態を保存 890 *FINIT ハイスコアファイルの初期化 1000 *PINIT 牌画像データの読み込み処理 1070 *GINIT ゲーム画面の初期化 1110 *CINIT ゲーム用牌の配列を初期化 1160 *SHUFFLE 牌を並び替える(シャッフル)処理 1210 *ALLDRAW ゲーム画面の描画(全ての牌) 1310 *CGSET シャッフルした牌を画面用配列へ複写 1410 *HINIT 接続ライン検知作業用ワークの初期化 1500 *MSGSHOW 『並べ替え中』ダイアログの表示 1510 *MSGSHOW2 『検索中』ダイアログの表示 1520 *MSGHIDE2 上記ダイアログの消去 1540 *MINIT メニューの初期化 1580 *MCHG 確認ラインOn/Offの切替 1640 *MENUOFF メニューを禁止する 1690 *MENUON メニューを許可する 1740 *TC1 1つめの牌の選択と反転処理 1800 *TC2 2つめの牌の選択と反転・判定処理 1860 *TC3 確認ライン描画 1970 *T3 牌を取り除く処理 2120 *HANTENX (X,Y)の牌を反転する処理 2130 *HANTEN2 (V,W)の牌を反転する処理 2150 *GCLR 『ゲームクリア』のダイアログ表示 2240 *HSS ハイスコア登録処理 2390 *SEARCH 取れる牌の組み合わせを検索し表示する処理 2790 *HANTEI (X,Y),(V,W)で指定した牌同士が取れるか判定 3480 *HELP オンラインヘルプの表示 3670 *SVSCR (SV1,SV2)-(SV3,SV4)の画面を待避 3710 *LDSCR (SV1,SV2)-(SV3,SV4)の画面を復帰 3750 *MKDIAG ダイアログ(Type1)を表示 3820 *MKDIAG2 ダイアログ(Type2)を表示 3880 *BCHG BC,BFフラグに従い、画面上部のボタンのOn/Off変更 3970 *HSD ハイスコアリストを画面に表示 4130 *NMINPUT ハイスコア者の名前を入力する処理 4310 *TEISHI 一時停止の処理(30分でパワーオフ処理含む) 4540 *TSTART タイマーカウントを新規に開始 4550 *TCONT タイマーカウント継続 4570 *TSTOP タイマーカウント一時停止
初期化処理 | 20 〜 210 |
---|---|
新規ゲーム | 220 〜 230 |
やり直し | 240 〜 300 |
メインループ | 310 〜 600 |
ゲームクリア | 620 〜 750 |
終了処理 | 770 |
エラー処理 | 810 〜 850 |