MEMO



プチコンのメモ、備忘録です。
Twitterで教えてもらったものが多いです。この場を借りて感謝!


文法
  • FOR文を途中でGOTOで抜け出すのは厳禁  ループ変数に終了条件を突っ込むなどして対応
  • プチコンのAND、ORはビット演算子
  • IF A AND B THENでA:偽の場合、Bも判定される(ビット演算の結果で判定するため)
  • IF A THEN IF B THENならば、A:偽の場合Bは判定されない
  • X%64とX AND 63は、Xが0以上の整数の場合同じ結果を返す
  • DATA文を下にまとめて書くことによるパフォーマンスの影響はない  見易さ、書きやすさ重視でよい BASICでは慣例的に下にまとめて書かれることが多い
  • DATA文はSTATIC的な使用方法も出来る
  • FOR I = 0 TO 1 STEP 0 と書くと無限ループになる
  • A!=0と!!Aは同じ意味
  • 十字キーの自機移動とはみ出し抑制は論理式を使って1行にまとめられる
スプライト、BG、グラフィック
  • 32×16、32×32、64×64のプリセットのスプライトを使う際は並び替えが必要
  • 当たり判定は毎フレーム行う必要はない  2フレームに1回でも十分
  • 敵(スプライト、BG)の移動処理は補完時間を使用すれば毎フレーム行う必要はない  補完時間はDSの機能を使用するため、プチコンの処理に負担がかからず軽くなる
  • BGREADは画面上の座標ではなく、BG面の座標を指定する
  • SPCOLでグループ化しSPHITで当たり判定を行うと高速
  • SPHITで当たった相手のスプライトの管理bヘ、システム変数SPHITNOに格納される
  • グラフィック面の優先度はGPRIOで変更可能
  • スプライトのサイズ8×8の指定をすると、元16×16の右上右下左下は直接利用できない  別の場所にコピーして使う
  • スプライトの拡大は重い
  • スプライトを200%以上に拡大する方法はサンプルのカクトウゲームを参照
  • グラフィック命令は重い
  • ラスタースクロールをグラフィック面で実装すると重いが、  BG面のキャラクタ書き換えで実装すると軽い
  • BGの手前(0)と奥(1)は間違えやすいので、定数化して使用する
  • SPANGLE、SPSCALEは管理番号0〜31にしか使用できない
  • GDRAWMD:同じ場所に2回描画すると描画内容を消すことができる
  • GPUTCHRすると、GRPの0〜15番にCOLSETした色が戻ってしまう
  • SPSETする際、座標(0,0)にスプライトが一瞬表示されるが、VISIBLEを0にしておいてSPOFSした後にVISIBLEを1にすれば回避できる
  • WAIT、VSYNC直後、1/60秒以内にSPSET、SPOFSすれば、座標(0,0)に一瞬表示されない
  • 補完移動するスプライトの初期位置を設定するSPOFS(補完0)の後にSPCOLVEC n,0,0 をいれるおまじない(HIT関係のバグ対策?)
  • SPCHRはサイズ変更できない(16*16→32*16など)
  • SPCHRはSPHOMEやSPCOLの設定が保持される
  • SPSETした後にSPCLRしなくてもSPSET出来る
PAUSE、終了処理
  • PAUSE処理やRPGのコマンドなんかはBUTTONよりBTRIGがいいかも  BUTTONのON/OFFの検出をVSYNCを挟んだループで検出する方法もある
  • PAUSE画面からタイトル画面に戻る機能があると親切
  • 終了処理は必須ではないが、標準ランチャを使っていない方のためにも入れておく方が親切
  • 終了処理ではフォントやキャラクタの初期化(CHRINIT)をしておくのが親切
  • 終了処理でGPAGE、BGPAGE、SPPAGEを0に戻しておくのが親切
プチコンその他
  • MEM$はCLEARで初期化されない
  • 文字列の計算は重い
  • FPSの算出には環境変数MAINCNTLを使う
  • SELECTボタンは普段は使用用途がない(終了してしまう)が、起動時に押しっぱなしにした際の判定は有効  裏技などの仕込みに使える
  • QRコード変換時に圧縮がかかるので、コード短縮が必ずしもQR枚数削減にはならない
  • QRコード化されていないコードはPetitEditorでQR変換できる
  • PTCUtilitiesでサイズの大きいQRコードに変換すれば、QRコード枚数を削減できる
  • 3DSのスライドパッドは十字キーと同じ扱い
  • ファイルの一括削除はTFCを使用すればよい
  • 連番で管理しているバックアップファイルの一括削除はFOR文でDELETEを実行する方が手軽
  • BUTTON(2)は処理落ちすると有効な効果が得られない。前回の取得値を保持・利用する必要がある
アルゴリズム
  • 自機を狙う弾のアルゴリズムはATANもしくはベクトルの正規化を使う
  • 追尾弾は前回の単位ベクトルと新しい単位ベクトルを足して正規化すると動きが自然になる
  • ジャンプのアルゴリズムはVerlet積分を使う
  • 2のべき数は LOG(X)/LOG(2) で求める
その他
  • 日経ソフトウエアのプチコンコーナーのバックナンバーはpdfでバラ売りしている(→G-Searchミッケ!
  • プレイ動画を撮る際は部屋を暗くし、ちょっと引いて撮る
  • 「200点ごとに1UP」は英語で "It is added one every 200 points." 1UP="EXTEND" としてもよい(ゲーム的表現)
  • 服のパレットを肌色にするとpetiterogeになる




BACK

inserted by FC2 system