[嘿,我目前正在尝试模仿旧的游戏机。我遇到了一个小问题,我不知道该如何解决。
更具体地说,我正在为GBA做模拟器。但是为了使其更具挑战性,我决定将游戏模拟为具有内存,可能的额外CPU等的外部设备。就像他们在现实世界中一样。为此,我需要创建一个自包含的可执行文件,在其中分配了一些固定大小的备用内存来保存诸如已保存的游戏之类的数据。
这可能吗?我知道这是不常见的坏习惯。我不在乎,就像人们说不要在C语言中使用GOTO一样,那里的指令都可以使用,而且我使用它的效果很好,没有头痛,也没有怪异的行为,这只需要花点时间进行计划,也许是编译器实现中的一门课程,以了解如何做。
该语言并不重要,C会做到,但是如果.net支持,我会更喜欢的。
您可以采用某些自解压档案所使用的方法。在已编译的可执行文件后附加标记GUID和数据块
((可执行文件)+(标记GUID)+(数据区域)
例如,在Windows中:
type "c:\vsprojects\my-gba\release\my-gba.exe" "c:\data-files\guid.txt" "c:\data-files\save-data-area.txt" > "c:\data-files\gba-combo.exe"
在Linux中,将这三部分组合在一起就可以形成带有数据的可执行文件。
要找到数据区域的开始,请在EXE中搜索GUID,然后越过它。