本帖最后由 yksoft1 于 2020-7-31 11:30 编辑
一、塞尔达传说梦见岛/梦见岛DX源码
源码在other.7z的dmg.7z和cgb.7z中。
前者是GB原版的,后者里面有GBC DX版本的。
主要问题在于,原版的编译过程大概是先生成IS-DMG/CGB-DEBUGGER开发机用的ISX可执行文件(不包含图形/音乐的ROM BANK),然后用开发机客户端写入执行文件bank以及相应数据Bank,最后从开发机导出用于写卡带的raw格式ROM镜像。
数据Bank的列表可以参照rz.ice文件(原版),zchr.s文件(DX版)。
然而,我们手上并没有开发机(以前日本雅虎上GBC时代的开发机也是天价且几年才出现一台),只能想别的办法自己先转换ISX为raw,再把数据BANK的数据用程序手工写入raw镜像中。原版里面音乐BANK的文件不是二进制而是十六进制文本格式的,需要自己解析。
之前我研究口袋妖怪金银的源码的时候,就是这么做的。
我用的ISX工具是这个:
- isx2gb v1.02 - Intelligent Systems eXecutable converter for Game Boy (Color)
- Programmed by: tmk, email: tmk@tuta.io
- Project page: https://github.com/gitendo/isx2gb/
复制代码 然而这次还有个问题,无论怎么搞,出来的镜像都不能启动。发现问题在于有一段重要的跳转表代码是无法正确写入ISX的,只能最后自己写入了。
- //from retail Zelda and ZeldaDX 7ff80-7ffff
- unsigned char lastbank[144]=
- {0xf0,0xa8,0xa7,0x28,0x19,0xd6,0x01,0xe0,
- 0xa8,0xe6,0x03,0x20,0x11,0xf0,0xa9,0xa7,
- 0x28,0x03,0x3d,0xe0,0xa9,0xf0,0xaa,0xa7,
- 0x28,0x04,0xd6,0x10,0xe0,0xaa,0xf0,0xab,
- 0xa7,0x28,0x1b,0xd6,0x01,0xe0,0xab,0xe6,
- 0x01,0x20,0x13,0xf0,0xa9,0xfe,0x07,0x30,
- 0x03,0x3c,0xe0,0xa9,0xf0,0xaa,0xfe,0x70,
- 0x30,0x04,0xc6,0x10,0xe0,0xaa,0x21,0xa9,
- 0xff,0xf0,0x24,0xe6,0xf8,0xb6,0x23,0xe6,
- 0x8f,0xb6,0xe0,0x24,0xf0,0xf2,0xa7,0x28,
- 0x06,0xea,0x60,0xd3,0xaf,0xe0,0xf2,0xf0,
- 0xf3,0xa7,0x28,0x06,0xea,0x70,0xd3,0xaf,
- 0xe0,0xf3,0xf0,0xf4,0xa7,0x28,0x06,0xea,
- 0x78,0xd3,0xaf,0xe0,0xf4,0xc9,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
复制代码 最后经过汇编、链接、转换、填充四步,才能做出能运行的raw ROM镜像。
研究成果展示:
1.克荷林特岛江南皮革厂倒闭了,原价980的弓只要1块钱! 折腾了一下ROM文件尾消失的的神秘128字节,现在总算能编译出正常运行的塞尔达梦见岛了。
2.卢本伟光束,直接把Lv1的剑改出有剑气,改成了放魔法杖那个球。
3.任天堂泄露大包折腾继续,梦见岛DX也搞成功了。
卢本伟之二——一开盾就放出一梭子箭(无延时)。
二、星际火狐2、星际火狐1源码
在SFC.7z包里面。Argonaut真的很强大,不仅设计了MARIO-1加速芯片,而且他们的SFC游戏汇编器、链接器、图形编辑器什么都是他们自己开发的。
然而,不知因为什么,星际火狐2总是汇编不出能运行的ROM,应该是bank0有问题。星际火狐1倒是很轻松的就编译了,可惜泄露的源码是某个“竞速专用版”的源码。
当然后来我还是通过修改VARS.INC以及其它一些小改,正常版、带选关功能的调试版也编译出来了。
推上有洋大人改代码取消了强制视角限制,可以全向飞行了。
感觉洋大人感兴趣的主要还是N64的那些泄露,但是那些泄露的很多都没源码;还有就是神游胎死腹中的Netcard、Ensata的源码。
对于我来说,其实最应该花时间的是口袋珍珠钻石的完整CVS repo。。。不知道早期版本是什么样子。
|