プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

BGスクロールのテスト

サンダーフォース風の全方向スクロールシューティングを作ろうと思い立ち、BGを使った背景のスクロールを調べることにした。
しかし、BGのことよりは、自機の回転表示の方が時間がかかったのであった。

このサンプル、もちろん60fpsで動くが、VSYNC 1を外すと、その10倍近い速さで動くことにびっくり。

'BGTEST
VISIBLE 1,1,1,1,1,1
CLEAR 
CLS:COLOR 0
GPAGE 0:GCLS

'--テイスウ--
SPD=2

'--BG ショキカ--
BGPAGE 0
BGCLIP 0,0,31,23
FOR Y=0 TO 23
 FOR X= 0 TO 31
  BNO=Y*32+X
  BGPUT 0,X   ,Y   ,BNO,9,0,0
  BGPUT 0,X+32,Y   ,BNO,9,0,0
  BGPUT 0,X   ,Y+24,BNO,9,0,0
  BGPUT 0,X+32,Y+24,BNO,9,0,0
 NEXT X
NEXT Y

'--SP ショキカ--
SPPAGE 0
SPCLR
SPSET 0,288,11,0,0,0
SPSET 1,289,11,0,0,0
DIM SX(8,2),SY(8,2),SA(8,2)
FOR I=0 TO 7
 READ SX(I,0),SY(I,0),SA(I,0)
 READ SX(I,1),SY(I,1),SA(I,1)
NEXT
DATA 120, 88,  0,120,104,  0
DATA 128, 85, 45,117, 96, 45
DATA 136, 88, 90,120, 88, 90
DATA 139, 96, 135,128, 85,135
DATA 136,104,180,136, 88,180
DATA 128,107,225,139, 96,225
DATA 120,104, 270,136,104,270
DATA 117, 96,315,128,107,315

DI=0:DX=0:DY=-1*SPD
BX=0:BY=0
DIM BD(11)
FOR I=0 TO 10
 READ BD(I)
NEXT
DATA -1,0,4,-1,6,7,5,-1,2,1,3
LOCATE 0,0:?"FPS:"
TBGN=MAINCNTL
LCNT=0

'--メイン ループ--
@LOOPMAIN
GOSUB @CHKBTN
GOSUB @DISPSHP
GOSUB @SCRLBG
LCNT=LCNT+1
EF=MAINCN-TBGN:EF=EF+(EF==0)
FPS=FLOOR(LCNT/EF*600)/10
LOCATE 4,0:?FPS;"   ";
VSYNC 1
GOTO @LOOPMAIN

@CHKBTN
BTN=BUTTON()
IF (BTN AND 15)==0 THEN RETURN
DI=BD(BTN AND 15)
DX=((-1)*(BTN AND 4)/4+(BTN AND 8)/8)*SPD
DY=((-1)*(BTN AND 1 )+(BTN AND 2)/2)*SPD
RETURN

@DISPSHP
SPOFS 0,SX(DI,0),SY(DI,0)
SPANGLE 0,SA(DI,0)
SPOFS 1,SX(DI,1),SY(DI,1)
SPANGLE 1,SA(DI,1)
RETURN

@SCRLBG
X=X+DX:Y=Y+DY
IF X<0 THEN X=255
IF X>255 THEN X=0
IF Y<0 THEN  Y=191
IF Y>192 THEN Y=0
BGOFS 0,X,Y
RETURN