最新要闻
- 快资讯:FAA飞航系统已有30年历史 老迈程度堪比N64
- 环球百事通!90后女孩神还原蔡明春晚40年造型火了 本尊回应5个字
- 焦点观察:果粉愿望要实现!iPhone 16 Pro直接256GB存储起步
- 环球快消息!12月轿车销量排名出炉:传统“豪强”反攻、比亚迪也挡不住?
- 世界观点:超大范围降雪来袭:全国多地上百条高速局部路段公路封闭
- 滚动:我国让科幻片成了现实!全球首艘智能型无人系统科考母船交付使用
- 世界热点评!6英寸墨水屏带来全新听书体验!讯飞有声书评测:内置26种朗读主播 方言英语都能读
- 全球观速讯丨微软经典Media Player获新生:新版本面向全部Win10用户推出
- 全球热消息:NVIDIA发布GeForce 527.37驱动 4倍性能提升的DLSS3游戏再加一
- 焦点播报:苹果A处理器不玩性能!iPhone 16曝光:屏幕更完美、2TB售价欲超2万
- 环球信息:美国家庭平均月薪出炉引热议:超出想象!就这还靠信用卡续命
- 你贡献过几部iPhone?全球最强打工人:苹果库克年薪近1亿美元 自愿降薪40%
- 每日速递:监管新规下车险保费最高可降23%?业内人士:有些还会变贵
- 天天即时看!打破多项纪录!我国汽车产销总量连续14年全球第一:新能源暴涨翻倍
- 《王者荣耀》兔年春节福利一览:武则天神器传说皮肤来了
- 我国第一型“金牌火箭” 长二丙火箭成功发射亚太6E卫星
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
用SGDK开发世嘉MD游戏:入门篇
用SGDK开发世嘉MD游戏:入门篇
0. github上的wiki教程(推荐英语好的看,英语不好的就看我写的教程吧)
https://github.com/Stephane-D/SGDK/wiki
1. 【安装SGDK(仅针对windows系统)】
安装 java 8 或更高版本的 jre
【资料图】如果已经安装了 jdk 就不需要再单独安装 jre 了,jdk 包含 jre。
jdk 是开发 java 用的,jre 是运行 java 用的,咱们这里只需要运行 java,并不需要开发 java,因此 jre 足够使用。这里我只给出了 64位 jre 下载地址,想要 jdk 的可以自己到 java 官网下载。
64位 jre 下载地址:http://icy.bioimageanalysis.org/upload/jre-8u281-windows-x64.exe
下载SGDK
SGDK_v1.80.zip
下载完了把 zip 解压到自己喜欢的位置,可以直接解压到 C盘 根目录,也可以解压到 D盘 根目录,我的位置是 E:\Develop\MD\
编译测试
win+r 打开运行窗口,输入 cmd 打开终端,运行以下代码进行编译测试:
SGDK_PATH\bin\make -f SGDK_PATH\makelib.gen
【SGDK_PATH】指的是刚才解压的SGDK压缩包的位置。编译过程中终端窗口会嗖嗖嗖打印出很多很多信息,如果没有出现 Error 这个单词就说明安装成功了,如果有 Error 单词出现,一般会告诉你错误信息,作为一个开发者要学会查看报错信息,我刚才试的时候就出现如下信息了:
java -jar E:/Develop/MD/SGDK/bin/rescomp.jar E:/Develop/MD/SGDK/res/libres.res E:/Develop/MD/SGDK/res/libres.rs -dep E:/Develop/MD/SGDK/res/libres.oE:/Develop/MD/SGDK/bin/sh.exe: java: command not foundmake: *** [E:/Develop/MD/SGDK/res/libres.rs] Error 127
大体意思就是 java 命令没找到,因为我是在 vscode 中编译的,我刚刚安装了 java,vscode 中的终端还没识别到我刚安装的 java,如果我关闭 vscode 再重新打开 vscode 就不会出现这个报错了,大家用的 win+r 打开的 cmd 终端应该不会出现报错的。
小技巧(把SGDK设置成全局环境变量):
如果觉得输入完整的 SGDK_PATH 目录太麻烦(比如 D:\FolderA\FolderB\FolderC\SGDK),可以把 SGDK 目录配置成全局环境变量,具体做法如下(以 win10 系统为例):依次找到:设置 -> 系统 -> 关于 -> 高级系统设置 -> 环境变量在系统变量中新建一个系统变量,变量名随便取,我就叫它 SGDK 了,变量值就是你的 SGDK 根目录
找到系统变量中的 Path 这一项,点右下角的编辑按钮
然后把 %SGDK%填进去,两边的%不要忘记,然后一路点确定确定确定就行了,以后就不需要输入完整的 SGDK_PATH路径了,直接以 %SGDK%代替就ok了,以后编译的时候会经常用到的。
2. 【SGDK的用法】
SGDK编译项目用的是自己的makefile,为了项目能被makefile正确识别,需要按以下方式组织项目的文件夹结构(这是必须要遵守的规范):
项目根目录
srcsrc目录(存放源代码文件,子文件夹最多支持2级深度,例如:src/engine/enemy/*)
incinc目录(存放头文件)
resres目录(存放资源文件)
outout目录(编译输出游戏rom的目录,这个文件夹会自动创建,不需要自己建,自己建也是可以的)
文件类型说明
- 源代码文件可以是 .c(C语言源文件)、.s(68k汇编源文件)或 .s80(z80汇编源文件)
- 头文件可以是 .h(C语言头文件)或者 .inc(汇编头文件)
- 主资源文件应为 .res(由 rescomp 工具编译的资源定义文件,详请参阅 SGDK_PATH/bin/rescomp.txt 文件)
- 其他资源文件可以位于任何位置(虽然但是,还是推荐都放到 res 目录中),你需要在 .res 文件中正确引用其他资源文件,java 会帮助我们编译成SGDK可使用的资源。
- .bmp图像文件(仅限索引颜色格式)
- .png图像文件(仅限索引颜色格式)
- .vgmvgm音乐文件(仅限megadrive专用的vgm)
- .xgmxgm音乐文件
- .wavwav音频文件(用来做音效)
- .bin二进制数据文件
- .cC语言源文件
- .s68k汇编源文件
makefile支持3种不同的编译模式
- release正式发布的时候用这个模式,这个模式会对代码做一些优化,这是默认模式。
- debugGens KMod 模拟器用来调试程序用的模式,详见 GensKMod模拟器调试
- asm用来生成汇编列表
要编译项目,你需要从项目文件夹中使用以下命令
SGDK_PATH\bin\make -f SGDK_PATH\makefile.gen
但是咱们已经把SGDK设置成全局环境变量了,那么命令就变成如下所示了:
%SGDK%\bin\make -f %SGDK%\makefile.gen
注意命令最后其实是有一个选项的,就是前面说过的release、debug、asm这些,如果什么都不加默认就是release版本,如果想编译调试版,后面就要加上debug:
%SGDK%\bin\make -f %SGDK%\makefile.gen debug
如果一切正常,在 out 文件夹中应该能看到一个 rom.bin 文件,你可以用MD模拟器加载rom文件运行游戏,或者如果你有烧录卡可以烧录到卡带里实机运行。
3. 【制作第一个MD游戏 - Hello World (以 vscode 为例)】
环境是不是配好了,最好的办法就是亲自写一个hello world,这是程序员圈子里亘古不变的真理,开发世嘉MD游戏也是一样的。
- 安装C/C++扩展
SGDK用的是C语言作为开发语言,也能用汇编语言,但由于我太菜不懂汇编,也就只能用C语言班门弄斧一下了。vscode 安装 C/C++ 扩展很简单,打开扩展选项卡,直接搜 C/C++ 就能找到,然后安装就完了。
- 新建工程
然后在电脑里随便一个位置新建一个空文件夹,我这里就直接在桌面上建了,文件夹名字就叫 helloworld 吧,然后在 helloworld 文件夹里面新建 src、inc、res 三个空文件夹,也就是前面提到过的工程目录结构的规范。
- 编写代码
在工程根目录(也就是 helloworld 文件夹)下鼠标右键,选择【通过 code 打开】,在 src 目录中新建 main.c 源代码文件,写上以下代码:
#include int main(){ while (true) { } return 0;} 这几行代码很简单,相信已经成为大家的本能了,唯一要说明的就是
include
这个头文件是 SGDK 中的头文件,是开发 MD 游戏必须要用到的,genesis 是什么意思呢?是世嘉 MD 美版的名字,美版 MD 就叫 Genesis,有个 MD 模拟器叫 Gens,就是用的美版 MD 的名字。记住这个名字,以后只要写 MD 游戏,首先就要 include 这个头文件。
如上图所示,可能头文件会报错
不用怕,把鼠标放到红线上会弹出一个错误信息框,下面有一个【快速修复】选项,点快速修复
选择【编辑 "includePath" 设置】,找到【包含路径】这一项,把下面两行路径都加上,下面的 SGDK 就是前面提到过的全局环境变量:
${SGDK}/inc/**${SGDK}/res/**弄好之后可能又报错了,while(true) 这里的 true 错了,说是【未定义标识符 "true" 】
之所以会报错是因为我电脑里没安装任何的C语言编译器,咱们开发 MD 游戏暂时也用不到别的C语言编译器,可以把 true 改成 1,非 0 即真嘛~还有一个办法,这时候咱们已经有代码提示了,把 true 删了,重新输入 true,会提示有一个大写的 TRUE 可以用,咱们可以直接用 SGDK 本身定义好的 TRUE。while 循环里面的部分就相当于 unity 引擎中的 Update 函数,每一帧都会执行,但是咱们需要在循环里面加一个中断,不然画面刷新可能会出问题,代码如下:
VDP_waitVInt();
然后 while 上面的部分就相当于 unity 引擎中的 Start 函数,在运行游戏的时候执行一次,那么我们就可以在这里加上一句绘制文字的代码:
VDP_drawText("Hello World !", 12, 12);
这行代码看名字就知道是绘制文字的,后面的两个参数都是12,也就是绘制文字的坐标,但这个坐标不是指的像素,而是 tile 格子,一个 tile 格子是 8x8 像素。全部代码如下图所示:
- 编译工程
前面已经提到过编译命令了,只是还没使用过,现在咱们要在 vscode 中使用这条编译命令,按 Ctrl+J 调出终端面板,再次输入下面的命令:
%SGDK%/bin/make -f %SGDK%/makefile.gen
按回车,见证奇迹。一切顺利的话,会在根目录下生成一个 out 文件夹,里面有很多文件,其中有一个 rom.bin 就是编译出来的游戏 rom 了。
- 用模拟器运行 Hello World
我给大家推荐两个模拟器,一个是 Kega Fusion,另一个是 Gens Kmod,fusion 是我平常玩 MD 游戏用的,非常稳定,自带 N 多的滤镜,不会丢帧,kmod 是开发调试用的,调试功能非常强大。
Kega Fusion 3.64
Gens Kmod 073
用模拟器打开游戏rom这种事我就不在这里说了,直接放运行截图:
-
-
-
-
用SGDK开发世嘉MD游戏:入门篇
快资讯:FAA飞航系统已有30年历史 老迈程度堪比N64
环球百事通!90后女孩神还原蔡明春晚40年造型火了 本尊回应5个字
焦点观察:果粉愿望要实现!iPhone 16 Pro直接256GB存储起步
环球快消息!12月轿车销量排名出炉:传统“豪强”反攻、比亚迪也挡不住?
世界观点:超大范围降雪来袭:全国多地上百条高速局部路段公路封闭
最新:误将磁盘格式化的应急响应
头条:【Python爬虫项目实战】Python爬虫豆瓣Top250电影短评数据保存本地
2023最新nacos的windows 10安装(保姆级)
滚动:我国让科幻片成了现实!全球首艘智能型无人系统科考母船交付使用
世界热点评!6英寸墨水屏带来全新听书体验!讯飞有声书评测:内置26种朗读主播 方言英语都能读
全球观速讯丨微软经典Media Player获新生:新版本面向全部Win10用户推出
焦点快看:读编程与类型系统笔记06_函数类型的高级应用
全球热消息:NVIDIA发布GeForce 527.37驱动 4倍性能提升的DLSS3游戏再加一
焦点播报:苹果A处理器不玩性能!iPhone 16曝光:屏幕更完美、2TB售价欲超2万
环球信息:美国家庭平均月薪出炉引热议:超出想象!就这还靠信用卡续命
你贡献过几部iPhone?全球最强打工人:苹果库克年薪近1亿美元 自愿降薪40%
每日速递:监管新规下车险保费最高可降23%?业内人士:有些还会变贵
天天即时看!打破多项纪录!我国汽车产销总量连续14年全球第一:新能源暴涨翻倍
《王者荣耀》兔年春节福利一览:武则天神器传说皮肤来了
我国第一型“金牌火箭” 长二丙火箭成功发射亚太6E卫星
全球动态:[概率论与数理统计]笔记:3.5 大数定律与中心极限定理
环球滚动:Spring Cloud Alibaba 2022.0.0.0 版本发布啦!
国产高端手机份额第一!卢伟冰:小米13系列好评99% 自然销量高
【天天快播报】史上第一颗6GHz CPU!i9-13900KS发布:性能涨3% 价格涨20%
理想汽车CEO曾试图接触威马沈晖?本人回应:纯属放屁!
世界新资讯:韩国第一个月球探测器发回第一张照片:地月黑白合影
每日资讯:【深度学习】常用PyTorch CUDA版本whl下载及在线安装命令
世界今日讯!「闲话随笔」势能分析法
全球短讯!MQ——如何选择消息队列
微头条丨女子乘火车遇麻将专列生意火爆 还能K歌引围观:网友直呼想买站票
全球观焦点:三级应急响应启动!寒潮预警升级 降温图又变紫了:局地降超20度
天天观天下!盖茨自曝他的主力机是三星Galaxy Z Fold4:李在镕送的
全球热文:《卧龙:苍天陨落》中配预告 声优大佬云集、虎牢关战吕布超燃
学习笔记——Mybatis中缓存机制
播报:区块链特辑——solidity语言基础(五)
热文:Python实现希尔排序、快速排序、归并排序
苹果兔年新春大片《过五关》发布!iPhone 14 Pro拍摄国粹京剧
天天看点:Matplotlib学习笔记1 - 上手制作一些图表吧!
焦点消息!最远能跑1200km 长安智电iDD正式发布:一公里不到2毛钱
世界动态:3月发售 《生化危机4:重制版》中文配音首曝:艾达王登场
世界百事通!能怎样?爱奇艺回应没限制投屏只限制清晰度被喷无耻:律师称确没违法
要闻:uwsgi 快速入门
焦点速递!学习笔记——Mybatis动态SQL
《原神》开发商米哈游上热搜:间接持股企业超百家
一度因黑客攻击被迫停服:狼人杀游戏《鹅鸭杀》服务器重新上线
天天视点!魅族新专利:可根据坐姿判断是否疲劳驾驶
全球焦点!奔驰L3级自动驾驶获批:司机可看书、喝咖啡 事故奔驰负责
PS“迷你版”Paint.net推5.0正式更新:Win7/8.1系统被放弃
央视网络春晚官宣:王冰冰、董宇辉加盟
天天快资讯:N95口罩价格大跳水 单价跌破1块钱!专家:是否戴N95口罩看场合
来自后端的愤怒!
【全球新要闻】广东东莞的刮痧板在欧美爆火:有公司年出口量可达700万片
限制投屏清晰度后:爱奇艺TV版新功能允许远程为父母付款
世界热资讯!性能领先24核i9多达24% AMD锐龙7000 3D缓存版闹乌龙:情人节没戏
全球快资讯丨为什么手机的内存都到了16GB 电脑才普及8GB呢?
秦始皇兵马俑考古重大新发现!6000多件宝物、一号坑甬道被人挖开过
腾讯E证通实现人脸核验(.Net6)
天天短讯!排查+解决 Java 内存泄漏,最基本的方法,你必须学会!
环球热推荐:看这篇就够了丨基于Calcite框架的SQL语法扩展探索
今日讯!都想来分一杯羹,低代码到底服务谁?
04-Sed操作参数
看点:799元 ROG龙鳞ACE Aimlab鼠标上市:仅重54g
2030年前我国将送人上月球 新一代载人火箭三级发动机点火成功
天天快讯:《王者荣耀》兔年限定皮肤英雄公布:马克、瑶妹喜提新装
【报资讯】1300多种首次公开!中国空间站居然种了这么多“菜”
中国第一商贩:“傻子瓜子”创始人年广九逝世 享年84岁
全球速递!【Python爬虫实战项目】Python爬虫批量下载去哪儿网站旅游数据保存本地
世界热门:辛苦加班了一年,为何年终奖比同级同事少?
天天视点!Nginx 高级篇
天天热推荐:python中argparse模块的用法
【天天快播报】使用python自动发送图片给微信好友
焦点日报:美国上万架航班停飞!初步调查:因一个数据库文件损坏
环球观察:小米13 Pro用上安卓最高端屏幕 雷军:价格最贵
4000吨巨型“充电宝”广东下水:每天可发2.4万度电
每日信息:高德地图上线一键报平安功能 路程家人一看便知
天天最资讯丨2022年新生儿爆款名字出炉上热搜:男/女孩这些名字土爆了?
环球热文:【验证码逆向专栏】某验二代滑块验证码逆向分析
开源动物行为分析实验箱(斯金纳箱)特色解析及试用条款
环球信息:爱奇艺APP投屏加钱 上海消保委点名批评:不合理、不厚道
特斯拉降价效果显著!友商会不会跟进降价?
焦点消息!阿凡达2不适合国人?国产科幻大片《流浪地球2》迎战 还有《满江红》等一次看爽
12306出现故障无法查车次 客服回应:网络问题 建议多次刷新
环球焦点!羡慕吗?微软宣布给员工“无限休假”福利:不再固定天数
C#、TS和Dart对比4.1:类型概述
全球速递!虚拟串口及其在串口转以太网中的应用
别催了,别催了,这篇文章我一次性把Shell的内容说完
环球观点:AMD RDNA3显卡架构底层细节公开!606页 应有尽有
前沿资讯!微信隐藏功能无了!群空间助手小程序宣布3月下线:号称永久保存
世界滚动:腾讯优酷后!爱奇艺限制投屏 会员只能看480P:专家发声 用户只能接受
环球快看点丨SUV比亚迪卖爆!榜一大哥月销7万+、一代神车没落
《黑豹2》女主演利蒂西娅·赖特:续集已在计划中
头条:疑似零跑C11路边停车起火 车尾疯狂往外喷火
男子开豪车带马狗羊回家过年 它们都是自己的家人:画面让网友难受
公交司机边开车边抠脚引乘客担忧 官方回应:会研究处理
焦点短讯!这些是最热门的机器学习方法!
【播资讯】通过事件总线EventBus/AsyncEventBus进行JAVA模块解耦 (史上最全)
内存、SSD价格雪崩 韩国芯片双雄终于顶不住了?
又一日系品牌拥抱比亚迪 铃木EVX概念车首发:用上刀片电池
全球视点!美国最大私人地主 大量买地引质疑!比尔盖茨回应:只为提高产量