日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

世嘉MD游戏开发【六】:矩形填充Tile图块

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 世嘉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图块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。