上节课讲了如何显示一个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图块相关推荐

  1. 世嘉MD游戏开发【四】:输入控制(下)

    上一节讲了世嘉MD两种输入控制当中的一种,也是比较容易理解的一种,这一节讲一下剩下的这种控制方式:回调函数式. 建好文件夹,用vscode打开,新建main.c,依然是直觉一般的写下如下代码: #in ...

  2. 世嘉MD游戏开发进阶篇【三】:向量归一化的实现及应用

    向量归一化是非常有用的,游戏中经常能用到,就说大家都见过的,FC魂斗罗的敌人发射子弹就能用到了,敌人向玩家发射子弹首先要获取到向量,这个向量不能直接作为方向去用,必须要经过归一化处理才行,经过归一化处 ...

  3. 世嘉MD游戏开发【五】:显示Tile图块

    显示Tile图块,首先要有tile图块,这就要用到一个小工具了,叫Sega Genesis Tile Designer,软件界面如下: 看起来很复杂,其实自己亲自操作一下几分钟就能搞懂了,都是些很基础 ...

  4. 世嘉MD游戏开发【七】:绘制图片,drawImage

    这一期讲绘制图片. 上一期讲的是绘制tile,还要用那个不怎么好用的工具导出数组数据,很繁琐,这次就不用那个蹩脚的工具了,随便一个图片用photoshop处理一下就可以了,对于图片的要求有这么几点: ...

  5. 世嘉MD游戏开发【九】:Sprite精灵

    终于讲到Sprite精灵了,我自己也很希望快点讲精灵,但是欲速则不达,自己要是还没研究透彻这个知识点就去讲下一个,感觉文章肯定是写不好的. 我用下图来做演示,SFC幽游白书-魔界最强列传里的雷禅: 怎 ...

  6. 世嘉MD游戏开发【八】:淡入和淡出

    淡入淡出,很好理解,淡入就是画面由黑过渡到彩色,淡出就是画面由彩色过渡到黑色,其实也不一定必须是黑色,看你自己需求了. 注:淡入淡出的功能可以完成非常多的游戏玩法设计哦~打开脑洞就有惊喜~ 效果图如下 ...

  7. 世嘉MD游戏开发进阶篇【四】:向量点乘的计算

    向量点乘有时候是很有用的,在Unity等游戏引擎里向量点乘都是自带函数的,直接调用就可以,但是在世嘉MD这种简陋的平台,什么运算都得自己去实现,向量点乘也不例外. 直接看公式: //如果是三维向量的话 ...

  8. 世嘉MD游戏开发【三】:输入控制(上)

    这一节讲一下SGDK中的输入控制,SGDK提供了两种输入控制方式,一种是用回调函数接收输入信息,很自然的另一种就没有用回调函数了(貌似废话-.-!),成上下两节,这一节讲不用回调函数来接收输入信息. ...

  9. OCulus Rift 游戏开发六原则

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...

最新文章

  1. OpenCV使用基本算法检测颜色检查器
  2. 吉林推出百项政策扩开放
  3. mysql 错误 0152_SP2-1503 SP2-0152 错误解决
  4. 说明exit()函数作用的程序
  5. js 数字序号 转 字母序号
  6. 读书笔记Black-Scholes-Merton之二
  7. 《大型数据库技术》MySQL数据库安装配置及基础使用
  8. c语言网吧添加卡,c语言网吧计费系统源代码.docx
  9. 张宇八套卷(二)复盘
  10. CI520只有SPI通讯接口,支持读写A卡,PIN对PIN直接替换CV520软硬件兼容
  11. NOIP2018 复赛提高组一等奖获奖名单
  12. 刷题学习—数据结构(字符串、栈和队列、链表、数组与矩阵、哈希表、位运算)
  13. python 语料_用python从语料库中提取最常用的词
  14. vue+js纯手写日历(包含农历,节假日)
  15. 向幼儿群体提供实用的少儿编程
  16. C语言-让生活更美好
  17. 熬夜爆肝整理!史上最硬核的Mysql函数大全,还不收藏?
  18. SMS-EMOA:基于超体积支配的多目标选择
  19. scrapy基础补齐,python中设置User-agent和代理ip
  20. 通过Feign调用接口,返回数据时出现数据乱码

热门文章

  1. python学习日记(文件操作)
  2. 如何批量制作扫描后即可在线阅读的二维码
  3. JS for循环打印星号
  4. 三维可视化技术在智慧城市建设中的应用
  5. 研究生毕业在杭州落户
  6. mbist summary
  7. 他开发了一个系统,用来识别私生活混乱的女性
  8. ctf web5 练习_Writeup - CTF - WEB - 练习平台(123.206.31.85)
  9. Transformer课程 业务对话机器人Rasa 3.x Domain
  10. Java调用Python的方法