侠外游戏论坛

标题: 太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现) [打印本页]

作者: iphone    时间: 2021-3-14 04:22
标题: 太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现)
太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现),今天达达兔游戏网给大家整理了详细的太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现)介绍,希望这篇文章对你有参考价值,我们一起关注一下太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现)。
        ​开源项目si78c,用C语言精准复现1978年经典街机游戏《太空侵略者》。





该项目从原始游戏的ROM中加载各种样式的小精灵和其他数据,但是没有使用原始游戏的逻辑代码。
si78c用C语言重新复现了游戏逻辑,可以让你更容易的理解原始系统内部的工作原理。
它不是对《太空侵略者》的模仿,而是一种恢复。
项目的规模
这是一个相当大的任务,需要在几个月的时间内进行多次迭代,保守地估计到目前为止,项目已经投入了大约200个小时的工作。
原来的ROM是大约2000行8080的汇编程序,全部是游戏代码。最终发布的si78c版本大约有1500行游戏代码、500行支持代码和800行注释。
在后台还有大约2万多行未发布的代码太空入侵者,包括以前的迭代和其他支持脚本以及完成工作所需编写的工具。
精准度
在运行时,si78c的内存状态与原始版本相同堆栈除外。所以与原始版本相比si78c的精准度达到了像素级。
循环计时并不是特别准确,但是游戏代码对此并不特别敏感,因为它使用中断来为大多数事情计时,而不是时钟周期。
目标受众
目标受众是黑客、爱好者、学者、学生、历史学家和任何从事数字考古的人。
si78c为他们提供了一个很好的向导,来帮助他们更好的理解最初的游戏。
si78c项目的限制
没有声音,因为没有模拟声音硬件。
如前所述,循环计时不是特别准确,但在这种情况下它不是很重要。代码目前只能在小端系统上工作太空入侵者,因为原来的系统8080是小端系统,我们按原样使用ROM数据。
编译运行
获取si78c项目源码,然后编译si78c项目。
$ git clone loadzero/si78c && cd si78c
$ make
如前所述,原始街机游戏的ROM是必须的,《太空入侵者》游戏的原始ROM可以在这里玩法攻略:

然后将invader.zip解压到si78c项目的根目录下的inv1文件夹下。执行如下命令:
# 进入si78c项目根目录
$ cd si78c

# 解压invader.zip中的内容到si78c/inv1目录
$ unzip /path/to/invader.zip -d ./inv1

# 进行md5校验
$ md5sum inv1/*

7d3b201f3e84af3b4fcb8ce8619ec9c6  inv1/invaders.e
7709a2576adb6fedcdfe175759e5c17a  inv1/invaders.f
9ec2dc89315a0d50c5e166f664f64a48  inv1/invaders.g
e87815985f5208bfa25d567c3fb52418  inv1/invaders.h
安装SDL2依赖,在Ubuntu上执行下面的指令:
$ sudo apt-get install libsdl2-dev
运行si78c项目:
$ ./bin/si78c
键盘控制键:
a   LEFT(左移)
d   RIGHT(右移)
1   1P(单人)
2   2P(双人)
j   FIRE(射击)
5   COIN(投币)
t   TILT(结束游戏)
游戏操作说明
好,到了打游戏的时间了!





体验一下这上古的游戏吧!
游戏运行后会自动开始演示,此时按下数字5键投币退出自动演示(就相当于真实游戏机中的投币,有币才能玩),然后再按数字1键(单人游戏)或者数字2键(双人游戏,轮转),然后游戏就开始了。
通过字母A键和D键,操作左右移动,通过字母J键发射子弹太空入侵者,消灭敌人。愉快的游戏吧!

以上内容就是太空入侵者(1978经典街机游戏《太空侵略者》C语言精准复现)的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
作者: 剥皮的柚子    时间: 2021-3-14 07:01
谁能明白谁的深爱,谁又能理解谁的离开...
作者: ...    时间: 2021-3-16 13:30
什么是福,吃亏是福;什么是乐,知足常乐!




欢迎光临 侠外游戏论坛 (https://bbs.xiawai.com/) Powered by Discuz! X3