プチコンmkII

プチコンシリーズ間の互換性ガイド

初代『プチコン』(以下、プチコン1)と『プチコンmkII』(以下、mkII)の間での互換性について解説します。
プログラムの互換性についてはこちらから、ファイルの互換性についてはこちらからごらんください。

プチコン1とのプログラム互換性

VSYNC命令の動作

プチコン1ではVSYNC命令はVカウントが呼び出した時の値から引数分加算した値になるまで待つという動作でしたが、mkIIでは前回VSYNC命令呼び出し時のVカウントに引数分加算した値まで待つという動作に変更になりました。

(プチコン1)
VSYNC呼び出し時を基点にしてカウントする

      V           V+1
╂──┬──╂┬────╂
    VSYNC 1→ここまで

      V           V+1         V+2
╂─┬───╂─────╂┬────╂
  VSYNC 2→→→→→→→→ここまで

      V           V+1         V+2         V+3
╂─────╂───┬─╂─────╂┬────╂
                 VSYNC 2→→→→→→→ここまで


(mkII)
前回VSYNC終了時(※)を基点にしてカウントする 

      V           V+1
╂┬──┬─╂┬────╂
  ※ VSYNC 1→ここまで

      V           V+1         V+2
╂┬────╂─┬───╂─────╂
  ※          VSYNC 1(すぐ抜ける!)

      V           V+1         V+2
╂┬──┬─╂─────╂┬────╂
  ※ VSYNC 2→→→→→→→ここまで

      V           V+1         V+2
╂┬────╂──┬──╂┬────╂
  ※           VSYNC 2→→ここまで

mkIIでは、VSYNC命令の動作が変わった代わりに、プチコン1のVSYNCと全く同じ挙動をするWAIT命令を追加しました。
プチコン1からプログラムをインポートすると、VSYNC命令は自動的にWAIT命令に置換されます。

スプライトの反転表示と回転・拡大の原点

プチコン1では、SPSET/SPCHRで左右、上下反転を指定した場合、回転・拡大の原点が変化していました。(ただし上下反転しても表示原点は変化しません)
またプチコン1では、回転・拡大原点は左右、上下反転以外の方法で変更する事はできません。

第4引数第5引数回転拡大原点位置
00左上
10右上
01左下
11右下

mkIIでは、左右、上下反転を行った場合でも回転・拡大原点は変化しません。回転・拡大原点はSPHOME命令でのみ変化します。またこの時表示原点も同じ位置に変化します。

SPSCALE

プチコン1では、次のようなプログラムを書くと、予想に反して100%→50%の縮小アニメーションとなっていました。

SPSET 0,0,0,0,0,0
SPSCALE 0,0,0:'サイズゼロに初期化したつもり
SPOFS 0,100,100
SPSCALE 0,50,60:'サイズゼロから50%に60フレームでアニメーションのつもり

mkIIではこの問題を修正して0%→50%の拡大アニメーションとなります。このため結果的にプチコン1と表示結果が異なる事になります。

BGMSTOP

プチコン1では、BGMSTOPは引数なしの命令で、BGMPLAYで再生した組み込み曲を停止する命令でした。
プチコン2では、BGMSTOPで引数を省略すると、BGMPLAY,BEEPで再生した現在再生中の音をすべて停止させます。

プチコン1とのファイル互換性

プチコン1→mkIIの互換性

100%互換性があります。すべてのリソース種別について
  • プチコン1でセーブしたデータをmkIIでインポート
  • プチコン1でSENDFILEしたデータをmkIIでRECVFILE

いずれも問題なく行う事ができます。
(ファイルの互換性に関してであって、プログラムの互換性について保証するものではありません)

mkII→プチコン1の互換性

MEM,CHR,SCR,COLリソースについては、100%互換性があります。

PRGは、mkIIで一度セーブしたファイルのプチコン1へのSENDFILE/RECVFILEでの転送の動作を保証しません。
命令や処理の変化によって、mkIIのPRGファイルはプチコン1で正常動作しない可能性があります。