#015

【MZ80,Z88DK】C言語でゲームループとFPS制御【MZ80,Z88DK】C言語でゲームループとFPS制御戻る 設定


概要

 ROMルーチンにVBLANK待ちがあるので、それを呼び出す回数でFPSを制御します。

【参考】Enri's Home PAGE (mz-80K)(外部サイト)

 0DA6HをCALLすると、VBLANKを待って0になったらRETされるようです。

ソース

#include <stdio.h>
#define TRUE    1
void main()
{
    for( int i = 0; TRUE; i++ ){
        for( int j = 0; j < 15; j++ ){  //  60/15=4FPS
            asm( "CALL 0x0da6" );       //  VBLANKを待つ
        }
        printf( "%d ", i );
    }
}

解説

 asm()関数は、引数の文字列をアセンブリ言語として実行します。「CALL」命令は、指定したアドレスのサブルーチンを呼び出します。

 VBLANKを15回待ったら、変数「i」がインクリメントされるため、フレームレートが正確に60であれば、60/15=4FPSとなります。が、実際のフレームレートの値は60ピッタリではないと思われます。


関連記事

#018 【MZ80,Z88DK】C言語で任意の座標に文字描画

#011 【MZ80,Z88DK】C言語でHelloWorld

#010 【Z88DK】Z88DKの導入方法


最終更新日時:2022/05/03
戻る戻る back