最新要闻
- 快资讯: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概念车首发:用上刀片电池
全球视点!美国最大私人地主 大量买地引质疑!比尔盖茨回应:只为提高产量