求助 周哥的开源掌机 其GBA模拟器存档类型怎样改成128k
开源掌机吧
全部回复
仅看楼主
level 9
发现其本机带的机战og2不能存档。
查到可能是存档类型的问题。
有知道怎样调的吗?
非安卓系统的,如rg arc,rg353ps 等3566 CPU的机型。
2024年01月13日 16点01分 1
level 4
搜索ds save tools可以修改存档类型
2024年01月14日 18点01分 0
开源掌机的存档类型是.srm。 这个软件不支持转这个格式, 谢谢你的回复
2024年01月16日 06点01分
level 13
和机器没有关系吧,这个多数 ROM 是改版的造成的,这个是模拟器自动识别的吧
2024年01月14日 09点01分 4
level 13
可以试一下,网上找一个初始存档,试试能不能用!
2024年01月14日 09点01分 5
level 9
谢谢大家回复,
试过换核心,gbsp mgba,都不行。
找其他游戏128k的存档,改名后替换,也不行。
找原版的日语机战og2,能正常存档,然后把存档copy一份,改名替换。在电脑端的visualboyadvance模拟器能正常使用。但是上传到格斗机开源掌机,还是不行。
后来就直接用机器的即时存档。按F键,然后选择保存。读档的时候,记住存档的位置数字。一般是0或者1。如果不选数字会读档失败。
2024年01月16日 05点01分 7
level 9
2024年01月16日 06点01分 8
level 9
与GB/GBC的ROM不一样,GBA的ROM头中没有标识记忆存档的类型和大小,但老任采用了另一种方法来标识。
就是在GBA的ROM文件中,不固定的地点写有存档类型标识符(如FLASH_V126),上图就是我整理的全部存档标识符。
对于卡带而言,老任的主机是不需要这些标识符的,存档操作由软件完产。但模拟器一般都得知道每个ROM到底采用那种类型的存档和存档大小,以便作对应处理。
一般而言,模拟器可以根据ROM的GameID做数据库dadabase,对应每个ROM的存档类型和大小,VBA就是这么处理的。另外就是通过查找ROM中的存档类型标识符来判断,如GBA的补丁工具GTA0.7
用ROM中的记忆类型关键字来判别记忆类型,在ROM工具offline list中有这些记忆关键字。
如0252 - Sonic Advance .gba 就是FLASH_V126 ,64KB
1262 - Crash Nitro Kart.gba就是EEPROM_V122,0.5KB
VBA处理记忆时是不理会这些关键字的,即使我们将1262的EEPROM_V122强行改为FLASH_V126 或错误的文字,VBA还是按eeprom 0.5KB来记忆,这说明VBA是基于GameID数据库的。
只是当我们用GBA的补丁工具GTA0.7将ROM打SRAM补丁时,这些ROM中的记忆关键字才会被补丁工具用到。有趣的是,我们将0252的GameID改到1262中,GTA0.7还是按关键字来打SRAM补丁,这也就说明记忆关键字是确定记忆类型的条件之一,但不唯一,如NES转成GBA的ROM是64KB的SRAM记忆,而ROM中没有任何记忆关键字(GTA0.7识别为NONE)。
如果我们采用No-Intro的GBA ROM,用GameID来对应记忆也是可以的,但有很多改版的,自制的ROM的GameID就不规范,甚至是套用别的ROM的GameID,这样一来判断记忆类型就会出错。
我建议还是搜索ROM中的关键字来确定存档类型。 GTA0.7工具在火线软件中有,名字为gbata.exe,火线当配置成自动打SRAM补丁时就是它来处理的。
我以前帮D商组合卡ROM时,也要用到GTA来处理记忆,对应关系如下:
FLASH类型(1Mb/512Kb) -> SRAM 512KbSRAM类型 (256Kb)
EEPROM类型(0.5KB/8KB) -> SRAM 128Kb (因为使用的decoder最小SRAM bank 是128Kb)
offlinelist是通过数据库来查找存档类型的,以ROM的GameID来建数据库,当然在作者录制数据时可能会有错误。
国外大神做的GTA,它是用过查找ROM的存档关键字来确定存档类型的。
比喻:
Get Ride AMDriver 重装骑士-闪光英雄的诞生(汉化版)(dump & hack by maxzhou88).gba
的存档是Flash的,GTA显示存档关键字是FLASH512_V131,你可以用UE编辑工具去查找ROM中的关键字FLASH512_V131,然后改成FLASH512_V888,哈哈,再用GTA打开,立马显示的就是FLASH512_V888
我至今还不明白,为什么老任不象GBC那样将存档信息放在GBA的ROM头中,老任只是将它放在ROM的非固定位置,只能查找定位。早年还没有GTA工具时,我都是查找关键字来确定存档类型的。
如果我们把
Get Ride AMDriver 重装骑士-闪光英雄的诞生(汉化版)(dump & hack by maxzhou88).gba
的存档关键字FLASH512_V131改成SRAM_V113,呵呵,GTA就不让打SRAM补丁了。
2024年01月16日 06点01分 9
level 9
=====================

周哥,对于早期D卡和早期烧录卡的存档问题我很感兴趣。我打算搜集全相关的资料后写个gba烧录卡的图鉴贴。
1 之前你在gba吧的发言提到过,早期的D卡甚至有很高端的解码芯片。可以不用对rom打SRAM补丁就能直接支持eeprom和flash的存档。
我注意到很多烧录卡也能做到这一点,比如EZ系列,虽然存档的硬件只有sram芯片,但是EZ卡能做到原版rom的存档是多大,ez卡生成的存档就是多大,比如eeprom格式的游戏,存档大小就是8KB,而不是统一的64KB。ez烧录卡在烧录时软件就会自动识别rom,自动识别原生存档所需大小。
掌机王当年的评测上说,这就是所谓的硬件存档功能,是cpld芯片的功能。周哥你对这点同意吗?
2 之前周哥在拆解SC烧录卡的时候提到了fpga的decoder,这个东西的功能是不是也和cpld类似,两者是同一个东西吗?还是说有什么区别

@RSLC :
EZ4烧录卡的电脑工具(前端工具)会给ROM打SRAM记忆补丁,至于它在SD卡中的大小,是软件设置的,因为转换工具会根据我上面说的档类型标识符知道它是什么大小的,在SD中生成sav文件时,就从SRAM中读出相应的大小,这并非是什么硬件存档功能(就是不要软件预先处理的)。
早期的硬件存档功能其实是用解码加SRAM来仿真Flash和eeprom的操作,因为那个时候老外的补丁工具还没有出来。
如果说EZ4能有128KB的sav文件,那一定是CPLD上做了对SRAM的切bank扩容,这个就非得硬件支持了。
FPGA和CPLD是类似的东西,都是可编程阵列逻辑,只是FPGA的功能更强。比如K1主控的设计原型,除了内部的RAM外,其它都是用FPGA实现的,当验证成功后才做真正的芯片(real chip)。
有时间我也想系统的写写卡带和解码的原理,硬件补丁如何实现等。
--------------------------
2024年01月16日 06点01分 10
level 9
我在其他帖子找到 周哥早年的关于存档的解释,看看之后有没那个高手能根据这些信息,把 改版rom的存档问题解决(指在开源掌机上面,因为电脑和手机模拟器已经可以通过修改存档类似来解决这个问题。)。
2024年01月16日 06点01分 11
level 9
Flash、EEPROM、SRAM的区别与理解
Flash 和 EEPROM 能断电存储,Flash保存数据大,EEPROM保存数据小。
SRAM 断电不保存数据,但是存数据很快。某些GBA卡带电池,断电后没有记录,就是这个原因。
2024年01月16日 06点01分 12
level 9
https://tieba.baidu.com/p/8534048926
关于PSP用GBA模拟器玩扩容rom无法存档的解决方法
参考资料
2024年01月16日 07点01分 13
level 6
我也遇到这个问题了,35xx本机带的机战og1不能正常存档读档,只能用即时存档,怎么解决?35xx老版,大蒜1.4.9
2024年05月14日 15点05分 14
sram补丁问题
2025年09月07日 02点09分
level 7
换个rom试试
2024年05月15日 00点05分 15
level 7
我也是 我的SD高达G世纪A 通关存档导入周哥机器也读不了档
2024年07月06日 16点07分 16
level 1
其实这个跟存档类型无关,主要是汉化组打了sram补丁导致的,把这补丁去除就可以正常存档
2025年09月07日 02点09分 17
请问怎样把这个sram补丁去除呢?或者有改好的OG2游戏rom吗?[笑眼]
2026年02月26日 01点02分
1 2 尾页