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