世嘉MD游戏开发【六】:矩形填充Tile图块
上節課講了如何顯示一個Tile圖塊,這節課我來講一下Tile圖塊的矩形填充。
打開Sega Genesis Tile Designer,設置tile寬度為4tiles,高度也是4tiles:
隨便繪制幾個tile塊,下面我用我自己繪制的作為例子:
導出tile數據和palette色表數據(詳見上一篇教程)。
注:這個軟件有一個BUG,導致使用體驗極差,可能是源碼里某個for循環遍歷的時候把xy給顛倒了,導致這個軟件導出的數據不是橫著數的,而是豎著數,這樣到了SGDK里就會出問題,繪制出來的tile順序根本不是正確的,哎~這個軟件作者啊~忒粗心~
色表數據不能用pal.c來命名,因為SGDK已經自己有一個pal.h了,混淆了就不好了,而且SGDK自帶的pal.h里面有#ifndef _PAL_H_了,要是不注意很容易就在自己寫的pal.h上也寫上#ifndef _PAL_H_,那么編譯的時候,自己寫的pal.h里面的變量都會變成第一次使用并沒有聲明,就會報錯。這點要注意。
其他的不多說了,前面都有講過,那么直接貼代碼:
#include <genesis.h> #include <vdp.h>//導出的色表數據 #include "palette.h"//導出的tile數據 #include "tile.h"int main() {//加載tile數據,api詳解在上一節有說明VDP_loadTileData(tile, 1, 16, CPU);//設置顏色表,顏色表一共有4組,每組16種顏色,我現在把第一組(PAL0)色表設置成paletteVDP_setPalette(PAL0, palette);//在PLAN_A卷軸上,從VRAM(顯存)里的第1個位置開始讀取一串連續的tile,填充到16,10這個位置,矩形寬高為4x4VDP_fillTileMapRectInc(PLAN_A, 1, 16, 10, 4, 4);//在PLAN_B卷軸上,從VRAM中讀取5這個位置上的tile,在0,0的位置,開始填充矩形,寬高為8x6VDP_fillTileMapRect(PLAN_B, 5, 0, 0, 8, 6);//在PLAN_A卷軸上,從VRAM中讀取4這個位置上的tile,在10,3的位置,開始填充矩形,寬高為15x5VDP_fillTileMapRect(PLAN_A, 4, 10, 3, 15, 5);//把背景色設置為PAL0色表的第8號顏色(從0開始數)VDP_setBackgroundColor(8);while (1){VDP_waitVSync();}return 0; }上圖就是代碼中所說的PAL0色表的第8號顏色,如果不更改背景顏色,那么默認背景顏色就是色表中的第0號顏色,0號顏色是白色,我覺得太刺眼了就改了個暗一點的8號顏色。
編譯,得到rom,用模擬器運行,如下圖所示:
未完待續。。。
復古游戲開發群:879063892
總結
以上是生活随笔為你收集整理的世嘉MD游戏开发【六】:矩形填充Tile图块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中文括号转英文
- 下一篇: 《科尼龙作曲家》——简单易用又功能丰富的