#016

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


概要

 ワークエリアの「JIFFY(0FC9EH)」が、垂直帰線割り込み毎にインクリメントされるので、それを監視する回数でFPSを制御します。

【参考】2章 割り込み - MSX Datapack wiki化計画(外部サイト)

 0xfc9eの値を取得し、その値が変化するまでwhile文で監視します。

ソース

#include <stdio.h>
#define JIFFY   0xfc9e
#define PEEK( off ) ( *(unsigned char*)( off ) )
#define TRUE    1
void main()
{
    for( int i = 0; TRUE; i++ ){
        for( int j = 0; j < 15; j++ ){      //  60/15=4FPS
            unsigned char   b = PEEK( JIFFY );
            while( b == PEEK( JIFFY ) ){}   //  変化があるまで監視
        }
        printf( "%d ", i );
    }
}

解説

 JIFFYの値は2バイトあるのですが、この目的では下位1バイトだけで問題ないので1バイトのみ取得しています。

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


関連記事

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

#012 【MSX,Z88DK】C言語でHelloWorld

#010 【Z88DK】Z88DKの導入方法


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