我想用摩托罗拉68000汇编器写一个程序,目标平台是Neo Geo(九十年代的游戏机);这个问题很严重,我有一个我想实现的特定项目并且我有编程经验(虽然我现在主要是 Perl/R 编程,但我以前只接触过一点汇编编程)。
Neo Geo 没有太多可用的文档,但我有一份来自 Alexander Stante 的文档,其中包含有关格式和存储 Sprite 的位置、内存映射、内存映射寄存器的位置、图形和声音系统的信息作品等
因此应该可以用 68K 汇编器编写程序,在 PC 上组装并从 Neo Geo(或模拟器,其中有很多可供测试)运行它。
我确实有一些 M68 汇编器的背景知识,这是我计算机科学硕士期间的一些类(class)(10 年前);我们在 Sun Sparcstation 上组装并将程序发送到一个附加的盒子,该盒子基本上有一个 M68K,里面有一些 RAM,没有太多其他东西。因此可以将“纯”目标代码加载到 CPU 中。
现在,我对 Neo Geo 不了解的是我必须将汇编代码放入哪种“格式”。
即如果我组装了一个我用 68K 汇编编写的程序,我怎样才能使仿真器认为它是一个 ROM 镜像,或者我怎样才能构建一个 CD(或 CDZ,就此而言),它是一个物理 Neo Geo CD会接受吗?它会检查文件名还是魔术头?!所以我的问题是,如何将组装好的目标代码转换为正确的“文件格式”?! (抱歉,我什至不知道这个词是否合适)。
最佳答案
我不能说出 Neo Geo 平台的细节,也不能说出它的模拟器中常见的格式。
但是,它很可能是某种 ROM 镜像。对于 68K 系列,您会在 ROM 的一端找到引导向量。您需要花一些时间阅读 manual .处理器将首先使用表 B-1 从内存中获取值。所以0x0处的32位需要有初始栈指针,0x4需要初始PC。
您需要研究一些现有的 Neo Geo 游戏的图像,看看您是否可以使用这些初始值跟踪代码。模拟器可能以压缩格式或带有某种标题的格式存储它们的图像;你必须自己解决这个问题。
编辑:我还应该补充一点,您最初可能会对 68K 是正确 端序,即大端序这一事实感到困惑。
关于assembly - M68000 基本问题,Neo Geo - 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4930040/