Test4a.c
#include <stdio.h> #include <gb.h> // タイルデータ #include "IceBkg.c" // マップデータ #include "IceBkgMap.c" void main() { UBYTE scrx = 0;//スクロール用X座標 UBYTE scry = 0;//スクロール用Y座標 DISPLAY_OFF;// 画面全体を非表示 HIDE_BKG;// BGを非表示 set_bkg_data(0, 6, IceBkgTileLabel); // タイルデータをBGとして設定 set_bkg_tiles(0, 0, 20, 32, IceBkgMapLabel); // マップデータを設定する SHOW_BKG;// BGを表示 DISPLAY_ON;// 画面全体を表示 while (1) {// 無限ループ move_bkg(scrx, scry);//BGの描画開始XY座標を設定 // SCX_REG = scrx;//スクロールXレジスタへ直接設定 // SCY_REG = scry;//スクロールYレジスタへ直接設定 // scroll_bkg(0,1);//相対的にスクロール位置を変えたい場合 scry++; //描画開始Y座標を下へ動かすことでBGは下から上へ動く //UBYTEなので255の次は0になる delay(10);//10ミリ秒待つ } }
前回の「Test4.c」へ追記しても良いでしょう。
実行すると、画面が下から上へスクロールします。
move_bkg(scrx, scry);//BGの描画開始XY座標を設定
このようにmove_bkg関数へ座標を渡す方法もありますしSCX_REG = scrx;//スクロールXレジスタへ直接設定
SCY_REG = scry;//スクロールYレジスタへ直接設定
このようにスクロールレジスタへ直接座標を代入する方法もあります。
また、
scroll_bkg(0,1);//相対的にスクロール位置を変えたい場合
scroll_bkg関数を呼んで現在の値から相対的に動かす事もできます。
0 件のコメント:
コメントを投稿