2013/06/17

BGを表示してみよう(3)

では、背景を動かしてみましょう。

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ミリ秒待つ
 }
}

いつものようにTest4a.cをコンパイルし、エミュレータで実行して下さい。
前回の「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 件のコメント:

コメントを投稿