Scroll Animation Sysem
Ver 2

SASについて

SAS(Scroll Animation System)とは、マシン語により大きなグラフィックを高速に表示させるというものです。
このプログラムを使えばいままでBASICでは表示不可能(速度が実用的でない)な大きなグラフィックでも高速に表示可能になります。

SAS仕様

  1. 大きなサイズのグラフィックを高速表示
    1*8〜144*48までのサイズのグラフィックを高速表示。
    フルサイズ(144*48)で69コマ/秒の表示が可能。
  2. 横スクロール
    スクロール方向、スクロールドット数が設定でき、CALLするだけでその設定にしたがって表示していきます。
    自動でアドレスを書き換えていくのでBASICでの計算が省かれます。
  3. アニメーション
    スクロールドット数をグラフィックサイズに指定するとアニメーションになります。
    スクロールを応用したものなのでCALLしただけでグラフィックが変わります。
  4. G系ポケコンで使用可能
    G系なら使用可能(Z80A互換CPU搭載機種)

動作確認はG820、850でしました。Z80互換CPUなら動くと思います。

 

制限事項

  1. 表示位置がテキスト座標
    表示位置が、GPRINTとは違いテキスト座標で指定しなければならない。
  2. OPASとは違います
    OPASがフォント書き換えで表示しているのに対してSASはメモリに書き込まれているグラフィックデータを直接表示しているだけです。文字を入れ替えて表示するとグラフィックも同時に入れ替わるなどはできません。

使用条件

  • このプログラムはフリーですが著作権を破棄したわけではありません。
  • SASを使用したプログラムを配布する場合はSASを使用したということをReadmeなどにかいておいてくれるとうれしいです。
  • フリーですので使用したことによりポケコンのデータが消えたなどのクレームは受け付けません。ただ、明らかにバグである場合はバグをなくす努力はします。でも義務ではありません。

  • 自作プログラムへの組み込み方法

    SASはマシン語プログラムなのでまずはじめにユーザーエリアを確保してください。RUN MODEPROGRAM MODEMON[RETURN]と入力し、USER (グラフィック格納開始アドレス+グラフィックデータサイズ)[RETURN]とすると確保完了です。(最低でもプログラム領域である165hまでは確保してください)
    たとえば、500hまで確保するにはUSER 500[RETURN]でOKです。
    そうしたら次に自作プログラムに下のプログラムをどこかに追加します。(見にくくてすみません)

    10:CLS :DIM M$(0)*88:AD=256:FOR I=0 TO 1:READ M$(0):FOR J=0 TO 87 STEP 2:POKE AD, VAL ("&H"+ MID$ (M$(0),J+1,2)):AD=AD+1:NEXT :NEXT :FOR I=AD TO &H165:POKE I,0:NEXT
    20:DATA 3A59013263012A5F012264013A58015F3A6301573A5A01472A6401CDD0BFED4B61012A6401092264013A5B01
    30:DATA 47043A63013C326301B8C20C013A5C012A5F01ED4B5D01CB47C24E01CB4FC25201C909C35401ED42225F01C9

    このプログラムは自作プログラムが実行されるたびに実行するようにしてください。そうしないと暴走する恐れがあります。
    GOSUBで呼び出す場合は10行の最後にRETURNをつければokです。

    下は表示設定の書き込みアドレスの表です。

    158h 表示位置X
    159h 表示位置Y
    15ah 横サイズ
    15bh 表示終了位置Y
    15ch スクロールの方向
    15dh スクロールドット数(2バイト
    15fh 読み込みアドレス(2バイト
    161h 仮想横サイズ(2バイト

    上の表の詳しい解説をします。
    まず、表示位置X,Yは説明は要りませんね。LOCATEと同じ指定方法です。
    次に横サイズですが、これは表示開始位置から横に何ドット表示させるか、わかりやすく言うと横のグラフィックサイズです。
    表示終了位置Yは表示位置Yからどこまで表示させるか、ということです。たとえば表示位置X=0、表示終了位置Y=3にした場合、画面ではY座標0〜3までの4行にわたってグラフィックが表示されます。表示位置Y < 表示終了位置Yでないと暴走、誤動作する場合があるので気をつけてください。
    スクロール方向は0でスクロール無し、1で右、2で左スクロールします。
    スクロールドット数は一度にスクロールするドットの数を指定します。スクロール方向を0にすると無効になります。
    読み込みアドレスはグラフィックが格納されているアドレスです。
    仮想横サイズとは仮想画面を作ってその画面内で表示部分を移動してスクロール、アニメーションを行うために設定します。スクロールやアニメーションをしない場合は横サイズと同じ値を指定してください。

    次にBASICでアドレスを書き込む場合の方法を説明します。たとえばアドレスに1234hを指定する場合は、

    AD=(アドレス) MOD 256
    A=1234:POKE 15fh,AD,((アドレス)−AD)/256(そもそもさんのSOANを参考にしました。っていうか同じです(爆))

    これでアドレスが書き込まれます。アドレスは2バイト分必要なのですが、書き込むときにはデータが入れ替わります。
    先ほどの例では34h,12hと書き込まれることになります。

    [Home] [Return]